<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ITSMConfigurationManagement</Name>
    <Version>11.0.14</Version>
    <Vendor>Rother OSS GmbH</Vendor>
    <URL>https://otobo.io/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <ChangeLog Date="2026-04-24 12:28:32" Version="11.0.14">- Add simple license management.
- Update to OTOBO 11.0.16.
- Various bug fixes. Treat names as raw strings in CIFetch (#45), error log on failing DFSync (#73), CI list in CUIC does not paginate (#78), value validation for GenericInterface (#85), #75, #80</ChangeLog>
    <ChangeLog Date="2026-02-04 16:51:35" Version="11.0.13">Incorporated changes around dynamic field handling of the OTOBO Core of issues #4790 and #4843, targeted at MultiValue fields.</ChangeLog>
    <ChangeLog Date="2025-12-17 13:36:07" Version="11.0.12">Update to OTOBO 11.0.14; Removed hardcoded counters for permission conditions (Issue #70);</ChangeLog>
    <ChangeLog Date="2025-11-12 09:42:03" Version="11.0.11">Prevent hiding pages showing only non dynamic field content on ConfigItemEdit.</ChangeLog>
    <ChangeLog Date="2025-11-07 09:15:51" Version="11.0.10">- ImportExport: Add possibility to import/export sets on single entry level; Sets and Multivalue fields can &quot;keep empty values&quot; for complete fields (no single entry changes).
- Rework AgentITSMConfigItemPrint to be based on visible page content, show description and backlink sections.
- Added history comments for attachment add and delete.
- Various bug fixes, among them issues #66, #59, #63, #65, #58, #54, #21, #61, #15, #56, #57, #52</ChangeLog>
    <ChangeLog Date="2025-08-15 10:37:47" Version="11.0.9">Improve and fix ConfigItemAdd and -Update TransitionActions. Add a mapping SysConfig for Set fields.</ChangeLog>
    <ChangeLog Date="2025-08-14 13:15:07" Version="11.0.8">- Several bugfixes, Issues #17, #39, #47, #49, #51, #53, among others.
- Fixed Regresseion of 11.0.7 where the UpgradeTo11 Console script broke for Subs-&gt;Sets.
- Enable usage of custom &quot;Module&quot; sections.
- Rework how CurInciStateRecalc is triggered from various places.
- Added some more documentation.
- Add new Process TransitionAction: ConfigItemUpdate.</ChangeLog>
    <ChangeLog Date="2025-05-13 10:04:33" Version="11.0.7">- Issue #41: The number of ConfigItems shown in the overview was not correctly used with OTOBO 11.0.9.
- Fix a bug with Excluded Deployment states in ES.</ChangeLog>
    <ChangeLog Date="2025-05-06 15:56:09" Version="11.0.6">- Update to OTOBO 11.0.9.
- Fix Elasticsearch</ChangeLog>
    <ChangeLog Date="2025-05-05 12:40:38" Version="11.0.5">- Added a max height to CI Link sections.
- Temporarily remove old Link Count routine. (Will be replaced in an upcoming release.)
- Added interoperability with DynamicFieldScreens and
- changed SysConfig structure of DynamicFields for search and overview.
- Fix CMDB notifications and add a small doc.
- Added support for searching dynamic field Set inner fields in agent frontend.
- Various Bugfixes.</ChangeLog>
    <ChangeLog Date="2025-03-06 07:23:29" Version="11.0.4">- Use All as default category.
- Update ReadyToImport classes.
- Only trigger Version updates when things changed.
- Added OTOPar CI DynamicField and CI Attributes migrations.
- Various bugfixes</ChangeLog>
    <ChangeLog Date="2024-12-04 06:48:57" Version="11.0.3">- Added various webservice invokers and operations.
- Added documentation.
- Improve some linking situations in the tree view.
- Change internal link directions to align with the standard.
- Added external source parameter for importing/exporting CIs with reference fields (also for webservices).
- Various bug fixes and smaller changes.</ChangeLog>
    <ChangeLog Date="2024-06-21 10:46:57" Version="11.0.2">- Minor naming corrections in the ReadyToAdopt classes
- Improved class export for sets
- Enable defaults for AgentITSMConfigItemSearch
- Implemented cache usage for DefinitionOutOfSync check.
- Enable CodeMirror editor also for role editing.
- Fixed CI counting for AgentITSMConfigItem.
- Added sysconfig to define columns for AgentITSMConfigItemSearch overview.
- Fixed category handling on class import.
- Other minor fixes.</ChangeLog>
    <ChangeLog Date="2024-05-27 13:44:51" Version="11.0.1">Large rework of the CMDB which replaces the XML storage with dynamic fields, and provides a new and highly configurable ConfigItemZoom for both agents and customers.</ChangeLog>
    <Description Lang="en">The OTOBO::ITSM Configuration Management package.</Description>
    <Description Lang="de">Das OTOBO::ITSM Configuration Management Paket.</Description>
    <Description Lang="es">El paquete OTOBO::ITSM Configuration Management.</Description>
    <Description Lang="hu">Az OTOBO::ITSM konfigurációmenedzsment csomag.</Description>
    <Framework Minimum="11.0.14">11.0.x</Framework>
    <IntroInstall Lang="en" Title="Install Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WELCOME&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        You are about to install the OTOBO package ITSMConfigurationManagement.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTE&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        The ITSMConfigurationManagement 11 has undergone major changes.&lt;br/&gt;
        It is necessary to migrate your existing ConfigItem classes to the new structure. This can be done via the Console script bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        During its execution the definitions will be updated and dynamic fields for all custom (old xml) attributes will be created.&lt;br/&gt;
        Bundles of new default classes are available and can be imported in Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;REQUIRED OTOBO PACKAGES&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="de" Title="Installation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WILLKOMMEN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Sie sind im Begriff das OTOBO-Paket ITSMConfigurationManagement zu installieren.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;HINWEIS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Das Paket ITSMConfigurationManagement wurde mit der Version 11 stark überarbeitet.&lt;br/&gt;
        Nach dem Upgrade von 10.1 müssen bestehende ConfigItem-Klassen zusätzlich auf die neue Struktur migriert werden. Hierzu steht das Console-Kommando bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11 zu Verfügung.
        Dieses ändert die ConfigItem-Klassendefinitionen auf die neue Struktur und legt dynamische Felder für alle konfigurierbaren (d.h. die bisherigen xml-) Attribute an.&lt;br/&gt;
        Neue default-Klassen können unter Admin-&gt;ConfigItems direkt importiert werden.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;BENÖTIGTE OTOBO-PAKETE&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="es" Title="Install Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;BIENVENIDO&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Usted está punto de instalar el paquete ITSMConfigurationManagement de OTOBO.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTA&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        El módulo ITSMConfigurationManagement 11 ha sufrido cambios mayores.&lt;br/&gt;
        Es necesario migrar sus definiciones existentes de clases de elementos de configuración (ConfigItems) a la nueva estructura.
        Esto puede ser realizado ejecutando el comando de consola: bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        Durante su ejecución, se actualizarán las definiciones de ConfigItems y se crearán nuevos campos dinámicos para todos los atributos personalizados existentes (antigua estructura XML).&lt;br/&gt;
        Una serie de nuevas clases por defecto están disponibles y pueden ser importadas mediante la opción: Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;PAQUETES OTOBO REQUERIDOS&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="en" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;NOTICE&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        In order to grant users access to the config item menu, you need to add them as member to the group 'itsm-configitem'.
        &lt;br/&gt;
        &lt;br/&gt;
        The menu items that were added by this package will be visible after you log-in to the system again.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="de" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;HINWEIS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Um Benutzern Zugriff auf das ConfigItem-Menü zu gewähren, müssen diese Mitglied der neuen Gruppe 'itsm-configitem' sein.
        &lt;br/&gt;
        &lt;br/&gt;
        Die von diesem Paket hinzugefügten Menü-Punkte sind erst nach einem erneuten Anmeldevorgang im System sichtbar.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="es" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;ATENCIÓN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Para permitirles a los usuarios el acceso al menú de los elementos de configuración, es necesario que se den de
        alta como miembros del grupo 'itsm-configitem'.
        &lt;br/&gt;
        &lt;br/&gt;
        Los elementos del menú que se agregaron por este paquete, serpan visibles después reiniciar la sesión al sistema.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))
        &lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="hu" Title="Telepítési információk" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;FIGYELMEZTETÉS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Annak érdekében, hogy hozzáférést adjon a felhasználók számára a konfigurációelem menühöz, hozzá kell adnia őket az „itsm-configitem” csoporthoz tagként.
        &lt;br/&gt;
        &lt;br/&gt;
        Azok a menüpontok, amelyeket ez a csomag adott hozzá, azután lesznek láthatóak, miután ismét bejelentkezik a rendszerbe.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroUninstall Lang="en" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ATTENTION&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        If you uninstall this package, all database tables that were created during installation will be deleted.
        All data from these tables will be irrevocably lost!
        &lt;br/&gt;
        &lt;br/&gt;
        The group 'itsm-configitem' that was created during package installation will be deactivated.
        You can activate this group again in the admin area.
        &lt;br/&gt;
        &lt;br/&gt;
        All links to config item objects will be irrevocably deleted!
        &lt;br/&gt;
        &lt;br/&gt;
        The statistics that are associated with this package, will no longer be available if the package is uninstalled.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="de" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ACHTUNG&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
        Alle darin enthaltenen Daten gehen unwiderruflich verloren!
        &lt;br/&gt;
        &lt;br/&gt;
        Die von diesem Paket angelegte Gruppe 'itsm-configitem' wird deaktiviert.
        Sie kann jederzeit im Admin-Bereich wieder aktiviert werden.
        &lt;br/&gt;
        &lt;br/&gt;
        Alle Verknüpfungen zu ConfigItem-Objekten werden unwiderruflich gelöscht!
        &lt;br/&gt;
        &lt;br/&gt;
        Nach der Deinstallation sind die zu diesem Paket zugehörigen Statistiken nicht mehr verfügbar.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="es" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ATENCIÓN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Si usted desinstala este paquete, todas las tablas de la base de datos que fueron creadas durante su instalación se eliminarán.
        ¡Todos los datos de dichas tablas se perderán irrevocablemente!
        &lt;br/&gt;
        &lt;br/&gt;
        El grupo 'itsm-configitem' que se creó durante la instalación de este paquete se desactivará.
        Es posible reactivar este grupo en el área de administración.
        &lt;br/&gt;
        &lt;br/&gt;
        ¡Todos los vínculos a objetos de elementos de configuración serán eliminados permanentemente!
        &lt;br/&gt;
        &lt;br/&gt;
        Si usted desinstala este paquete, las estadísticas que están asociadas a él ya no estarán disponibles.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="hu" Title="Eltávolítási információk" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;FIGYELEM&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Ha eltávolítja ezt a csomagot, akkor a telepítés során létrehozott összes adatbázistábla törlésre kerül.
        Az ezekben a táblákban lévő összes adat visszavonhatatlanul el fog veszni!
        &lt;br/&gt;
        &lt;br/&gt;
        A csomagtelepítés során létrehozott „itsm-configitem” csoport ki lesz kapcsolva.
        Ezt a csoportot az adminisztrációs területen tudja ismét bekapcsolni.
        &lt;br/&gt;
        &lt;br/&gt;
        A konfigurációelem objektumokra mutató összes hivatkozás visszavonhatatlanul törölve lesz!
        &lt;br/&gt;
        &lt;br/&gt;
        Az ehhez a csomaghoz hozzárendelt statisztikák többé nem lesznek elérhetők, ha a csomag eltávolításra kerül.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUpgrade Lang="en" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WELCOME&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        You are about to upgrade the OTOBO package ITSMConfigurationManagement.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTE&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        The ITSMConfigurationManagement 11 has undergone major changes.&lt;br/&gt;
        It is necessary to migrate your existing ConfigItem classes to the new structure. This can be done via the Console script bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        During its execution the definitions will be updated and dynamic fields for all custom (old xml) attributes will be created.&lt;br/&gt;
        Bundles of new default classes are available and can be imported in Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;REQUIRED OTOBO PACKAGES&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="de" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WILLKOMMEN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Sie sind im Begriff das OTOBO-Paket ITSMConfigurationManagement zu aktualisieren.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;HINWEIS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Das Paket ITSMConfigurationManagement wurde mit der Version 11 stark überarbeitet.&lt;br/&gt;
        Nach dem Upgrade von 10.1 müssen bestehende ConfigItem-Klassen zusätzlich auf die neue Struktur migriert werden. Hierzu steht das Console-Kommando bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11 zu Verfügung.
        Dieses ändert die ConfigItem-Klassendefinitionen auf die neue Struktur und legt dynamische Felder für alle konfigurierbaren (d.h. die bisherigen xml-) Attribute an.&lt;br/&gt;
        Neue default-Klassen können unter Admin-&gt;ConfigItems direkt importiert werden.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;BENÖTIGTE OTOBO-PAKETE&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="es" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;BIENVENIDO&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Usted está a punto de actualizar el paquete ITSMConfigurationManagement de OTOBO.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTA&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        El módulo ITSMConfigurationManagement 11 ha sufrido cambios mayores.&lt;br/&gt;
        Es necesario migrar sus definiciones existentes de clases de elementos de configuración (ConfigItems) a la nueva estructura.
        Esto puede ser realizado ejecutando el comando de consola: bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        Durante su ejecución, se actualizarán las definiciones de ConfigItems y se crearán nuevos campos dinámicos para todos los atributos personalizados existentes (antigua estructura XML).&lt;br/&gt;
        Una serie de nuevas clases por defecto están disponibles y pueden ser importadas mediante la opción: Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;PAQUETES OTOBO REQUERIDOS&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="en" Title="Convert legacy reference fields" Type="post">

        &lt;br/&gt;
        If you have the OTOBO 10.1 package &quot;DynamicFieldITSMConfigItem&quot; installed, in order to migrate the dynamic fields of type &quot;ITSMConfigItemReference&quot; please execute the console command &quot;Admin::ITSM::ConfigItem::ConvertLegacyRefDFs&quot;&lt;br/&gt;

    </IntroUpgrade>
    <PackageRequired Version="11.0.4">ITSMCore</PackageRequired>
    <CodeInstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeInstall();

    </CodeInstall>
    <CodeUpgrade Type="post" Version="11.0.7">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgradeFromLowerThan_11_0_7();

    </CodeUpgrade>
    <CodeUpgrade Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgrade();

    </CodeUpgrade>
    <CodeUninstall Type="pre">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstall();

    </CodeUninstall>
    <CodeUninstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstallPost();

        {
            # cleanup stats list (only stats related to the given stat objects)
            $Kernel::OM-&gt;Get('Kernel::System::Stats')-&gt;StatsCleanUp(
                ObjectNames =&gt; [ 'ITSMConfigItem' ],
                UserID =&gt; 1,
            );
        }

    </CodeUninstall>
    <CodeReinstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeReinstall();

    </CodeReinstall>
    <BuildCommitID>86a5d9d18d8f2ae5bd828c8ed8a0e7688a02a895</BuildCommitID>
    <BuildDate>2026-04-24 12:28:44</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AdminACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWRtaW5BQ0wucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluQUNMOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSA9ICdJbmNsdWRlSW52YWxpZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn07CgogICAgbXkgJVByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPSAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAkU2VsZi0+e1N1YmFjdGlvbn0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3ViYWN0aW9uJyApIHx8ICcnOwogICAgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJbmNsdWRlSW52YWxpZCcgKTsKCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSwKICAgICAgICAgICAgVmFsdWUgID0+ICRQYXJhbXtJbmNsdWRlSW52YWxpZH0sCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPSAkUGFyYW17SW5jbHVkZUludmFsaWR9OwogICAgfQojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgJFBhcmFte09iamVjdFR5cGV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09iamVjdFR5cGUnICkgfHwgJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgbXkgJEFDTElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0lEJyApIHx8ICcnOwoKICAgIG15ICRTeW5jaHJvbml6ZU1lc3NhZ2UgPSBUcmFuc2xhdGFibGUoCiAgICAgICAgJ0FDTCBpbmZvcm1hdGlvbiBmcm9tIGRhdGFiYXNlIGlzIG5vdCBpbiBzeW5jIHdpdGggdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLCBwbGVhc2UgZGVwbG95IGFsbCBBQ0xzLicKICAgICk7CgogICAgbXkgJFN5bmNocm9uaXplZE1lc3NhZ2VWaXNpYmxlID0gMDsKCiAgICBteSAkQUNMT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTCcpOwoKICAgIGlmICggJEFDTE9iamVjdC0+QUNMc05lZWRTeW5jKCkgKSB7CgogICAgICAgICMgY3JlYXRlIGEgbm90aWZpY2F0aW9uIGlmIHN5c3RlbSBpcyBub3QgdXAgdG8gZGF0ZQogICAgICAgICRQYXJhbXtOb3RpZnlEYXRhfSA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSW5mbyA9PiAkU3luY2hyb25pemVNZXNzYWdlLAogICAgICAgICAgICB9LAogICAgICAgIF07CiAgICAgICAgJFN5bmNocm9uaXplZE1lc3NhZ2VWaXNpYmxlID0gMTsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMSW1wb3J0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUNMSW1wb3J0JyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFBhcmFtT2JqZWN0LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgIFNvdXJjZSA9PiAnc3RyaW5nJywKICAgICAgICApOwoKICAgICAgICBteSAkT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzJyApIHx8ICcnOwoKICAgICAgICBteSAkQUNMSW1wb3J0ID0gJEFDTE9iamVjdC0+QUNMSW1wb3J0KAogICAgICAgICAgICBDb250ZW50ICAgICAgICAgICAgICAgICAgID0+ICRVcGxvYWRTdHVmZntDb250ZW50fSwKICAgICAgICAgICAgT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9PiAkT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJEFDTEltcG9ydC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICBteSAkTWVzc2FnZSA9ICRBQ0xJbXBvcnQtPntNZXNzYWdlfQogICAgICAgICAgICAgICAgfHwgVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAgICAgICAgICdBQ0xzIGNvdWxkIG5vdCBiZSBJbXBvcnRlZCBkdWUgdG8gYSB1bmtub3duIGVycm9yLCBwbGVhc2UgY2hlY2sgT1RPQk8gbG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbicKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJE1lc3NhZ2UsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRBQ0xJbXBvcnQtPntBZGRlZEFDTHN9ICkgewogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtOb3RpZnlEYXRhfSB9LCB7CiAgICAgICAgICAgICAgICBJbmZvID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBBQ0xzIGhhdmUgYmVlbiBhZGRlZCBzdWNjZXNzZnVsbHk6ICVzJywKICAgICAgICAgICAgICAgICAgICAkQUNMSW1wb3J0LT57QWRkZWRBQ0xzfQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQUNMSW1wb3J0LT57VXBkYXRlZEFDTHN9ICkgewogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtOb3RpZnlEYXRhfSB9LCB7CiAgICAgICAgICAgICAgICBJbmZvID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBBQ0xzIGhhdmUgYmVlbiB1cGRhdGVkIHN1Y2Nlc3NmdWxseTogJXMnLAogICAgICAgICAgICAgICAgICAgICRBQ0xJbXBvcnQtPntVcGRhdGVkQUNMc30KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmICggJEFDTEltcG9ydC0+e0FDTEVycm9yc30gKSB7CiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte05vdGlmeURhdGF9IH0sIHsKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgJ1RoZXJlIHdoZXJlIGVycm9ycyBhZGRpbmcvdXBkYXRpbmcgdGhlIGZvbGxvd2luZyBBQ0xzOiAlcy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cgZmlsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLAogICAgICAgICAgICAgICAgICAgICRBQ0xJbXBvcnQtPntBQ0xFcnJvcnN9CiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAoICRBQ0xJbXBvcnQtPntVcGRhdGVkQUNMc30gfHwgJEFDTEltcG9ydC0+e0FkZGVkQUNMc30gKQogICAgICAgICAgICAmJiAhJFN5bmNocm9uaXplZE1lc3NhZ2VWaXNpYmxlCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAkUGFyYW17Tm90aWZ5RGF0YX0gPSBbCiAgICAgICAgICAgICAgICBAeyAkUGFyYW17Tm90aWZ5RGF0YX0gfHwgW10gfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJbmZvID0+ICRTeW5jaHJvbml6ZU1lc3NhZ2UsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFDTE5ldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTE5ldycgKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAnTmV3JywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMTmV3QWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUNMTmV3QWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBnZXQgQUNMIGRhdGEKICAgICAgICBteSAkQUNMRGF0YTsKCiAgICAgICAgIyBnZXQgcGFyYW1ldGVyIGZyb20gd2ViIGJyb3dzZXIKICAgICAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcygpOwoKICAgICAgICAjIHNldCBuZXcgY29uZmd1cmF0aW9uCiAgICAgICAgJEFDTERhdGEtPntOYW1lfSAgICAgICAgICAgPSAkR2V0UGFyYW0tPntOYW1lfTsKICAgICAgICAkQUNMRGF0YS0+e0NvbW1lbnR9ICAgICAgICA9ICRHZXRQYXJhbS0+e0NvbW1lbnR9OwogICAgICAgICRBQ0xEYXRhLT57RGVzY3JpcHRpb259ICAgID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwogICAgICAgICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9ID0gJEdldFBhcmFtLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDA7CiAgICAgICAgJEFDTERhdGEtPntWYWxpZElEfSAgICAgICAgPSAkR2V0UGFyYW0tPntWYWxpZElEfTsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJUVycm9yOwogICAgICAgIGlmICggISRHZXRQYXJhbS0+e05hbWV9ICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJEdldFBhcmFtLT57VmFsaWRJRH0gKSB7CgogICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MKICAgICAgICAgICAgJEVycm9ye1ZhbGlkSURTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9ye1ZhbGlkSURTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyk7CiAgICAgICAgfQoKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIGVycm9yIHJldHVybiB0byBlZGl0IHNjcmVlbgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoIFwlRXJyb3IgKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd0VkaXQoCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBBQ0xEYXRhID0+ICRBQ0xEYXRhLAogICAgICAgICAgICAgICAgQWN0aW9uICA9PiAnTmV3JywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNhdmUgY29uZmlndXJhdGlvbiBhbmQgcmV0dXJuIHRvIG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRBQ0xJRCA9ICRBQ0xPYmplY3QtPkFDTEFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTERhdGEtPntOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJEFDTERhdGEtPntDb21tZW50fSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJEFDTERhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+ICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9LAogICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAkQUNMRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3QgY3JlYXRlCiAgICAgICAgaWYgKCAhJEFDTElEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnVGhlcmUgd2FzIGFuIGVycm9yIGNyZWF0aW5nIHRoZSBBQ0wnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVkaXJlY3QgdG8gZWRpdCBzY3JlZW4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEIiApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEO09iamVjdFR5cGU9JFBhcmFte09iamVjdFR5cGV9IiApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMRWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTEVkaXQnICkgewoKICAgICAgICAjIGNoZWNrIGZvciBBQ0xJRAogICAgICAgIGlmICggISRBQ0xJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgQUNMSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBBQ0wgZGF0YQogICAgICAgIG15ICRBQ0xEYXRhID0gJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIHZhbGlkIEFDTCBkYXRhCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEFDTERhdGEpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgQUNMSUQgJXMnLCAkQUNMSUQgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRKU09OT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKTsKCiAgICAgICAgaWYgKCAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofSApIHsKICAgICAgICAgICAgJEFDTERhdGEtPntDb25maWdNYXRjaH0gPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJEFDTERhdGEtPntDb25maWdDaGFuZ2V9ICkgewogICAgICAgICAgICAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0gPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93RWRpdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBQ0xJRCAgID0+ICRBQ0xJRCwKICAgICAgICAgICAgQUNMRGF0YSA9PiAkQUNMRGF0YSwKICAgICAgICAgICAgQWN0aW9uICA9PiAnRWRpdCcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFDTEVkaXRBY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBQ0xFZGl0QWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBnZXQgd2Vic2VyaWNlIGNvbmZpZ3VyYXRpb24KICAgICAgICBteSAkQUNMRGF0YTsKCiAgICAgICAgIyBnZXQgcGFyYW1ldGVyIGZyb20gd2ViIGJyb3dzZXIKICAgICAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcygpOwoKICAgICAgICAjIHNldCBuZXcgY29uZmd1cmF0aW9uCiAgICAgICAgJEFDTERhdGEtPntOYW1lfSAgICAgICAgICAgPSAkR2V0UGFyYW0tPntOYW1lfTsKICAgICAgICAkQUNMRGF0YS0+e0NvbW1lbnR9ICAgICAgICA9ICRHZXRQYXJhbS0+e0NvbW1lbnR9OwogICAgICAgICRBQ0xEYXRhLT57RGVzY3JpcHRpb259ICAgID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwogICAgICAgICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9ID0gJEdldFBhcmFtLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDA7CiAgICAgICAgJEFDTERhdGEtPntWYWxpZElEfSAgICAgICAgPSAkR2V0UGFyYW0tPntWYWxpZElEfTsKICAgICAgICAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofSAgICA9ICRHZXRQYXJhbS0+e0NvbmZpZ01hdGNofSAgfHwgJyc7CiAgICAgICAgJEFDTERhdGEtPntDb25maWdDaGFuZ2V9ICAgPSAkR2V0UGFyYW0tPntDb25maWdDaGFuZ2V9IHx8ICcnOwojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICRBQ0xEYXRhLT57T2JqZWN0VHlwZX0gICAgID0gJEdldFBhcmFtLT57T2JqZWN0VHlwZX0gfHwgJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBpZiAoICEkR2V0UGFyYW0tPntOYW1lfSApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRHZXRQYXJhbS0+e1ZhbGlkSUR9ICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcntWYWxpZElEU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcntWYWxpZElEU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcpOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiBlcnJvciByZXR1cm4gdG8gZWRpdCBzY3JlZW4KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCBcJUVycm9yICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQUNMRGF0YSA9PiAkQUNMRGF0YSwKICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJ0VkaXQnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2Ugc2F2ZSBjb25maWd1cmF0aW9uIGFuZCByZXR1cm4gdG8gb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xVcGRhdGUoCiAgICAgICAgICAgIElEICAgICAgICAgICAgID0+ICRBQ0xJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTERhdGEtPntOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJEFDTERhdGEtPntDb21tZW50fSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJEFDTERhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+ICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0xEYXRhLT57VmFsaWRJRH0sCiAgICAgICAgICAgIENvbmZpZ01hdGNoICAgID0+ICRBQ0xEYXRhLT57Q29uZmlnTWF0Y2h9ICB8fCAnJywKICAgICAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJEFDTERhdGEtPntDb25maWdDaGFuZ2V9IHx8ICcnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3QgdXBkYXRlCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGVyZSB3YXMgYW4gZXJyb3IgdXBkYXRpbmcgdGhlIEFDTCcpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICBkZWZpbmVkICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKQogICAgICAgICAgICAmJiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKSBlcSAnMScgKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBpZiB0aGUgdXNlciB3b3VsZCBsaWtlIHRvIGNvbnRpbnVlIGVkaXRpbmcgdGhlIEFDTCwganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAgICAgICAgICJBY3Rpb249QWRtaW5BQ0w7U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEIgogICAgICAgICAgICAgICAgICAgICJBY3Rpb249QWRtaW5BQ0w7U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEO09iamVjdFR5cGU9JFBhcmFte09iamVjdFR5cGV9IgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHJldHVybiB0byBvdmVydmlldwojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07T2JqZWN0VHlwZT0kUGFyYW17T2JqZWN0VHlwZX0iICk7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgU3luYwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTERlcGxveScgKSB7CgogICAgICAgIG15ICRMb2NhdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvQ29uZmlnL0ZpbGVzL1paWkFDTC5wbSc7CgogICAgICAgIG15ICRBQ0xEdW1wU3VjY2VzcyA9ICRBQ0xPYmplY3QtPkFDTER1bXAoCiAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0ZJTEUnLAogICAgICAgICAgICBMb2NhdGlvbiAgID0+ICRMb2NhdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJFBhcmFte09iamVjdFR5cGV9LAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMRHVtcFN1Y2Nlc3MpIHsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMc05lZWRTeW5jUmVzZXQoKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHByZXNlbGVjdGlvbiBjYWNoZSBUT0RPOiByZWJ1aWxkIHRoZSBjYWNoZSBwcm9wZXJseSAoYSBzaW1wbGUgJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOyB1c2VzIHRoZSBvbGQgQUNMcykKICAgICAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVGlja2V0QUNMJywgICAgICAjIG9ubHkgW2EtekEtWjAtOV9dIGNoYXJzIHVzYWJsZQogICAgICAgICAgICAgICAgVHlwZSA9PiAkUGFyYW17T2JqZWN0VHlwZX0gLiAnQUNMJywgICAgICAjIG9ubHkgW2EtekEtWjAtOV9dIGNoYXJzIHVzYWJsZQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgS2V5ICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkU3VjY2VzcykgewojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtPYmplY3RUeXBlPSRQYXJhbXtPYmplY3RUeXBlfSIgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3Qgc2V0IHN0YXRlCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1RoZXJlIHdhcyBhbiBlcnJvciBzZXR0aW5nIHRoZSBlbnRpdHkgc3luYyBzdGF0dXMuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzaG93IGVycm9yIGlmIGNhbid0IHN5bmNoCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGVyZSB3YXMgYW4gZXJyb3Igc3luY2hyb25pemluZyB0aGUgQUNMcy4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBBQ0xEZWxldGUgQUpBWAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTERlbGV0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgY2hlY2sgZm9yIEFDTElECiAgICAgICAgcmV0dXJuIGlmICEkQUNMSUQ7CgogICAgICAgIG15ICRDaGVja1Jlc3VsdCA9ICRTZWxmLT5fQ2hlY2tBQ0xEZWxldGUoIElEID0+ICRBQ0xJRCApOwoKICAgICAgICBteSAkSlNPTjsKICAgICAgICBpZiAoICRDaGVja1Jlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xEZWxldGUoCiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICVEZWxldGVSZXN1bHQgPSAoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICBTdWNjZXNzID0+ICRTdWNjZXNzLAogICAgICAgICAgICAgICAgU3VjY2VzcyAgICA9PiAkU3VjY2VzcywKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJFBhcmFte09iamVjdFR5cGV9LAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkRGVsZXRlUmVzdWx0e01lc3NhZ2V9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQUNMICVzIGNvdWxkIG5vdCBiZSBkZWxldGVkJywgJEFDTElEICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYnVpbGQgSlNPTiBvdXRwdXQKICAgICAgICAgICAgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURlbGV0ZVJlc3VsdCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBidWlsZCBKU09OIG91dHB1dAogICAgICAgICAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRDaGVja1Jlc3VsdH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIEpTT04gcmVzcG9uc2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFDTEV4cG9ydAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTEV4cG9ydCcgKSB7CgogICAgICAgIG15ICRBQ0xJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJRCcgKSB8fCAnJzsKICAgICAgICBteSAkQUNMRGF0YTsKICAgICAgICBteSAkQUNMU2luZ2xlRGF0YTsKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgIG15ICRGaWxlbmFtZSA9ICdFeHBvcnRfQUNMLnltbCc7CiAgICAgICAgbXkgJEZpbGVuYW1lID0gICdFeHBvcnRfJyAuICRQYXJhbXtPYmplY3RUeXBlfSAuICdfQUNMLnltbCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgIGlmICgkQUNMSUQpIHsKCiAgICAgICAgICAgICRBQ0xTaW5nbGVEYXRhID0gJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICAgICAgSUQgICAgID0+ICRBQ0xJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEFDTFNpbmdsZURhdGEgfHwgIUlzSGFzaFJlZldpdGhEYXRhKCRBQ0xTaW5nbGVEYXRhKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1RoZXJlIHdhcyBhbiBlcnJvciBnZXR0aW5nIGRhdGEgZm9yIEFDTCB3aXRoIElEICVzJywgJEFDTElEICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQUNMTmFtZSA9ICRBQ0xTaW5nbGVEYXRhLT57TmFtZX07CiAgICAgICAgICAgICRBQ0xOYW1lID1+IHN7W15hLXpBLVowLTktX119e199eG1zZzsgICAgIyBjbGVhbnVwIG5hbWUgZm9yIHNhdmluZwoKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAkRmlsZW5hbWUgPSAnRXhwb3J0X0FDTF8nIC4gJEFDTE5hbWUgLiAnLnltbCc7CiAgICAgICAgICAgICRGaWxlbmFtZSA9ICdFeHBvcnRfJyAuICRQYXJhbXtPYmplY3RUeXBlfSAuICdfQUNMXycgLiAkQUNMTmFtZSAuICcueW1sJzsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgJEFDTERhdGEgID0gWyRBQ0xTaW5nbGVEYXRhXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIEdldCBhbGwgSURzIGZyb20gdmFsaWQgdGFibGUgaW5jbHVkaW5nIGludmFsaWQtdGVtcG9yYXJpbHkgc3RhdHVzLgogICAgICAgICAgICAjIFNlZSBidWcjMTM1OTIgKGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTIpLgogICAgICAgICAgICBteSAlVmFsaWRMaXN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgICAgICAgICBteSBAVmFsaWRMaXN0SURzID0gZ3JlcCB7ICRWYWxpZExpc3R7JF99IH0gc29ydCBrZXlzICVWYWxpZExpc3Q7CgogICAgICAgICAgICAkQUNMRGF0YSA9ICRBQ0xPYmplY3QtPkFDTExpc3RHZXQoCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICAgICAgVmFsaWRJRHMgPT4gXEBWYWxpZExpc3RJRHMsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICBPYmplY3RUeXBlcyA9PiBbJFBhcmFte09iamVjdFR5cGV9XSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0aGUgQUNMIGRhdGEgaGFzaCB0byBzdHJpbmcKICAgICAgICBteSAkQUNMRGF0YVlBTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKCBEYXRhID0+ICRBQ0xEYXRhICk7CgogICAgICAgICMgc2VuZCB0aGUgcmVzdWx0IHRvIHRoZSBicm93c2VyCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEFDTERhdGFZQU1MLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMQ29weQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTENvcHknICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGdldCBBQ0wgZGF0YQogICAgICAgIG15ICRBQ0xEYXRhID0gJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJEFDTERhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIlVua25vd24gQUNMICRBQ0xJRCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgbmV3IEFDTCBuYW1lLgogICAgICAgIG15ICRDb3VudCAgID0gMTsKICAgICAgICBteSAkQUNMTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJyVzIChjb3B5KSAlcycsICRBQ0xEYXRhLT57TmFtZX0sICRDb3VudCApOwogICAgICAgIHdoaWxlICgKICAgICAgICAgICAgJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRBQ0xOYW1lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICApCiAgICAgICAgICAgICYmICRDb3VudCA8IDEwMAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkQUNMTmFtZSA9fiBzL1xkKyQvJENvdW50LzsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBzYXZlIGNvbmZpZ3VyYXRpb24gYW5kIHJldHVybiB0byBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkQUNMSUQgPSAkQUNMT2JqZWN0LT5BQ0xBZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRBQ0xOYW1lLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkQUNMRGF0YS0+e0NvbW1lbnR9LAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAkQUNMRGF0YS0+e0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICAgPT4gJEFDTERhdGEtPntDb25maWdNYXRjaH0gICAgfHwgJycsCiAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRBQ0xEYXRhLT57Q29uZmlnQ2hhbmdlfSAgIHx8ICcnLAogICAgICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSB8fCAwLAogICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAkQUNMRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3QgY3JlYXRlCiAgICAgICAgaWYgKCAhJEFDTElEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnVGhlcmUgd2FzIGFuIGVycm9yIGNyZWF0aW5nIHRoZSBBQ0wnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIHRvIG92ZXJ2aWV3CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07T2JqZWN0VHlwZT0kUGFyYW17T2JqZWN0VHlwZX0iICk7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBPdmVydmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KfQoKc3ViIF9TaG93T3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJEFDTE9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBQ0w6OkRCOjpBQ0wnKTsKICAgIG15ICRPdXRwdXQgICAgICAgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgIGlmICggJFNlbGYtPntVc2VySUR9ID09IDEgKSB7CgogICAgICAgICMgc2hvdyBlcnJvciBub3RmeSwgZG9uJ3Qgd29yayB3aXRoIHVzZXIgaWQgMQogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PgogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdQbGVhc2Ugbm90ZSB0aGF0IEFDTCByZXN0cmljdGlvbnMgd2lsbCBiZSBpZ25vcmVkIGZvciB0aGUgU3VwZXJ1c2VyIGFjY291bnQgKFVzZXJJRCAxKS4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBub3RpZmljYXRpb25zIGlmIGFueQogICAgaWYgKCAkUGFyYW17Tm90aWZ5RGF0YX0gKSB7CiAgICAgICAgZm9yIG15ICROb3RpZmljYXRpb24gKCBAeyAkUGFyYW17Tm90aWZ5RGF0YX0gfSApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAleyROb3RpZmljYXRpb259LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJlc3RyaWN0IHZhbGlkIHN0YXRlIGlmIG5lZWRlZAogICAgbXkgJVZhbGlkTGlzdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTG9va3VwID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwogICAgbXkgQFZhbGlkSURzICAgID0gKCAkVmFsaWRMb29rdXB7J3ZhbGlkJ30sICRWYWxpZExvb2t1cHsnaW52YWxpZC10ZW1wb3JhcmlseSd9ICk7CiAgICBpZiAoICRTZWxmLT57SW5jbHVkZUludmFsaWR9ICkgewogICAgICAgIHB1c2ggQFZhbGlkSURzLCAkVmFsaWRMb29rdXB7J2ludmFsaWQnfTsKICAgIH0KCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAkUGFyYW17T2JqZWN0VHlwZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnT2JqZWN0VHlwZScsCiAgICAgICAgRGF0YSAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpY2tldCAgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJ0lUU00gQ29uZmlnSXRlbScsCiAgICAgICAgfSwKICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDAsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAwLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte09iamVjdFR5cGV9IHx8ICdUaWNrZXQnLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBXNzVwYycsCiAgICApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgZ2V0IEFDTCBsaXN0CiAgICBteSAkQUNMTGlzdCA9ICRBQ0xPYmplY3QtPkFDTExpc3QoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgICAgICAgICBWYWxpZElEcyA9PiBcQFZhbGlkSURzLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBWYWxpZElEcyAgICA9PiBcQFZhbGlkSURzLAogICAgICAgIE9iamVjdFR5cGVzID0+IFskUGFyYW17T2JqZWN0VHlwZX1dLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgKTsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRBQ0xMaXN0KSApIHsKCiAgICAgICAgIyBzb3J0IGRhdGEgbnVtZXJpY2FsbHkKICAgICAgICBteSBAQUNMSURzU29ydGVkID0gc29ydCB7ICRBQ0xMaXN0LT57JGF9IGNtcCAkQUNMTGlzdC0+eyRifSB9IGtleXMgJXskQUNMTGlzdH07CgogICAgICAgICMgZ2V0IGVhY2ggQUNMcyBkYXRhCiAgICAgICAgZm9yIG15ICRBQ0xJRCAoQEFDTElEc1NvcnRlZCkgewoKICAgICAgICAgICAgbXkgJEFDTERhdGEgPSAkQUNMT2JqZWN0LT5BQ0xHZXQoCiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHRoZSB2YWxpZCBzdGF0ZQogICAgICAgICAgICAkQUNMRGF0YS0+e1ZhbGlkSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTG9va3VwKCBWYWxpZElEID0+ICRBQ0xEYXRhLT57VmFsaWRJRH0gKTsKCiAgICAgICAgICAgICMgcHJpbnQgZWFjaCBBQ0wgaW4gb3ZlcnZpZXcgdGFibGUKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBQ0xSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXskQUNMRGF0YX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHByaW50IG5vIGRhdGEgZm91bmQgbWVzc2FnZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBQ0xOb0RhdGFSb3cnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgJFBhcmFte0luY2x1ZGVJbnZhbGlkQ2hlY2tlZH0gPSAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/ICdjaGVja2VkJyA6ICcnOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5BQ0wnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfU2hvd0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgQUNMIGluZm9ybWF0aW9uCiAgICBteSAkQUNMRGF0YSA9ICRQYXJhbXtBQ0xEYXRhfSB8fCB7fTsKCiAgICAjIGRlY2lkZSB3aGV0aGVyIHRvIHNob3cgZGVsZXRlIGJ1dHRvbgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRWRpdCcgJiYgJEFDTERhdGEgJiYgJEFDTERhdGEtPntWYWxpZElEfSBuZSAnMScgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FDTERlbGV0ZUFjdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskQUNMRGF0YX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICBteSAlVmFsaWRMb29rdXAgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgJFBhcmFte1ZhbGlkT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkQUNMRGF0YS0+e1ZhbGlkSUR9IHx8ICRWYWxpZExvb2t1cHsnaW52YWxpZC10ZW1wb3JhcmlseSd9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZSBWYWxpZGF0ZV9SZXF1aXJlZCAnIC4gKCAkUGFyYW17RXJyb3JzfS0+eydWYWxpZElESW52YWxpZCd9IHx8ICcnICksCiAgICApOwoKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAjIGZvciBjb21wYXRhYmlsaXR5IHdpdGggSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgJFBhcmFte09iamVjdFR5cGV9ID0gJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkQ29uZmlnUHJlZml4ID0gJFBhcmFte09iamVjdFR5cGV9IGVxICdDb25maWdJdGVtJyA/ICdJVFNNQ29uZmlnSXRlbScgOiAnJzsKCiAgICBteSAkQUNMS2V5c0xldmVsMU1hdGNoID0gJENvbmZpZ09iamVjdC0+R2V0KCAkQ29uZmlnUHJlZml4IC4gJ0FDTEtleXNMZXZlbDFNYXRjaCcgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwxTWF0Y2h9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwxTWF0Y2gsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIEl0ZW1BZGRMZXZlbDEnLAogICAgICAgIElEICAgICAgICAgICA9PiAnSXRlbUFkZExldmVsMU1hdGNoJywKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDFDaGFuZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRDb25maWdQcmVmaXggLiAnQUNMS2V5c0xldmVsMUNoYW5nZScgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwxQ2hhbmdlfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQUNMS2V5c0xldmVsMUNoYW5nZSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0l0ZW1BZGQnLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplIEl0ZW1BZGQgSXRlbUFkZExldmVsMScsCiAgICAgICAgSUQgICAgICAgICAgID0+ICdJdGVtQWRkTGV2ZWwxQ2hhbmdlJywKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQb3NzaWJsZSA9ICRDb25maWdPYmplY3QtPkdldCggJENvbmZpZ1ByZWZpeCAuICdBQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZScgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUG9zc2libGV9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUG9zc2libGUsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBJRCAgICAgICAgICAgPT4gJ1Bvc3NpYmxlJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQb3NzaWJsZUFkZCA9ICRDb25maWdPYmplY3QtPkdldCggJENvbmZpZ1ByZWZpeCAuICdBQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZUFkZCcgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUG9zc2libGVBZGR9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUG9zc2libGVBZGQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBJRCAgICAgICAgICAgPT4gJ1Bvc3NpYmxlQWRkJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQb3NzaWJsZU5vdCA9ICRDb25maWdPYmplY3QtPkdldCggJENvbmZpZ1ByZWZpeCAuICdBQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZU5vdCcgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUG9zc2libGVOb3R9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUG9zc2libGVOb3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBJRCAgICAgICAgICAgPT4gJ1Bvc3NpYmxlTm90JywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQcm9wZXJ0aWVzID0gJENvbmZpZ09iamVjdC0+R2V0KCAkQ29uZmlnUHJlZml4IC4gJ0FDTEtleXNMZXZlbDI6OlByb3BlcnRpZXMnICkgfHwge307CiAgICAkUGFyYW17QUNMS2V5c0xldmVsMlByb3BlcnRpZXN9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUHJvcGVydGllcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0l0ZW1BZGQnLAogICAgICAgIElEICAgICAgICAgICA9PiAnUHJvcGVydGllcycsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgSXRlbUFkZCBMZXZlbFRvQmVBZGRlZCcsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICApOwoKICAgIG15ICRBQ0xLZXlzTGV2ZWwyUHJvcGVydGllc0RhdGFiYXNlID0gJENvbmZpZ09iamVjdC0+R2V0KCAkQ29uZmlnUHJlZml4IC4gJ0FDTEtleXNMZXZlbDI6OlByb3BlcnRpZXNEYXRhYmFzZScgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUHJvcGVydGllc0RhdGFiYXNlfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQUNMS2V5c0xldmVsMlByb3BlcnRpZXNEYXRhYmFzZSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0l0ZW1BZGQnLAogICAgICAgIElEICAgICAgICAgICA9PiAnUHJvcGVydGllc0RhdGFiYXNlJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgJFBhcmFte0FDTEtleXNMZXZlbDRQcmVmaXhlc30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJycgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0V4YWN0IG1hdGNoJyksCiAgICAgICAgICAgICdbTm90XScgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOZWdhdGVkIGV4YWN0IG1hdGNoJyksCiAgICAgICAgICAgICdbUmVnRXhwXScgICAgPT4gVHJhbnNsYXRhYmxlKCdSZWd1bGFyIGV4cHJlc3Npb24nKSwKICAgICAgICAgICAgJ1tyZWdleHBdJyAgICA9PiBUcmFuc2xhdGFibGUoJ1JlZ3VsYXIgZXhwcmVzc2lvbiAoaWdub3JlIGNhc2UpJyksCiAgICAgICAgICAgICdbTm90UmVnRXhwXScgPT4gVHJhbnNsYXRhYmxlKCdOZWdhdGVkIHJlZ3VsYXIgZXhwcmVzc2lvbicpLAogICAgICAgICAgICAnW05vdHJlZ2V4cF0nID0+IFRyYW5zbGF0YWJsZSgnTmVnYXRlZCByZWd1bGFyIGV4cHJlc3Npb24gKGlnbm9yZSBjYXNlKScpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0l0ZW1QcmVmaXgnLAogICAgICAgIENsYXNzICAgICAgICAgID0+ICdJdGVtUHJlZml4JywKICAgICAgICBJRCAgICAgICAgICAgICA9PiAnUHJlZml4ZXMnLAogICAgICAgIFNvcnQgICAgICAgICAgID0+ICdJbmRpdmlkdWFsS2V5JywKICAgICAgICBTb3J0SW5kaXZpZHVhbCA9PiBbICcnLCAnW05vdF0nLCAnW1JlZ0V4cF0nLCAnW3JlZ2V4cF0nLCAnW05vdFJlZ0V4cF0nLCAnW05vdHJlZ2V4cF0nIF0sCiAgICAgICAgVHJhbnNsYXRpb24gICAgPT4gMCwKICAgICAgICBBdXRvQ29tcGxldGUgICA9PiAnb2ZmJywKICAgICk7CgogICAgIyBnZXQgbGlzdCBvZiBhbGwgcG9zc2libGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJFBhcmFte09iamVjdFR5cGV9LAogICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgKTsKICAgIG15ICVEeW5hbWljRmllbGROYW1lcyA9IHJldmVyc2UgJXskRHluYW1pY0ZpZWxkTGlzdH07CiAgICBteSAlRHluYW1pY0ZpZWxkczsKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHNvcnQga2V5cyAlRHluYW1pY0ZpZWxkTmFtZXMgKSB7CiAgICAgICAgJER5bmFtaWNGaWVsZHN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGROYW1lIH0gPSAkRHluYW1pY0ZpZWxkTmFtZTsKICAgIH0KICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwzRHluYW1pY0ZpZWxkc30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnTmV3RGF0YUtleURyb3Bkb3duJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBOZXdEYXRhS2V5RHJvcGRvd24nLAogICAgICAgIElEICAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgIyBnZXQgbGlzdCBvZiBhbGwgcG9zc2libGUgYWN0aW9ucwogICAgbXkgQFBvc3NpYmxlQWN0aW9uc0xpc3Q7CiAgICBteSAkQUNMS2V5c0xldmVsM0FjdGlvbnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0FDTEtleXNMZXZlbDM6OkFjdGlvbnMnKSB8fCB7fTsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRBQ0xLZXlzTGV2ZWwzQWN0aW9uc30gKSB7CiAgICAgICAgcHVzaCBAUG9zc2libGVBY3Rpb25zTGlzdCwgQHsgJEFDTEtleXNMZXZlbDNBY3Rpb25zLT57JEtleX0gfTsKICAgIH0KCiAgICAkUGFyYW17QUNMS2V5c0xldmVsM0FjdGlvbnN9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFxAUG9zc2libGVBY3Rpb25zTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ05ld0RhdGFLZXlEcm9wZG93bicsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgTmV3RGF0YUtleURyb3Bkb3duIEJvb2xlYW4nLAogICAgICAgIElEICAgICAgICAgICA9PiAnQWN0aW9uJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgJFBhcmFte1Bvc3NpYmxlQWN0aW9uc0xpc3R9ID0gXEBQb3NzaWJsZUFjdGlvbnNMaXN0OwoKICAgIGlmICggZGVmaW5lZCAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSAmJiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSA9PSAxICkgewogICAgICAgICRQYXJhbXtDaGVja2VkfSA9ICdjaGVja2VkICc7CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBzaG93IG5vdGlmaWNhdGlvbnMgaWYgYW55CiAgICBpZiAoICRQYXJhbXtOb3RpZnlEYXRhfSApIHsKICAgICAgICBmb3IgbXkgJE5vdGlmaWNhdGlvbiAoIEB7ICRQYXJhbXtOb3RpZnlEYXRhfSB9ICkgewogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgICAgICV7JE5vdGlmaWNhdGlvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGRhdGEgZm9yIEpTCiAgICBteSBAQUNMRWRpdFBvc3NpYmxlQWN0aW9uc0xpc3Q7CiAgICBmb3IgbXkgJEl0ZW0gKEBQb3NzaWJsZUFjdGlvbnNMaXN0KSB7CiAgICAgICAgbXkgJUFDTEVkaXQgPSAoCiAgICAgICAgICAgIGxhYmVsID0+ICRJdGVtLAogICAgICAgICAgICB2YWx1ZSA9PiAkSXRlbQogICAgICAgICk7CiAgICAgICAgcHVzaCBAQUNMRWRpdFBvc3NpYmxlQWN0aW9uc0xpc3QsIFwlQUNMRWRpdDsKICAgIH0KCiAgICAjIHNldCBBQ0wgZGF0YQogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdQb3NzaWJsZUFjdGlvbnNMaXN0JywKICAgICAgICBWYWx1ZSA9PiBcQEFDTEVkaXRQb3NzaWJsZUFjdGlvbnNMaXN0LAogICAgKTsKCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgIyBmb3IgY29tcGF0YWJpbGl0eSB3aXRoIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgIGRlbGV0ZSAkUGFyYW17T2JqZWN0VHlwZX07CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gIkFkbWluQUNMJFBhcmFte0FjdGlvbn0iLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXskQUNMRGF0YX0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9HZXRQYXJhbXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkR2V0UGFyYW07CgogICAgIyBnZXQgcGFyYW1ldGVycyBmcm9tIHdlYiBicm93c2VyCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICBxdyggTmFtZSBFbnRpdHlJRCBDb21tZW50IERlc2NyaXB0aW9uIFN0b3BBZnRlck1hdGNoIFZhbGlkSUQgQ29uZmlnTWF0Y2ggQ29uZmlnQ2hhbmdlICkKICAgICAgICBxdyggTmFtZSBPYmplY3RUeXBlIEVudGl0eUlEIENvbW1lbnQgRGVzY3JpcHRpb24gU3RvcEFmdGVyTWF0Y2ggVmFsaWRJRCBDb25maWdNYXRjaCBDb25maWdDaGFuZ2UgKQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICkKICAgIHsKICAgICAgICAkR2V0UGFyYW0tPnskUGFyYW1OYW1lfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKQogICAgICAgICAgICB8fCAnJzsKICAgIH0KCiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbmZpZ01hdGNofSApIHsKICAgICAgICAkR2V0UGFyYW0tPntDb25maWdNYXRjaH0gPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRHZXRQYXJhbS0+e0NvbmZpZ01hdGNofSwKICAgICAgICApOwogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkR2V0UGFyYW0tPntDb25maWdNYXRjaH0gKSApIHsKICAgICAgICAgICAgJEdldFBhcmFtLT57Q29uZmlnTWF0Y2h9ID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEdldFBhcmFtLT57Q29uZmlnQ2hhbmdlfSApIHsKICAgICAgICAkR2V0UGFyYW0tPntDb25maWdDaGFuZ2V9ID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkR2V0UGFyYW0tPntDb25maWdDaGFuZ2V9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRHZXRQYXJhbS0+e0NvbmZpZ0NoYW5nZX0gKSApIHsKICAgICAgICAgICAgJEdldFBhcmFtLT57Q29uZmlnQ2hhbmdlfSA9IHVuZGVmOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJEdldFBhcmFtOwp9CgpzdWIgX0NoZWNrQUNMRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgQUNMIGRhdGEKICAgIG15ICRBQ0xEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTCcpLT5BQ0xHZXQoCiAgICAgICAgSUQgICAgID0+ICRQYXJhbXtJRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgdmFsaWQgQUNMIGRhdGEKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRBQ0xEYXRhKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNvdWxkIG5vdCBnZXQgZGF0YSBmb3IgQUNMSUQgJFBhcmFte0lEfSIsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBBQ0xEYXRhID0+ICRBQ0xEYXRhLAogICAgfTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Modules/AdminDynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluRHluYW1pY0ZpZWxkOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9ID0gJ0luY2x1ZGVJbnZhbGlkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9IH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0R5bmFtaWNGaWVsZERlbGV0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0lUU01Db25maWdJdGVtVmVyc2lvblVwZGF0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25TeW5jKCkgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gPT4gJ092ZXJ2aWV3JywKICAgICk7Cn0KCiMgQUpBWCBzdWItYWN0aW9uCnN1YiBfRHluYW1pY0ZpZWxkRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15ICRDb25maXJtZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlybWVkJyApOwoKICAgIGlmICggISRDb25maXJtZWQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIk5lZWQgJ0NvbmZpcm1lZCchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJElELAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGZpbmQgRHluYW1pY0ZpZWxkICRJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ludGVybmFsRmllbGR9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIGludGVybmFsIER5bmFtaWNGaWVsZCAkSUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkVmFsdWVzRGVsZXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+QWxsVmFsdWVzRGVsZXRlKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzOwoKICAgIGlmICgkVmFsdWVzRGVsZXRlU3VjY2VzcykgewogICAgICAgICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICBJRCAgICAgPT4gJElELAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBlbmNvZGluZyBkb2VzIG5vdCBtYXR0ZXIsIGFzICRTdWNjZXNzIGlzIGVpdGhlciB1bmRlZiBvciBhbiBpbnRlZ2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIENvbnRlbnQgICAgID0+ICRTdWNjZXNzLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgpzdWIgX1Nob3dPdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRmllbGRUeXBlQ29uZmlnICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKTsKICAgIG15ICRPYmplY3RUeXBlRmlsdGVyICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnT2JqZWN0VHlwZUZpbHRlcicgKSB8fCAnJzsKICAgIG15ICROYW1lc3BhY2VGaWx0ZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZXNwYWNlRmlsdGVyJyApICB8fCAnJzsKCiAgICAkUGFyYW17SW5jbHVkZUludmFsaWR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0luY2x1ZGVJbnZhbGlkJyApOwoKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SW5jbHVkZUludmFsaWR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJFBhcmFte0luY2x1ZGVJbnZhbGlkfSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbXtJbmNsdWRlSW52YWxpZH07CiAgICB9CiAgICAkUGFyYW17SW5jbHVkZUludmFsaWRDaGVja2VkfSA9ICRTZWxmLT57SW5jbHVkZUludmFsaWR9ID8gJ2NoZWNrZWQnIDogJyc7CgogICAgbXkgJE91dHB1dCA9IGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXI7CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICVDSURlZmluaXRpb25zT3V0T2ZTeW5jID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25OZWVkU3luYygpOwoKICAgIGlmICggJUNJRGVmaW5pdGlvbnNPdXRPZlN5bmMgKSB7CiAgICAgICAgbXkgJENJU3luY2hyb25pemVNZXNzYWdlID0gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJwogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBJbmZvID0+ICRDSVN5bmNocm9uaXplTWVzc2FnZSwKICAgICAgICApOwogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgY2hlY2sgZm9yIHBvc3NpYmxlIG9yZGVyIGNvbGxpc2lvbnMgb3IgZ2FwcwogICAgbXkgJE9yZGVyU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZE9yZGVyQ2hlY2soKTsKICAgIGlmICggISRPcmRlclN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkT3JkZXJSZXNldCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBjYWxsIGFsbCBuZWVkZWQgdGVtcGxhdGUgYmxvY2tzCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNYWluJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0KICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkVHlwZUNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnRmllbGRzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB0aGUgZmllbGQgdHlwZXMgKGJhY2tlbmRzKSBhbmQgaXRzIGNvbmZpZyBkaWFsb2dzCiAgICBteSAlRmllbGRUeXBlczsKICAgIG15ICVGaWVsZERpYWxvZ3M7CiAgICBGSUVMRFRZUEU6CiAgICBmb3IgbXkgJEZpZWxkVHlwZSAoIHNvcnQga2V5cyAleyRGaWVsZFR5cGVDb25maWd9ICkgewoKICAgICAgICBuZXh0IEZJRUxEVFlQRSBpZiAhJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9OwogICAgICAgIG5leHQgRklFTERUWVBFIGlmICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc2FibGVkQWRkfTsKCiAgICAgICAgIyBhZGQgdGhlIGZpZWxkIHR5cGUgdG8gdGhlIGxpc3QKICAgICAgICAkRmllbGRUeXBlc3skRmllbGRUeXBlfSA9ICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc3BsYXlOYW1lfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBkaWFsb2cKICAgICAgICAkRmllbGREaWFsb2dzeyRGaWVsZFR5cGV9ID0gJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9LT57Q29uZmlnRGlhbG9nfTsKICAgIH0KCiAgICBteSAkT2JqZWN0VHlwZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpOwogICAgbXkgJE5hbWVzcGFjZXMgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcycpOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRPYmplY3RUeXBlQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdPYmplY3RzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG1ha2UgT2JqZWN0VHlwZUNvbmZpZyBsb2NhbCB2YXJpYWJsZSB0byBwcm9wZXIgc29ydGluZwogICAgbXkgJU9iamVjdFR5cGVDb25maWcgPSAleyRPYmplY3RUeXBlQ29uZmlnfTsKCiAgICAjIGN5Y2xlIHRob3VnaHQgYWxsIG9iamVjdHMgdG8gY3JlYXRlIHRoZSBzZWxlY3QgYWRkIGZpZWxkIHNlbGVjdHMKICAgIG15IEBPYmplY3RUeXBlczsKICAgIG15ICVPYmplY3RUeXBlc1RyYW5zbGF0ZWQ7CgogICAgT0JKRUNUVFlQRToKICAgIGZvciBteSAkT2JqZWN0VHlwZSAoCiAgICAgICAgc29ydCB7CiAgICAgICAgICAgICggaW50ICRPYmplY3RUeXBlQ29uZmlneyRhfS0+e1ByaW99IHx8IDAgKSA8PT4gKCBpbnQgJE9iamVjdFR5cGVDb25maWd7JGJ9LT57UHJpb30gfHwgMCApCiAgICAgICAgfSBrZXlzICVPYmplY3RUeXBlQ29uZmlnCiAgICAgICAgKQogICAgewogICAgICAgIG5leHQgT0JKRUNUVFlQRSB1bmxlc3MgJE9iamVjdFR5cGVDb25maWctPnskT2JqZWN0VHlwZX07CgogICAgICAgIG15ICRTZWxlY3ROYW1lID0gJE9iamVjdFR5cGUgLiAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgbXkgQEZpZWxkTGlzdDsKICAgICAgICBteSBAUmVmZXJlbmNlRHluYW1pY0ZpZWxkczsKICAgICAgICBGSUVMRFRZUEU6CiAgICAgICAgZm9yIG15ICRGaWVsZFR5cGVOYW1lICggc29ydCB7ICRGaWVsZERpYWxvZ3N7JGF9IGNtcCAkRmllbGREaWFsb2dzeyRifSB9IGtleXMgJUZpZWxkVHlwZXMgKSB7CgogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGVOYW1lfXtPYmplY3RUeXBlc30gKSApIHsKICAgICAgICAgICAgICAgIG5leHQgRklFTERUWVBFIHVubGVzcyBhbnkgeyAkT2JqZWN0VHlwZSBlcSAkXyB9ICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlTmFtZX17T2JqZWN0VHlwZXN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBncm91cCByZWZlcmVuY2UgZmllbGQgdHlwZXMgdG8gc2hvdyBpbiB0cmVlIHZpZXcKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEZpZWxkVHlwZXN7JEZpZWxkVHlwZU5hbWV9OwogICAgICAgICAgICBpZiAoICRGaWVsZERpYWxvZ3N7JEZpZWxkVHlwZU5hbWV9ID1+IC9eQWRtaW5EeW5hbWljRmllbGRSZWZlcmVuY2UkLyApIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICdSZWZlcmVuY2U6OicgLiAkVmFsdWU7CiAgICAgICAgICAgICAgICBwdXNoIEBSZWZlcmVuY2VEeW5hbWljRmllbGRzLCAkRmllbGRUeXBlTmFtZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBARmllbGRMaXN0LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkRmllbGRUeXBlTmFtZSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkRmllbGQgKEBGaWVsZExpc3QpIHsKCiAgICAgICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgiRnJvbnRlbmQ6Ok1vZHVsZSIpLT57ICRGaWVsZERpYWxvZ3N7ICRGaWVsZC0+e0tleX0gfSB9ICkgewogICAgICAgICAgICAgICAgJEZpZWxkLT57RGlzYWJsZWR9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGhlIEFkZCBEeW5hbWljIEZpZWxkIHNlbGVjdAogICAgICAgIG15ICRBZGREeW5hbWljRmllbGRTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBGaWVsZExpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJFNlbGVjdE5hbWUsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJy0nLAogICAgICAgICAgICBUcmVlVmlldyAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBXNzVwYycsCiAgICAgICAgKTsKCiAgICAgICAgIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzLgogICAgICAgICMgSW5qZWN0IGFkZGl0aW9uYWwgZGF0YSBpbnRvIHRoZSBvcHRpb24gdGFnLgogICAgICAgICMgRS5nLiA8b3B0aW9uIHZhbHVlPSJSZWZlcmVuY2U6OklUU01Db25maWdJdGVtIiBkYXRhLXJlZmVyZW5jZWRfb2JqZWN0X3R5cGU9IklUU01Db25maWdJdGVtIj4mbmJzcDsmbmJzcDtJVFNNQ29uZmlnSXRlbTwvb3B0aW9uPgogICAgICAgICMgU2VlIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9hdHRfZGF0YS0uYXNwCiAgICAgICAgbXkgJFJlZmVyZW5jZUZpZWxkc1N0cmcgPSBqb2luKCAnfCcsIEBSZWZlcmVuY2VEeW5hbWljRmllbGRzICk7CiAgICAgICAgJEFkZER5bmFtaWNGaWVsZFN0cmcgPX4gc1sgKHZhbHVlPSIoJFJlZmVyZW5jZUZpZWxkc1N0cmcpIik+XVsgJDEgZGF0YS1yZWZlcmVuY2VkX29iamVjdF90eXBlPSIkMiI+XWc7CgogICAgICAgIG15ICRPYmplY3RUeXBlTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpCiAgICAgICAgICAgIC0+eyRPYmplY3RUeXBlfS0+e0Rpc3BsYXlOYW1lfSB8fCAkT2JqZWN0VHlwZTsKCiAgICAgICAgcHVzaCBAT2JqZWN0VHlwZXMsICRPYmplY3RUeXBlOwoKICAgICAgICBpZiAoICRPYmplY3RUeXBlTmFtZSBuZSAnQXJ0aWNsZScgKSB7CiAgICAgICAgICAgICRPYmplY3RUeXBlc1RyYW5zbGF0ZWR7JE9iamVjdFR5cGV9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRPYmplY3RUeXBlTmFtZSk7CiAgICAgICAgfQoKICAgICAgICAjIGNhbGwgQWN0aW9uQWRkRHluYW1pY0ZpZWxkIGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbkFkZER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQWRkRHluYW1pY0ZpZWxkU3RyZyA9PiAkQWRkRHluYW1pY0ZpZWxkU3RyZywKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgICAgICAgICAgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlTmFtZSAgICAgID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICAgICAgICAgIFNlbGVjdE5hbWUgICAgICAgICAgPT4gJFNlbGVjdE5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgaWYgKCAkT2JqZWN0VHlwZU5hbWUgZXEgJ0lUU00gQ29uZmlnSXRlbScgJiYgJUNJRGVmaW5pdGlvbnNPdXRPZlN5bmMgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgPT4gJ0FkbWluRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBTdWJhY3Rpb24gICA9PiAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uVXBkYXRlJywKICAgICAgICAgICAgICAgICAgICBUZXh0ICAgICAgICA9PiAnU3luYyBDSSBEZWZpbml0aW9ucycsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0RlcGxveSBkeW5hbWljIGZpZWxkIGNoYW5nZXM6IEFkZCBuZXcgZGVmaW5pdGlvbnMgZm9yIGFsbCBhZmZlY3RlZCBJVFNNQ29uZmlnSXRlbSBjbGFzc2VzLicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0U3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJU9iamVjdFR5cGVzVHJhbnNsYXRlZCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZE9iamVjdFR5cGUnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkT2JqZWN0VHlwZUZpbHRlciwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZE9iamVjdFR5cGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZE9iamVjdFN0cmcgPT4gJER5bmFtaWNGaWVsZE9iamVjdFN0cmcsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVzcGFjZXMpICkgewogICAgICAgIG15ICVOYW1lc3BhY2VTZWxlY3Rpb24gPSAoCiAgICAgICAgICAgICc8bm9uZT4nID0+ICc8JyAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnbm9uZScpIC4gJz4nLAogICAgICAgICAgICBtYXAgeyAkXyA9PiAkXyB9ICROYW1lc3BhY2VzLT5AKiwKICAgICAgICApOwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZXNwYWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVOYW1lc3BhY2VTZWxlY3Rpb24sCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lc3BhY2VTdHJnID0+ICREeW5hbWljRmllbGROYW1lc3BhY2VTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT2JqZWN0VHlwZXMnLAogICAgICAgIFZhbHVlID0+IFxAT2JqZWN0VHlwZXMKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnRHluYW1pY0ZpZWxkcycsCiAgICAgICAgVmFsdWUgPT4gXCVGaWVsZERpYWxvZ3MKICAgICk7CgogICAgIyBjYWxsIGhpbnQgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0hpbnQnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBtZXJnZSBUaWNrZXQgYW5kIEFydGljbGUgaW50byBvbmUgdHlwZQogICAgbXkgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZjsKICAgIGlmICggJE9iamVjdFR5cGVGaWx0ZXIgZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9ICRPYmplY3RUeXBlRmlsdGVyID8gWyRPYmplY3RUeXBlRmlsdGVyXSA6IHVuZGVmOwogICAgfQoKICAgICMgZ2V0IGNvbXBsZXRlIGR5bmFtaWMgZmllbGRzIGxpc3QKICAgIG15ICREeW5hbWljRmllbGRzTGlzdEFsbCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgIyBnZXQgZmlsdGVyZWQgZHluYW1pYyBmaWVsZHMgbGlzdAogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0RmlsdGVyZWQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiwKICAgICAgICBOYW1lc3BhY2UgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgVmFsaWQgICAgICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/IDAgOiAxLAogICAgKTsKCiAgICBteSAkRmlsdGVyU3RyZyA9ICcnOwogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRPYmplY3RUeXBlRmlsdGVyKSApIHsKICAgICAgICAkRmlsdGVyU3RyZyAuPSAiO09iamVjdFR5cGVGaWx0ZXI9IiAuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuRmlsdGVyIHwgdXJpICVdJywKICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRPYmplY3RUeXBlRmlsdGVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVzcGFjZXMpICkgewogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSgkTmFtZXNwYWNlRmlsdGVyKSApIHsKICAgICAgICAgICAgJEZpbHRlclN0cmcgLj0gIjtOYW1lc3BhY2VGaWx0ZXI9IiAuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkZpbHRlciB8IHVyaSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHByaW50IHRoZSBsaXN0IG9mIGR5bmFtaWMgZmllbGRzCiAgICAkU2VsZi0+X0R5bmFtaWNGaWVsZHNMaXN0U2hvdygKICAgICAgICBEeW5hbWljRmllbGRzID0+ICREeW5hbWljRmllbGRzTGlzdEZpbHRlcmVkLAogICAgICAgIFRvdGFsICAgICAgICAgPT4gc2NhbGFyIEB7JER5bmFtaWNGaWVsZHNMaXN0RmlsdGVyZWR9LAogICAgICAgIE1heEZpZWxkT3JkZXIgPT4gc2NhbGFyIEB7JER5bmFtaWNGaWVsZHNMaXN0QWxsfSwKICAgICAgICBGaWx0ZXJTdHJnICAgID0+ICRGaWx0ZXJTdHJnLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluRHluYW1pY0ZpZWxkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEZpbHRlclN0cmcgPT4gJEZpbHRlclN0cmcsCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0R5bmFtaWNGaWVsZHNMaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkRmllbGRUeXBlQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKTsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoYW4gZmllbGRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IGZpZWxkIHBhZ2UKICAgIG15ICRTdGFydEhpdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdBZG1pbkR5bmFtaWNGaWVsZHNPdmVydmlld1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+e1Nlc3Npb259eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMzU7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnRHluYW1pY0ZpZWxkc092ZXJ2aWV3UGFnZVNob3duJzsKCiAgICAjIGdldCBkYXRhIHNlbGVjdGlvbgogICAgbXkgJURhdGE7CiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpOwogICAgaWYgKCAkQ29uZmlnICYmICRDb25maWctPnskR3JvdXB9ICYmICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9IH07CiAgICB9CgogICAgIyBjYWxjdWxhdGUgbWF4LiBzaG93biBwZXIgcGFnZQogICAgaWYgKCAkU3RhcnRIaXQgPiAkUGFyYW17VG90YWx9ICkgewogICAgICAgIG15ICRQYWdlcyA9IGludCggKCAkUGFyYW17VG90YWx9IC8gJFBhZ2VTaG93biApICsgMC45OTk5OSApOwogICAgICAgICRTdGFydEhpdCA9ICggKCAkUGFnZXMgLSAxICkgKiAkUGFnZVNob3duICkgKyAxOwogICAgfQoKICAgICMgYnVpbGQgbmF2IGJhcgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj0nIC4gJExheW91dE9iamVjdC0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICAgICAgSURQcmVmaXggID0+ICRMYXlvdXRPYmplY3QtPntBY3Rpb259LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIGR5bmFtaWMgZmllbGRzIHBlciBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFnZVNob3duLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFNvcnQgICAgICAgID0+ICdOdW1lcmljVmFsdWUnLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRleHRTZXR0aW5ncycsCiAgICAgICAgICAgIERhdGEgPT4geyAlUGFnZU5hdiwgJVBhcmFtLCB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiBhdCBsZWFzdCAxIGR5bmFtaWMgZmllbGQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtCiAgICBpZiAoICRQYXJhbXtUb3RhbH0gKSB7CgogICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGRzIGRldGFpbHMKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIERZTkFNSUNGSUVMRElEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkSUQgKCBAeyAkUGFyYW17RHluYW1pY0ZpZWxkc30gfSApIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKCAkQ291bnRlciA+PSAkU3RhcnRIaXQgJiYgJENvdW50ZXIgPCAoICRQYWdlU2hvd24gKyAkU3RhcnRIaXQgKSApIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIElEID0+ICREeW5hbWljRmllbGRJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRElEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkRGF0YSk7CgogICAgICAgICAgICAgICAgIyBjb252ZXJ0IFZhbGlkSUQgdG8gVmFsaWRpdHkgc3RyaW5nCiAgICAgICAgICAgICAgICBteSAkVmFsaWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkRHluYW1pY0ZpZWxkRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgb2JqZWN0IHR5cGUgZGlzcGxheSBuYW1lCiAgICAgICAgICAgICAgICBteSAkT2JqZWN0VHlwZU5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKQogICAgICAgICAgICAgICAgICAgIC0+eyAkRHluYW1pY0ZpZWxkRGF0YS0+e09iamVjdFR5cGV9IH0tPntEaXNwbGF5TmFtZX0KICAgICAgICAgICAgICAgICAgICB8fCAkRHluYW1pY0ZpZWxkRGF0YS0+e09iamVjdFR5cGV9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBmaWVsZCB0eXBlIGRpc3BsYXkgbmFtZQogICAgICAgICAgICAgICAgbXkgJEZpZWxkVHlwZU5hbWUgPSAkRmllbGRUeXBlQ29uZmlnLT57ICREeW5hbWljRmllbGREYXRhLT57RmllbGRUeXBlfSB9LT57RGlzcGxheU5hbWV9CiAgICAgICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZERhdGEtPntGaWVsZFR5cGV9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBmaWVsZCBiYWNrZW5kIGRpYWxvZwogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0RpYWxvZyA9ICRGaWVsZFR5cGVDb25maWctPnsgJER5bmFtaWNGaWVsZERhdGEtPntGaWVsZFR5cGV9IH0tPntDb25maWdEaWFsb2d9CiAgICAgICAgICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICAgICAgICAgIyBwcmludCBlYWNoIGR5bmFtaWMgZmllbGQgcm93CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRzUm93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskRHluYW1pY0ZpZWxkRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkICAgICAgICAgID0+ICRWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGlhbG9nICAgPT4gJENvbmZpZ0RpYWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGVOYW1lID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyU3RyZyAgICAgPT4gJFBhcmFte0ZpbHRlclN0cmd9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgSW50ZXJuYWwgZmllbGRzIGNhbiBub3QgYmUgZGVsZXRlZC4KICAgICAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGREYXRhLT57SW50ZXJuYWxGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZUxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZERhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgICAgICAgICAgPT4gJFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGlhbG9nICAgPT4gJENvbmZpZ0RpYWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkVHlwZU5hbWUgID0+ICRGaWVsZFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZU5hbWUgPT4gJE9iamVjdFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0Nsb25lTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskRHluYW1pY0ZpZWxkRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgICA9PiAkVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdEaWFsb2cgICA9PiAkQ29uZmlnRGlhbG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkRHluYW1pY0ZpZWxkRGF0YS0+e09iamVjdFR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWF4RmllbGRPcmRlcicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE1heEZpZWxkT3JkZXIgPT4gJFBhcmFte01heEZpZWxkT3JkZXJ9LAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIF9EeW5hbWljRmllbGRPcmRlclJlc2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRSZXNldFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZE9yZGVyUmVzZXQoKTsKCiAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSBpZiB0aGUgb3JkZXIgcmVzZXQgd2FzIG5vdCBzdWNjZXNzZnVsCiAgICBpZiAoICEkUmVzZXRTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAnQ291bGQgbm90IHJlc2V0IER5bmFtaWMgRmllbGQgb3JkZXIgcHJvcGVybHksIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBtb3JlIGRldGFpbHMuJwogICAgICAgICAgICApLAogICAgICAgICk7CiAgICB9CgogICAgIyByZWRpcmVjdCB0byBtYWluIHNjcmVlbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICJBY3Rpb249QWRtaW5EeW5hbWljRmllbGQiLAogICAgKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Modules/AdminDynamicFieldScreen.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGRTY3JlZW4ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluRHluYW1pY0ZpZWxkU2NyZWVuOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJywKKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IGJsZXNzIHslUGFyYW19LCAkVHlwZTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFpudW55SGVscGVyT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpabnVueUhlbHBlcicpOwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAjIHNldCBwcmVmIGZvciBzZWxlY3RlZCBvYmplY3QgdHlwZSBrZXkKICAgICRTZWxmLT57UHJlZktleVNlbGVjdGVkT2JqZWN0VHlwZX0gPSAnU2VsZWN0ZWRPYmplY3RUeXBlJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e1NlbGVjdGVkT2JqZWN0VHlwZX0gPSAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleVNlbGVjdGVkT2JqZWN0VHlwZX0gfSB8fCAnJzsKCiAgICAjIGZldGNoIHNlbGVjdGVkIG9iamVjdCB0eXBlIGZyb20gZnJvbnRlbmQgYW5kIHNlZSBpZiBjaGFuZ2UgaXMgbmVlZGVkCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkU2VsZWN0ZWRPYmplY3RUeXBlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlbGVjdGVkT2JqZWN0VHlwZScgKTsKICAgIGlmIChkZWZpbmVkICRTZWxlY3RlZE9iamVjdFR5cGUpIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlTZWxlY3RlZE9iamVjdFR5cGV9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJFNlbGVjdGVkT2JqZWN0VHlwZSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e1NlbGVjdGVkT2JqZWN0VHlwZX0gPSAkU2VsZWN0ZWRPYmplY3RUeXBlOwogICAgfQoKICAgICMgY2hlY2sgaWYgb2JqZWN0IHR5cGUgcmVzdHJpY3Rpb25zIG5lZWQgdG8gYmUgZGVyaXZlZCBmcm9tIHNlbGVjdGVkIGR5bmFtaWMgZmllbGQgb3Igc2NyZWVuCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkU2NyZWVuczo6T2JqZWN0VHlwZXMnKTsKICAgIG15ICRBY3Rpb25UeXBlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1R5cGUnICk7CiAgICBteSAkRGVyaXZlZE9iamVjdFR5cGU7CiAgICBteSBAT2JqZWN0VHlwZXNGaWx0ZXI7CiAgICBpZiAoICRBY3Rpb25UeXBlICkgewogICAgICAgIG15ICRFbGVtZW50ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnQnICk7CgogICAgICAgIGlmICgkQWN0aW9uVHlwZSBlcSAnRHluYW1pY0ZpZWxkU2NyZWVuJykgewogICAgICAgICAgICBteSAkREZTY3JlZW5zQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRTY3JlZW5zJyk7CiAgICAgICAgICAgIENPTkZJR0tFWToKICAgICAgICAgICAgZm9yIG15ICRDb25maWdLZXkgKGtleXMgJERGU2NyZWVuc0NvbmZpZy0+JSopIHsKICAgICAgICAgICAgICAgIGlmICgkREZTY3JlZW5zQ29uZmlnLT57JENvbmZpZ0tleX17JEVsZW1lbnR9KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgkQ29uZmlnS2V5IGVxICdGcmFtZXdvcmsnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBPYmplY3RUeXBlc0ZpbHRlciA9IHF3KFRpY2tldCBBcnRpY2xlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBPYmplY3RUeXBlc0ZpbHRlciA9ICRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZy0+eyRDb25maWdLZXl9LT5AKjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGFzdCBDT05GSUdLRVk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRBY3Rpb25UeXBlIGVxICdEZWZhdWx0Q29sdW1uc1NjcmVlbicpIHsKICAgICAgICAgICAgbXkgJERlZmF1bHRTY3JlZW5zQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdEZWZhdWx0Q29sdW1uc1NjcmVlbnMnKTsKICAgICAgICAgICAgQ09ORklHS0VZOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0tleSAoa2V5cyAkRGVmYXVsdFNjcmVlbnNDb25maWctPiUqKSB7CiAgICAgICAgICAgICAgICBpZiAoJERlZmF1bHRTY3JlZW5zQ29uZmlnLT57JENvbmZpZ0tleX17JEVsZW1lbnR9KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgkQ29uZmlnS2V5IGVxICdGcmFtZXdvcmsnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBPYmplY3RUeXBlc0ZpbHRlciA9IHF3KFRpY2tldCBBcnRpY2xlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBPYmplY3RUeXBlc0ZpbHRlciA9ICRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZy0+eyRDb25maWdLZXl9LT5AKjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGFzdCBDT05GSUdLRVk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRBY3Rpb25UeXBlIGVxICdEeW5hbWljRmllbGQnKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50LAogICAgICAgICAgICApOwogICAgICAgICAgICAkRGVyaXZlZE9iamVjdFR5cGUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX07CiAgICAgICAgICAgIEBPYmplY3RUeXBlc0ZpbHRlciA9ICgkRGVyaXZlZE9iamVjdFR5cGUpOwogICAgICAgICAgICBpZiAoJERlcml2ZWRPYmplY3RUeXBlIGVxICdUaWNrZXQnKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBPYmplY3RUeXBlc0ZpbHRlciwgJ0FydGljbGUnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJERGT2JqZWN0VHlwZXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKTsKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZykgKSB7CiAgICAgICAgICAgIERGU0NSRUVOU09CSkVDVFRZUEU6CiAgICAgICAgICAgIGZvciBteSAkREZTY3JlZW5PYmplY3RUeXBlICggbWFwIHsgJERGU2NyZWVuc09iamVjdFR5cGVzQ29uZmlnLT57JF99LT5AKiB9IGtleXMgJERGU2NyZWVuc09iamVjdFR5cGVzQ29uZmlnLT4lKiApIHsKCiAgICAgICAgICAgICAgICBuZXh0IERGU0NSRUVOU09CSkVDVFRZUEUgdW5sZXNzICRERk9iamVjdFR5cGVzQ29uZmlnLT57JERGU2NyZWVuT2JqZWN0VHlwZX07CgogICAgICAgICAgICAgICAgJFNlbGYtPntFbmFibGVkT2JqZWN0VHlwZXN9IC8vPSBbXTsKICAgICAgICAgICAgICAgIHB1c2ggJFNlbGYtPntFbmFibGVkT2JqZWN0VHlwZXN9LT5AKiwgJERGU2NyZWVuT2JqZWN0VHlwZTsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJERGU2NyZWVuT2JqZWN0VHlwZSBlcSAkU2VsZi0+e1NlbGVjdGVkT2JqZWN0VHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAoICRERlNjcmVlbk9iamVjdFR5cGUgZXEgJ0FydGljbGUnICYmICRTZWxmLT57U2VsZWN0ZWRPYmplY3RUeXBlfSBlcSAnVGlja2V0JyApCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBPYmplY3RUeXBlc0ZpbHRlciwgJERGU2NyZWVuT2JqZWN0VHlwZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFncmVwIHsgJF8gZXEgJ1RpY2tldCcgfSAkU2VsZi0+e0VuYWJsZWRPYmplY3RUeXBlc30tPkAqICkgewogICAgICAgICAgICAkU2VsZi0+e0VuYWJsZWRPYmplY3RUeXBlc30gLy89IFtdOwogICAgICAgICAgICBwdXNoICRTZWxmLT57RW5hYmxlZE9iamVjdFR5cGVzfS0+QCosICdUaWNrZXQnOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57U2VsZWN0ZWRPYmplY3RUeXBlfSBlcSAnVGlja2V0JyAmJiAhKGdyZXAgeyAkXyBlcSAnVGlja2V0JyB9IEBPYmplY3RUeXBlc0ZpbHRlcikgKSB7CiAgICAgICAgICAgIHB1c2ggQE9iamVjdFR5cGVzRmlsdGVyLCBxdyhUaWNrZXQgQXJ0aWNsZSk7CiAgICAgICAgfQogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgIG15ICREeW5hbWljRmllbGRzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+R2V0VmFsaWREeW5hbWljRmllbGRzKAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgIE9iamVjdFR5cGUgPT4gWyAnVGlja2V0JywgJ0FydGljbGUnIF0sCiAgICAgICAgT2JqZWN0VHlwZSA9PiBcQE9iamVjdFR5cGVzRmlsdGVyLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgKTsKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkc30gPSAkRHluYW1pY0ZpZWxkczsKCiAgICBteSAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0R2V0KAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBPYmplY3RUeXBlID0+ICREZXJpdmVkT2JqZWN0VHlwZSB8fCAkU2VsZi0+e1NlbGVjdGVkT2JqZWN0VHlwZX0sCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICk7CgogICAgJFNlbGYtPntEeW5hbWljRmllbGRTY3JlZW5zfSAgID0gJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdC0+e0R5bmFtaWNGaWVsZFNjcmVlbnN9OwogICAgJFNlbGYtPntEZWZhdWx0Q29sdW1uc1NjcmVlbnN9ID0gJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdC0+e0RlZmF1bHRDb2x1bW5zU2NyZWVuc307CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgb2JqZWN0cwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJFpudW55SGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGFuZ3VhZ2VPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyk7CgogICAgJFNlbGYtPntTdWJhY3Rpb259ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1YmFjdGlvbicgKSB8fCAnJzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEVsZW1lbnQgVHlwZSkpIHsKICAgICAgICAkUGFyYW17JE5lZWRlZH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmVlZGVkICk7CgogICAgICAgIG5leHQgTkVFREVEIGlmICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICBteSAlQ29uZmlnID0gJFNlbGYtPl9HZXRDb25maWcoJVBhcmFtKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEVkaXQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdFZGl0JyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93RWRpdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBEYXRhID0+IFwlQ29uZmlnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBBY3R2aXR5RGlhbG9nRWRpdEFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0VkaXRBY3Rpb24nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMKICAgICAgICBteSBAQXZhaWxhYmxlRWxlbWVudHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQXZhaWxhYmxlRWxlbWVudHMnICk7CgogICAgICAgIG15IEBEaXNhYmxlZEVsZW1lbnRzICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRGlzYWJsZWRFbGVtZW50cycgKTsKICAgICAgICBteSBAQXNzaWduZWRFbGVtZW50cyAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0Fzc2lnbmVkRWxlbWVudHMnICk7CiAgICAgICAgbXkgQEFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMnICk7CgogICAgICAgICMgZ2V0IGFsbCBFbGVtZW50cwogICAgICAgIG15ICVBdmFpbGFibGVFbGVtZW50cyAgICAgICAgPSBtYXAgeyAkXyA9PiB1bmRlZiB9IEBBdmFpbGFibGVFbGVtZW50czsKICAgICAgICBteSAlRGlzYWJsZWRFbGVtZW50cyAgICAgICAgID0gbWFwIHsgJF8gPT4gJzAnIH0gQERpc2FibGVkRWxlbWVudHM7CiAgICAgICAgbXkgJUFzc2lnbmVkRWxlbWVudHMgICAgICAgICA9IG1hcCB7ICRfID0+ICcxJyB9IEBBc3NpZ25lZEVsZW1lbnRzOwogICAgICAgIG15ICVBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMgPSBtYXAgeyAkXyA9PiAnMicgfSBAQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzOwoKICAgICAgICAjIGJ1aWxkIGNvbmZpZyBoYXNoCiAgICAgICAgbXkgJUNvbmZpZyA9ICgKICAgICAgICAgICAgJUF2YWlsYWJsZUVsZW1lbnRzLAogICAgICAgICAgICAlRGlzYWJsZWRFbGVtZW50cywKICAgICAgICAgICAgJUFzc2lnbmVkRWxlbWVudHMsCiAgICAgICAgICAgICVBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFN1Y2Nlc3M7CiAgICAgICAgbXkgJVNjcmVlbkNvbmZpZzsKICAgICAgICAkU2NyZWVuQ29uZmlneyAkUGFyYW17RWxlbWVudH0gfSB8fD0ge307CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBlbGVtZW50CiAgICAgICAgaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0R5bmFtaWNGaWVsZCcgKSB7CgogICAgICAgICAgICAkU2NyZWVuQ29uZmlneyAkUGFyYW17RWxlbWVudH0gfSA9IFwlQ29uZmlnOwoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzU2NyZWVuQ29uZmlnSW1wb3J0KAogICAgICAgICAgICAgICAgQ29uZmlnID0+IFwlU2NyZWVuQ29uZmlnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSBlcSAnRHluYW1pY0ZpZWxkU2NyZWVuJyApIHsKCiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBrZXlzICVDb25maWcgKSB7CiAgICAgICAgICAgICAgICAkU2NyZWVuQ29uZmlneyAkUGFyYW17RWxlbWVudH0gfS0+eyREeW5hbWljRmllbGR9ID0gJENvbmZpZ3skRHluYW1pY0ZpZWxkfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzU2NyZWVuRW5hYmxlKCVTY3JlZW5Db25maWcpOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSBlcSAnRGVmYXVsdENvbHVtbnNTY3JlZW4nICkgewoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IGtleXMgJUNvbmZpZyApIHsKICAgICAgICAgICAgICAgICRTY3JlZW5Db25maWd7ICRQYXJhbXtFbGVtZW50fSB9LT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQgfSA9ICRDb25maWd7JER5bmFtaWNGaWVsZH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRGVmYXVsdENvbHVtbnNFbmFibGUoJVNjcmVlbkNvbmZpZyk7CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17UHJpb3JpdHl9ID0gJ0luZm8nOwogICAgICAgICRQYXJhbXtNZXNzYWdlfSAgPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgIlNldHRpbmdzIHdlcmUgc2F2ZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJFBhcmFte1ByaW9yaXR5fSA9ICdFcnJvcic7CiAgICAgICAgICAgICRQYXJhbXtNZXNzYWdlfSAgPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICJTeXN0ZW0gd2FzIG5vdCBhYmxlIHRvIHNhdmUgdGhlIHNldHRpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIERhdGEgPT4gXCVDb25maWcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFJlc2V0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUmVzZXQnICkgewoKICAgICAgICAkU2VsZi0+e1N1YmFjdGlvbn0gPSAnRWRpdCc7CgogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte1R5cGV9IG5lICdEeW5hbWljRmllbGRTY3JlZW4nCiAgICAgICAgICAgICYmICRQYXJhbXtUeXBlfSBuZSAnRGVmYXVsdENvbHVtbnNTY3JlZW4nCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dPdmVydmlldygpOwogICAgICAgIH0KCiAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEOwogICAgICAgIG15ICVTZXR0aW5nID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RWxlbWVudH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFNldHRpbmd7RXhjbHVzaXZlTG9ja0dVSUR9ICkgewoKICAgICAgICAgICAgIyBTZXR0aW5nIGlzIG5vdCBsb2NrZWQgeWV0LgogICAgICAgICAgICAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkU2V0dGluZ3tFeGNsdXNpdmVMb2NrVXNlcklEfSAhPSAkU2VsZi0+e1VzZXJJRH0gKSB7CgogICAgICAgICAgICAjIFNvbWVvbmUgZWxzZSBsb2NrZWQgdGhlIHNldHRpbmcuCiAgICAgICAgICAgICRQYXJhbXtQcmlvcml0eX0gPSAnRXJyb3InOwogICAgICAgICAgICAkUGFyYW17TWVzc2FnZX0gID0gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAiU2V0dGluZyBpcyBsb2NrZWQgYnkgYW5vdGhlciB1c2VyISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93RWRpdCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVDb25maWcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBBbHJlYWR5IGxvY2tlZCB0byB0aGlzIHVzZXIuCiAgICAgICAgICAgICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTZXR0aW5ne0V4Y2x1c2l2ZUxvY2tHVUlEfTsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1Jlc2V0KAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkUGFyYW17RWxlbWVudH0sCiAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewoKICAgICAgICAgICAgJFBhcmFte1ByaW9yaXR5fSA9ICdFcnJvcic7CiAgICAgICAgICAgICRQYXJhbXtNZXNzYWdlfSAgPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICJTeXN0ZW0gd2FzIG5vdCBhYmxlIHRvIHJlc2V0IHRoZSBzZXR0aW5nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93RWRpdCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVDb25maWcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICApOwoKICAgICAgICAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1JlYnVpbGRDb25maWcoKTsKCiAgICAgICAgJFBhcmFte1ByaW9yaXR5fSA9ICdJbmZvJzsKICAgICAgICAkUGFyYW17TWVzc2FnZX0gID0gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICJTZXR0aW5ncyB3ZXJlIHJlc2V0LiIsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRQYXJhbXtQcmlvcml0eX0gPSAnRXJyb3InOwogICAgICAgICAgICAkUGFyYW17TWVzc2FnZX0gID0gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAiU3lzdGVtIHdhcyBub3QgYWJsZSB0byByZXNldCB0aGUgc2V0dGluZyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbmV3IGNvbmZpZwogICAgICAgICVDb25maWcgPSAkU2VsZi0+X0dldENvbmZpZyglUGFyYW0pOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93RWRpdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBEYXRhID0+IFwlQ29uZmlnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBFcnJvcgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KCk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX1Nob3dPdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJUR5bmFtaWNGaWVsZHMgICAgICAgICA9ICV7ICRTZWxmLT57RHluYW1pY0ZpZWxkc30gfTsKICAgIG15ICVEeW5hbWljRmllbGRTY3JlZW5zICAgPSAleyAkU2VsZi0+e0R5bmFtaWNGaWVsZFNjcmVlbnN9IH07CiAgICBteSAlRGVmYXVsdENvbHVtbnNTY3JlZW5zID0gJXsgJFNlbGYtPntEZWZhdWx0Q29sdW1uc1NjcmVlbnN9IH07CgogICAgIyBzaG93IG91dHB1dAogICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ092ZXJ2aWV3JyApOwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAjIHNob3cgb2JqZWN0IHR5cGUgc2VsZWN0aW9uCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0VHlwZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRTZWxlY3RlZE9iamVjdFR5cGUnLAogICAgICAgIERhdGEgICAgICAgICAgPT4gJFNlbGYtPntFbmFibGVkT2JqZWN0VHlwZXN9LAogICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgICA9PiAkU2VsZi0+e1NlbGVjdGVkT2JqZWN0VHlwZX0sCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplIFc3NXBjJywKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkT2JqZWN0VHlwZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZE9iamVjdFR5cGVTdHJnID0+ICREeW5hbWljRmllbGRPYmplY3RUeXBlU3RyZywKICAgICAgICB9CiAgICApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkU2NyZWVuICggc29ydCB7ICREeW5hbWljRmllbGRTY3JlZW5zeyRhfSBjbXAgJER5bmFtaWNGaWVsZFNjcmVlbnN7JGJ9IH0ga2V5cyAlRHluYW1pY0ZpZWxkU2NyZWVucyApIHsKCiAgICAgICAgIyBvdXRwdXQgcm93IGZvciBEeW5hbWljRmllbGRTY3JlZW4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkU2NyZWVuT3ZlcnZpZXdSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFNjcmVlbiA9PiAkRHluYW1pY0ZpZWxkU2NyZWVuLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgID0+ICREeW5hbWljRmllbGRTY3JlZW5zeyREeW5hbWljRmllbGRTY3JlZW59LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICREZWZhdWx0Q29sdW1uc1NjcmVlbiAoIHNvcnQgeyAkRGVmYXVsdENvbHVtbnNTY3JlZW5zeyRhfSBjbXAgJERlZmF1bHRDb2x1bW5zU2NyZWVuc3skYn0gfSBrZXlzICVEZWZhdWx0Q29sdW1uc1NjcmVlbnMgKSB7CgogICAgICAgICMgb3V0cHV0IHJvdyBmb3IgRGVmYXVsdENvbHVtbnMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVmYXVsdENvbHVtbnNTY3JlZW5PdmVydmlld1JvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdENvbHVtbnNTY3JlZW4gPT4gJERlZmF1bHRDb2x1bW5zU2NyZWVuLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJERlZmF1bHRDb2x1bW5zU2NyZWVuc3skRGVmYXVsdENvbHVtbnNTY3JlZW59LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJUR5bmFtaWNGaWVsZHMgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBrZXlzICVEeW5hbWljRmllbGRzICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgcm93IGZvciBEeW5hbWljRmllbGQKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRPdmVydmlld1JvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJER5bmFtaWNGaWVsZHN7JER5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbicsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfU2hvd0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICROb0Fzc2lnbmVkUmVxdWlyZWRGaWVsZFJvdzsKCiAgICAkUGFyYW17QWN0aW9ufSA9ICdFZGl0JzsKCiAgICBteSAlRGF0YSAgICAgICAgICAgICAgICAgID0gJXsgJFBhcmFte0RhdGF9IHx8IHt9IH07CiAgICBteSAlRHluYW1pY0ZpZWxkcyAgICAgICAgID0gJXsgJFNlbGYtPntEeW5hbWljRmllbGRzfSB9OwogICAgbXkgJUR5bmFtaWNGaWVsZFNjcmVlbnMgICA9ICV7ICRTZWxmLT57RHluYW1pY0ZpZWxkU2NyZWVuc30gfTsKICAgIG15ICVEZWZhdWx0Q29sdW1uc1NjcmVlbnMgPSAleyAkU2VsZi0+e0RlZmF1bHRDb2x1bW5zU2NyZWVuc30gfTsKCiAgICBteSAlU2NyZWVucyA9ICgKICAgICAgICAleyAkU2VsZi0+e0R5bmFtaWNGaWVsZFNjcmVlbnN9IH0sCiAgICAgICAgJXsgJFNlbGYtPntEZWZhdWx0Q29sdW1uc1NjcmVlbnN9IH0sCiAgICApOwoKICAgICMgbG9jYWxpemUgYXZhaWxhYmxlIGZpZWxkcywgZHluYW1pYyBmaWVsZHMgc2NyZWVucyBhbmQgZGVmYXVsdCBjb2x1bW4gc2NyZWVucwogICAgbXkgJUF2YWlsYWJsZUVsZW1lbnRzID0gJUR5bmFtaWNGaWVsZHM7CiAgICBteSAlT3RoZXJFbGVtZW50cyAgICAgPSAlRGVmYXVsdENvbHVtbnNTY3JlZW5zOwoKICAgICMgc2V0IGRlZmF1bHQgc2l6ZSBmb3IgdGVtcGxhdGUKICAgICRQYXJhbXtTaXplfSAgID0gJ1NpemUxb2Y0JzsKICAgICRQYXJhbXtIZWFkZXJ9ID0gJ0R5bmFtaWMgRmllbGRzIGZvciB0aGlzIFNjcmVlbic7CgogICAgaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0R5bmFtaWNGaWVsZCcgKSB7CgogICAgICAgICVBdmFpbGFibGVFbGVtZW50cyA9ICVTY3JlZW5zOwogICAgICAgICVPdGhlckVsZW1lbnRzICAgICA9ICVEeW5hbWljRmllbGRzOwoKICAgICAgICAkUGFyYW17SGVhZGVyfSAgICAgID0gJ1NjcmVlbnMgZm9yIHRoaXMgRHluYW1pYyBGaWVsZCc7CiAgICAgICAgJFBhcmFte0hpZGRlblJlc2V0fSA9ICdIaWRkZW4nOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0R5bmFtaWNGaWVsZFNjcmVlbicgKSB7CgogICAgICAgICMgcmVtb3ZlIEFzc2lnbmVkUmVxdWlyZWRGaWVsZFJvdyBvZmYgdGVtcGxhdGUgaWYgc2NyZWVuIGlzIEFnZW50VGlja2V0Wm9vbSBvZGVyIEN1c3RvbVRpY2tldFpvb20KICAgICAgICBpZiAoICRQYXJhbXtFbGVtZW50fSA9fiBte1pvb219bXN4aSApIHsKCiAgICAgICAgICAgICMgQXNzaWduZWRSZXF1aXJlZCBpcyBub3QgbmVlZGVkIGZvciBab29tLVZpZXdzCiAgICAgICAgICAgICROb0Fzc2lnbmVkUmVxdWlyZWRGaWVsZFJvdyA9IDE7CiAgICAgICAgICAgICRQYXJhbXtTaXplfSAgICAgICAgICAgICAgICA9ICdTaXplMW9mMyc7CiAgICAgICAgICAgICRQYXJhbXtIaWRkZW5SZXF1aXJlZH0gICAgICA9ICdIaWRkZW4nOwogICAgICAgIH0KICAgICAgICAlT3RoZXJFbGVtZW50cyA9ICVEeW5hbWljRmllbGRTY3JlZW5zOwogICAgfQoKICAgICMgb3V0cHV0IGlucHV0IHBhZ2UKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0VkaXQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgc2hvd3Mgc2lkZWJhciBzZWxlY3Rpb24KICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQgeyAkT3RoZXJFbGVtZW50c3skYX0gY21wICRPdGhlckVsZW1lbnRzeyRifSB9IGtleXMgJU90aGVyRWxlbWVudHMgKSB7CgogICAgICAgICMgb3V0cHV0IHJvdwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25PdmVydmlld1Jvd0VkaXQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVsZW1lbnQgICAgPT4gJE90aGVyRWxlbWVudHN7JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgRWxlbWVudEtleSA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlZCBmaWVsZHMgYnkgdGhlIGR5bmFtaWMgZmllbGQgZ3JvdXAKICAgIGlmICglRGF0YSkgewoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhZGVmaW5lZCAkRGF0YXskRWxlbWVudH07CiAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhJEF2YWlsYWJsZUVsZW1lbnRzeyRFbGVtZW50fTsKCiAgICAgICAgICAgICMgcmVtb3ZlIGFsbCBzcGFjZXMgIyBvciA6CiAgICAgICAgICAgIG15ICRJRCA9ICRFbGVtZW50OwogICAgICAgICAgICAkSUQgPX4gcy9ccy8vZzsKICAgICAgICAgICAgJElEID1+IHMvXCMqLy9nOwogICAgICAgICAgICAkSUQgPX4gcy9cOlw6Ly9nOwoKICAgICAgICAgICAgbXkgJEJsb2NrTmFtZSA9IHVuZGVmOwoKICAgICAgICAgICAgaWYgKCAkRGF0YXskRWxlbWVudH0gZXEgMCApIHsKICAgICAgICAgICAgICAgICRCbG9ja05hbWUgPSAnRGlzYWJsZWRGaWVsZFJvdyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRGF0YXskRWxlbWVudH0gZXEgMSApIHsKICAgICAgICAgICAgICAgICRCbG9ja05hbWUgPSAnQXNzaWduZWRGaWVsZFJvdyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRGF0YXskRWxlbWVudH0gZXEgMiAmJiAhJE5vQXNzaWduZWRSZXF1aXJlZEZpZWxkUm93ICkgewogICAgICAgICAgICAgICAgJEJsb2NrTmFtZSA9ICdBc3NpZ25lZFJlcXVpcmVkRmllbGRSb3cnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgaWYgISRCbG9ja05hbWU7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEJsb2NrTmFtZSwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgTGFiZWwgICA9PiAkQXZhaWxhYmxlRWxlbWVudHN7JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgICAgIElEICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHVzZWQgZmllbGRzIGZyb20gYXZhaWxhYmxlIGxpc3QKICAgICAgICAgICAgZGVsZXRlICRBdmFpbGFibGVFbGVtZW50c3skRWxlbWVudH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGlzcGxheSBhdmFpbGFibGUgZmllbGRzCiAgICBmb3IgbXkgJEVsZW1lbnQgKAogICAgICAgIHNvcnQgeyAkQXZhaWxhYmxlRWxlbWVudHN7JGF9IGNtcCAkQXZhaWxhYmxlRWxlbWVudHN7JGJ9IH0KICAgICAgICBrZXlzICVBdmFpbGFibGVFbGVtZW50cwogICAgICAgICkKICAgIHsKICAgICAgICAjIHJlbW92ZSBhbGwgc3BhY2VzICMgb3IgOgogICAgICAgIG15ICRJRCA9ICRFbGVtZW50OwogICAgICAgICRJRCA9fiBzL1xzLy9nOwogICAgICAgICRJRCA9fiBzL1wjKi8vZzsKICAgICAgICAkSUQgPX4gcy9cOlw6Ly9nOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXZhaWxhYmxlRmllbGRSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVsZW1lbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICBMYWJlbCAgID0+ICRBdmFpbGFibGVFbGVtZW50c3skRWxlbWVudH0sCiAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRJRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgaWYgKCAkUGFyYW17TWVzc2FnZX0gJiYgJFBhcmFte1ByaW9yaXR5fSApIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFBhcmFte1ByaW9yaXR5fSB8fCAnSW5mbycsCiAgICAgICAgICAgIEluZm8gICAgID0+ICRQYXJhbXtNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5EeW5hbWljRmllbGRTY3JlZW4nLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0dldENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRabnVueUhlbHBlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpabnVueUhlbHBlcicpOwoKICAgIG15ICVDb25maWc7CiAgICByZXR1cm4gJUNvbmZpZyBpZiAhZGVmaW5lZCAkUGFyYW17VHlwZX07CgogICAgIyBnZXQgY29uZmlnIG9mIGVsZW1lbnQKICAgIGlmICggJFBhcmFte1R5cGV9IGVxICdEeW5hbWljRmllbGQnICkgewogICAgICAgIG15ICVDb25maWdJdGVtQ29uZmlnID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkNvbmZpZ0V4cG9ydCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiBbICRQYXJhbXtFbGVtZW50fSBdLAogICAgICAgICk7CgogICAgICAgICVDb25maWcgPSAleyAkQ29uZmlnSXRlbUNvbmZpZ3sgJFBhcmFte0VsZW1lbnR9IH0gfHwge30gfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1R5cGV9IGVxICdEeW5hbWljRmllbGRTY3JlZW4nICkgewoKICAgICAgICBteSAlQ29uZmlnSXRlbUNvbmZpZyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNTY3JlZW5HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1zID0+IFsgJFBhcmFte0VsZW1lbnR9IF0sCiAgICAgICAgKTsKCiAgICAgICAgJUNvbmZpZyA9ICV7ICRDb25maWdJdGVtQ29uZmlneyAkUGFyYW17RWxlbWVudH0gfSB8fCB7fSB9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0RlZmF1bHRDb2x1bW5zU2NyZWVuJyApIHsKCiAgICAgICAgbXkgJUNvbmZpZ0l0ZW1Db25maWcgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzRGVmYXVsdENvbHVtbnNHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1zID0+IFsgJFBhcmFte0VsZW1lbnR9IF0sCiAgICAgICAgKTsKCiAgICAgICAgJUNvbmZpZyA9ICV7ICRDb25maWdJdGVtQ29uZmlneyAkUGFyYW17RWxlbWVudH0gfSB8fCB7fSB9OwogICAgfQoKICAgIHJldHVybiAlQ29uZmlnOwoKfQoKMTsK</File>
        <File Location="Custom/Kernel/Modules/AgentDashboardCommon.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWdlbnREYXNoYm9hcmRDb21tb24ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RGFzaGJvYXJkQ29tbW9uOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6REJPYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSAgPSAnRGFzaGJvYXJkQmFja2VuZCc7CiAgICBteSAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnREYXNoYm9hcmQ6Ok1haW5NZW51JzsKICAgIG15ICRVc2VyU2V0dGluZ3NLZXkgICA9ICdVc2VyRGFzaGJvYXJkJzsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kJzsKICAgICAgICAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpNYWluTWVudSc7CiAgICAgICAgJFVzZXJTZXR0aW5nc0tleSAgID0gJ1VzZXJDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCc7CiAgICAgICAgJE1haW5NZW51Q29uZmlnS2V5ID0gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6Ok1haW5NZW51JzsKICAgICAgICAkVXNlclNldHRpbmdzS2V5ICAgPSAnVXNlckN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgbG9hZCBiYWNrZW5kcwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgkQmFja2VuZENvbmZpZ0tleSk7CiAgICBpZiAoICEkQ29uZmlnICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBzdWNoIGNvbmZpZyBmb3IgJXMnLCAkQmFja2VuZENvbmZpZ0tleSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgYWxsIGNvbmZpZ3VyZWQgc3RhdGlzdGljcyBmcm9tIHRoZSBzeXN0ZW0gdGhhdCBzaG91bGQgYmUgc2hvd24gYXMgYSBkYXNoYm9hcmQgd2lkZ2V0CiAgICAjICAgYW5kIHJlZ2lzdGVyIHRoZW0gZHluYW1pY2FsbHkgaW4gdGhlIGNvbmZpZ3VyYXRpb24uCiAgICBteSBAU3RhdHNJRHM7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnREYXNoYm9hcmQnICkgewoKICAgICAgICBteSAkU3RhdHNIYXNoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzTGlzdEdldCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRTdGF0c0hhc2gpICkgewogICAgICAgICAgICBTVEFUSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdElEICggc29ydCBrZXlzICV7JFN0YXRzSGFzaH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57U2hvd0FzRGFzaGJvYXJkV2lkZ2V0fTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn07CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkU3RhdHNIYXNoLT57JFN0YXRJRH0tPntQZXJtaXNzaW9ufSApOwoKICAgICAgICAgICAgICAgIG15IEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzOwogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cElEICggQHsgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoIEdyb3VwSUQgPT4gJEdyb3VwSUQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15ICRTdGF0c1Blcm1pc3Npb25Hcm91cHMgPSBqb2luKCAnOycsIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzICk7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIGFsbCBsaW5lIGJyZWFrcyB3aXRoIHNwYWNlcyAob3RoZXJ3aXNlIFRyYW5zbGF0ZSgpIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5KQogICAgICAgICAgICAgICAgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57RGVzY3JpcHRpb259ID1+IHN7XHI/XG58XHJ9eyB9bXN4ZzsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e0Rlc2NyaXB0aW9ufSApOwoKICAgICAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57VGl0bGV9ICk7CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRpc3RpYycpIC4gJzogJwogICAgICAgICAgICAgICAgICAgIC4gJFRpdGxlIC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTdGF0czo6U3RhdHNIb29rJykKICAgICAgICAgICAgICAgICAgICAuICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e1N0YXROdW1iZXJ9IC4gJyknOwoKICAgICAgICAgICAgICAgICRDb25maWctPnsgKCAkU3RhdElEICsgMTAwMCApIC4gJy1TdGF0cycgfSA9IHsKICAgICAgICAgICAgICAgICAgICAnQmxvY2snICAgICAgID0+ICdDb250ZW50TGFyZ2UnLAogICAgICAgICAgICAgICAgICAgICdEZWZhdWx0JyAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAnTW9kdWxlJyAgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpTdGF0cycsCiAgICAgICAgICAgICAgICAgICAgJ1RpdGxlJyAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgJ1N0YXRJRCcgICAgICA9PiAkU3RhdElELAogICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbicgPT4gJERlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICdHcm91cCcgICAgICAgPT4gJFN0YXRzUGVybWlzc2lvbkdyb3VwcywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c0lEcywgJFN0YXRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0Rhc2hib2FyZFN0YXRzSURzJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxAU3RhdHNJRHMKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lcklEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDdXN0b21lcklEJyApOwoKICAgICAgICAjIGNoZWNrIEN1c3RvbWVySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CiAgICAgICAgICAgIGlmICggISRTZWxmLT57Q3VzdG9tZXJJRH0gKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29kZSA9PiAnQ29yZS5BZ2VudC5DdXN0b21lckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lclVzZXJJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ3VzdG9tZXJVc2VySUQnICk7CgogICAgICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb2RlID0+ICdDb3JlLkFnZW50LkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgdXBkYXRlL2Nsb3NlIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdVcGRhdGVSZW1vdmUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICROYW1lOwoKICAgICAgICAjIE1hbmRhdG9yeSB3aWRnZXRzIGNhbid0IGJlIHJlbW92ZWQuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9ICYmICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9ICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gMCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVByZWZlcmVuY2VzJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBnZXQgcHJlZmVyZW5jZXMgc2V0dGluZ3MKICAgICAgICBteSBAUHJlZmVyZW5jZXNPbmx5ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgICAgICAgICA9PiAkQ29uZmlnLAogICAgICAgICAgICBQcmVmZXJlbmNlc09ubHkgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggIUBQcmVmZXJlbmNlc09ubHkgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHByZWZlcmVuY2VzIGZvciAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciBwcmVmZXJlbmNlcwogICAgICAgIGZvciBteSAkUGFyYW0gKEBQcmVmZXJlbmNlc09ubHkpIHsKCiAgICAgICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW0tPntOYW1lfSApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcnVudGltZSB2YXJzCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPnsgJFBhcmFtLT57TmFtZX0gfSA9ICRWYWx1ZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsaXZlciBuZXcgY29udGVudCBwYWdlCiAgICAgICAgbXkgJUVsZW1lbnRSZWxvYWQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgPT4gJENvbmZpZywKICAgICAgICAgICAgQUpBWCAgICA9PiAxCiAgICAgICAgKTsKICAgICAgICBpZiAoICElRWxlbWVudFJlbG9hZCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBlbGVtZW50IGRhdGEgb2YgJXMhJywgJE5hbWUgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkeyAkRWxlbWVudFJlbG9hZHtDb250ZW50fSB9LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgdXBkYXRlIHNldHRpbmdzCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnVXBkYXRlU2V0dGluZ3MnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSBAQmFja2VuZHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQmFja2VuZCcgKTsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXskQ29uZmlnfSApIHsKICAgICAgICAgICAgbXkgJEFjdGl2ZSA9IDA7CiAgICAgICAgICAgIEJBQ0tFTkQ6CiAgICAgICAgICAgIGZvciBteSAkQmFja2VuZCAoQEJhY2tlbmRzKSB7CiAgICAgICAgICAgICAgICBuZXh0IEJBQ0tFTkQgaWYgJEJhY2tlbmQgbmUgJE5hbWU7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgQkFDS0VORDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBNYW5kYXRvcnkgd2lkZ2V0cyBjYW4gbm90IGJlIHJlbW92ZWQuCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQWN0aXZlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJEFjdGl2ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVBvc2l0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgQEJhY2tlbmRzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0JhY2tlbmQnICk7CgogICAgICAgICMgZ2V0IG5ldyBvcmRlcgogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICAgICAgbXkgJERhdGEgPSAnJzsKICAgICAgICBmb3IgbXkgJEJhY2tlbmQgKEBCYWNrZW5kcykgewogICAgICAgICAgICAkQmFja2VuZCA9fiBzeyBcQSBEYXNoYm9hcmQgKC4rPykgLWJveCBceiB9eyQxfWd4bXM7CiAgICAgICAgICAgICREYXRhIC49ICRCYWNrZW5kIC4gJzsnOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJERhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSApIHsKICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICREYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHN1Y2Nlc3NmdWwgcmVzcG9uc2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcxJywKICAgICAgICApOwogICAgfQoKICAgICMgZGVsaXZlciBlbGVtZW50CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRWxlbWVudCcgKSB7CgogICAgICAgIG15ICROYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gZmlsdGVycyBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICAgICAgbXkgJUdldENvbHVtbkZpbHRlcjsKICAgICAgICBteSAlR2V0Q29sdW1uRmlsdGVyU2VsZWN0OwoKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgIHF3KE93bmVyIFJlc3BvbnNpYmxlIFN0YXRlIFF1ZXVlIFByaW9yaXR5IFR5cGUgTG9jayBTZXJ2aWNlIFNMQSBDdXN0b21lcklEIEN1c3RvbWVyVXNlcklEKQogICAgICAgICAgICBxdyhPd25lciBSZXNwb25zaWJsZSBTdGF0ZSBRdWV1ZSBQcmlvcml0eSBUeXBlIExvY2sgU2VydmljZSBTTEEgQ3VzdG9tZXJJRCBDdXN0b21lclVzZXJJRCBDbGFzcyBDdXJEZXBsU3RhdGUgQ3VySW5jaVN0YXRlKQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lIC4gJE5hbWUgKQogICAgICAgICAgICAgICAgfHwgJyc7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CgogICAgICAgICAgICBpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gfSwgICAgICAgICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnsgJENvbHVtbk5hbWUgLiAnUmF3JyB9IH0sICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb2x1bW5GaWx0ZXJ7Q3VzdG9tZXJVc2VyTG9naW59IH0sICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcntDdXN0b21lclVzZXJMb2dpblJhd30gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICROYW1lIH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3R7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMSwKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgICAgICAgICBPYmplY3RUeXBlID0+IFsnVGlja2V0JywgJ0lUU01Db25maWdJdGVtJ10sCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgKTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdDb2x1bW5GaWx0ZXJEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICROYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKCiAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICRGaWx0ZXJWYWx1ZSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJE5hbWUgfSA9ICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlclNlbGVjdHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU29ydEJ5ICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICk7CiAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKTsKCiAgICAgICAgbXkgJUVsZW1lbnQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgICAgID0+ICRDb25maWcsCiAgICAgICAgICAgIEFKQVggICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gXCVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICAgICAgR2V0Q29sdW1uRmlsdGVyU2VsZWN0ID0+IFwlR2V0Q29sdW1uRmlsdGVyU2VsZWN0LAogICAgICAgICk7CgogICAgICAgIGlmICggISVFbGVtZW50ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDYW5cJ3QgZ2V0IGVsZW1lbnQgZGF0YSBvZiAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRFbGVtZW50e0NvbnRlbnR9IH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxpdmVyIGVsZW1lbnQKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApOwogICAgICAgIG15ICgkTmFtZSkgICAgICAgICA9ICRFbGVtZW50Q2hhbmdlZCA9fiBteyAoIFxkezR9IC0gLio/ICkgXHogfWd4bXM7CiAgICAgICAgbXkgJENvbHVtbiAgICAgICAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgICAgICRDb2x1bW4gPX4gc3sgXEEgQ29sdW1uRmlsdGVyIH17fWd4bXM7CiAgICAgICAgJENvbHVtbiA9fiBzeyAkTmFtZSB9e31neG1zOwoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRTZWxmLT5fRWxlbWVudCgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ID0+IDEsCiAgICAgICAgICAgIEZpbHRlckNvbHVtbiAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgIEVsZW1lbnRDaGFuZ2VkICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgPT4gJENvbmZpZywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICROYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsdGVyQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHF1ZXVlIHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICBteSAlQ29udGVudEJsb2NrRGF0YTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVySUR9OwoKICAgICAgICAjIEgxIHRpdGxlCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRFRpdGxlfSA9ICRTZWxmLT57Q3VzdG9tZXJJRH07CgogICAgICAgIG15ICVDdXN0b21lckNvbXBhbnlEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlHZXQoCiAgICAgICAgICAgIEN1c3RvbWVySUQgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICkgewogICAgICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lcklEVGl0bGV9ID0gIiRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICgkU2VsZi0+e0N1c3RvbWVySUR9KSI7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXInICkgewoKICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lclVzZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfTsKCiAgICAgICAgIyBIMSB0aXRsZQogICAgICAgICRDb250ZW50QmxvY2tEYXRhe0N1c3RvbWVyVXNlcklEVGl0bGV9ID0gIlwiJEN1c3RvbWVyVXNlckRhdGF7VXNlckZ1bGxuYW1lfVwiIDwkQ3VzdG9tZXJVc2VyRGF0YXtVc2VyRW1haWx9PiI7CgogICAgfQoKICAgICMgc2hvdyBkYXNoYm9hcmQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgIERhdGEgPT4gXCVDb250ZW50QmxvY2tEYXRhLAogICAgKTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGdldCBzaG93biBiYWNrZW5kcwogICAgbXkgJUJhY2tlbmRzOwogICAgQkFDS0VORDoKICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAleyRDb25maWd9ICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgICAgICBteSAkUGVybWlzc2lvbk9LID0gMDsKICAgICAgICAgICAgbXkgQEdyb3VwcyAgICAgICA9IHNwbGl0IC87LywgJENvbmZpZy0+eyROYW1lfS0+e0dyb3VwfTsKICAgICAgICAgICAgR1JPVVA6CiAgICAgICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncm8nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uT0sgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBCQUNLRU5EIGlmICEkUGVybWlzc2lvbk9LOwogICAgICAgIH0KCiAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKICAgICAgICBpZiAoIGRlZmluZWQgJFNlbGYtPntTZXNzaW9ufXskS2V5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRTZWxmLT57U2Vzc2lvbn17JEtleX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQmFja2VuZHN7JE5hbWV9ID0gJENvbmZpZy0+eyROYW1lfS0+e0RlZmF1bHR9OwogICAgICAgIH0KCiAgICAgICAgIyBBbHdheXMgc2hvdyB3aWRnZXRzIHdpdGggbWFuZGF0b3J5IGZsYWcuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBvcmRlciBvZiBwbHVnaW5zCiAgICBteSAkS2V5ID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICBteSBAT3JkZXI7CiAgICBteSAkVmFsdWUgPSAkU2VsZi0+e1Nlc3Npb259eyRLZXl9OwoKICAgIGlmICgkVmFsdWUpIHsKICAgICAgICBAT3JkZXIgPSBzcGxpdCAvOy8sICRWYWx1ZTsKCiAgICAgICAgIyBvbmx5IHVzZSBhY3RpdmUgYmFja2VuZHMKICAgICAgICBAT3JkZXIgPSBncmVwIHsgJENvbmZpZy0+eyRffSB9IEBPcmRlcjsKICAgIH0KICAgIGlmICggIUBPcmRlciApIHsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJUJhY2tlbmRzICkgewogICAgICAgICAgICBwdXNoIEBPcmRlciwgJE5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIG5vdCBvcmRlcmVkIHBsdWdpbnMgKGUuIGcuIG5ldyBhY3RpdmUpCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVCYWNrZW5kcyApIHsKICAgICAgICBteSAkSW5jbHVkZWQgPSAwOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRJdGVtIChAT3JkZXIpIHsKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRJdGVtIG5lICROYW1lOwogICAgICAgICAgICAkSW5jbHVkZWQgPSAxOwogICAgICAgIH0KICAgICAgICBuZXh0IE5BTUUgaWYgJEluY2x1ZGVkOwogICAgICAgIHB1c2ggQE9yZGVyLCAkTmFtZTsKICAgIH0KCiAgICAjIGdldCBkZWZhdWx0IGNvbHVtbnMKICAgIG15ICRDb2x1bW5zID0gJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IHx8ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdE92ZXJ2aWV3Q29sdW1ucycpIHx8IHt9OwoKICAgICMgdHJ5IGV2ZXJ5IGJhY2tlbmQgdG8gbG9hZCBhbmQgZXhlY3V0ZSBpdAogICAgbXkgQENvbnRhaW5lck5hbWVzOwogICAgTkFNRToKICAgIGZvciBteSAkTmFtZSAoQE9yZGVyKSB7CgogICAgICAgICMgZ2V0IGVsZW1lbnQgZGF0YQogICAgICAgIG15ICVFbGVtZW50ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgPT4gJENvbmZpZywKICAgICAgICAgICAgQmFja2VuZHMgPT4gXCVCYWNrZW5kcywKICAgICAgICApOwogICAgICAgIG5leHQgTkFNRSBpZiAhJUVsZW1lbnQ7CgogICAgICAgICMgTmFtZUZvcm0gKHRvIHN1cHBvcnQgSUUsIGlzIG5vdCB3b3JraW5nIHdpdGggIi0iIGluIGZvcm0gbmFtZXMpCiAgICAgICAgbXkgJE5hbWVGb3JtID0gJE5hbWU7CiAgICAgICAgJE5hbWVGb3JtID1+IHN7LX17fWc7CgogICAgICAgIG15ICVKU0RhdGEgPSAoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICBOYW1lRm9ybSA9PiAkTmFtZUZvcm0sCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29udGFpbmVyTmFtZXMsIFwlSlNEYXRhOwoKICAgICAgICAjIHJlbmRlcmluZwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBOYW1lRm9ybSAgICAgICA9PiAkTmFtZUZvcm0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICA9PiAkeyAkRWxlbWVudHtDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgcmVmcmVzaCBsaW5rIGlmIHJlZnJlc2hpbmcgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCAkRWxlbWVudHtDb25maWd9LT57Q2FuUmVmcmVzaH0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUhUTUwgPSAkTmFtZTsKICAgICAgICAgICAgJE5hbWVIVE1MID1+IHN7LX17X314bXNnOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NhblJlZnJlc2gtJyAuICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlZnJlc2gnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERvIG5vdCBzaG93IHRoZSBkZWxldGUgbGluayBpZiB0aGUgd2lkZ2V0IGlzIG1hbmRhdG9yeS4KICAgICAgICBpZiAoICEkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlbW92ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkRWxlbWVudHtDb25maWd9IH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0gfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBjb2x1bW4gaXMgbm90IGEgZGVmYXVsdCBjb2x1bW4sIGFkZCBpdCBmb3IgdHJhbnNsYXRpb24KICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENvbHVtbnMtPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5zLT57JENvbHVtbn0gPSAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JENvbHVtbn07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2hvdyBzZXR0aW5ncyBsaW5rIGlmIHByZWZlcmVuY2VzIGFyZSBhdmFpbGFibGUKICAgICAgICBpZiAoICRFbGVtZW50e1ByZWZlcmVuY2VzfSAmJiBAeyAkRWxlbWVudHtQcmVmZXJlbmNlc30gfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtID0+ICROYW1lRm9ybSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIFBBUkFNOgogICAgICAgICAgICBmb3IgbXkgJFBhcmFtICggQHsgJEVsZW1lbnR7UHJlZmVyZW5jZXN9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBzcGVjaWFsIHBhcmFtZXRlcnMgYXJlIGFkZGVkLCB3aGljaCBkbyBub3QgaGF2ZSBhIHR0IGJsb2NrLAogICAgICAgICAgICAgICAgIyBiZWNhdXNlIHRoZSBkaXNwbGF5ZWQgZmllbGRzIGFyZSBhZGRlZCB3aXRoIHRoZSBvdXRwdXQgZmlsdGVyLAogICAgICAgICAgICAgICAgIyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgYW55IGJsb2NrIGhlcmUKICAgICAgICAgICAgICAgIG5leHQgUEFSQU0gaWYgISRQYXJhbS0+e0Jsb2NrfTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW0tPntCbG9ja30gZXEgJ09wdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtLT57T3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkUGFyYW0tPntEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbS0+e1NlbGVjdGVkSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkUGFyYW0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJyAuICRQYXJhbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAleyRQYXJhbX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+ICRTZWxmLT57U2Vzc2lvbn17ICRQYXJhbS0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVQcmVmID0+ICRQYXJhbS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG1vcmUgbGluawogICAgICAgIGlmICggJEVsZW1lbnR7Q29uZmlnfS0+e0xpbmt9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEVsZW1lbnR7Q29uZmlnfS0+e0Jsb2NrfSAuICdNb3JlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7ICRFbGVtZW50e0NvbmZpZ30gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0NvbnRhaW5lck5hbWVzJywKICAgICAgICBWYWx1ZSA9PiBcQENvbnRhaW5lck5hbWVzLAogICAgKTsKCiAgICAjIGJ1aWxkIG1haW4gbWVudQogICAgbXkgJE1haW5NZW51Q29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCRNYWluTWVudUNvbmZpZ0tleSk7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRNYWluTWVudUNvbmZpZykgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ01haW5NZW51JyApOwoKICAgICAgICBmb3IgbXkgJE1haW5NZW51SXRlbSAoIHNvcnQga2V5cyAleyRNYWluTWVudUNvbmZpZ30gKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ01haW5NZW51SXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkTWFpbk1lbnVDb25maWctPnskTWFpbk1lbnVJdGVtfSB9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCB0cmFuc2xhdGlvbnMgZm9yIHRoZSBhbGxvY2F0aW9uIGxpc3RzIGZvciByZWd1bGFyIGNvbHVtbnMKICAgIGlmICggJENvbHVtbnMgJiYgSXNIYXNoUmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJXskQ29sdW1uc30gKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdTZXJ2aWNlIFRpbWUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdGaXJzdCBSZXNwb25zZSBUaW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdFc2NhbGF0aW9uU29sdXRpb25UaW1lJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnU29sdXRpb24gVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblVwZGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdVcGRhdGUgVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnUGVuZGluZ1RpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdQZW5kaW5nIHRpbGwnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyQ29tcGFueU5hbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBOYW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VzdG9tZXIgSUQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyTmFtZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1c3RvbWVyIFVzZXIgTmFtZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBVc2VyIElEJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVHJhbnNsYXRlZFdvcmQpLAogICAgICAgICAgICApOwoKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZXQnXSwKICAgICk7CgogICAgaWYgKCAkQ29sdW1uc0R5bmFtaWNGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNEeW5hbWljRmllbGQpICkgewoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHNvcnQgQHskQ29sdW1uc0R5bmFtaWNGaWVsZH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZDsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwp9CgpzdWIgX0VsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTmFtZSAgICAgICAgICAgICAgICAgID0gJFBhcmFte05hbWV9OwogICAgbXkgJENvbmZpZ3MgICAgICAgICAgICAgICA9ICRQYXJhbXtDb25maWdzfTsKICAgIG15ICRCYWNrZW5kcyAgICAgICAgICAgICAgPSAkUGFyYW17QmFja2VuZHN9OwogICAgbXkgJFNvcnRCeSAgICAgICAgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9OwogICAgbXkgJE9yZGVyQnkgICAgICAgICAgICAgICA9ICRQYXJhbXtPcmRlckJ5fTsKICAgIG15ICRDb2x1bW5GaWx0ZXIgICAgICAgICAgPSAkUGFyYW17Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXIgICAgICAgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyU2VsZWN0fTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICBpZiAoICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgIG15ICRQZXJtaXNzaW9uT0sgPSAwOwogICAgICAgIG15IEBHcm91cHMgICAgICAgPSBzcGxpdCAvOy8sICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9OwogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25PSyA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBpZiAhJFBlcm1pc3Npb25PSzsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZHMKICAgIG15ICRNb2R1bGUgPSAkQ29uZmlncy0+eyROYW1lfS0+e01vZHVsZX07CgogICAgcmV0dXJuIHVubGVzcyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpOwoKICAgIG15ICRPYmplY3QgPSAkTW9kdWxlLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICBDdXN0b21lcklEICAgICAgICAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gJENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gJEdldENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPT4gJEdldENvbHVtbkZpbHRlclNlbGVjdCwKICAgICk7CgogICAgIyBnZXQgbW9kdWxlIGNvbmZpZwogICAgbXkgJUNvbmZpZyA9ICRPYmplY3QtPkNvbmZpZygpOwoKICAgICMgUGVyZm9ybSB0aGUgYWN0dWFsIGRhdGEgZmV0Y2hpbmcgYW5kIGNvbXB1dGF0aW9uIG9uIHRoZSBtaXJyb3IgREIsIGlmIGNvbmZpZ3VyZWQKICAgIGxvY2FsICRLZXJuZWw6OlN5c3RlbTo6REI6OlVzZU1pcnJvckRCID0gMTsKCiAgICAjIGdldCBtb2R1bGUgcHJlZmVyZW5jZXMKICAgIG15IEBQcmVmZXJlbmNlcyA9ICRPYmplY3QtPlByZWZlcmVuY2VzKCk7CgogICAgcmV0dXJuIEBQcmVmZXJlbmNlcyBpZiAkUGFyYW17UHJlZmVyZW5jZXNPbmx5fTsKCiAgICAjIFBlcmZvcm0gdGhlIGFjdHVhbCBkYXRhIGZldGNoaW5nIGFuZCBjb21wdXRhdGlvbiBvbiB0aGUgbWlycm9yIERCLCBpZiBjb25maWd1cmVkCiAgICBsb2NhbCAkS2VybmVsOjpTeXN0ZW06OkRCOjpVc2VNaXJyb3JEQiA9IDE7CgogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIG15ICRGaWx0ZXJDb250ZW50ID0gJE9iamVjdC0+RmlsdGVyQ29udGVudCgKICAgICAgICAgICAgRmlsdGVyQ29sdW1uICAgPT4gJFBhcmFte0ZpbHRlckNvbHVtbn0sCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRGaWx0ZXJDb250ZW50OwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBhZGQgYmFja2VuZCB0byBzZXR0aW5ncyBzZWxlY3Rpb24KICAgIGlmICgkQmFja2VuZHMpIHsKICAgICAgICBteSAkQ2hlY2tlZCA9ICcnOwogICAgICAgIGlmICggJEJhY2tlbmRzLT57JE5hbWV9IHx8ICRDb25maWdzLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJENoZWNrZWQgPSAnY2hlY2tlZCAnOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSB3aWRnZXQgaXMgZm9yY2libHkgZGlzcGxheWVkLgogICAgICAgICMgTWFuZGF0b3J5IHdpZGdldHMgYXJlIGRpc3BsYXllZCBhcyByZWFkLW9ubHkuCiAgICAgICAgbXkgJFJlYWRvbmx5ID0gJyc7CiAgICAgICAgaWYgKCAkQ29uZmlncy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICRSZWFkb25seSA9ICdkaXNhYmxlZD0iZGlzYWJsZWQiJzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50U2V0dGluZ3MnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVDb25maWcsCiAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgIENoZWNrZWQgID0+ICRDaGVja2VkLAogICAgICAgICAgICAgICAgUmVhZG9ubHkgPT4gJFJlYWRvbmx5LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJEJhY2tlbmRzLT57JE5hbWV9OwogICAgfQoKICAgICMgY2hlY2sgYmFja2VuZHMgY2FjaGUgKGh0bWwgcGFnZSBjYWNoZSkKICAgIG15ICRDb250ZW50OwogICAgbXkgJENhY2hlS2V5ICAgID0gJENvbmZpZ3tDYWNoZUtleX07CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICBpZiAoICEkQ2FjaGVLZXkgKSB7CiAgICAgICAgJENhY2hlS2V5ID0gJE5hbWUgLiAnLScKICAgICAgICAgICAgLiAoICRTZWxmLT57Q3VzdG9tZXJJRH0gICAgIHx8ICcnICkgLiAnLScKICAgICAgICAgICAgLiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnICkgLiAnLScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfTsKICAgIH0KICAgIGlmICggJENvbmZpZ3tDYWNoZVRUTH0gKSB7CiAgICAgICAgJENvbnRlbnQgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnRGFzaGJvYXJkJywKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGV4ZWN1dGUgYmFja2VuZHMKICAgIG15ICRDYWNoZVVzZWQgPSAxOwogICAgaWYgKCAhZGVmaW5lZCAkQ29udGVudCB8fCAkU29ydEJ5ICkgewogICAgICAgICRDYWNoZVVzZWQgPSAwOwogICAgICAgICRDb250ZW50ICAgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIEFKQVggICAgICAgICAgID0+ICRQYXJhbXtBSkFYfSwKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiBjb250ZW50IHNob3VsZCBiZSBzaG93bgogICAgcmV0dXJuIGlmICEkQ29udGVudDsKCiAgICAjIHNldCBjYWNoZSAoaHRtbCBwYWdlIGNhY2hlKQogICAgaWYgKCAhJENhY2hlVXNlZCAmJiAkQ29uZmlne0NhY2hlVFRMfSApIHsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gJENvbnRlbnQsCiAgICAgICAgICAgIFRUTCAgID0+ICRDb25maWd7Q2FjaGVUVEx9ICogNjAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiAoCiAgICAgICAgQ29udGVudCAgICAgPT4gXCRDb250ZW50LAogICAgICAgIENvbmZpZyAgICAgID0+IFwlQ29uZmlnLAogICAgICAgIFByZWZlcmVuY2VzID0+IFxAUHJlZmVyZW5jZXMsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminACL.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkFDTC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJBQ0wgTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdBQ0wgTWFuYWdlbWVudCcpLAogICAgICAgICAgICB9LAogICAgICAgIF0KICAgICVdCgogICAgWyUgSU5DTFVERSAiQnJlYWRjcnVtYi50dCIgUGF0aCA9IEJyZWFkY3J1bWJQYXRoICVdCgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBBQ0xzIikgfCBodG1sICVdIiBbJSBEYXRhLkluY2x1ZGVJbnZhbGlkQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jbHVkZUludmFsaWQiPlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIEFDTHMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJPYmplY3RTZWxlY3Rpb24iPlslIFRyYW5zbGF0ZSgiT2JqZWN0IFR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT2JqZWN0VHlwZVNlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BQ0xOZXciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciBDcmVhdGUiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZSI+PC9pPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBBQ0wiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMTmV3O09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgaHRtbCAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIENyZWF0ZSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IEFDTCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFDTERlcGxveSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtcm9ja2V0Ij48L2k+WyUgVHJhbnNsYXRlKCJEZXBsb3kgQUNMcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BQ0xEZXBsb3k7T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGUgfCBodG1sICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1yb2NrZXQiPjwvaT5bJSBUcmFuc2xhdGUoIkRlcGxveSBBQ0xzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRXhwb3J0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1kb3dubG9hZCI+PC9pPlslIFRyYW5zbGF0ZSgiRXhwb3J0IEFDTHMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRXhwb3J0O09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgaHRtbCAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT5bJSBUcmFuc2xhdGUoIkV4cG9ydCBBQ0xzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj48bGFiZWwgZm9yPSJGaWx0ZXJBQ0xzIj5bJSBUcmFuc2xhdGUoIkZpbHRlciBmb3IgQUNMcyIpIHwgaHRtbCAlXTwvbGFiZWw+PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJGaWx0ZXJBQ0xzIiBjbGFzcz0iRmlsdGVyQm94IiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJKdXN0IHN0YXJ0IHR5cGluZyB0byBmaWx0ZXIuLi4iKSB8IGh0bWwgJV0iIG5hbWU9IkZpbHRlckFDTHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBmb3IgQUNMcyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJbXBvcnQiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJIZXJlIHlvdSBjYW4gdXBsb2FkIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGltcG9ydCBBQ0xzIHRvIHlvdXIgc3lzdGVtLiBUaGUgZmlsZSBuZWVkcyB0byBiZSBpbiAueW1sIGZvcm1hdCBhcyBleHBvcnRlZCBieSB0aGUgQUNMIGVkaXRvciBtb2R1bGUuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkFDTEltcG9ydCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT2JqZWN0VHlwZSIgdmFsdWU9IlslIERhdGEuT2JqZWN0VHlwZSB8IGh0bWwgJV0iLz4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJGaWxlVXBsb2FkIiBpZD0iRmlsZVVwbG9hZCIgdHlwZT0iZmlsZSIgc2l6ZT0iMTgiIGNsYXNzPSJGaXhlZCBXMTAwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5GaWxlVXBsb2FkSW52YWxpZCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkZpbGVVcGxvYWRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJGaWxlVXBsb2FkU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTZXBhcmF0ZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Ik92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMiIG5hbWU9Ik92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMiIHZhbHVlPSIxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMiPlslIFRyYW5zbGF0ZSgiT3ZlcndyaXRlIGV4aXN0aW5nIEFDTHM/IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGxvYWQgQUNMIGNvbmZpZ3VyYXRpb24iKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS11cGxvYWQiPjwvaT5bJSBUcmFuc2xhdGUoIkltcG9ydCBBQ0wgY29uZmlndXJhdGlvbihzKSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBjcmVhdGUgYSBuZXcgQUNMIHlvdSBjYW4gZWl0aGVyIGltcG9ydCBBQ0xzIHdoaWNoIHdlcmUgZXhwb3J0ZWQgZnJvbSBhbm90aGVyIHN5c3RlbSBvciBjcmVhdGUgYSBjb21wbGV0ZSBuZXcgb25lLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2hhbmdlcyB0byB0aGUgQUNMcyBoZXJlIG9ubHkgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLCBpZiB5b3UgZGVwbG95IHRoZSBBQ0wgZGF0YSBhZnRlcndhcmRzLiBCeSBkZXBsb3lpbmcgdGhlIEFDTCBkYXRhLCB0aGUgbmV3bHkgbWFkZSBjaGFuZ2VzIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgY29uZmlndXJhdGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIGRlbGV0ZSBhbiBleGlzdGluZyBBQ0wgeW91IGhhdmUgdG8gc2V0IHRoZSB2YWxpZGl0eSB0byBpbnZhbGlkIGFuZCBzYXZlIGl0LiBBZnRlcndhcmRzIGEgbmV3IGJ1dHRvbiB0byBkZWxldGUgdGhlIEFDTCB3aWxsIGFwcGVhci4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQUNMcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJBQ0xOb3RlIj5bJSBUcmFuc2xhdGUoIlBsZWFzZSBub3RlOiBUaGlzIHRhYmxlIHJlcHJlc2VudHMgdGhlIGV4ZWN1dGlvbiBvcmRlciBvZiB0aGUgQUNMcy4gSWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBvcmRlciBpbiB3aGljaCBBQ0xzIGFyZSBleGVjdXRlZCwgcGxlYXNlIGNoYW5nZSB0aGUgbmFtZXMgb2YgdGhlIGFmZmVjdGVkIEFDTHMuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIGlkPSJBQ0xzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkFDTCBuYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDZW50ZXIgVzEwcGMiPlslIFRyYW5zbGF0ZSgiRXhwb3J0IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIFcxMHBjIj5bJSBUcmFuc2xhdGUoIkNvcHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBQ0xSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgWyUgSUYgRGF0YS5WYWxpZElEICE9ICJ2YWxpZCIlXWNsYXNzPSJJbnZhbGlkIlslIEVORCAlXT4KIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRWRpdDtJRD1bJSBEYXRhLklEIHwgdXJpICVdO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPjwvdGQ+CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgVHJhbnNsYXRlKERhdGEuVmFsaWRJRCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRXhwb3J0O0lEPVslIERhdGEuSUQgfCB1cmkgJV07WyUgRW52KCJDaGFsbGVuZ2VUb2tlblBhcmFtIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJFeHBvcnQiKSB8IGh0bWwgJV08L3NwYW4+PC9hPjwvdGQ+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+PGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFDTENvcHk7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXTtbJSBFbnYoIkNoYWxsZW5nZVRva2VuUGFyYW0iKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jb3B5Ij48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiQ29weSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMQ29weTtJRD1bJSBEYXRhLklEIHwgdXJpICVdO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNvcHkiPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJDb3B5IikgfCBodG1sICVdPC9zcGFuPjwvYT48L3RkPgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiQUNMUm93IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQUNMTm9EYXRhUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJBQ0xOb0RhdGFSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminACLEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkFDTEVkaXQudHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRWRpdCBBQ0wgJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdBQ0wgTWFuYWdlbWVudCcpLAogICAgICAgICAgICAgICAgTGluayA9PiBFbnYoIkFjdGlvbiIpLAogICAgICAgICAgICB9LAogICAgICAgIF0KICAgICVdCgogICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgQUNMIikpICVdCiAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBFZGl0VGl0bGUuYXBwZW5kKCAnOiAnLCBEYXRhLk5hbWUgKSB9KSAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBDZW50ZXIgRnVsbHNpemUgQmFjayI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGUgfCB1cmkgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIENlbnRlciBGdWxsc2l6ZSBCYWNrIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFDTERlbGV0ZUFjdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0iQUNMRGVsZXRlIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBUcmFzaCBDZW50ZXIgRnVsbHNpemUiIGRhdGEtZGlhbG9nLWVsZW1lbnQ9IkRlbGV0ZUFDTENvbmZpcm1hdGlvbkRpYWxvZyIgZGF0YS1kaWFsb2ctdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIEFDTCIpIHwgaHRtbCAlXSIgZGF0YS1pZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+WyUgVHJhbnNsYXRlKCJEZWxldGUgSW52YWxpZCBBQ0wiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBQ0xEZWxldGVBY3Rpb24iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIFRyYW5zbGF0ZSgiTWF0Y2ggc2V0dGluZ3MiKSB8IGh0bWwgJV08L3N0cm9uZz46IFslIFRyYW5zbGF0ZSgiU2V0IHVwIG1hdGNoaW5nIGNyaXRlcmlhIGZvciB0aGlzIEFDTC4gVXNlICdQcm9wZXJ0aWVzJyB0byBtYXRjaCB0aGUgY3VycmVudCBzY3JlZW4gb3IgJ1Byb3BlcnRpZXNEYXRhYmFzZScgdG8gbWF0Y2ggYXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCB0aWNrZXQgdGhhdCBhcmUgaW4gdGhlIGRhdGFiYXNlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+WyUgVHJhbnNsYXRlKCJDaGFuZ2Ugc2V0dGluZ3MiKSB8IGh0bWwgJV08L3N0cm9uZz46IFslIFRyYW5zbGF0ZSgiU2V0IHVwIHdoYXQgeW91IHdhbnQgdG8gY2hhbmdlIGlmIHRoZSBjcml0ZXJpYSBtYXRjaC4gS2VlcCBpbiBtaW5kIHRoYXQgJ1Bvc3NpYmxlJyBpcyBhIHdoaXRlIGxpc3QsICdQb3NzaWJsZU5vdCcgYSBibGFjayBsaXN0LiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2hlY2sgdGhlIG9mZmljaWFsICVzZG9jdW1lbnRhdGlvbiVzLiIpIHwgaHRtbCB8IFJlcGxhY2VQbGFjZWhvbGRlcnMoJzxhIGhyZWY9Imh0dHBzOi8vZG9jLm90b2JvLm9yZy9tYW51YWwvYWRtaW4vMTEuMC9lbi9jb250ZW50L2FkbWluaXN0cmF0aW9uLWFyZWEvcHJvY2Vzc2VzLWF1dG9tYXRpb24vYWNjZXNzLWNvbnRyb2wtbGlzdHMuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPicsICc8L2E+JykgICVdCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJBQ0xGb3JtIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBFeHBhbmRlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQUNMIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkFDTEVkaXRBY3Rpb24iLz4KIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT2JqZWN0VHlwZSIgdmFsdWU9IlslIERhdGEuT2JqZWN0VHlwZSB8IGh0bWwgJV0iLz4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSUQiIHZhbHVlPSJbJSBEYXRhLklEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ01hdGNoIiB2YWx1ZT0iWyUgRGF0YS5Db25maWdNYXRjaCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb25maWdDaGFuZ2UiIHZhbHVlPSJbJSBEYXRhLkNvbmZpZ0NoYW5nZSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5OYW1lU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjcwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDb21tZW50Ij5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkNvbW1lbnQiIGlkPSJDb21tZW50IiB2YWx1ZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIFslIERhdGEuQ29tbWVudFNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSI3MCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9IkRlc2NyaXB0aW9uIiBpZD0iRGVzY3JpcHRpb24iIGNsYXNzPSJXNTBwYyBbJSBEYXRhLkRlc2NyaXB0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiByb3dzPSI1IiBtYXhsZW5ndGg9IjIwMCI+WyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3RvcEFmdGVyTWF0Y2giPlslIFRyYW5zbGF0ZSgiU3RvcCBhZnRlciBtYXRjaCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IlN0b3BBZnRlck1hdGNoIiBpZD0iU3RvcEFmdGVyTWF0Y2giIHZhbHVlPSIxIiBbJSBEYXRhLkNoZWNrZWQgJV0gLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlZhbGlkSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmFsaWRJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmFsaWRJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIEV4cGFuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJFZGl0IEFDTCBTdHJ1Y3R1cmUiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBBQ0xTdHJ1Y3R1cmUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBQ0xGaWVsZHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlslIFRyYW5zbGF0ZSgiTWF0Y2ggc2V0dGluZ3MiKSB8IGh0bWwgJV08L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBQ0xGaWVsZEdyb3VwIiBpZD0iQUNMTWF0Y2giPjwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDFNYXRjaCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEFDTFN0cnVjdHVyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFDTEZpZWxkcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+WyUgVHJhbnNsYXRlKCJDaGFuZ2Ugc2V0dGluZ3MiKSB8IGh0bWwgJV08L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBQ0xGaWVsZEdyb3VwIiBpZD0iQUNMQ2hhbmdlIj48L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWwxQ2hhbmdlICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iSGlkZGVuIiBpZD0iVGVtcGxhdGVMZXZlbDEiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkRhdGFJdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJUcmlnZ2VyIENvbGxhcHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gUmVtb3ZlQnV0dG9uIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPjwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRXZlbiBMYXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gQWRkQnV0dG9uIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWwyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iVHJpZ2dlciBDb2xsYXBzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIFJlbW92ZUJ1dHRvbiI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIEFkZEJ1dHRvbiBOb01hcmdpbiI+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlLW8iPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iTmV3RGF0YUtleSIgZGF0YS1sZXZlbD0iMyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWwyTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRGF0YUl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlRyaWdnZXIgQ29sbGFwc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b24iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Ikxhc3RMZXZlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDRQcmVmaXhlcyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBBZGRCdXR0b24gQWRkRGF0YUl0ZW0iPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iSGlkZGVuIiBpZD0iVGVtcGxhdGVMZXZlbDMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkRhdGFJdGVtIEVkaXRhYmxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIFJlbW92ZUJ1dHRvbiI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWw0UHJlZml4ZXMgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gQWRkQnV0dG9uIEFkZERhdGFJdGVtIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWw0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSBFZGl0YWJsZSI+PGVtPng8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWwyUG9zc2libGUgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDJQb3NzaWJsZUFkZCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQUNMS2V5c0xldmVsMlBvc3NpYmxlTm90ICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWwyUHJvcGVydGllcyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQUNMS2V5c0xldmVsMlByb3BlcnRpZXNEYXRhYmFzZSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQUNMS2V5c0xldmVsM0R5bmFtaWNGaWVsZHMgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDNBY3Rpb25zICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRXhwYW5kZWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTYXZlIEFDTCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCBTYXZlQnV0dG9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJTdWJtaXRBbmRDb250aW51ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iRGlhbG9ncyIgY2xhc3M9IkhpZGRlbiI+CiAgICA8ZGl2IGlkPSJEZWxldGVBQ0xDb25maXJtYXRpb25EaWFsb2ciPgogICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEFDTD8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgPHAgY2xhc3M9IlNwYWNpbmdUb3AiPjxzdHJvbmc+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Ryb25nPjwvcD4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminACLNew.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkFDTE5ldy50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IEFDTCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdBQ0wgTWFuYWdlbWVudCcpLAogICAgICAgICAgICAgICAgTGluayA9PiBFbnYoIkFjdGlvbiIpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBBQ0wiKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIgQmFjayI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGUgfCBodG1sICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIgQmFjayI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNyZWF0ZSBhIG5ldyBBQ0wgYnkgc3VibWl0dGluZyB0aGUgZm9ybSBkYXRhLiBBZnRlciBjcmVhdGluZyB0aGUgQUNMLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGFkZCBjb25maWd1cmF0aW9uIGl0ZW1zIGluIGVkaXQgbW9kZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBBQ0wiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJBQ0xOZXdBY3Rpb24iLz4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJPYmplY3RUeXBlIiB2YWx1ZT0iWyUgRGF0YS5PYmplY3RUeXBlIHwgaHRtbCAlXSIvPgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iNzAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNvbW1lbnQiPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iQ29tbWVudCIgaWQ9IkNvbW1lbnQiIHZhbHVlPSJbJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgWyUgRGF0YS5Db21tZW50U2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjcwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXNjcmlwdGlvbiI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iRGVzY3JpcHRpb24iIGlkPSJEZXNjcmlwdGlvbiIgY2xhc3M9Ilc1MHBjIFslIERhdGEuRGVzY3JpcHRpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHJvd3M9IjUiIG1heGxlbmd0aD0iMjAwIj5bJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdG9wQWZ0ZXJNYXRjaCI+WyUgVHJhbnNsYXRlKCJTdG9wIGFmdGVyIG1hdGNoIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU3RvcEFmdGVyTWF0Y2giIGlkPSJTdG9wQWZ0ZXJNYXRjaCIgdmFsdWU9IjEiIFslIERhdGEuQ2hlY2tlZCAlXSAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVmFsaWRJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWYWxpZElERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWYWxpZElEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminDynamicField.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYWluIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMgTWFuYWdlbWVudCIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZShEYXRhLkFjdGlvbikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0R5bmFtaWMgRmllbGRzIE1hbmFnZW1lbnQnKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSIgWyUgRGF0YS5JbmNsdWRlSW52YWxpZENoZWNrZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2x1ZGVJbnZhbGlkIj5bJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyRHluYW1pY0ZpZWxkcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIER5bmFtaWMgRmllbGRzIikgfCBodG1sICVdPC9sYWJlbD48L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckR5bmFtaWNGaWVsZHMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyRHluYW1pY0ZpZWxkcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRPYmplY3RUeXBlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZE9iamVjdFN0cmcgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZpZWxkIGJ5IG9iamVjdCB0eXBlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkT2JqZWN0VHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZE5hbWVzcGFjZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc3BhY2VTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkZpbHRlciBmaWVsZCBieSBuYW1lc3BhY2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGROYW1lc3BhY2UiKSAlXQogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbkFkZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+PGxhYmVsIGZvcj0iWyUgRGF0YS5TZWxlY3ROYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCBEYXRhLk9iamVjdFR5cGVOYW1lICkgfCBodG1sICVdPC9sYWJlbD48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFkZER5bmFtaWNGaWVsZFN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkFkZCBuZXcgZmllbGQgZm9yIG9iamVjdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2xpPgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5TdWJhY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcm9ja2V0Ij48L2k+WyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudApbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uQWRkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSGludCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkhpbnQiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBhZGQgYSBuZXcgZmllbGQsIHNlbGVjdCB0aGUgZmllbGQgdHlwZSBmcm9tIG9uZSBvZiB0aGUgb2JqZWN0J3MgbGlzdCwgdGhlIG9iamVjdCBkZWZpbmVzIHRoZSBib3VuZGFyeSBvZiB0aGUgZmllbGQgYW5kIGl0IGNhbid0IGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGZpZWxkIGNyZWF0aW9uLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiMgVE9ETzogQWRkIHRoZSBhY3R1YWxseSBuZXcgZmllbGRzCiMgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiMgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgojICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk5ldyBEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXTwvaDI+CiMgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgojICAgICAgICAgICAgICAgICAgICA8cD4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV291bGQgeW91IGxpa2UgdG8gYmVuZWZpdCBmcm9tIGFkZGl0aW9uYWwgZHluYW1pYyBmaWVsZCB0eXBlcz8gWW91IGhhdmUgZnVsbCBhY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyBmaWVsZCB0eXBlczoiKSB8IGh0bWwgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9wPgojICAgICAgICAgICAgICAgICAgICA8ZGw+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdEYXRhYmFzZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdVc2UgZXh0ZXJuYWwgZGF0YWJhc2VzIGFzIGNvbmZpZ3VyYWJsZSBkYXRhIHNvdXJjZXMgZm9yIHRoaXMgZHluYW1pYyBmaWVsZC4nKSB8IGh0bWwgJV08L2RkPgojCiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdXZWIgc2VydmljZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdFeHRlcm5hbCB3ZWIgc2VydmljZXMgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgZGF0YSBzb3VyY2VzIGZvciB0aGlzIGR5bmFtaWMgZmllbGQuJykgfCBodG1sICVdPC9kZD4KIwojICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgnQ29udGFjdCB3aXRoIGRhdGEnKSB8IGh0bWwgJV08L2R0PgojICAgICAgICAgICAgICAgICAgICAgICAgPGRkPlslIFRyYW5zbGF0ZSgnVGhpcyBmZWF0dXJlIGFsbG93cyB0byBhZGQgKG11bHRpcGxlKSBjb250YWN0cyB3aXRoIGRhdGEgdG8gdGlja2V0cy4nKSB8IGh0bWwgJV08L2RkPgojICAgICAgICAgICAgICAgICAgICA8L2RsPgojICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSGludCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyBMaXN0IikgfCBodG1sICVdPC9oMj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRleHRTZXR0aW5ncyIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkNvbnRleHRGdW5jdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ29udGV4dFNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRQcmVmZXJlbmNlcyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJVcGRhdGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iR3JvdXAiIHZhbHVlPSJbJSBEYXRhLkdyb3VwIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZWRpcmVjdFVSTCIgdmFsdWU9IlslIERhdGEuUmVxdWVzdGVkVVJMIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlByZWZlcmVuY2VzS2V5IHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIGZpZWxkcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRleHRTZXR0aW5ncyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRHluYW1pY0ZpZWxkc1BhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlBhZ2luYXRpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VOYXZCYXIiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0TG9uZyAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJEeW5hbWljRmllbGRzQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgaWQ9IkR5bmFtaWNGaWVsZHNUYWJsZSIgc3VtbWFyeT0iTGlzdCBvZiBhbGwgcmVnaXN0ZXJlZCBEeW5hbWljIEZpZWxkcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkxhYmVsIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk9yZGVyIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiT2JqZWN0IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvcHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uWyUgSUYgRGF0YS5WYWxpZElEICE9IDElXSBJbnZhbGlkWyUgRU5EICVdIiBpZD0iRHluYW1pY0ZpZWxkSURfWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBEYXRhLkNvbmZpZ0RpYWxvZyB8IHVyaSAlXTtTdWJhY3Rpb249Q2hhbmdlO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdO0ZpZWxkVHlwZT1bJSBEYXRhLkZpZWxkVHlwZSB8IHVyaSAlXTtJRD1bJSBEYXRhLklEIHwgdXJpICVdWyUgRGF0YS5GaWx0ZXJTdHJnICVdIiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTmFtZSAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5GaWVsZE9yZGVyICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZU5hbWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkR5bmFtaWNGaWVsZENsb25lIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRGF0YS5Db25maWdEaWFsb2cgJV07U3ViYWN0aW9uPUFkZDtDbG9uZUZpZWxkSUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtGaWVsZFR5cGU9WyUgRGF0YS5GaWVsZFR5cGUgfCB1cmkgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGVOYW1lIHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb3B5IHRoaXMgZmllbGQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29weSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGVMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVHJhc2hDYW4gRHluYW1pY0ZpZWxkRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkO1N1YmFjdGlvbj1EeW5hbWljRmllbGREZWxldGU7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtbJSBFbnYoIkNoYWxsZW5nZVRva2VuUGFyYW0iKSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVsZXRlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjciPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWF4RmllbGRPcmRlciIpICVdCiAgICAgICAgPGlucHV0IGlkPSJNYXhGaWVsZE9yZGVyIiB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1heEZpZWxkT3JkZXIiIHZhbHVlPSJbJSBEYXRhLk1heEZpZWxkT3JkZXIgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJNYXhGaWVsZE9yZGVyIikgJV0KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFpbiIpICVdCg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminDynamicFieldScreen.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZFNjcmVlbi50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3IikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiTWFuYWdlbWVudCBvZiBEeW5hbWljIEZpZWxkcyA8LT4gU2NyZWVucyIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdNYW5hZ2VtZW50IG9mIER5bmFtaWMgRmllbGRzIDwtPiBTY3JlZW5zJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBJTkNMVURFICJCcmVhZGNydW1iLnR0IiBQYXRoID0gQnJlYWRjcnVtYlBhdGggJV0KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkT2JqZWN0VHlwZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGRPYmplY3RUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgYnkgb2JqZWN0IHR5cGUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRPYmplY3RUeXBlIikgJV0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIk92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZSI+PC9pPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk92ZXJ2aWV3IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgTGF5b3V0R3JpZCBDb2x1bW5zV2l0aFNwYWNpbmciPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpemUxb2YzIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSIgaWQ9IkR5bmFtaWNGaWVsZFNjcmVlbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyBTY3JlZW5zIikgfCBodG1sICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJGaWx0ZXJNZXNzYWdlIEhpZGRlbiI+WyUgVHJhbnNsYXRlKCJObyBtYXRjaGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZFNjcmVlbk92ZXJ2aWV3Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGlkPSJbJSBEYXRhLk5hbWUgfCB1cmkgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1FZGl0O1R5cGU9RHluYW1pY0ZpZWxkU2NyZWVuO0VsZW1lbnQ9WyUgRGF0YS5EeW5hbWljRmllbGRTY3JlZW4gfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRTY3JlZW5PdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjMiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIiBpZD0iRGVmYXVsdENvbHVtbnNTY3JlZW5zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXIiPlslIFRyYW5zbGF0ZSgiRGVmYXVsdCBDb2x1bW5zIFNjcmVlbnMiKSB8IGh0bWwgJV08L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC9saT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVmYXVsdENvbHVtbnNTY3JlZW5PdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBpZD0iWyUgRGF0YS5OYW1lIHwgdXJpICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RWRpdDtUeXBlPURlZmF1bHRDb2x1bW5zU2NyZWVuO0VsZW1lbnQ9WyUgRGF0YS5EZWZhdWx0Q29sdW1uc1NjcmVlbiB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlZmF1bHRDb2x1bW5zU2NyZWVuT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpemUxb2YzIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSIgaWQ9IkR5bmFtaWNGaWVsZHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L2xpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0RhdGFGb3VuZE1zZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0gPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiA+WyUgVHJhbnNsYXRlKCJBZGQgRHluYW1pY0ZpZWxkIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9EYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBpZD0iWyUgRGF0YS5OYW1lIHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSAoWyUgRGF0YS5EeW5hbWljRmllbGQgfCBodG1sICVdKSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUVkaXQ7VHlwZT1EeW5hbWljRmllbGQ7RWxlbWVudD1bJSBEYXRhLkR5bmFtaWNGaWVsZCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdICg8c3Ryb25nPlslIERhdGEuRHluYW1pY0ZpZWxkIHwgaHRtbCAlXTwvc3Ryb25nPik8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRWRpdCIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIk1hbmFnZW1lbnQgb2YgRHluYW1pYyBGaWVsZHMgPC0+IFNjcmVlbnMiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBFZGl0VGl0bGUgPSBTdHJpbmcoRGF0YS5CcmVhZGNydW1iVGl0bGUpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdNYW5hZ2VtZW50IG9mIER5bmFtaWMgRmllbGRzIDwtPiBTY3JlZW5zJyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZChEYXRhLlR5cGUsICIgLSAiICxEYXRhLkVsZW1lbnQgICksCiAgICAgICAgICAgIH0KICAgICAgICBdCiAgICAlXQoKICAgIFslIER5bmFtaWNGaWVsZFNlbGVjdGVkID0gKCBEYXRhLlR5cGUgPT0gJ0R5bmFtaWNGaWVsZCcgKSAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+WyUgVHJhbnNsYXRlKCJPdmVydmlldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkR5bmFtaWNGaWVsZCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkR5bmFtaWMgRmllbGRzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckVsZW1lbnRzIiBjbGFzcz0iVzk1cGMiIG5hbWU9IkZpbHRlckVsZW1lbnRzIiB2YWx1ZT0iIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdGaWx0ZXInKSB8IGh0bWwgJV0iIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoJ0ZpbHRlcicpIHwgaHRtbCAlXS4uLiIgLz4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIFNwYWNpbmdUb3AiIGlkPSJFbGVtZW50cyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXdSb3dFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdWyUgSUYgRHluYW1pY0ZpZWxkU2VsZWN0ZWQgJV0gKFslIERhdGEuRWxlbWVudEtleSB8IGh0bWwgJV0pWyUgRU5EICVdIj48YSBjbGFzcz0iQXNCbG9jayIgaWQ9IlslIFRyYW5zbGF0ZShEYXRhLkVsZW1lbnQpIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUVkaXQ7VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV07RWxlbWVudD1bJSBEYXRhLkVsZW1lbnRLZXkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkVsZW1lbnQpIHwgaHRtbCAlXVslIElGIER5bmFtaWNGaWVsZFNlbGVjdGVkICVdICg8c3Ryb25nPlslIERhdGEuRWxlbWVudEtleSB8IGh0bWwgJV08L3N0cm9uZz4pWyUgRU5EICVdPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25PdmVydmlld1Jvd0VkaXQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXSAtIFslIERhdGEuRWxlbWVudCB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBpZD0nRm9ybScgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdQWN0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVHlwZSIgdmFsdWU9IlslIERhdGEuVHlwZSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbGVtZW50IiB2YWx1ZT0iWyUgRGF0YS5FbGVtZW50IHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkZpZWxkcyIgdmFsdWU9IiIvPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkxheW91dEdyaWQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMSBTcGFjaW5nQm90dG9tIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiWW91IGNhbiBhc3NpZ24gZWxlbWVudHMgdG8gdGhpcyBTY3JlZW4vRmllbGQgYnkgZHJhZ2dpbmcgdGhlIGVsZW1lbnRzIHdpdGggdGhlIG1vdXNlIGZyb20gdGhlIGxlZnQgbGlzdCB0byB0aGUgcmlnaHQgbGlzdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk9yZGVyaW5nIHRoZSBlbGVtZW50cyB3aXRoaW4gdGhlIGxpc3QgaXMgYWxzbyBwb3NzaWJsZSBieSBkcmFnICduJyBkcm9wLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRHcmlkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iWyUgRGF0YS5TaXplIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckF2YWlsYWJsZUVsZW1lbnRzIiBzdHlsZT0id2lkdGg6OTAlOyIgbmFtZT0iRmlsdGVyQXZhaWxhYmxlRWxlbWVudHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ0ZpbHRlciBhdmFpbGFibGUgZWxlbWVudHMnKSB8IGh0bWwgJV0iIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoJ0ZpbHRlciBhdmFpbGFibGUgZWxlbWVudHMnKSB8IGh0bWwgJV0uLi4iIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9J0FsbFNlbGVjdGVkQXZhaWxhYmxlRWxlbWVudHMnIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFc5MHBjIENlbnRlciBTcGFjaW5nVG9wIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOjg1JTsiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+WyUgVHJhbnNsYXRlKCJzZWxlY3RlZCB0byBhdmFpbGFibGUgZWxlbWVudHMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIFc5MHBjIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTZWxlY3RBbGxBdmFpbGFibGVFbGVtZW50cyIgaWQ9IlNlbGVjdEFsbEF2YWlsYWJsZUVsZW1lbnRzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdUb2dnbGUgYWxsIGF2YWlsYWJsZSBlbGVtZW50cycpIHwgaHRtbCAlXSIgdmFsdWU9IiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBdmFpbGFibGUgRWxlbWVudHMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIFc5MHBjIiBzdHlsZT0ibWF4LWhlaWdodDogaW5oZXJpdDsiIGlkPSJBdmFpbGFibGVFbGVtZW50cyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkF2YWlsYWJsZUZpZWxkUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV1bJSBJRiAhRHluYW1pY0ZpZWxkU2VsZWN0ZWQgJV0gKFslIFRyYW5zbGF0ZShEYXRhLkVsZW1lbnQpIHwgaHRtbCAlXSlbJSBFTkQgJV0iIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2VsZWN0QWxsQXZhaWxhYmxlRWxlbWVudHMiIHZhbHVlPSJbJSBEYXRhLklEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdWyUgSUYgIUR5bmFtaWNGaWVsZFNlbGVjdGVkICVdICg8c3Ryb25nPlslIERhdGEuRWxlbWVudCB8IGh0bWwgJV08L3N0cm9uZz4pWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkF2YWlsYWJsZUVsZW1lbnRzIiAgdmFsdWU9IlslIERhdGEuRWxlbWVudCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBdmFpbGFibGVGaWVsZFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlslIERhdGEuU2l6ZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJGaWx0ZXJEaXNhYmxlZEVsZW1lbnRzIiBzdHlsZT0id2lkdGg6OTAlOyIgbmFtZT0iRmlsdGVyRGlzYWJsZWRFbGVtZW50cyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnRmlsdGVyIGRpc2FibGVkIGVsZW1lbnRzJykgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCdGaWx0ZXIgZGlzYWJsZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0uLi4iIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9J0FsbFNlbGVjdGVkRGlzYWJsZWRFbGVtZW50cycgY2xhc3M9IkNhbGxGb3JBY3Rpb24gVzkwcGMgQ2VudGVyIFNwYWNpbmdUb3AiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgd2lkdGg6ODUlOyI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT5bJSBUcmFuc2xhdGUoInNlbGVjdGVkIHRvIGRpc2FibGVkIGVsZW1lbnRzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBXOTBwYyBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2VsZWN0QWxsRGlzYWJsZWRFbGVtZW50cyIgaWQ9IlNlbGVjdEFsbERpc2FibGVkRWxlbWVudHMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ1RvZ2dsZSBhbGwgZGlzYWJsZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0iIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRGlzYWJsZWQgRWxlbWVudHMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIFc5MHBjIiBzdHlsZT0ibWF4LWhlaWdodDogaW5oZXJpdDsiIGlkPSJEaXNhYmxlZEVsZW1lbnRzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGlzYWJsZWRGaWVsZFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdWyUgSUYgIUR5bmFtaWNGaWVsZFNlbGVjdGVkICVdIChbJSBUcmFuc2xhdGUoRGF0YS5FbGVtZW50KSB8IGh0bWwgJV0pWyUgRU5EICVdIiBpZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IlNlbGVjdEFsbERpc2FibGVkRWxlbWVudHMiIHZhbHVlPSJbJSBEYXRhLklEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdWyUgSUYgIUR5bmFtaWNGaWVsZFNlbGVjdGVkICVdICg8c3Ryb25nPlslIERhdGEuRWxlbWVudCB8IGh0bWwgJV08L3N0cm9uZz4pWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkRpc2FibGVkRWxlbWVudHMiIHZhbHVlPSJbJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRGlzYWJsZWRGaWVsZFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iWyUgRGF0YS5TaXplIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckFzc2lnbmVkRWxlbWVudHMiIHN0eWxlPSJ3aWR0aDo5MCU7IiBuYW1lPSJGaWx0ZXJBc3NpZ25lZEVsZW1lbnRzIiB2YWx1ZT0iIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdGaWx0ZXIgYXNzaWduZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0iIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoJ0ZpbHRlciBhc3NpZ25lZCBlbGVtZW50cycpIHwgaHRtbCAlXS4uLiIgLz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0nQWxsU2VsZWN0ZWRBc3NpZ25lZEVsZW1lbnRzJyBjbGFzcz0iQ2FsbEZvckFjdGlvbiBXOTBwYyBDZW50ZXIgU3BhY2luZ1RvcCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyB3aWR0aDo4NSU7Ij48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPlslIFRyYW5zbGF0ZSgic2VsZWN0ZWQgdG8gYXNzaWduZWQgZWxlbWVudHMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIFc5MHBjIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTZWxlY3RBbGxBc3NpZ25lZEVsZW1lbnRzIiBpZD0iU2VsZWN0QWxsQXNzaWduZWRFbGVtZW50cyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnVG9nZ2xlIGFsbCBhc3NpZ25lZCBlbGVtZW50cycpIHwgaHRtbCAlXSIgdmFsdWU9IiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBc3NpZ25lZCBFbGVtZW50cyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBbGxvY2F0aW9uTGlzdCBUYWJsZWxpa2UgVzkwcGMiIHN0eWxlPSJtYXgtaGVpZ2h0OiBpbmhlcml0OyIgaWQ9IkFzc2lnbmVkRWxlbWVudHMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBc3NpZ25lZEZpZWxkUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV1bJSBJRiAhRHluYW1pY0ZpZWxkU2VsZWN0ZWQgJV0gKFslIFRyYW5zbGF0ZShEYXRhLkVsZW1lbnQpIHwgaHRtbCAlXSlbJSBFTkQgJV0iIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2VsZWN0QWxsQXNzaWduZWRFbGVtZW50cyIgdmFsdWU9IlslIERhdGEuSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV1bJSBJRiAhRHluYW1pY0ZpZWxkU2VsZWN0ZWQgJV0gKDxzdHJvbmc+WyUgRGF0YS5FbGVtZW50IHwgaHRtbCAlXTwvc3Ryb25nPilbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQXNzaWduZWRFbGVtZW50cyIgdmFsdWU9IlslIERhdGEuRWxlbWVudCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBc3NpZ25lZEZpZWxkUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLlNpemUgfCBodG1sICVdIFslIERhdGEuSGlkZGVuUmVxdWlyZWQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzIiBzdHlsZT0id2lkdGg6OTAlOyIgbmFtZT0iRmlsdGVyQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzIiB2YWx1ZT0iIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdGaWx0ZXIgYXNzaWduZWQgcmVxdWlyZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0iIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoJ0ZpbHRlciBhc3NpZ25lZCByZXF1aXJlZCBlbGVtZW50cycpIHwgaHRtbCAlXS4uLiIgLz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0nQWxsU2VsZWN0ZWRBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMnIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFc5MHBjIENlbnRlciBTcGFjaW5nVG9wIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOjg1JTsiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+WyUgVHJhbnNsYXRlKCJzZWxlY3RlZCB0byBhc3NpZ25lZCByZXF1aXJlZCBlbGVtZW50cyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgVzkwcGMgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IlNlbGVjdEFsbEFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyIgaWQ9IlNlbGVjdEFsbEFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnVG9nZ2xlIGFsbCBhc3NpZ25lZCByZXF1aXJlZCBlbGVtZW50cycpIHwgaHRtbCAlXSIgdmFsdWU9IiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBc3NpZ25lZCBSZXF1aXJlZCBFbGVtZW50cyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIFc5MHBjIiBzdHlsZT0ibWF4LWhlaWdodDogaW5oZXJpdDsiIGlkPSJBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBc3NpZ25lZFJlcXVpcmVkRmllbGRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXVslIElGICFEeW5hbWljRmllbGRTZWxlY3RlZCAlXSAoWyUgVHJhbnNsYXRlKERhdGEuRWxlbWVudCkgfCBodG1sICVdKVslIEVORCAlXSIgaWQ9IlslIERhdGEuSUQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTZWxlY3RBbGxBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMiIHZhbHVlPSJbJSBEYXRhLklEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXVslIElGICFEeW5hbWljRmllbGRTZWxlY3RlZCAlXSAoPHN0cm9uZz5bJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdPC9zdHJvbmc+KVslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMiIHZhbHVlPSJbJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBc3NpZ25lZFJlcXVpcmVkRmllbGRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSIgPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iWyUgRGF0YS5IaWRkZW5SZXNldCB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV08L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1SZXNldDtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXTtFbGVtZW50PVslIERhdGEuRWxlbWVudCB8IHVyaSAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gQ2VudGVyIFslIERhdGEuSGlkZGVuUmVzZXQgfCBodG1sICVdIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPlslIFRyYW5zbGF0ZSgiUmVzZXQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJFZGl0IikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/System/ACL/DB/ACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL1N5c3RlbS9BQ0wvREIvQUNMLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdG9yYWdlOjpTMycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RmllbGRSZXN0cmljdGlvbnMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTAoKPWhlYWQxIERFU0NSSVBUSU9OCgpBQ0wgREIgQUNMIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhIEFDTCBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIG15ICRBQ0xPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QUNMOjpEQjo6QUNMJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGZpbmQgb3V0IHdoZXRoZXIgbG9hZGVyIGZpbGVzIGFyZSBzdG9yZWQgaW4gUzMgb3IgaW4gdGhlIGZpbGUgc3lzdGVtCiAgICAkU2VsZi0+e1MzQWN0aXZlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3RvcmFnZTo6UzM6OkFjdGl2ZScpID8gMSA6IDA7CgogICAgIyBnZXQgdGhlIGNhY2hlIFRUTCAoaW4gc2Vjb25kcykKICAgICRTZWxmLT57Q2FjaGVUVEx9ID0gaW50KCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0FDTDo6Q2FjaGVUVEwnKSB8fCAzNjAwICk7CgogICAgIyBzZXQgbG93ZXIgaWYgZGF0YWJhc2UgaXMgY2FzZSBzZW5zaXRpdmUKICAgICRTZWxmLT57TG93ZXJ9ID0gJyc7CiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdDYXNlU2Vuc2l0aXZlJykgKSB7CiAgICAgICAgJFNlbGYtPntMb3dlcn0gPSAnTE9XRVInOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIEFDTEFkZCgpCgphZGQgbmV3IEFDTAoKcmV0dXJucyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgQUNMIGlmIHN1Y2Nlc3Mgb3IgdW5kZWYgb3RoZXJ3aXNlCgogICAgbXkgJElEID0gJEFDTC0+QUNMQWRkKAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOYW1lT2ZBQ0wnICAgICAgICAgICAjIG1hbmRhdG9yeQogICAgICAgIENvbW1lbnQgICAgICAgID0+ICdDb21tZW50JywgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJ0Rlc2NyaXB0aW9uJywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAxLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIENvbmZpZ01hdGNoICAgID0+ICRDb25maWdNYXRjaEhhc2hSZWYsICAjIG9wdGlvbmFsCiAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJENvbmZpZ0NoYW5nZUhhc2hSZWYsICMgb3B0aW9uYWwKICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnkKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnkKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBPYmplY3RUeXBlICAgICA9PiAnVGlja2V0JywgICAgICAgICAgICAgIyBvcHRpb25hbCAoY3VycmVudGx5IFRpY2tldCBvciBDb25maWdJdGVtLCBkZWZhdWx0cyB0byBUaWNrZXQpCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICApOwoKUmV0dXJuczoKCiAgICAkSUQgPSA1Njc7Cgo9Y3V0CgpzdWIgQUNMQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgc2V0IGRlZmF1bHQgZm9yIG9iamVjdCB0eXBlCiAgICAkUGFyYW17T2JqZWN0VHlwZX0gLy89ICdUaWNrZXQnOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEtleSAocXcoTmFtZSBWYWxpZElEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRLZXkhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB5YW1sIG9iamVjdAogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgICMgZGVmaW5lIERlc2NyaXB0aW9uIGZpZWxkIGlmIG5vdCBwcmVzZW50CiAgICAkUGFyYW17RGVzY3JpcHRpb259IC8vPSAnJzsKCiAgICBteSAkQ29uZmlnTWF0Y2ggID0gJyc7CiAgICBteSAkQ29uZmlnQ2hhbmdlID0gJyc7CgogICAgaWYgKCAkUGFyYW17Q29uZmlnTWF0Y2h9ICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ01hdGNofSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ29uZmlnTWF0Y2ggbmVlZHMgdG8gYmUgYSB2YWxpZCBoYXNoIHdpdGggZGF0YSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkQ29uZmlnTWF0Y2ggPSAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiAkUGFyYW17Q29uZmlnTWF0Y2h9ICk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17Q29uZmlnQ2hhbmdlfSApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdDaGFuZ2V9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb25maWdDaGFuZ2UgbmVlZHMgdG8gYmUgYSB2YWxpZCBoYXNoIHdpdGggZGF0YSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkQ29uZmlnQ2hhbmdlID0gJFlBTUxPYmplY3QtPkR1bXAoIERhdGEgPT4gJFBhcmFte0NvbmZpZ0NoYW5nZX0gKTsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgQUNMIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gIgogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBhY2wKICAgICAgICAgICAgV0hFUkUgJFNlbGYtPntMb3dlcn0obmFtZSkgPSAkU2VsZi0+e0xvd2VyfSg/KSIsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEV4aXN0czsKICAgIHdoaWxlICggbXkgQERhdGEgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQUNMRXhpc3RzID0gMTsKICAgIH0KCiAgICBpZiAoJEFDTEV4aXN0cykgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQW4gQUNMIHdpdGggdGhlIG5hbWUgJyRQYXJhbXtOYW1lfScgYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgU1FMID0+ICcKIyAgICAgICAgICAgICBJTlNFUlQgSU5UTyBhY2wgKCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIGNvbmZpZ19tYXRjaCwKIyAgICAgICAgICAgICAgICAgY29uZmlnX2NoYW5nZSwgdmFsaWRfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkgKQojICAgICAgICAgICAgIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gYWNsICggbmFtZSwgY29tbWVudHMsIGRlc2NyaXB0aW9uLCBzdG9wX2FmdGVyX21hdGNoLCBjb25maWdfbWF0Y2gsCiAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCB2YWxpZF9pZCwgb2JqZWN0X3R5cGUsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkgKQogICAgICAgICAgICBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte05hbWV9LCAgIFwkUGFyYW17Q29tbWVudH0sIFwkUGFyYW17RGVzY3JpcHRpb259LCBcJFBhcmFte1N0b3BBZnRlck1hdGNofSwKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICBcJENvbmZpZ01hdGNoLCAgIFwkQ29uZmlnQ2hhbmdlLCAgIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkQ29uZmlnTWF0Y2gsICAgXCRDb25maWdDaGFuZ2UsICAgXCRQYXJhbXtWYWxpZElEfSwgXCRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGlkIEZST00gYWNsIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgKTsKCiAgICBteSAkSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkSUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJElEOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGFjbF9zeW5jICggYWNsX2lkLCBzeW5jX3N0YXRlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUgKQogICAgICAgICAgICBWQUxVRVMgKD8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgIEJpbmQgPT4gWyBcJElELCBcJ25vdF9zeW5jJyBdLAogICAgKTsKCiAgICByZXR1cm4gJElEOwp9Cgo9aGVhZDIgQUNMRGVsZXRlKCkKCmRlbGV0ZSBhbiBBQ0wKCnJldHVybnMgMSBpZiBzdWNjZXNzIG9yIHVuZGVmIG90aGVyd2lzZQoKICAgIG15ICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMRGVsZXRlKAogICAgICAgIElEICAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBBQ0xEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRLZXkgKHF3KElEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRLZXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZXhpc3RzCiAgICBteSAkQUNMID0gJFNlbGYtPkFDTEdldCgKICAgICAgICBJRCAgICAgPT4gJFBhcmFte0lEfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQUNMKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIEFDTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGFjbCBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0lEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICApOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBhY2xfc3luYyAoIGFjbF9pZCwgc3luY19zdGF0ZSwgY3JlYXRlX3RpbWUsIGNoYW5nZV90aW1lICkKICAgICAgICAgICAgVkFMVUVTICg/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgY3VycmVudF90aW1lc3RhbXApJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJRH0sIFwnZGVsZXRlZCcgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBQ0xHZXQoKQoKZ2V0IEFDTCBhdHRyaWJ1dGVzCgogICAgbXkgJEFDTCA9ICRBQ0xPYmplY3QtPkFDTEdldCgKICAgICAgICBJRCAgICAgICAgICAgICAgPT4gMTIzLCAgICAgICAgICAjIElEIG9yIG5hbWUgaXMgbmVlZGVkCiAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICdBQ0wxJywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMTIzLCAgICAgICAgICAjIG1hbmRhdG9yeQogICAgKTsKClJldHVybnM6CgogICAgJEFDTCA9IHsKICAgICAgICBJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJ0NvbW1lbnQnLAogICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgU3RvcEFmdGVyTWF0Y2ggPT4gMSwKICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQ29uZmlnTWF0Y2hIYXNoUmVmLAogICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRDb25maWdDaGFuZ2VIYXNoUmVmLAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIE9iamVjdFR5cGUgICAgID0+ICgnVGlja2V0J3wnQ29uZmlnSXRlbScpCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgVmFsaWRJRCAgICAgICAgPT4gMSwKICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAnMjAxMi0wNy0wNCAxNTowODowMCcsCiAgICAgICAgQ2hhbmdlVGltZSAgICAgPT4gJzIwMTItMDctMDQgMTU6MDg6MDAnLAogICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICd1c2VyX2xvZ2luJywKICAgICAgICBDaGFuZ2VCeSAgICAgICA9PiAndXNlcl9sb2dpbicsCiAgICB9OwoKPWN1dAoKc3ViIEFDTEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIHNldCBkZWZhdWx0IGZvciBvYmplY3QgdHlwZQogICAgJFBhcmFte09iamVjdFR5cGV9IC8vPSAnVGlja2V0JzsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0lEfSAmJiAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJRCBvciBOYW1lIScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5OwogICAgaWYgKCAkUGFyYW17SUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdBQ0xHZXQ6OklEOjonIC4gJFBhcmFte0lEfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRDYWNoZUtleSA9ICdBQ0xHZXQ6Ok5hbWU6OicgLiAkUGFyYW17TmFtZX07CiAgICB9CgogICAgIyBnZXQgY2FjaGUgb2JqZWN0CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICBteSAkQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJENhY2hlIGlmICRDYWNoZTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICBpZiAoICRQYXJhbXtJRH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgU1FMID0+ICcKIyAgICAgICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIHZhbGlkX2lkLCBjb25maWdfbWF0Y2gsCiMgICAgICAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX2J5CiMgICAgICAgICAgICAgICAgIEZST00gYWNsCiMgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUsIGNvbW1lbnRzLCBkZXNjcmlwdGlvbiwgc3RvcF9hZnRlcl9tYXRjaCwgdmFsaWRfaWQsIGNvbmZpZ19tYXRjaCwKICAgICAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCBvYmplY3RfdHlwZSwgY3JlYXRlX3RpbWUsIGNoYW5nZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV9ieQogICAgICAgICAgICAgICAgRlJPTSBhY2wKICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtJRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgU1FMID0+ICcKIyAgICAgICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIHZhbGlkX2lkLCBjb25maWdfbWF0Y2gsCiMgICAgICAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX2J5CiMgICAgICAgICAgICAgICAgIEZST00gYWNsCiMgICAgICAgICAgICAgICAgIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZSwgY29tbWVudHMsIGRlc2NyaXB0aW9uLCBzdG9wX2FmdGVyX21hdGNoLCB2YWxpZF9pZCwgY29uZmlnX21hdGNoLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ19jaGFuZ2UsIG9iamVjdF90eXBlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX2J5CiAgICAgICAgICAgICAgICBGUk9NIGFjbAogICAgICAgICAgICAgICAgV0hFUkUgbmFtZSA9ID8nLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHlhbWwgb2JqZWN0CiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBEYXRhID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICRDb25maWdNYXRjaCA9ICcnOwogICAgICAgIGlmICggJERhdGFbNl0gKSB7CiAgICAgICAgICAgICRDb25maWdNYXRjaCA9ICRZQU1MT2JqZWN0LT5Mb2FkKCBEYXRhID0+ICREYXRhWzZdICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29uZmlnQ2hhbmdlID0gJyc7CiAgICAgICAgaWYgKCAkRGF0YVs3XSApIHsKICAgICAgICAgICAgJENvbmZpZ0NoYW5nZSA9ICRZQU1MT2JqZWN0LT5Mb2FkKCBEYXRhID0+ICREYXRhWzddICk7CiAgICAgICAgfQoKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgSUQgICAgICAgICAgICAgPT4gJERhdGFbMF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICREYXRhWzFdLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkRGF0YVsyXSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJERhdGFbM10gfHwgJycsCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+ICREYXRhWzRdIHx8IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICREYXRhWzVdLAogICAgICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQ29uZmlnTWF0Y2gsCiAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRDb25maWdDaGFuZ2UsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgPT4gJERhdGFbOF0sCiMgICAgICAgICAgICAgQ2hhbmdlVGltZSAgICAgPT4gJERhdGFbOV0sCiMgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgPT4gJERhdGFbMTBdLAojICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgID0+ICREYXRhWzExXSwKICAgICAgICAgICAgT2JqZWN0VHlwZSAgICAgPT4gJERhdGFbOF0sCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICREYXRhWzldLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgICA9PiAkRGF0YVsxMF0sCiAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICREYXRhWzExXSwKICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgPT4gJERhdGFbMTJdLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBpZiAhJERhdGF7SUR9OwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBjb252ZXJ0IFVzZXJJRHMgb3V0c2lkZSBvZiBmZXRjaHJvd0FycmF5LCBvdGhlcndpc2UgVXNlckxvb3VrdXAgd2lsbCByaXNlIHNvbWUgd2FybmluZ3MKICAgIG15ICRDcmVhdGVVc2VyID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJJRCA9PiAkRGF0YXtDcmVhdGVCeX0gKTsKICAgIG15ICRDaGFuZ2VVc2VyID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJJRCA9PiAkRGF0YXtDaGFuZ2VCeX0gKTsKICAgICREYXRhe0NyZWF0ZUJ5fSA9ICRDcmVhdGVVc2VyOwogICAgJERhdGF7Q2hhbmdlQnl9ID0gJENoYW5nZVVzZXI7CgogICAgIyBzZXQgY2FjaGUKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgQUNMVXBkYXRlKCkKCnVwZGF0ZSBBQ0wgYXR0cmlidXRlcwoKcmV0dXJucyAxIGlmIHN1Y2Nlc3Mgb3IgdW5kZWYgb3RoZXJ3aXNlCgogICAgbXkgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ05hbWVPZkFDTCcsICAgICAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJ0NvbW1lbnQnLCAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnRGVzY3JpcHRpb24nLCAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFN0b3BBZnRlck1hdGNoID0+IDEsICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgVmFsaWRJRCAgICAgICAgPT4gJ1ZhbGlkSUQnLCAgICAgICAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgQ29uZmlnTWF0Y2ggICAgPT4gJENvbmZpZ01hdGNoSGFzaFJlZiwgICMgb3B0aW9uYWwKICAgICAgICBDb25maWdDaGFuZ2UgICA9PiAkQ29uZmlnQ2hhbmdlSGFzaFJlZiwgIyBvcHRpb25hbAogICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEyMywgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeQogICAgKTsKCj1jdXQKCnN1YiBBQ0xVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRLZXkgKHF3KElEIE5hbWUgVmFsaWRJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkS2V5ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBEZXNjcmlwdGlvbiBmaWVsZCBpZiBub3QgcHJlc2VudAogICAgJFBhcmFte0Rlc2NyaXB0aW9ufSAvLz0gJyc7CgogICAgIyBzZXQgU3RvcEFmdGVyTWF0Y2ggaWYgdW5kZWZpbmVkCiAgICAkUGFyYW17U3RvcEFmdGVyTWF0Y2h9IC8vPSAwOwoKICAgIG15ICRDb25maWdNYXRjaCAgPSAnJzsKICAgIG15ICRDb25maWdDaGFuZ2UgPSAnJzsKCiAgICBmb3IgbXkgJEtleSAocXcoQ29uZmlnTWF0Y2ggQ29uZmlnQ2hhbmdlKSkgewoKICAgICAgICBpZiAoICRQYXJhbXskS2V5fSAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXskS2V5fSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEtleSBuZWVkcyB0byBiZSBhIHZhbGlkIGhhc2ggd2l0aCBkYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgeWFtbCBvYmplY3QKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICBpZiAoICRQYXJhbXtDb25maWdNYXRjaH0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdNYXRjaH0gKSApIHsKICAgICAgICAkQ29uZmlnTWF0Y2ggPSAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiAkUGFyYW17Q29uZmlnTWF0Y2h9ICk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17Q29uZmlnQ2hhbmdlfSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0NoYW5nZX0gKSApIHsKICAgICAgICAkQ29uZmlnQ2hhbmdlID0gJFlBTUxPYmplY3QtPkR1bXAoIERhdGEgPT4gJFBhcmFte0NvbmZpZ0NoYW5nZX0gKTsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgTmFtZSBhbHJlYWR5IGV4aXN0cwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICIKICAgICAgICAgICAgU0VMRUNUIGlkIEZST00gYWNsCiAgICAgICAgICAgIFdIRVJFICRTZWxmLT57TG93ZXJ9KG5hbWUpID0gJFNlbGYtPntMb3dlcn0oPykKICAgICAgICAgICAgQU5EIGlkICE9ID8iLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtJRH0gXSwKICAgICAgICBMSU1JVCA9PiAxLAogICAgKTsKCiAgICBteSAkQUNMRXhpc3RzOwogICAgd2hpbGUgKCBteSBARGF0YSA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBQ0xFeGlzdHMgPSAxOwogICAgfQoKICAgIGlmICgkQUNMRXhpc3RzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBbiBBQ0wgd2l0aCB0aGUgbmFtZSAnJFBhcmFte05hbWV9JyBhbHJlYWR5IGV4aXN0cy4iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgbmVlZCB0byB1cGRhdGUgZGIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIHZhbGlkX2lkLCBjb25maWdfbWF0Y2gsCiAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlCiAgICAgICAgICAgIEZST00gYWNsCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0lEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRDdXJyZW50TmFtZTsKICAgIG15ICRDdXJyZW50Q29tbWVudDsKICAgIG15ICRDdXJyZW50RGVzY3JpcHRpb247CiAgICBteSAkQ3VycmVudFN0b3BBZnRlck1hdGNoOwogICAgbXkgJEN1cnJlbnRWYWxpZElEOwogICAgbXkgJEN1cnJlbnRDb25maWdNYXRjaDsKICAgIG15ICRDdXJyZW50Q29uZmlnQ2hhbmdlOwogICAgd2hpbGUgKCBteSBARGF0YSA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDdXJyZW50TmFtZSAgICAgICAgICAgPSAkRGF0YVswXTsKICAgICAgICAkQ3VycmVudENvbW1lbnQgICAgICAgID0gJERhdGFbMV07CiAgICAgICAgJEN1cnJlbnREZXNjcmlwdGlvbiAgICA9ICREYXRhWzJdIHx8ICcnOwogICAgICAgICRDdXJyZW50U3RvcEFmdGVyTWF0Y2ggPSAkRGF0YVszXSB8fCAwOwogICAgICAgICRDdXJyZW50VmFsaWRJRCAgICAgICAgPSAkRGF0YVs0XTsKICAgICAgICAkQ3VycmVudENvbmZpZ01hdGNoICAgID0gJERhdGFbNV07CiAgICAgICAgJEN1cnJlbnRDb25maWdDaGFuZ2UgICA9ICREYXRhWzZdOwogICAgfQoKICAgIGlmICgKICAgICAgICAkQ3VycmVudE5hbWUKICAgICAgICAmJiAkQ3VycmVudE5hbWUgZXEgJFBhcmFte05hbWV9CiAgICAgICAgJiYgJEN1cnJlbnRDb21tZW50IGVxICRQYXJhbXtDb21tZW50fQogICAgICAgICYmICRDdXJyZW50RGVzY3JpcHRpb24gZXEgJFBhcmFte0Rlc2NyaXB0aW9ufQogICAgICAgICYmICRDdXJyZW50U3RvcEFmdGVyTWF0Y2ggZXEgJFBhcmFte1N0b3BBZnRlck1hdGNofQogICAgICAgICYmICRDdXJyZW50VmFsaWRJRCBlcSAkUGFyYW17VmFsaWRJRH0KICAgICAgICAmJiAkQ3VycmVudENvbmZpZ01hdGNoIGVxICRDb25maWdNYXRjaAogICAgICAgICYmICRDdXJyZW50Q29uZmlnQ2hhbmdlIGVxICRDb25maWdDaGFuZ2UKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgYWNsCiAgICAgICAgICAgIFNFVCBuYW1lID0gPywgY29tbWVudHMgPSA/LCBkZXNjcmlwdGlvbiA9ID8sIHN0b3BfYWZ0ZXJfbWF0Y2ggPSA/LCB2YWxpZF9pZCA9ID8sCiAgICAgICAgICAgICAgICBjb25maWdfbWF0Y2ggPSA/LCBjb25maWdfY2hhbmdlID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwgIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgICAgXCRQYXJhbXtDb21tZW50fSwgXCRQYXJhbXtEZXNjcmlwdGlvbn0sIFwkUGFyYW17U3RvcEFmdGVyTWF0Y2h9LAogICAgICAgICAgICBcJFBhcmFte1ZhbGlkSUR9LCBcJENvbmZpZ01hdGNoLCAgICBcJENvbmZpZ0NoYW5nZSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCAgXCRQYXJhbXtJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0FDTEVkaXRvcl9BQ0wnLAogICAgKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gYWNsX3N5bmMgKCBhY2xfaWQsIHN5bmNfc3RhdGUsIGNyZWF0ZV90aW1lLCBjaGFuZ2VfdGltZSApCiAgICAgICAgICAgIFZBTFVFUyAoPywgPywgY3VycmVudF90aW1lc3RhbXAsIGN1cnJlbnRfdGltZXN0YW1wKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SUR9LCBcJ25vdF9zeW5jJyBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEFDTExpc3QoKQoKZ2V0IGFuIEFDTCBsaXN0CgogICAgbXkgJExpc3QgPSAkQUNMT2JqZWN0LT5BQ0xMaXN0KAogICAgICAgIFZhbGlkSURzICAgICAgICA9PiBbJzEnLCcyJ10sICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBmaWx0ZXIgQUNMcyB0aGF0IG1hdGNoIGxpc3RlZCB2YWxpZCBJRHMKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBPYmplY3RUeXBlcyAgICAgPT4gWydUaWNrZXQnXSAgICAgICAgICAgIyBvcHRpb25hbCwgY3VycmVudGx5IFRpY2tldCBvciBDb25maWdJdGVtCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICApOwoKICAgIFJldHVybnM6CgogICAgJExpc3QgPSB7CiAgICAgICAgMSA9PiAnTmFtZU9mQUNMJywKICAgIH0KCj1jdXQKCnN1YiBBQ0xMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWxpZElEc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWYWxpZElEc30gKSApIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtWYWxpZElEc30gfTsKICAgIH0KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRPYmplY3RUeXBlc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlc30gKSApIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtPYmplY3RUeXBlc30gfTsKICAgIH0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgbXkgJENhY2hlS2V5ID0gJ0FDTExpc3Q6OlZhbGlkSURzOjonIC4gJFZhbGlkSURzU3RyZzsKICAgIG15ICRDYWNoZUtleSA9ICdBQ0xMaXN0OjpWYWxpZElEczo6JyAuICRWYWxpZElEc1N0cmcgLiAnOjpPYmplY3RUeXBlczo6JyAuICRPYmplY3RUeXBlc1N0cmc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkQ2FjaGUgICAgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJENhY2hlIGlmIHJlZiAkQ2FjaGU7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBteSAkU1FMID0gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICAgICAgRlJPTSBhY2wgJzsKCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkR2x1ZVN0cmcgPSAnV0hFUkUnOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgaWYgKCAkVmFsaWRJRHNTdHJnIG5lICdBTEwnICkgewoKICAgICAgICBteSAkVmFsaWRJRHNTdHJnREIgPSBqb2luICcsJywgbWFwIHsgJERCT2JqZWN0LT5RdW90ZSggJF8sICdJbnRlZ2VyJyApIH0KICAgICAgICAgICAgQHsgJFBhcmFte1ZhbGlkSURzfSB9OwoKICAgICAgICAkU1FMIC49ICJXSEVSRSB2YWxpZF9pZCBJTiAoJFZhbGlkSURzU3RyZ0RCKSI7CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgJEdsdWVTdHJnID0gJ0FORCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFBhcmFte09iamVjdFR5cGVzfSkgKSB7CgogICAgICAgIG15ICRPYmplY3RUeXBlc1N0cmdEQiA9IGpvaW4gJywnLCBtYXAgeyAiJyIgLiAkREJPYmplY3QtPlF1b3RlKCAkXyApIC4gIiciIH0gJFBhcmFte09iamVjdFR5cGVzfS0+QCo7CgogICAgICAgICRTUUwgLj0gIiRHbHVlU3RyZyBvYmplY3RfdHlwZSBJTiAoJE9iamVjdFR5cGVzU3RyZ0RCKSI7CgogICAgfQoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgIyBzZXQgY2FjaGUKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgQUNMTGlzdEdldCgpCgpnZXQgYW4gQUNMIGxpc3Qgd2l0aCBhbGwgQUNMIGRldGFpbHMKCiAgICBteSAkTGlzdCA9ICRBQ0xPYmplY3QtPkFDTExpc3RHZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBWYWxpZElEcyA9PiBbJzEnLCcyJ10sICMgb3B0aW9uYWwsIHRvIGZpbHRlciBBQ0xzIHRoYXQgbWF0Y2ggbGlzdGVkIHZhbGlkIElEcwojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIE9iamVjdFR5cGUgICAgICA9PiBbJ1RpY2tldCddICAgICAgICAgICAjIG9wdGlvbmFsLCBjdXJyZW50bHkgVGlja2V0IG9yIENvbmZpZ0l0ZW0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICk7CgpSZXR1cm5zOgoKICAgICRMaXN0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgSUQgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgPT4gJ0NvbW1lbnQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICA9PiAkQ29uZmlnTWF0Y2hIYXNoUmVmLAogICAgICAgICAgICBDb25maWdDaGFuZ2UgID0+ICRDb25maWdDaGFuZ2VIYXNoUmVmLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDEyLTA3LTA0IDE1OjA4OjAwJywKICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAnMjAxMi0wNy0wNCAxNTowODowMCcsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGVzICAgPT4gWydUaWNrZXQnXSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSUQgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgPT4gJ0NvbW1lbnQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICA9PiAkQ29uZmlnTWF0Y2hIYXNoUmVmLAogICAgICAgICAgICBDb25maWdDaGFuZ2UgID0+ICRDb25maWdDaGFuZ2VIYXNoUmVmLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDEyLTA3LTA0IDE1OjA4OjAwJywKICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAnMjAxMi0wNy0wNCAxNTowODowMCcsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIH0sCiAgICBdOwoKPWN1dAoKc3ViIEFDTExpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWxpZElEc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWYWxpZElEc30gKSApIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtWYWxpZElEc30gfTsKICAgIH0KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRPYmplY3RUeXBlc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlc30gKSApIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtPYmplY3RUeXBlc30gfTsKICAgIH0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgbXkgJENhY2hlS2V5ID0gJ0FDTExpc3RHZXQ6OlZhbGlkSURzOjonIC4gJFZhbGlkSURzU3RyZzsKICAgIG15ICRDYWNoZUtleSA9ICdBQ0xMaXN0R2V0OjpWYWxpZElEczo6JyAuICRWYWxpZElEc1N0cmcgLiAnOjpPYmplY3RUeXBlczo6JyAuICRPYmplY3RUeXBlc1N0cmc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgbXkgJENhY2hlICAgID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICRDYWNoZSBpZiAkQ2FjaGU7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBteSAkU1FMID0gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBhY2wgJzsKCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkR2x1ZVN0cmcgPSAnV0hFUkUnOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgaWYgKCAkVmFsaWRJRHNTdHJnIG5lICdBTEwnICkgewoKICAgICAgICBteSAkVmFsaWRJRHNTdHJnREIgPSBqb2luICcsJywgbWFwIHsgJERCT2JqZWN0LT5RdW90ZSggJF8sICdJbnRlZ2VyJyApIH0gQHsgJFBhcmFte1ZhbGlkSURzfSB9OwoKICAgICAgICAkU1FMIC49ICJXSEVSRSB2YWxpZF9pZCBJTiAoJFZhbGlkSURzU3RyZ0RCKSI7CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgJEdsdWVTdHJnID0gJ0FORCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFBhcmFte09iamVjdFR5cGVzfSkgKSB7CgogICAgICAgIG15ICRPYmplY3RUeXBlc1N0cmdEQiA9IGpvaW4gJywnLCBtYXAgeyAiJyIgLiAkREJPYmplY3QtPlF1b3RlKCAkXyApIC4gIiciIH0gJFBhcmFte09iamVjdFR5cGVzfS0+QCo7CgogICAgICAgICRTUUwgLj0gIiRHbHVlU3RyZyBvYmplY3RfdHlwZSBJTiAoJE9iamVjdFR5cGVzU3RyZ0RCKSI7CgogICAgfQoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICRTUUwgLj0gJ09SREVSIEJZIGlkJzsKCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICRTUUwsCiAgICApOwoKICAgIG15IEBBQ0xJRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBBQ0xJRHMsICRSb3dbMF07CiAgICB9CgogICAgbXkgQERhdGE7CiAgICBmb3IgbXkgJEl0ZW1JRCAoQEFDTElEcykgewoKICAgICAgICBteSAkQUNMRGF0YSA9ICRTZWxmLT5BQ0xHZXQoCiAgICAgICAgICAgIElEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgIHB1c2ggQERhdGEsICRBQ0xEYXRhOwogICAgfQoKICAgICMgc2V0IGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFxARGF0YSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICk7CgogICAgcmV0dXJuIFxARGF0YTsKfQoKPWhlYWQyIEFDTHNOZWVkU3luYygpCgpDaGVjayBpZiB0aGVyZSBhcmUgQUNMcyB0aGF0IGFyZSBub3QgeWV0IGRlcGxveWVkCgogICAgbXkgJFN5bmNDb3VudCA9ICRBQ0xPYmplY3QtPkFDTHNOZWVkU3luYygpOwoKICAgIFJldHVybnM6CgogICAgJFN5bmNDb3VudCA9IDAgfHwgTnVtYmVyIG9mIEFMQ3MgdGhhdCBuZWVkIHRvIGJlIHN5bmNlZAoKPWN1dAoKc3ViIEFDTHNOZWVkU3luYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgQ09VTlQoKikKICAgICAgICBGUk9NIGFjbF9zeW5jJzsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICBteSAkTmVlZFN5bmMgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJE5lZWRTeW5jID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJE5lZWRTeW5jOwp9Cgo9aGVhZDIgQUNMc05lZWRTeW5jUmVzZXQoKQoKUmVzZXQgc3luY2hyb25pemF0aW9uIGluZm9ybWF0aW9uIGZvciBBQ0xzLgoKPWN1dAoKc3ViIEFDTHNOZWVkU3luY1Jlc2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oIFNRTCA9PiAnREVMRVRFIEZST00gYWNsX3N5bmMnICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBQ0xEdW1wKCkKCmdldHMgYSBjb21wbGV0ZSBBQ0wgaW5mb3JtYXRpb24gZHVtcCBmcm9tIHRoZSBEQgoKICAgIG15ICRBQ0xEdW1wID0gJEFDTE9iamVjdC0+QUNMRHVtcCgKICAgICAgICBSZXN1bHRUeXBlICA9PiAnRklMRScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVmYXVsdCBpcyAnRklMRScsIG9ubHkgJ0ZJTEUnIGlzIHN1cHBvcnRlZAogICAgICAgIExvY2F0aW9uICAgID0+ICcvb3B0L290b2JvL0tlcm5lbC9Db25maWcvRmlsZXMvWlpaQUNMLnBtJywgIyBtYW5kYXRvcnkgZm9yIFJlc3VsdFR5cGUgPSAnRklMRScKICAgICAgICBVc2VySUQgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2tlZCwgYnV0IG5vdCByZWFsbHkgdXNlZAogICAgKTsKClJldHVybnM6CgogICAgJEFDTER1bXAgPSAnL29wdC9vdG9iby9LZXJuZWwvQ29uZmlnL0ZpbGVzL1paWkFDTC5wbSc7ICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCB3cml0ZSB0aGUgZmlsZQoKb3IgaW4gY2FzZSBvZiBTMyBzdXBwb3J0CgogICAgJEFDTER1bXAgPSAnS2VybmVsL0NvbmZpZy9GaWxlcy9aWlpBQ0wucG0nOyAgICAgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCB3cml0ZSB0byBTMwoKPWN1dAoKc3ViIEFDTER1bXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkZWZhdWx0cwogICAgJFBhcmFte1Jlc3VsdFR5cGV9IC8vPSAnRklMRSc7CgogICAgaWYgKCAkUGFyYW17UmVzdWx0VHlwZX0gZXEgJ0ZJTEUnICkgewogICAgICAgIGlmICggISRQYXJhbXtMb2NhdGlvbn0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExvY2F0aW9uIGZvciBSZXN1bHRUeXBlIFwnRklMRVwnIScsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KICAgIH0KCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICMgZ2V0IHZhbGlkIEFDTHMKIyAgICAgbXkgJEFDTExpc3QgPSAkU2VsZi0+QUNMTGlzdEdldCgKIyAgICAgICAgIFVzZXJJRCAgID0+IDEsCiMgICAgICAgICBWYWxpZElEcyA9PiBbMV0sCiMgICAgICk7CiMKIyAgICAgbXkgJUFDTER1bXA7CiMKIyAgICAgQUNMOgojICAgICBmb3IgbXkgJEFDTERhdGEgKCBAeyRBQ0xMaXN0fSApIHsKIwojICAgICAgICAgbmV4dCBBQ0wgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBQ0xEYXRhKTsKIwojICAgICAgICAgbXkgJFByb3BlcnRpZXM7CiMgICAgICAgICBteSAkUHJvcGVydGllc0RhdGFiYXNlOwojICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJEFDTERhdGEtPntDb25maWdNYXRjaH0gKSApIHsKIyAgICAgICAgICAgICAkUHJvcGVydGllcyAgICAgICAgID0gJEFDTERhdGEtPntDb25maWdNYXRjaH0tPntQcm9wZXJ0aWVzfTsKIyAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlID0gJEFDTERhdGEtPntDb25maWdNYXRjaH0tPntQcm9wZXJ0aWVzRGF0YWJhc2V9OwojICAgICAgICAgfQojCiMgICAgICAgICBteSAkUG9zc2libGU7CiMgICAgICAgICBteSAkUG9zc2libGVBZGQ7CiMgICAgICAgICBteSAkUG9zc2libGVOb3Q7CiMgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0gKSApIHsKIyAgICAgICAgICAgICAkUG9zc2libGUgICAgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX07CiMgICAgICAgICAgICAgJFBvc3NpYmxlQWRkID0gJEFDTERhdGEtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGVBZGR9OwojICAgICAgICAgICAgICRQb3NzaWJsZU5vdCA9ICRBQ0xEYXRhLT57Q29uZmlnQ2hhbmdlfS0+e1Bvc3NpYmxlTm90fTsKIyAgICAgICAgIH0KIwojICAgICAgICAgJEFDTER1bXB7ICRBQ0xEYXRhLT57TmFtZX0gfSA9IHsKIyAgICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRBQ0xEYXRhLT57Q3JlYXRlVGltZX0sCiMgICAgICAgICAgICAgQ2hhbmdlVGltZSA9PiAkQUNMRGF0YS0+e0NoYW5nZVRpbWV9LAojICAgICAgICAgICAgIENyZWF0ZUJ5ICAgPT4gJEFDTERhdGEtPntDcmVhdGVCeX0sCiMgICAgICAgICAgICAgQ2hhbmdlQnkgICA9PiAkQUNMRGF0YS0+e0NoYW5nZUJ5fSwKIyAgICAgICAgICAgICBDb21tZW50ICAgID0+ICRBQ0xEYXRhLT57Q29tbWVudH0sCiMgICAgICAgICAgICAgVmFsdWVzICAgICA9PiB7CiMgICAgICAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoICAgICA9PiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSB8fCAwLAojICAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzICAgICAgICAgPT4gJFByb3BlcnRpZXMgICAgICAgICAgICAgICAgfHwge30sCiMgICAgICAgICAgICAgICAgIFByb3BlcnRpZXNEYXRhYmFzZSA9PiAkUHJvcGVydGllc0RhdGFiYXNlICAgICAgICB8fCB7fSwKIyAgICAgICAgICAgICAgICAgUG9zc2libGUgICAgICAgICAgID0+ICRQb3NzaWJsZSAgICAgICAgICAgICAgICAgIHx8IHt9LAojICAgICAgICAgICAgICAgICBQb3NzaWJsZUFkZCAgICAgICAgPT4gJFBvc3NpYmxlQWRkICAgICAgICAgICAgICAgfHwge30sCiMgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm90ICAgICAgICA9PiAkUG9zc2libGVOb3QgICAgICAgICAgICAgICB8fCB7fSwKIyAgICAgICAgICAgICB9LAojICAgICAgICAgfTsKIyAgICAgfQojCiMgICAgICMgZGVsZXRlIGNhY2hlCiMgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAojICAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiMgICAgICk7CiMKIyAgICAgbXkgJEFDTEl0ZW1zT3V0cHV0ID0gJyc7CiMgICAgIGZvciBteSAkQUNMTmFtZSAoIHNvcnQga2V5cyAlQUNMRHVtcCApIHsKIwojICAgICAgICAgIyBjcmVhdGUgb3V0cHV0CiMgICAgICAgICAkQUNMSXRlbXNPdXRwdXQgLj0gJFNlbGYtPl9BQ0xJdGVtT3V0cHV0KAojICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJEFDTE5hbWUsCiMgICAgICAgICAgICAgVmFsdWUgICAgICA9PiAkQUNMRHVtcHskQUNMTmFtZX17VmFsdWVzfSwKIyAgICAgICAgICAgICBDb21tZW50ICAgID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDb21tZW50fSwKIyAgICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDcmVhdGVUaW1lfSwKIyAgICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDaGFuZ2VUaW1lfSwKIyAgICAgICAgICAgICBDcmVhdGVCeSAgID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDcmVhdGVCeX0sCiMgICAgICAgICAgICAgQ2hhbmdlQnkgICA9PiAkQUNMRHVtcHskQUNMTmFtZX17Q2hhbmdlQnl9LAojICAgICAgICAgKTsKIyAgICAgfQojCiMgICAgICMgYnVpbGQgY29tbWVudCAodGhlcmVmb3JlIHdlIG5lZWQgdG8gdHJpY2sgb3V0IHRoZSBmaWx0ZXIpCiMgICAgIG15ICRQTUZpbGVPdXRwdXQgPSBzcHJpbnRmIDw8J0VORF9QTV9GSUxFJywgJEFDTEl0ZW1zT3V0cHV0OwojICMgT1RPQk8gY29uZmlnIGZpbGUgKGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkKQojICMgVkVSU0lPTjoxLjEKIyBwYWNrYWdlIEtlcm5lbDo6Q29uZmlnOjpGaWxlczo6WlpaQUNMOwojIHVzZSBzdHJpY3Q7CiMgdXNlIHdhcm5pbmdzOwojIG5vIHdhcm5pbmdzICdyZWRlZmluZSc7ICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCiMgdXNlIHV0Zjg7CiMgc3ViIExvYWQgewojICAgICBteSAoJEZpbGUsICRTZWxmKSA9IEBfOwojCiMgJXMKIwojICAgICByZXR1cm47CiMgfQojIDE7CiMgRU5EX1BNX0ZJTEUKICAgIG15ICRQTUZpbGVPdXRwdXQgPSA8PCdFTkRfUE1fRklMRSc7CiMgT1RPQk8gY29uZmlnIGZpbGUgKGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkKQojIFZFUlNJT046MS4xCnBhY2thZ2UgS2VybmVsOjpDb25maWc6OkZpbGVzOjpaWlpBQ0w7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbm8gd2FybmluZ3MgJ3JlZGVmaW5lJzsgIyMgbm8gY3JpdGljIHF3KFRlc3RpbmdBbmREZWJ1Z2dpbmc6OlByb2hpYml0Tm9XYXJuaW5ncykKdXNlIHV0Zjg7CnN1YiBMb2FkIHsKICAgIG15ICgkRmlsZSwgJFNlbGYpID0gQF87CgpFTkRfUE1fRklMRQogICAgZm9yIG15ICRPYmplY3RUeXBlICggcXcoVGlja2V0IENvbmZpZ0l0ZW0pICkgewogICAgICAgICMgZ2V0IHZhbGlkIEFDTHMKICAgICAgICBteSAkQUNMTGlzdCA9ICRTZWxmLT5BQ0xMaXN0R2V0KAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBWYWxpZElEcyAgICA9PiBbMV0sCiAgICAgICAgICAgIE9iamVjdFR5cGVzID0+IFskT2JqZWN0VHlwZV0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUFDTER1bXA7CgogICAgICAgIEFDTDoKICAgICAgICBmb3IgbXkgJEFDTERhdGEgKCBAeyRBQ0xMaXN0fSApIHsKCiAgICAgICAgICAgIG5leHQgQUNMIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQUNMRGF0YSk7CgogICAgICAgICAgICBteSAkUHJvcGVydGllczsKICAgICAgICAgICAgbXkgJFByb3BlcnRpZXNEYXRhYmFzZTsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJEFDTERhdGEtPntDb25maWdNYXRjaH0gKSApIHsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzICAgICAgICAgPSAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofS0+e1Byb3BlcnRpZXN9OwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNEYXRhYmFzZSA9ICRBQ0xEYXRhLT57Q29uZmlnTWF0Y2h9LT57UHJvcGVydGllc0RhdGFiYXNlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlOwogICAgICAgICAgICBteSAkUG9zc2libGVBZGQ7CiAgICAgICAgICAgIG15ICRQb3NzaWJsZU5vdDsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJEFDTERhdGEtPntDb25maWdDaGFuZ2V9ICkgKSB7CiAgICAgICAgICAgICAgICAkUG9zc2libGUgICAgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX07CiAgICAgICAgICAgICAgICAkUG9zc2libGVBZGQgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZUFkZH07CiAgICAgICAgICAgICAgICAkUG9zc2libGVOb3QgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZU5vdH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRBQ0xEdW1weyAkQUNMRGF0YS0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRBQ0xEYXRhLT57Q3JlYXRlVGltZX0sCiAgICAgICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICRBQ0xEYXRhLT57Q2hhbmdlVGltZX0sCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgID0+ICRBQ0xEYXRhLT57Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICA9PiAkQUNMRGF0YS0+e0NoYW5nZUJ5fSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJEFDTERhdGEtPntDb21tZW50fSwKICAgICAgICAgICAgICAgIFZhbHVlcyAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoICAgICA9PiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSB8fCAwLAogICAgICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgICAgICAgICA9PiAkUHJvcGVydGllcyAgICAgICAgICAgICAgICB8fCB7fSwKICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzRGF0YWJhc2UgPT4gJFByb3BlcnRpZXNEYXRhYmFzZSAgICAgICAgfHwge30sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGUgICAgICAgICAgID0+ICRQb3NzaWJsZSAgICAgICAgICAgICAgICAgIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlQWRkICAgICAgICA9PiAkUG9zc2libGVBZGQgICAgICAgICAgICAgICB8fCB7fSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vdCAgICAgICAgPT4gJFBvc3NpYmxlTm90ICAgICAgICAgICAgICAgfHwge30sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY2FjaGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEFDTEl0ZW1zT3V0cHV0ID0gJyc7CiAgICAgICAgZm9yIG15ICRBQ0xOYW1lICggc29ydCBrZXlzICVBQ0xEdW1wICkgewoKICAgICAgICAgICAgIyBjcmVhdGUgb3V0cHV0CiAgICAgICAgICAgICRBQ0xJdGVtc091dHB1dCAuPSAkU2VsZi0+X0FDTEl0ZW1PdXRwdXQoCiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICRBQ0xOYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICA9PiAkQUNMRHVtcHskQUNMTmFtZX17VmFsdWVzfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJEFDTER1bXB7JEFDTE5hbWV9e0NvbW1lbnR9LAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSA9PiAkQUNMRHVtcHskQUNMTmFtZX17Q3JlYXRlVGltZX0sCiAgICAgICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDaGFuZ2VUaW1lfSwKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgPT4gJEFDTER1bXB7JEFDTE5hbWV9e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgPT4gJEFDTER1bXB7JEFDTE5hbWV9e0NoYW5nZUJ5fSwKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGNvbW1lbnQgKHRoZXJlZm9yZSB3ZSBuZWVkIHRvIHRyaWNrIG91dCB0aGUgZmlsdGVyKQogICAgICAgICRQTUZpbGVPdXRwdXQgLj0gc3ByaW50ZiA8PCdFTkRfUE1fRklMRScsICRBQ0xJdGVtc091dHB1dDsKJXMKRU5EX1BNX0ZJTEUKICAgIH0KICAgICRQTUZpbGVPdXRwdXQgLj0gPDwnRU5EX1BNX0ZJTEUnOwogICAgcmV0dXJuOwp9CjE7CkVORF9QTV9GSUxFCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgaWYgKCAkU2VsZi0+e1MzQWN0aXZlfSApIHsKCiAgICAgICAgIyByZW1vdmUgdGhlIGxlYWRpbmcgL29wdC9vdG9ibyBhcyB0aGUgaG9tZSBwcmVmaXggaXMgYWRkZWQgYXV0b21hdGljYWxseSBpbiB0aGUgUzMgc3RvcmFnZSBvYmplY3QKICAgICAgICBteSAkSG9tZSAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKICAgICAgICBteSAkWlpaRmlsZVBhdGggPSAkUGFyYW17TG9jYXRpb259OwogICAgICAgICRaWlpGaWxlUGF0aCA9fiBze14kSG9tZS8qfXt9OwoKICAgICAgICBteSAkU3RvcmFnZVMzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0b3JhZ2U6OlMzJyk7CgogICAgICAgICMgb25seSB3cml0ZSB0byBTMywgbm8gZXh0cmEgY29weSBpbiB0aGUgZmlsZSBzeXN0ZW0KICAgICAgICByZXR1cm4gJFN0b3JhZ2VTM09iamVjdC0+U3RvcmVPYmplY3QoCiAgICAgICAgICAgIEtleSAgICAgPT4gJFpaWkZpbGVQYXRoLAogICAgICAgICAgICBDb250ZW50ID0+ICRQTUZpbGVPdXRwdXQsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgIExvY2F0aW9uID0+ICRQYXJhbXtMb2NhdGlvbn0sCiAgICAgICAgQ29udGVudCAgPT4gXCRQTUZpbGVPdXRwdXQsCiAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgIFR5cGUgICAgID0+ICdMb2NhbCcsCiAgICApOwoKICAgICMgdXBkYXRlIHByZXNlbGVjdGlvbiBjYWNoZQogICAgI215ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkZpZWxkUmVzdHJpY3Rpb25zJyk7CiAgICAjJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwp9Cgo9aGVhZDIgQUNMSW1wb3J0KCkKCmltcG9ydCBhbiBBQ0wgWUFNTCBmaWxlL2NvbnRlbnQKCiAgICBteSAkQUNMSW1wb3J0ID0gJEFDTE9iamVjdC0+QUNMSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgICAgICAgICAgICAgICAgPT4gJFlBTUxDb250ZW50LCAjIG1hbmRhdG9yeSwgWUFNTCBmb3JtYXQKICAgICAgICBPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzID0+IDAsICAgICAgICAgICAgIyAwIHx8IDEKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgIyBtYW5kYXRvcnkKICAgICk7CgpSZXR1cm5zOgoKICAgICRBQ0xJbXBvcnQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICMgMSBpZiBzdWNjZXNzIG9yIHVuZGVmIGlmIG9wZXJhdGlvbiBjb3VsZCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBiZSBwZXJmb3JtZWQKICAgICAgICBNZXNzYWdlICAgICA9PiAnVGhlIE1lc3NhZ2UgdG8gc2hvdy4nLCAgICAgIyBlcnJvciBtZXNzYWdlCiAgICAgICAgQWRkZWRBQ0xzICAgPT4gJ0FDTDEsIEFDTDInLCAgICAgICAgICAgICAgICMgbGlzdCBvZiBBQ0xzIGNvcnJlY3RseSBhZGRlZAogICAgICAgIFVwZGF0ZWRBQ0xzID0+ICdBQ0wzLCBBQ0w0JywgICAgICAgICAgICAgICAjIGxpc3Qgb2YgQUNMcyBjb3JyZWN0bHkgdXBkYXRlZAogICAgICAgIEFDTEVycm9ycyAgID0+ICdBQ0w1JywgICAgICAgICAgICAgICAgICAgICAjIGxpc3Qgb2YgQUNMcyB0aGF0IGNvdWxkIG5vdCBiZSBhZGRlZCBvciB1cGRhdGVkCiAgICB9OwoKPWN1dAoKc3ViIEFDTEltcG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb250ZW50IFVzZXJJRCkpIHsKCiAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIiROZWVkZWQgaXMgbWlzc2luZyBjYW4gbm90IGNvbnRpbnVlLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRBQ0xEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCggRGF0YSA9PiAkUGFyYW17Q29udGVudH0gKTsKCiAgICBpZiAoIHJlZiAkQUNMRGF0YSBuZSAnQVJSQVknICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoIkNvdWxkbid0IHJlYWQgQUNMIGNvbmZpZ3VyYXRpb24gZmlsZS4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB2YWxpZC4iKSwKICAgICAgICB9OwogICAgfQoKICAgIG15IEBVcGRhdGVkQUNMczsKICAgIG15IEBBZGRlZEFDTHM7CiAgICBteSBAQUNMRXJyb3JzOwoKICAgIEFDTDoKICAgIGZvciBteSAkQUNMICggQHskQUNMRGF0YX0gKSB7CgogICAgICAgIG5leHQgQUNMIGlmICEkQUNMOwogICAgICAgIG5leHQgQUNMIGlmIHJlZiAkQUNMIG5lICdIQVNIJzsKCiAgICAgICAgJEFDTCA9ICRTZWxmLT5fQUNMTWlncmF0ZUZyb20zMygKICAgICAgICAgICAgQUNMICAgID0+ICRBQ0wsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSBARXhpc3RpbmdBQ0xzID0gQHsgJFNlbGYtPkFDTExpc3RHZXQoIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSApIHx8IFtdIH07CiAgICAgICAgQEV4aXN0aW5nQUNMcyA9IGdyZXAgeyAkXy0+e05hbWV9IGVxICRBQ0wtPntOYW1lfSB9IEBFeGlzdGluZ0FDTHM7CgogICAgICAgIGlmICggJFBhcmFte092ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXN9ICYmICRFeGlzdGluZ0FDTHNbMF0gKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPkFDTFVwZGF0ZSgKICAgICAgICAgICAgICAgICV7ICRFeGlzdGluZ0FDTHNbMF0gfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRBQ0wtPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICRBQ0wtPntDb21tZW50fSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+ICRBQ0wtPntEZXNjcmlwdGlvbn0gICAgfHwgJycsCiAgICAgICAgICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAkQUNMLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDAsCiAgICAgICAgICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQUNMLT57Q29uZmlnTWF0Y2h9ICAgIHx8IHVuZGVmLAogICAgICAgICAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJEFDTC0+e0NvbmZpZ0NoYW5nZX0gICB8fCB1bmRlZiwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0wtPntWYWxpZElEfSAgICAgICAgfHwgMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBVcGRhdGVkQUNMcywgJEFDTC0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAQUNMRXJyb3JzLCAkQUNMLT57TmFtZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBub3cgYWRkIHRoZSBBQ0wKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+QUNMQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTC0+e05hbWV9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJEFDTC0+e0NvbW1lbnR9LAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJEFDTC0+e0Rlc2NyaXB0aW9ufSAgfHwgJycsCiAgICAgICAgICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQUNMLT57Q29uZmlnTWF0Y2h9ICB8fCB1bmRlZiwKICAgICAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRBQ0wtPntDb25maWdDaGFuZ2V9IHx8IHVuZGVmLAogICAgICAgICAgICAgICAgU3RvcEFmdGVyTWF0Y2ggPT4gJEFDTC0+e1N0b3BBZnRlck1hdGNofSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0wtPntWYWxpZElEfSB8fCAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICAgICA9PiAkQUNMLT57T2JqZWN0VHlwZX0gfHwgJ1RpY2tldCcsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJFN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgIHB1c2ggQEFkZGVkQUNMcywgJEFDTC0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAQUNMRXJyb3JzLCAkQUNMLT57TmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1cGRhdGUgcHJlc2VsZWN0aW9uIGNhY2hlCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpGaWVsZFJlc3RyaWN0aW9ucycpOwojICAgICAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CiAgICBmb3IgbXkgJEFDTFR5cGUgKCBxdyhUaWNrZXQgSVRTTUNvbmZpZ0l0ZW0pICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjonIC4gJEFDTFR5cGUgLiAnOjpGaWVsZFJlc3RyaWN0aW9ucycpLT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgID0+IDEsCiAgICAgICAgQWRkZWRBQ0xzICAgPT4gam9pbiggJywgJywgQEFkZGVkQUNMcyApICAgfHwgJycsCiAgICAgICAgVXBkYXRlZEFDTHMgPT4gam9pbiggJywgJywgQFVwZGF0ZWRBQ0xzICkgfHwgJycsCiAgICAgICAgQUNMRXJyb3JzICAgPT4gam9pbiggJywgJywgQEFDTEVycm9ycyApICAgfHwgJycsCiAgICB9Owp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9Y3V0Cgo9aGVhZDIgX0FDTEl0ZW1PdXRwdXQoKQoKY29udmVydHMgYW4gQUNMIHN0cnVjdHVyZSB0byBwZXJsIGNvZGUgc3VpdGFibGUgdG8gYmUgc2F2ZWQgb24gYSBwZXJsIGZpbGUuCgogICAgbXkgJE91dHB1dCA9ICRBQ0xPYmplY3QtPl9BQ0xJdGVtT3V0cHV0ICgKICAgICAgICBLZXkgPT4gJ3NvbWUgQUNMIG5hbWUnLAogICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgUHJvcGVydGllcyA9PiB7CiAgICAgICAgICAgICAgICBUaWNrZXQgPT4gewogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+IFsgJ3NvbWUgcHJpb3JpdHknIF0sCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgPT4gWyAnc29tZSBxdWV1ZScgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFByb3BlcnRpZXNEYXRhYmFzZSA9PiB7IH0sICAgICAgICAgICAgICAgICAgICAgICMgc2ltaWxhciB0byBQcm9wZXJ0aWVzIG9yIGVtcHR5IGhhc2ggcmVmCiAgICAgICAgICAgIFBvc3NpYmxlID0+IHsKICAgICAgICAgICAgICAgIFRpY2tldCA9PiB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiBbICdzb21lIG90aGVyIHF1ZXVlJyBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vdCA9PiB7IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNpbWlsYXIgdG8gUG9zc2libGUgb3IgZW1wdHkgaGFzaCByZWYKICAgICAgICAgICAgUG9zc2libGVBZGQgPT4geyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaW1pbGFyIHRvIFBvc3NpYmxlIG9yIGVtcHR5IGhhc2ggcmVmCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgfSwKICAgICAgICBDb21tZW50ICAgID0+ICdzb21lIGNvbW1lbnQnLAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgQ3JlYXRlVGltZSA9PiAnMjAxNC0wNi0wMyAxOTowMzo1NycsCiAgICAgICAgQ2hhbmdlVGltZSA9PiAnMjAxNC0wNi0wMyAxOTo1MToxNycsCiAgICAgICAgQ3JlYXRlQnkgICA9PiAnc29tZSB1c2VyIGxvZ2luJywKICAgICAgICBDaGFuZ2VCeSAgID0+ICdzb21lIHVzZXIgbG9naW4nLAogICAgKTsKCnJldHVybnM6CgogICAgJE91dHB1dCA9ICcKICAgICAgICAjIENyZWF0ZWQ6IDIwMTQtMDYtMDMgMTk6MDM6NTcgKHNvbWUgdXNlciBsb2dpbikKICAgICAgICAjIENoYW5nZWQ6IDIwMTQtMDYtMDMgMTk6NTE6MTcgKHNvbWUgdXNlciBsb2dpbikKICAgICAgICAjIENvbW1lbnQ6IHNvbWUgY29tbWVudAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgJFNlbGYtPntUaWNrZXRBY2x9LT57IjEwMC1FeGFtcGxlLUFDTCJ9ID0gewogICAgICAgICRTZWxmLT57JFBhcmFte09iamVjdFR5cGV9IC4gJ0FjbCd9LT57IjEwMC1FeGFtcGxlLUFDTCJ9ID0gewojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgXFwnUG9zc2libGVcXCcgPT4gewogICAgICAgICAgICBcXCdUaWNrZXRcXCcgPT4gewogICAgICAgICAgICAgIFxcJ1F1ZXVlXFwnID0+IFsKICAgICAgICAgICAgICAgIFxcJ3NvbWUgb3RoZXIgcXVldWVcXCcKICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBcXCdQb3NzaWJsZUFkZFxcJyA9PiB7fSwKICAgICAgICAgIFxcJ1Bvc3NpYmxlTm90XFwnID0+IHt9LAogICAgICAgICAgXFwnUHJvcGVydGllc1xcJyA9PiB7CiAgICAgICAgICAgIFxcJ1RpY2tldFxcJyA9PiB7CiAgICAgICAgICAgICAgXFwnUHJpb3JpdHlcXCcgPT4gWwogICAgICAgICAgICAgICAgXFwnc29tZSBwcmlvcml0eVxcJwogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgXFwnUXVldWVcXCcgPT4gWwogICAgICAgICAgICAgICAgXFwnc29tZSBxdWV1ZVxcJwogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFxcJ1Byb3BlcnRpZXNEYXRhYmFzZVxcJyA9PiB7fSwKICAgICAgICAgIFxcJ1N0b3BBZnRlck1hdGNoXFwnID0+IDAKICAgICAgICB9OwogICAgICAgICc7Cgo9Y3V0CgpzdWIgX0FDTEl0ZW1PdXRwdXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgIyBzZXQgZGVmYXVsdCBmb3Igb2JqZWN0IHR5cGUKICAgICRQYXJhbXtPYmplY3RUeXBlfSAvLz0gJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgIyB0aG9zZSBwYXJhbXMgYXJlIGV4cGVjdGVkIHRvIG9ubHkgY29udGFpbiBvbmUgbGluZQogICAgZm9yIG15ICRLZXkgKHF3KCBDcmVhdGVCeSBDaGFuZ2VCeSBDb21tZW50ICkpIHsKICAgICAgICAoICRQYXJhbXskS2V5fSApID0gJFBhcmFteyRLZXl9ID1+IC8oLis/KSQvbTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gIiMgQ3JlYXRlZDogJFBhcmFte0NyZWF0ZVRpbWV9ICgkUGFyYW17Q3JlYXRlQnl9KVxuIjsKICAgICRPdXRwdXQgLj0gIiMgQ2hhbmdlZDogJFBhcmFte0NoYW5nZVRpbWV9ICgkUGFyYW17Q2hhbmdlQnl9KVxuIjsKCiAgICBpZiAoICRQYXJhbXtDb21tZW50fSApIHsKICAgICAgICAkT3V0cHV0IC49ICIjIENvbW1lbnQ6ICRQYXJhbXtDb21tZW50fVxuIjsKICAgIH0KCiAgICAkT3V0cHV0IC49ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPkR1bXAoCiAgICAgICAgJFBhcmFte1ZhbHVlfSwKICAgICk7CgogICAgIyByZXBsYWNlICJbZW1wdHldIiBieSAnJwogICAgJE91dHB1dCA9fiBze1xbZW1wdHlcXX17fXhtc2c7CgogICAgbXkgJE5hbWUgPSAkUGFyYW17S2V5fTsKICAgICROYW1lID1+IHN7XFx9e1xcXFx9eG1zZzsKICAgICROYW1lID1+IHN7XCd9e1xcJ314bXNnOwojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgbXkgJEtleSA9ICckU2VsZi0+e1RpY2tldEFjbH0tPntcJycgLiAkTmFtZSAuICdcJ30nOwogICAgbXkgJEtleSA9ICckU2VsZi0+eycgLiAkUGFyYW17T2JqZWN0VHlwZX0gLiAnQWNsfS0+e1wnJyAuICROYW1lIC4gJ1wnfSc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgJE91dHB1dCA9fiBze1wkVkFSMX17JEtleX1teHM7CgogICAgcmV0dXJuICRPdXRwdXQgLiAiXG4iOwp9Cgo9aGVhZDIgX0FDTE1pZ3JhdGVGcm9tMzMoKQoKVXBkYXRlcyBBQ0xzIHN0cnVjdHVyZSBteSBjaGFuZ2luZyB0aGUgUG9zc2libGUtPkFjdGlvbiBoYXNoIHJlZiB0byBhIFBvc3NpYmxlTm90LT5BY3Rpb24gYXJyYXkgcmVmCndpdGgganVzdCB0aGUgZWxlbWVudHMgdGhhdCB3aGVyZSBzZXQgdG8gMCBpbiB0aGUgb3JpZ2luYWwgQUNMOgoKICAgIG15ICRBQ0wgPSAkQUNMT2JqZWN0LT5fQUNMTWlncmF0ZUZyb20zMyAoCiAgICAgICAgJEFDTCA9PiB7CiAgICAgICAgICAgIElEICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICcnLAogICAgICAgICAgICBDb21tZW50ICAgICA9PiAnQ29tbWVudCcsCiAgICAgICAgICAgIENvbmZpZ01hdGNoID0+IHsKICAgICAgICAgICAgICAgIFByb3BlcnRpZXMnID0+IHt9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdDaGFuZ2UgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGUgPT4ge30KICAgICAgICAgICAgICAgICAgICBBY3Rpb24gPT4gewogICAgICAgICAgICAgICAgICAgICAgICBBZ2VudFRpY2tldFBob25lICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgQWdlbnRUaWNrZXRQcmludCAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50VGlja2V0Wm9vbSAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBBZ2VudFRpY2tldENMb3NlICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgQWdlbnRUaWNrZXRDb21wb3NlID0+IDAsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vdCA9PiB7fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3RvcEFmdGVyTWF0Y2ggPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgPT4gJzIwMTMtMDktMjAgMTE6NTY6MDUnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgICA9PiAnMjAxNC0wNi0xNiAxMTozMTo1NScsCiAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgID0+ICdyb290QGxvY2FsaG9zdCcsCiAgICAgICAgfTsKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgKQoKUmV0dXJuczoKCiAgICAgICAgJEFDTCA9IHsKICAgICAgICAgICAgSUQgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAnc29tZSBuYW1lJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgICAgIENvbW1lbnQgICAgID0+ICdDb21tZW50JywKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggPT4gewogICAgICAgICAgICAgICAgUHJvcGVydGllcycgPT4ge30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0NoYW5nZSA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZSA9PiB7fSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm90ID0+IHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnRUaWNrZXRDTG9zZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdBZ2VudFRpY2tldENvbXBvc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnRUaWNrZXRQcmludCcKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfQogICAgICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAnMjAxMy0wOS0yMCAxMTo1NjowNScsCiAgICAgICAgICAgIENoYW5nZVRpbWUgICAgID0+ICcyMDE0LTA2LTE2IDExOjMxOjU1JywKICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgPT4gJ3Jvb3RAbG9jYWxob3N0JywKICAgICAgICB9OwoKPWN1dAoKc3ViIF9BQ0xNaWdyYXRlRnJvbTMzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEFDTCA9ICRQYXJhbXtBQ0x9OwoKICAgIHJldHVybiAkQUNMIGlmICFyZWYgJEFDTC0+e0NvbmZpZ0NoYW5nZX07CiAgICByZXR1cm4gJEFDTCBpZiAhJEFDTC0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX0tPntBY3Rpb259OwogICAgcmV0dXJuICRBQ0wgaWYgcmVmICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGV9LT57QWN0aW9ufSBuZSAnSEFTSCc7CgogICAgIyBjb252ZXJ0IG9sZCBoYXNoIGludG8gYW4gYXJyYXkgdXNpbmcgb25seSB0aGUga2V5cyBzZXQgdG8gMCwgYW5kIHNraXAgdGhvc2UgdGhhdCBhcmUgc2V0CiAgICAjIHRvIDEsIHNldCB0aGVtIGFzIFBvc3NpYmxlTm90IGFuZCBkZWxldGUgdGhlIFBvc3NpYmxlLT5BY3Rpb24gc2VjdGlvbiBmcm9tIHRoZSBBQ0wuCiAgICBteSBATmV3QWN0aW9uID0gZ3JlcCB7ICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGV9LT57QWN0aW9ufS0+eyRffSA9PSAwIH0KICAgICAgICBzb3J0IGtleXMgJXsgJEFDTC0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX0tPntBY3Rpb259IH07CgogICAgZGVsZXRlICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGV9LT57QWN0aW9ufTsKICAgICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGVOb3R9LT57QWN0aW9ufSA9IFxATmV3QWN0aW9uOwoKICAgIHJldHVybiAkQUNMOwp9Cgo9ZW5kIEludGVybmFsOgoKPWN1dAoKMTsK</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageDB.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZURCLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGxvY2FsIGRhdGEgYmFzZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2VEQi5wbSx2IDEuMTEgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2hleCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREIKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZGF0YSBiYXNlIGJhY2tlbmQgLSBsb2NhbCwgT1RSUy1kYXRhIGJhc2UuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBBdHRhY2htZW50U3RvcmFnZURCIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2VEQicpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkSUQgPSAwOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgZm9yZWFjaCAocXcoQXR0RGlySUQgRGF0YVJlZikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgI2VuY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICRQYXJhbXtEYXRhUmVmfSApOwoKICAgICAgICAjb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlIGluc3RlYWQgb2YgdXNpbmcgYW5vdGhlciBmaWxlc2l6ZSBvZiBtZW1vcnkuLi4KICAgICAgICAkeyAkUGFyYW17RGF0YVJlZn0gfSA9IGVuY29kZV9iYXNlNjQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICB9CgogICAgI2RiIHF1b3RpbmcuLi4KICAgIGZvcmVhY2ggKHF3KCBBdHREaXJJRCkpIHsKICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICAjYnVpbGQgc3FsLi4uCiAgICBteSAkU1FMID0gIiI7CiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT57QmFja2VuZH0tPnsnREI6OlR5cGUnfSA9fiAvb3JhY2xlLyApIHsKICAgICAgICAkU1FMID0gIklOU0VSVCBJTlRPIGF0dGFjaG1lbnRfc3RvcmFnZSAiIC4KICAgICAgICAgICAgIiAoYXR0YWNobWVudF9kaXJlY3RvcnlfaWQsIGRhdGEpICIgLgogICAgICAgICAgICAiIFZBTFVFUyAiIC4KICAgICAgICAgICAgIiAoICRQYXJhbXtBdHREaXJJRH0sIEVNUFRZX0NMT0IoKSkiOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9zdG9yYWdlICIgLgogICAgICAgICAgICAiIChhdHRhY2htZW50X2RpcmVjdG9yeV9pZCwgZGF0YSkgIiAuCiAgICAgICAgICAgICIgVkFMVUVTICIgLgogICAgICAgICAgICAiICggJFBhcmFte0F0dERpcklEfSwgPykiOwogICAgfQoKICAgICNydW4gc3FsLi4uCiAgICBteSAkRG9SZXN1bHQgPSAwOwogICAgJERvUmVzdWx0ID0gJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAkU1FMLCBCaW5kID0+IFsgJFBhcmFte0RhdGFSZWZ9IF0sICAgICMgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBpZiAoJERvUmVzdWx0KSB7CgogICAgICAgICNyZXR1cm4gSUQuLi4KICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X3N0b3JhZ2UgV0hFUkUgIiAuCiAgICAgICAgICAgICAgICAiYXR0YWNobWVudF9kaXJlY3RvcnlfaWQgPSAkUGFyYW17QXR0RGlySUR9IiwKICAgICAgICApOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRJRCA9ICRSb3dbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiRmFpbGVkIHRvIGluc2VydCBhdHRhY2htZW50IGRhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQp9Cgo9aXRlbSBBdHRhY2htZW50R2V0KCkKCnJldHVybnMgYW4gZW50cnkgaW4gYXR0YWNobWVudF9zdG9yYWdlCgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudE9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJRCA9PiAxMjMsICMoc29tZSBhdHRhY2htZW50IHN0b3JhZ2UgaWQpCiAgICAgICAgIyAuLi5PUi4uLgogICAgICAgIEF0dERpcklEID0+IDEyMyAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpLAogICAgKTsKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhICA9ICgpOwogICAgbXkgJFdIRVJFID0gIiI7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICYmICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEIG9yIElEISIgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggQXR0RGlySUQgSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17QXR0RGlySUR9ICkgJiYgJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkID0gJFBhcmFte0F0dERpcklEfSI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGlkID0gJFBhcmFte0lEfSI7CiAgICB9CgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgaWYgKCAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMLCBFbmNvZGUgPT4gWyAwLCAwLCAxIF0gKSApIHsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgIG15IEBEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICBpZiAoQERhdGEpIHsKICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBkYXRhIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIHByZXBhcmUgU1FMIGZvciBGZXRjaHJvd0FycmF5ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIFwlRGF0YTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2hEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICAgICAgbXkgJEF0dGFjaERhdGFSZWYgPSBcJEF0dGFjaERhdGFbMF07CgogICAgICAgIGlmICggISRBdHRhY2hEYXRhUmVmICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIEZldGNocm93QXJyYXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgICAgIH0KCiAgICAgICAgI2RlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgICAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICAgICAkeyRBdHRhY2hEYXRhUmVmfSA9IGRlY29kZV9iYXNlNjQoICR7JEF0dGFjaERhdGFSZWZ9ICk7CiAgICAgICAgfQoKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgSUQgICAgICAgPT4gJERhdGFbMF0sCiAgICAgICAgICAgIEF0dERpcklEID0+ICREYXRhWzFdLAoKICAgICAgICAgICAgRGF0YVJlZiA9PiAkQXR0YWNoRGF0YVJlZiwKICAgICAgICApOwoKICAgICAgICAkQXR0YWNoRGF0YVJlZiA9IHVuZGVmOwogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygpCgpyZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBzdG9yYWdlIGJhY2tlbmQgYW5kIHRoZSBtZDVzdW0uCgogICAgbXkgUmVhbFByb3BlcnRpZXMgPSBBdHRhY2htZW50U3RvcmFnZU9iamVjdC0+QXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgSUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBzdG9yYWdlIGlkKQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlUmVhbFByb3BlcnRpZXM7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEISIgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgIG15ICREYXRhID0gJFNlbGYtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBteSAkUmVhbEZpbGVTaXplID0gMDsKICAgIG15ICRSZWFsTUQ1U3VtICAgPSAnJzsKCiAgICBpZiAoIGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSApIHsKICAgICAgICBteSAkQ29udGVudCA9ICR7ICREYXRhLT57RGF0YVJlZn0gfTsKICAgICAgICAkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZU91dHB1dCggXCRDb250ZW50ICk7CgogICAgICAgICRSZWFsRmlsZVNpemUgPSBieXRlczo6bGVuZ3RoKCRDb250ZW50KTsKICAgICAgICAkUmVhbE1ENVN1bSAgID0gbWQ1X2hleCgkQ29udGVudCk7CiAgICB9CgogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxGaWxlU2l6ZX0gPSAkUmVhbEZpbGVTaXplOwogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxNRDVTdW19ICAgPSAkUmVhbE1ENVN1bTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dA==</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageFS.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZUZTLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGZpbGUgc3lzdGVtCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUtaXQoZG90KWRlCiMgLS0KIyAkSWQ6IEF0dGFjaG1lbnRTdG9yYWdlRlMucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NDsKdXNlIEZpbGU6OnN0YXQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlRlMKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZmlsZSBzeXN0ZW0gYmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIEF0dGFjaG1lbnRTdG9yYWdlRlMgb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQXR0YWNobWVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkcmV0VmFsID0gMTsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGZvcmVhY2ggKHF3KEF0dERpcklEIERhdGFSZWYpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8hIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICNidWlsZCBhdHRhY2htZW50IGRhdGEgZmlsZSBwYXRoLi4uCiAgICAkcmV0VmFsID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKSAuCiAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlRlM6OlN0b3JhZ2VEaXJlY3RvcnknKTsKCiAgICAjY2hlY2sgaWYgZGVzdGluYXRpb24gcGF0aCBleGlzdHMuLi4KICAgIGlmICggIS1kICRyZXRWYWwgKSB7CiAgICAgICAgaWYgKCAhRmlsZTo6UGF0aDo6bWtwYXRoKCBbJHJldFZhbF0sIDAsIDA3NzUgKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJBdHRhY2htZW50U3RvcmFnZUZTIHBhdGggZG9lcyBub3QgZXhpc3QgbmVpdGhlciBJIGNhbiBjcmVhdGUgaXQgKCRyZXRWYWwpOiAkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgYXR0YWNobWVudCBkYXRhIGZpbGUgcGF0aC4uLgogICAgJHJldFZhbCAuPSAiLyIgLiAkUGFyYW17QXR0RGlySUR9IC4gIi5kYXQiOwoKICAgICN3cml0ZSB0aGUgYXR0YWNobWVudCBkYXRhIGZpbGUuLi4KICAgIGlmICggb3BlbiggbXkgJERBVEEsICI+IiwgIiRyZXRWYWwiICkgKSB7CiAgICAgICAgYmlubW9kZSgkREFUQSk7CiAgICAgICAgcHJpbnQgJERBVEEgJHsgJFBhcmFte0RhdGFSZWZ9IH07CiAgICAgICAgY2xvc2UoJERBVEEpOwogICAgICAgIHJldHVybiAkcmV0VmFsOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4gTk9UIHdyaXRlIGZpbGUgKCRyZXRWYWwpOiAkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXQoKQoKcmV0dXJucyBhbiBlbnRyeSBpbiBhdHRhY2htZW50X3N0b3JhZ2UKCiAgICBteSAlRGF0YSA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgRmlsZVBhdGggPT4gJy9wYXRoL3RvL3RoZS9hdHRhY2htZW50L2ZpbGUuZGF0JywKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJURhdGEgICAgID0gKCk7CiAgICBteSAkRmlsZVBhdGggPSAnJzsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtGaWxlUGF0aH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgQXR0RGlySUQgb3IgRmlsZVBhdGghIiApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17RmlsZVBhdGh9ICkgJiYgJFBhcmFte0ZpbGVQYXRofSApIHsKICAgICAgICAkRmlsZVBhdGggPSAkUGFyYW17RmlsZVBhdGh9OwogICAgfQoKICAgICNjaGVjayBpZiBQYXJhbUlEIGlzIGRlZmluZWQKICAgIGlmICggZGVmaW5lZCggJFBhcmFte0F0dERpcklEfSApICYmICRQYXJhbXtBdHREaXJJRH0gKSB7CgogICAgICAgICNkYiBxdW90aW5nLi4uCiAgICAgICAgZm9yZWFjaCAocXcoIEF0dERpcklEKSkgewogICAgICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICNidWlsZCBzcWwuLi4KICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBmaWxlX3BhdGggRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiCiAgICAgICAgICAgIC4gIldIRVJFIGlkPSRQYXJhbXtBdHREaXJJRH0iOwoKICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICRTUUwsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICREYXRhWzBdOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkRmlsZVBhdGggKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICJDb3VsZCBOT1QgZmluZCBmaWxlIHBhdGggZm9yIGdpdmVuIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkICgkUGFyYW17QXR0RGlySUR9KSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNnZXQgdGhlIGF0dGFjaG1lbnQgZGF0YSBmaWxlLi4uCiAgICBpZiAoIG9wZW4oIG15ICREQVRBLCAiPCIsICRGaWxlUGF0aCApICkgewogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBteSAkRGF0YSAgICA9ICIiOwogICAgICAgIGJpbm1vZGUoJERBVEEpOwogICAgICAgIHdoaWxlICg8JERBVEE+KSB7CiAgICAgICAgICAgICREYXRhIC49ICRfOwogICAgICAgIH0KICAgICAgICBjbG9zZSgkREFUQSk7CgogICAgICAgICMgc2V0IERhdGFSZWYgcGFyYW0KICAgICAgICAkRGF0YXtEYXRhUmVmfSA9IFwkRGF0YTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IG9wZW4gJEZpbGVQYXRoOiAkISAhIiwKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gQXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKCkKCnJldHVybnMgdGhlIHNpemUgb2YgdGhlIGF0dGFjaG1lbnQgaW4gdGhlIHN0b3JhZ2UgYmFja2VuZCBhbmQgdGhlIG1kNXN1bS4KCiAgICBteSBSZWFsUHJvcGVydGllcyA9IEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMoCiAgICAgICAgQXR0RGlySUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgaWYgKCAhJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCBBdHREaXJJRCEiICk7CiAgICAgICAgcmV0dXJuICVSZWFsUHJvcGVydGllczsKICAgIH0KCiAgICBteSAkRGF0YSA9ICRTZWxmLT5BdHRhY2htZW50R2V0KAogICAgICAgIEF0dERpcklEID0+ICRQYXJhbXtBdHREaXJJRH0KICAgICk7CgogICAgbXkgJFJlYWxGaWxlU2l6ZSA9IDA7CiAgICBteSAkUmVhbE1ENVN1bSAgID0gJyc7CgogICAgaWYgKGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSkgewogICAgICAgIG15ICRDb250ZW50ID0gJHsgJERhdGEtPntEYXRhUmVmfSB9OwogICAgICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+RW5jb2RlT3V0cHV0KCBcJENvbnRlbnQgKTsKCiAgICAgICAgJFJlYWxGaWxlU2l6ZSA9IGJ5dGVzOjpsZW5ndGgoJENvbnRlbnQpOwogICAgICAgICRSZWFsTUQ1U3VtICAgPSBtZDVfaGV4KCRDb250ZW50KTsKICAgIH0KCiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbEZpbGVTaXplfSA9ICRSZWFsRmlsZVNpemU7CiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbE1ENVN1bX0gICA9ICRSZWFsTUQ1U3VtOwoKICAgIHJldHVybiAlUmVhbFByb3BlcnRpZXM7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorage.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZS5wbSAtIGxpYiBmb3IgYXR0YWNobWVudCBtYW5hZ2VtZW50CiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogRG9yb3RoZWEoZG90KURvZXJmZmVsKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2UucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKdXNlIEVuY29kZSBxdyhlbmNvZGVfdXRmOCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2UgLSBzdGQuIGF0dGFjaG1lbnQgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBhdHRhY2htZW50IHN0b3JhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgc3RkLiBhdHRhY2htZW50IG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57TWFpbk9iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgIyBnZXQgY29uZmlndXJlZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBteSAkQmFja2VuZFJlZiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdBdHRhY2htZW50U3RvcmFnZTo6U3RvcmFnZUJhY2tlbmRNb2R1bGVzJyk7CiAgICBpZiAoICEoIHJlZigkQmFja2VuZFJlZikgZXEgJ0hBU0gnICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICNyZXRyaWV2ZSByZXF1aXJlZCBzdG9yYWdlIGJhY2tlbmQgbW9kdWxlcy4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgZGlzdGluY3Qoc3RvcmFnZV9iYWNrZW5kKSBGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5IjsKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICkgKSB7CiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRCYWNrZW5kUmVmLT57ICREYXRhWzBdIH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjbG9hZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBmb3IgbXkgJEN1cnJLZXkgKCBrZXlzKCAleyRCYWNrZW5kUmVmfSApICkgewogICAgICAgIGlmICggJEJhY2tlbmRSZWYtPnskQ3VycktleX0gJiYgJFNlbGYtPntNYWluT2JqZWN0fS0+UmVxdWlyZSgkQ3VycktleSkgKSB7CiAgICAgICAgICAgICRTZWxmLT57JEN1cnJLZXl9ID0gJEtlcm5lbDo6T00tPkdldCgkQ3VycktleSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoKQoKZ2V0IGFuIGF0dGFjaG1lbnQgLSByZXR1cm5zIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGVudHJ5IHdpdGhvdXQgYXR0YWNobWVudCBjb250ZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0RGlyZWN0b3J5KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIHN0b3JhZ2VfYmFja2VuZCwgZmlsZV9wYXRoLCAiIC4KICAgICAgICAiZmlsZV9uYW1lICIgLgogICAgICAgICJGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5ICIgLgogICAgICAgICJXSEVSRSBpZD0kUGFyYW17SUR9IjsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIEF0dERpcklEICAgICAgID0+ICREYXRhWzBdLAogICAgICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAkRGF0YVsxXSwKICAgICAgICAgICAgRmlsZVBhdGggICAgICAgPT4gJERhdGFbMl0sCiAgICAgICAgICAgIEZpbGVOYW1lICAgICAgID0+ICREYXRhWzNdLAogICAgICAgICk7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5IHByZWZlcmVuY2VzCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICNidWlsZCBzcWwuLi4KICAgICRTUUwgPSAiU0VMRUNUIHByZWZlcmVuY2VzX2tleSwgcHJlZmVyZW5jZXNfdmFsdWUgIiAuCiAgICAgICAgIkZST00gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgIiAuCiAgICAgICAgIldIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkPSRQYXJhbXtJRH0iOwoKICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICBteSAlUHJlZmVyZW5jZXM7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFByZWZlcmVuY2VzeyAkRGF0YVswXSB9ID0gJERhdGFbMV07CiAgICB9CgogICAgI2FkZCBwcmVmZXJlbmNlcwogICAgJERhdGF7UHJlZmVyZW5jZXN9ID0gXCVQcmVmZXJlbmNlczsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRTdG9yYWdlR2V0KCkKCmdldCBhbiBhdHRhY2htZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCBkaXJlY3RvcnkgZGF0YS4uLgogICAgJURhdGEgPSAkU2VsZi0+QXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoIElEID0+ICRQYXJhbXtJRH0gKTsKCiAgICBpZiAoICFkZWZpbmVkKCAkRGF0YXtBdHREaXJJRH0gKSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gYXR0YWNobWVudCB3aXRoIHRoaXMgSUQgZXhpc3RzISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCB0aGUgYWN0dWFsIGF0dGFjaG1lbnQuLi4KICAgIG15ICRBdHRhY2htZW50UmVmID0gJFNlbGYtPnsgJERhdGF7U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEF0dERpcklEID0+ICREYXRhe0F0dERpcklEfSwKICAgICk7CgogICAgIyREYXRhe0NvbnRlbnRUeXBlfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVR5cGV9OwoKICAgICMgZ2V0IENvbnRlbnRSZWYgZm9yIERCIGJhY2tlbmQKICAgIGlmICggJEF0dGFjaG1lbnRSZWYtPntEYXRhUmVmfSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVJlZn07CiAgICB9CgogICAgIyBnZXQgQ29udGVudFJlZiBmb3IgRlMgYmFja2VuZAogICAgZWxzaWYgKCBleGlzdHMoICRBdHRhY2htZW50UmVmLT57RGF0YX0gKSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9IFwkQXR0YWNobWVudFJlZi0+e0RhdGF9OwogICAgfQoKICAgICRBdHRhY2htZW50UmVmID0gdW5kZWY7CiAgICAkQXR0YWNobWVudFJlZiA9IHt9OwoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtICBBdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKCkKCmdldCB0aGUgYXR0YWNobWVudCdzIHNpemUgb24gZGlzayBhbmQgdGhlIG1kNXN1bQoKICAgIG15ICVEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEICAgICAgPT4gJEF0dERpcklELAogICAgICAgU3RvcmFnZUJhY2tlbmQgPT4gIktlcm5lbDo6U3lzdGVtOjpBdHRhY2htZW50U3RvcmFnZURCIiwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICMgY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEF0dERpcklEIGFuZCBTdG9yYWdlQmFja2VuZCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgICMgZ2V0IHRoZSBhY3R1YWwgYXR0YWNobWVudCBwcm9wZXJ0aWVzLi4uCiAgICAlUmVhbFByb3BlcnRpZXMgPSAkU2VsZi0+eyAkUGFyYW17U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygKICAgICAgICBBdHREaXJJRCA9PiAkUGFyYW17QXR0RGlySUR9LAogICAgKTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9Cgo9aXRlbSBBdHRhY2htZW50U3RvcmFnZUFkZCgpCgpjcmVhdGUgYSBuZXcgYXR0YWNobWVudCBkaXJlY3RvcnkgZW50cnkgYW5kIHdyaXRlIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBiYWNrZW5kCgogICAgbXkgJElEID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUFkZCgKICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAnS2VybmVsOjpTeXN0ZW06OkF0dGFjaG1lbnRTdG9yYWdlREInLAogICAgICAgIERhdGFSZWYgPT4gJFNvbWVDb250ZW50UmVmZXJlbmNlLAogICAgICAgIEZpbGVOYW1lID0+ICdTb21lRmlsZU5hbWUuemlwJywKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgICAgIFByZWZlcmVuY2VzICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVHlwZSAgICAgICAgICAgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVDdXN0b21QYXJhbXMgICA9PiAnd2l0aCBvdXIgb3duIHZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50U3RvcmFnZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJElEICAgICA9IDA7CiAgICBteSAkTUQ1c3VtID0gJyc7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhEYXRhUmVmIEZpbGVOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEoICRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSApIHsKICAgICAgICAkUGFyYW17U3RvcmFnZUJhY2tlbmR9ID0KICAgICAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlOjpEZWZhdWx0U3RvcmFnZUJhY2tlbmRNb2R1bGUnKTsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDEpIGNyZWF0ZSBhdHRhY2htZW50IGRpcmVjdG9yeSBlbnRyeS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIFN0b3JhZ2VCYWNrZW5kIEZpbGVOYW1lKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30gKTsKICAgIH0KICAgIGZvcmVhY2ggKHF3KCBVc2VySUQgKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICNidWlsZCBzcWwuLi4KICAgIG15ICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJlY3RvcnkgKCIgLgogICAgICAgICIgc3RvcmFnZV9iYWNrZW5kLCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCwgZmlsZV9uYW1lLCAgIiAuCiAgICAgICAgIiBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KSAiIC4KICAgICAgICAiIFZBTFVFUyAoIiAuCiAgICAgICAgIiAnJFBhcmFte1N0b3JhZ2VCYWNrZW5kfScsICIgLgogICAgICAgICIgJycsICckUGFyYW17RmlsZU5hbWV9JywgIiAuCiAgICAgICAgIiBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklEfSkiOwoKICAgICNydW4gU1FMLi4uCiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT5EbyggU1FMID0+ICRTUUwgKSApIHsKCiAgICAgICAgIy4uLmFuZCBnZXQgdGhlIElELi4uCiAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIG1heChpZCkgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSBXSEVSRSAiIC4KICAgICAgICAgICAgICAgICJmaWxlX25hbWUgPSAnJFBhcmFte0ZpbGVOYW1lfScgQU5EICIgLgogICAgICAgICAgICAgICAgInN0b3JhZ2VfYmFja2VuZCA9ICckUGFyYW17U3RvcmFnZUJhY2tlbmR9JyBBTkQgIiAuCiAgICAgICAgICAgICAgICAiY3JlYXRlX2J5ID0gJFBhcmFte1VzZXJJRH0iLAogICAgICAgICk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJElEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBOT1QgaW5zZXJ0IGF0dGFjaG1lbnQgaW4gYXR0YWNobWVudCBkaXJlY3RvcnkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDIpIHNhdmUgYXR0YWNobWVudCBkaXJlY3RvcnkgcHJlZmVyZW5jZXMgLi4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAjIG1kNXN1bSBjYWxjdWxhdGlvbgogICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57TUQ1U3VtfSA9IG1kNV9oZXgoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CgogICAgIyBzaXplIGNhbGN1bGF0aW9uCiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemVCeXRlc30gPSBieXRlczo6bGVuZ3RoKCAkeyAkUGFyYW17RGF0YVJlZn0gfSApOwoKICAgIG15ICRGaWxlU2l6ZSA9ICRQYXJhbXtQcmVmZXJlbmNlc30tPntGaWxlU2l6ZUJ5dGVzfTsKICAgIGlmICggJEZpbGVTaXplID4gKCAxMDI0ICogMTAyNCApICkgewogICAgICAgICRGaWxlU2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZVNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgIH0KICAgIGVsc2lmICggJEZpbGVTaXplID4gMTAyNCApIHsKICAgICAgICAkRmlsZVNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggJEZpbGVTaXplIC8gMTAyNCApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbGVTaXplID0gJEZpbGVTaXplIC4gJyBCeXRlcyc7CiAgICB9CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemV9ID0gJEZpbGVTaXplOwoKICAgICMgaW5zZXJ0IHByZWZlcmVuY2VzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17UHJlZmVyZW5jZXN9IH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgJwogICAgICAgICAgICAgICAgLiAnKGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkLCBwcmVmZXJlbmNlc19rZXksIHByZWZlcmVuY2VzX3ZhbHVlKSBWQUxVRVMgKCA/LCA/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJElELCBcJEtleSwgXCRQYXJhbXtQcmVmZXJlbmNlc30tPnskS2V5fSBdLAogICAgICAgICk7CgogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyAoMykgY3JlYXRlIGF0dGFjaG1lbnQgc3RvcmFnZSBlbnRyeSAoID0gc2F2ZSBmaWxlKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgJEF0dElEID0gJFNlbGYtPnsgJFBhcmFte1N0b3JhZ2VCYWNrZW5kfSB9LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+ICRJRCwKICAgICAgICBEYXRhUmVmICA9PiAkUGFyYW17RGF0YVJlZn0sCiAgICApOwoKICAgIGlmICggISRBdHRJRCApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCBzdG9yZSBhdHRhY2htZW50IGluIHN0b3JhZ2UgKCRQYXJhbXtTdG9yYWdlQmFja2VuZH0pISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjICg0KSB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKGkuZS4gZmlsZSBwYXRoKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJEF0dElEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCRBdHRJRCk7CiAgICAkU1FMICAgPSAiVVBEQVRFIGF0dGFjaG1lbnRfZGlyZWN0b3J5IFNFVCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCA9ICckQXR0SUQnICIgLgogICAgICAgICIgV0hFUkUgaWQgPSAkSUQiOwoKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPkRvKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKElEPSRJRCwgZmlsZV9wYXRoPSRBdHRJRCkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VTZWFyY2goKQoKcmV0dXJucyBhdHRhY2htZW50IGRpcmVjdG9yeSBJRHMgZm9yIHRoZSBnaXZlbiBGaWxlTmFtZQoKICAgIG15IEBEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZVNlYXJjaCgKICAgICAgICBGaWxlTmFtZSA9PiAnU29tZUZpbGVOYW1lLnppcCcsCiAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMSwgKDEgfHwgMCwgb3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRTdG9yYWdlU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSBAUmVzdWx0ID0gKCk7CiAgICBteSAkV0hFUkUgID0gIihpZCA+IDApIjsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtGaWxlTmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEZpbGVOYW1lISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIEZpbGVOYW1lICkpIHsKICAgICAgICBpZiAoIGRlZmluZWQoICRQYXJhbXskX30gKSAmJiAoICRQYXJhbXskX30gKSApIHsKICAgICAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSApOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgV0hFUkUtY2xhdXNlLi4uCiAgICBpZiAoICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gKSB7CiAgICAgICAgJFdIRVJFIC49ICIgQU5EIChmaWxlX25hbWUgTElLRSAnJFBhcmFte0ZpbGVOYW1lfScpIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRXSEVSRSAuPSAiIEFORCAoZmlsZV9uYW1lID0gJyRQYXJhbXtGaWxlTmFtZX0nKSI7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiIC4KICAgICAgICAiV0hFUkUgIiAuICRXSEVSRTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQFJlc3VsdCwgJERhdGFbMF0gKTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQ=</File>
        <File Location="Custom/Kernel/System/DynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIpOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKIyBJbmZvcm0gdGhlIG9iamVjdCBtYW5hZ2VyIGFib3V0IHRoZSBoYXJkIGRlcGVuZGVuY2llcy4KIyBUaGlzIG1vZHVsZSBtdXN0IGJlIGRpc2NhcmRlZCB3aGVuIG9uZSBvZiB0aGUgaGFyZCBkZXBlbmRlbmNpZXMgaGFzIGJlZW4gZGlzY2FyZGVkLgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlR5cGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OllBTUwnLAopOwoKIyBJbmZvcm0gdGhlIENvZGVQb2xpY3kgYWJvdXQgdGhlIHNvZnQgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGludGVudGlvbmFsbHkgbm90IGluIEBPYmplY3REZXBlbmRlbmNpZXMuCiMgU29mdCBkZXBlbmRlbmNpZXMgYXJlIG1vZHVsZXMgdGhhdCB1c2VkIGJ5IHRoaXMgb2JqZWN0LCBidXQgd2hvIGRvbid0IGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhpcyBvYmplY3QuCiMgVGhlcmUgaXMgbm8gbmVlZCB0byBkaXNjYXJkIHRoaXMgbW9kdWxlIHdoZW4gb25lIG9mIHRoZSBzb2Z0IGRlcGVuZGVuY2llcyBpcyBkaXNjYXJkZWQuCm91ciBAU29mdE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQgLSBnZW5lcmFsIG1ldGhvZHMgZm9yIGR5bmFtaWMgZmllbGRzCgo9aGVhZDEgREVTQ1JJUFRJT04KCkR5bmFtaWNGaWVsZHMgYmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhIER5bmFtaWNGaWVsZCBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGdldCB0aGUgY2FjaGUgVFRMIChpbiBzZWNvbmRzKQogICAgJFNlbGYtPntDYWNoZVRUTH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZDo6Q2FjaGVUVEwnKSB8fCAzNjAwOwoKICAgICMgc2V0IGxvd2VyIGlmIGRhdGFiYXNlIGlzIGNhc2Ugc2Vuc2l0aXZlCiAgICAkU2VsZi0+e0xvd2VyfSA9ICcnOwogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+R2V0RGF0YWJhc2VGdW5jdGlvbignQ2FzZVNlbnNpdGl2ZScpICkgewogICAgICAgICRTZWxmLT57TG93ZXJ9ID0gJ0xPV0VSJzsKICAgIH0KCiAgICAjIGluaXQgb2YgZXZlbnQgaGFuZGxlcgogICAgJFNlbGYtPkV2ZW50SGFuZGxlckluaXQoCiAgICAgICAgQ29uZmlnID0+ICdEeW5hbWljRmllbGQ6OkV2ZW50TW9kdWxlUG9zdCcsCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIER5bmFtaWNGaWVsZEFkZCgpCgphZGQgbmV3IER5bmFtaWMgRmllbGQgY29uZmlnCgpyZXR1cm5zIHRoZSBJRCBvZiB0aGUgbmV3IGR5bmFtaWMgZmllbGQgaWYgc3VjY2Vzc2Z1bC4gUmV0dXJucyB1bmRlZiBvdGhlcndpc2UuCgogICAgbXkgJElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwgICAgICAgICAgICAgIyBvcHRpb25hbCwgMCBvciAxLCBpbnRlcm5hbCBmaWVsZHMgYXJlIHByb3RlY3RlZAogICAgICAgIE5hbWUgICAgICAgID0+ICdOYW1lRm9yRmllbGQnLCAgIyBtYW5kYXRvcnksIG1heSBvbmx5IGNvbnNpc3Qgb2YgQVNDSUkgYWxwaGFudW1lcmljcyBhbmQgJy0nCiAgICAgICAgTGFiZWwgICAgICAgPT4gJ2EgZGVzY3JpcHRpb24nLCAjIG1hbmRhdG9yeSwgbGFiZWwgdG8gc2hvdwogICAgICAgIEZpZWxkT3JkZXIgID0+IDEyMywgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICBGaWVsZFR5cGUgICA9PiAnVGV4dCcsICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgID0+ICdBcnRpY2xlJywgICAgICAgIyB0aGlzIGNvbnRyb2xzIHdoaWNoIG9iamVjdCB0aGUgZHluYW1pYyBmaWVsZCBsaW5rcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzCiAgICAgICAgQ29uZmlnICAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBpbmRpdmlkdWFsIGFydGljbGVzLCBvdGhlcndpc2UgdG8gdGlja2V0cwogICAgICAgIFJlb3JkZXIgICAgID0+IDEsICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgPT4gMTIzLAogICAgKTsKClJldHVybnM6CgogICAgJElEID0gNTY3OwoKPWN1dAoKc3ViIER5bmFtaWNGaWVsZEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEtleSAocXcoTmFtZSBMYWJlbCBGaWVsZE9yZGVyIEZpZWxkVHlwZSBPYmplY3RUeXBlIENvbmZpZyBWYWxpZElEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRLZXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0cnVjdHVyZSBmb3Igc29tZSBmaWVsZHMKICAgIGlmICggJFBhcmFte05hbWV9ICF+IG17IFxBIFthLXpBLVpcZC1dKyBceiB9YXhtcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vdCB2YWxpZCBsZXR0ZXJzIG9uIE5hbWU6JFBhcmFte05hbWV9ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgTmFtZSBhbHJlYWR5IGV4aXN0cwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gIlNFTEVDVCBpZCBGUk9NIGR5bmFtaWNfZmllbGQgV0hFUkUgJFNlbGYtPntMb3dlcn0obmFtZSkgPSAkU2VsZi0+e0xvd2VyfSg/KSIsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJE5hbWVFeGlzdHM7CiAgICB3aGlsZSAoIG15IEBEYXRhID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJE5hbWVFeGlzdHMgPSAxOwogICAgfQoKICAgIGlmICgkTmFtZUV4aXN0cykgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQSBkeW5hbWljIGZpZWxkIHdpdGggdGhlIG5hbWUgJyRQYXJhbXtOYW1lfScgYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtGaWVsZE9yZGVyfSAhfiBteyBcQSBbXGRdKyBceiB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm90IHZhbGlkIG51bWJlciBvbiBGaWVsZE9yZGVyOiRQYXJhbXtGaWVsZE9yZGVyfSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBkdW1wIGNvbmZpZyBhcyBzdHJpbmcKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKCBEYXRhID0+ICRQYXJhbXtDb25maWd9ICk7CgogICAgbXkgJEludGVybmFsRmllbGQgPSAkUGFyYW17SW50ZXJuYWxGaWVsZH0gPyAxIDogMDsKCiAgICAjIHNxbAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PgogICAgICAgICAgICAnSU5TRVJUIElOVE8gZHluYW1pY19maWVsZCAoaW50ZXJuYWxfZmllbGQsIG5hbWUsIGxhYmVsLCBmaWVsZF9PcmRlciwgZmllbGRfdHlwZSwgb2JqZWN0X3R5cGUsJwogICAgICAgICAgICAuCiAgICAgICAgICAgICcgY29uZmlnLCB2YWxpZF9pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSknIC4KICAgICAgICAgICAgJyBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJEludGVybmFsRmllbGQsICAgICBcJFBhcmFte05hbWV9LCBcJFBhcmFte0xhYmVsfSwgICBcJFBhcmFte0ZpZWxkT3JkZXJ9LCBcJFBhcmFte0ZpZWxkVHlwZX0sCiAgICAgICAgICAgIFwkUGFyYW17T2JqZWN0VHlwZX0sIFwkQ29uZmlnLCAgICAgIFwkUGFyYW17VmFsaWRJRH0sIFwkUGFyYW17VXNlcklEfSwgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICk7CiAgICAkQ2FjaGVPYmplY3QtPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRHluYW1pY0ZpZWxkVmFsdWUnLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJFNlbGYtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkRHluYW1pY0ZpZWxkLT57SUR9OwoKICAgICMgdHJpZ2dlciBldmVudAogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnRHluYW1pY0ZpZWxkQWRkJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIE5ld0RhdGEgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhZXhpc3RzICRQYXJhbXtSZW9yZGVyfSB8fCAkUGFyYW17UmVvcmRlcn0gKSB7CgogICAgICAgICMgcmUtb3JkZXIgZmllbGQgbGlzdAogICAgICAgICRTZWxmLT5fRHluYW1pY0ZpZWxkUmVvcmRlcigKICAgICAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LAogICAgICAgICAgICBGaWVsZE9yZGVyID0+ICREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfSwKICAgICAgICAgICAgTW9kZSAgICAgICA9PiAnQWRkJywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkLT57SUR9Owp9Cgo9aGVhZDIgRHluYW1pY0ZpZWxkR2V0KCkKCmdldCBEeW5hbWljIEZpZWxkIGF0dHJpYnV0ZXMKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIElEICAgPT4gMTIzLCAgICAgICAgICAgICAjIElEIG9yIE5hbWUgbXVzdCBiZSBwcm92aWRlZAogICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRHluYW1pY0ZpZWxkID0gewogICAgICAgIElEICAgICAgICAgICAgPT4gMTIzLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICdOYW1lRm9yRmllbGQnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ1RoZSBsYWJlbCB0byBzaG93JywKICAgICAgICBGaWVsZE9yZGVyICAgID0+IDEyMywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdBcnRpY2xlJywKICAgICAgICBDb25maWcgICAgICAgID0+ICRDb25maWdIYXNoUmVmLAogICAgICAgIFZhbGlkSUQgICAgICAgPT4gMSwKICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDExLTAyLTA4IDE1OjA4OjAwJywKICAgICAgICBDaGFuZ2VUaW1lICAgID0+ICcyMDExLTA2LTExIDE3OjIyOjAwJywKICAgIH07Cgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJRH0gJiYgISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSUQgb3IgTmFtZSEnCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgY2FjaGUgb2JqZWN0CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXk7CiAgICBpZiAoICRQYXJhbXtJRH0gKSB7CiAgICAgICAgJENhY2hlS2V5ID0gJ0R5bmFtaWNGaWVsZEdldDo6SUQ6OicgLiAkUGFyYW17SUR9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJENhY2hlS2V5ID0gJ0R5bmFtaWNGaWVsZEdldDo6TmFtZTo6JyAuICRQYXJhbXtOYW1lfTsKCiAgICB9CiAgICBteSAkQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKICAgIHJldHVybiAkQ2FjaGUgaWYgJENhY2hlOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBzcWwKICAgIGlmICggJFBhcmFte0lEfSApIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+CiAgICAgICAgICAgICAgICAnU0VMRUNUIGlkLCBpbnRlcm5hbF9maWVsZCwgbmFtZSwgbGFiZWwsIGZpZWxkX29yZGVyLCBmaWVsZF90eXBlLCBvYmplY3RfdHlwZSwgY29uZmlnLCcKICAgICAgICAgICAgICAgIC4KICAgICAgICAgICAgICAgICcgdmFsaWRfaWQsIGNyZWF0ZV90aW1lLCBjaGFuZ2VfdGltZSAnIC4KICAgICAgICAgICAgICAgICdGUk9NIGR5bmFtaWNfZmllbGQgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SUR9IF0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4KICAgICAgICAgICAgICAgICdTRUxFQ1QgaWQsIGludGVybmFsX2ZpZWxkLCBuYW1lLCBsYWJlbCwgZmllbGRfb3JkZXIsIGZpZWxkX3R5cGUsIG9iamVjdF90eXBlLCBjb25maWcsJwogICAgICAgICAgICAgICAgLgogICAgICAgICAgICAgICAgJyB2YWxpZF9pZCwgY3JlYXRlX3RpbWUsIGNoYW5nZV90aW1lICcgLgogICAgICAgICAgICAgICAgJ0ZST00gZHluYW1pY19maWVsZCBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB5YW1sIG9iamVjdAogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBARGF0YSA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkQ29uZmlnID0gJFlBTUxPYmplY3QtPkxvYWQoIERhdGEgPT4gJERhdGFbN10gKTsKCiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIElEICAgICAgICAgICAgPT4gJERhdGFbMF0sCiAgICAgICAgICAgIEludGVybmFsRmllbGQgPT4gJERhdGFbMV0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJERhdGFbMl0sCiAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJERhdGFbM10sCiAgICAgICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJERhdGFbNF0sCiAgICAgICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJERhdGFbNV0sCiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgPT4gJERhdGFbNl0sCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgPT4gJENvbmZpZywKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAkRGF0YVs4XSwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAkRGF0YVs5XSwKICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAkRGF0YVsxMF0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoJURhdGEpIHsKCiAgICAgICAgIyBTZXQgdGhlIGNhY2hlIG9ubHksIGlmIHRoZSBZQU1MLT5Mb2FkIHdhcyBzdWNjZXNzZnVsIChzZWUgYnVnIzEyNDgzKS4KICAgICAgICBpZiAoICREYXRhe0NvbmZpZ30gKSB7CgogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkRGF0YXtDb25maWd9IHx8PSB7fTsKICAgIH0KCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgRHluYW1pY0ZpZWxkVXBkYXRlKCkKCnVwZGF0ZSBEeW5hbWljIEZpZWxkIGNvbnRlbnQgaW50byBkYXRhYmFzZQoKcmV0dXJucyAxIG9uIHN1Y2Nlc3Mgb3IgdW5kZWYgb24gZXJyb3IKCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICBJRCAgICAgICAgICA9PiAxMjM0LCAgICAgICAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICAgPT4gJ05hbWVGb3JGaWVsZCcsICAjIG1hbmRhdG9yeQogICAgICAgIExhYmVsICAgICAgID0+ICdhIGRlc2NyaXB0aW9uJywgIyBtYW5kYXRvcnksIGxhYmVsIHRvIHNob3cKICAgICAgICBGaWVsZE9yZGVyICA9PiAxMjMsICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICAgPT4gJ1RleHQnLCAgICAgICAgICAjIG1hbmRhdG9yeSwgc2VsZWN0cyB0aGUgREYgYmFja2VuZCB0byB1c2UgZm9yIHRoaXMgZmllbGQKICAgICAgICBPYmplY3RUeXBlICA9PiAnQXJ0aWNsZScsICAgICAgICMgdGhpcyBjb250cm9scyB3aGljaCBvYmplY3QgdGhlIGR5bmFtaWMgZmllbGQgbGlua3MgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgID0+ICRDb25maWdIYXNoUmVmLCAgIyBpdCBpcyBzdG9yZWQgb24gWUFNTCBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gaW5kaXZpZHVhbCBhcnRpY2xlcywgb3RoZXJ3aXNlIHRvIHRpY2tldHMKICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgID0+IDEsICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIHByZXZlbnQgcmVkdW5kYW50IGV4ZWN1dGlvbiBvbiBvcmRlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBEeW5hbWljRmllbGRVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRLZXkgKHF3KElEIE5hbWUgTGFiZWwgRmllbGRPcmRlciBGaWVsZFR5cGUgT2JqZWN0VHlwZSBDb25maWcgVmFsaWRJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkS2V5ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkUmVvcmRlcjsKICAgIGlmICggIWV4aXN0cyAkUGFyYW17UmVvcmRlcn0gfHwgJFBhcmFte1Jlb3JkZXJ9IGVxIDEgKSB7CiAgICAgICAgJFJlb3JkZXIgPSAxOwogICAgfQoKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICAjIGdldCB0aGUgb2xkIGR5bmFtaWMgZmllbGQgZGF0YQogICAgbXkgJE9sZER5bmFtaWNGaWVsZCA9ICRTZWxmLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJFBhcmFte0lEfSwKICAgICk7CgogICAgIyBrZWVwIFBhcnRPZlNldCBpZiBwcmVzZW50LCBvciBkZWxldGUgaXQgaWYgZXhwbGljaXRseSBkZWFjdGl2YXRlZAogICAgaWYgKCAkT2xkRHluYW1pY0ZpZWxkLT57Q29uZmlnfXtQYXJ0T2ZTZXR9ICkgewogICAgICAgICRQYXJhbXtDb25maWd9e1BhcnRPZlNldH0gLy89ICRPbGREeW5hbWljRmllbGQtPntDb25maWd9e1BhcnRPZlNldH07CgogICAgICAgIGRlbGV0ZSAkUGFyYW17Q29uZmlnfXtQYXJ0T2ZTZXR9IGlmICEkUGFyYW17Q29uZmlnfXtQYXJ0T2ZTZXR9OwogICAgfQoKICAgICMgZHVtcCBjb25maWcgYXMgc3RyaW5nCiAgICBteSAkQ29uZmlnID0gJFlBTUxPYmplY3QtPkR1bXAoIERhdGEgPT4gJFBhcmFte0NvbmZpZ30gKTsKCiAgICByZXR1cm4gaWYgISRZQU1MT2JqZWN0LT5Mb2FkKCBEYXRhID0+ICRDb25maWcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHJ1Y3R1cmUgZm9yIHNvbWUgZmllbGRzCiAgICBpZiAoICRQYXJhbXtOYW1lfSAhfiBteyBcQSBbYS16QS1aXGRcLV0rIFx6IH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgdmFsaWQgbGV0dGVycyBvbiBOYW1lOiRQYXJhbXtOYW1lfSBvciBPYmplY3RUeXBlOiRQYXJhbXtPYmplY3RUeXBlfSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjaGVjayBpZiBOYW1lIGFscmVhZHkgZXhpc3RzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIGR5bmFtaWNfZmllbGQgIgogICAgICAgICAgICAuICJXSEVSRSAkU2VsZi0+e0xvd2VyfShuYW1lKSA9ICRTZWxmLT57TG93ZXJ9KD8pICIKICAgICAgICAgICAgLiAiQU5EIGlkICE9ID8iLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtJRH0gXSwKICAgICAgICBMSU1JVCA9PiAxLAogICAgKTsKCiAgICBteSAkTmFtZUV4aXN0czsKICAgIHdoaWxlICggbXkgQERhdGEgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTmFtZUV4aXN0cyA9IDE7CiAgICB9CgogICAgaWYgKCROYW1lRXhpc3RzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBIGR5bmFtaWMgZmllbGQgd2l0aCB0aGUgbmFtZSAnJFBhcmFte05hbWV9JyBhbHJlYWR5IGV4aXN0cy4iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0ZpZWxkT3JkZXJ9ICF+IG17IFxBIFtcZF0rIFx6IH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgdmFsaWQgbnVtYmVyIG9uIEZpZWxkT3JkZXI6JFBhcmFte0ZpZWxkT3JkZXJ9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBGaWVsZE9yZGVyIGlzIGNoYW5nZWQKICAgIG15ICRDaGFuZ2VkT3JkZXI7CiAgICBpZiAoICRPbGREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfSBuZSAkUGFyYW17RmllbGRPcmRlcn0gKSB7CiAgICAgICAgJENoYW5nZWRPcmRlciA9IDE7CiAgICB9CgogICAgIyBzcWwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBkeW5hbWljX2ZpZWxkIFNFVCBuYW1lID0gPywgbGFiZWwgPSA/LCBmaWVsZF9vcmRlciA9PywgZmllbGRfdHlwZSA9ID8sICcKICAgICAgICAgICAgLiAnb2JqZWN0X3R5cGUgPSA/LCBjb25maWcgPSA/LCB2YWxpZF9pZCA9ID8sIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsICcKICAgICAgICAgICAgLiAnIGNoYW5nZV9ieSA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtMYWJlbH0sIFwkUGFyYW17RmllbGRPcmRlcn0sIFwkUGFyYW17RmllbGRUeXBlfSwKICAgICAgICAgICAgXCRQYXJhbXtPYmplY3RUeXBlfSwgXCRDb25maWcsIFwkUGFyYW17VmFsaWRJRH0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBnZXQgY2FjaGUgb2JqZWN0CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZFZhbHVlJywKICAgICk7CgogICAgIyBnZXQgdGhlIG5ldyBkeW5hbWljIGZpZWxkIGRhdGEKICAgIG15ICROZXdEeW5hbWljRmllbGQgPSAkU2VsZi0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtJRH0sCiAgICApOwoKICAgICMgdHJpZ2dlciBldmVudCBvbmx5IGlmIHBvdGVudGlhbGx5IHRoZSBjb250ZW50IG9mIHRoZSBmaWVsZCBjaGFuZ2VkCiAgICAjIHRoaXMgc2hvdWxkIG5vdCBiZSB0aGUgY2FzZSBpZiBSZW9yZGVyID0+IDAgaXMgc2V0CiAgICAjIGNvbnNpZGVyIGFkZGluZyByZW1vdmluZyB0aGUgY29uZGl0aW9uIGFuZCBhZGRpbmcgUmVvcmRlciB0byB0aGUgZXZlbnQgZGF0YQogICAgIyBpZiB3ZSBldmVyIG5lZWQgYW4gZXZlbnQgdG8gYWN0IG9uIGZpZWxkcyBiZWluZyBvbmx5IHJlb3JkZXJlZAogICAgaWYgKCRSZW9yZGVyKSB7CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0R5bmFtaWNGaWVsZFVwZGF0ZScsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIE5ld0RhdGEgPT4gJE5ld0R5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIE9sZERhdGEgPT4gJE9sZER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyByZS1vcmRlciBmaWVsZCBsaXN0IGlmIGEgY2hhbmdlIGluIHRoZSBvcmRlciB3YXMgbWFkZQogICAgaWYgKCAkUmVvcmRlciAmJiAkQ2hhbmdlZE9yZGVyICkgewogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9EeW5hbWljRmllbGRSZW9yZGVyKAogICAgICAgICAgICBJRCAgICAgICAgICAgID0+ICRQYXJhbXtJRH0sCiAgICAgICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJFBhcmFte0ZpZWxkT3JkZXJ9LAogICAgICAgICAgICBNb2RlICAgICAgICAgID0+ICdVcGRhdGUnLAogICAgICAgICAgICBPbGRGaWVsZE9yZGVyID0+ICRPbGREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRHluYW1pY0ZpZWxkRGVsZXRlKCkKCmRlbGV0ZSBhIER5bmFtaWMgZmllbGQgZW50cnkuIFlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCB2YWx1ZXMgYXJlCmRlbGV0ZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgb3RoZXJ3aXNlIGl0IHdpbGwgZmFpbCBvbiBEQk1TIHdoaWNoIGNoZWNrCnJlZmVyZW50aWFsIGludGVncml0eS4KCnJldHVybnMgMSBpZiBzdWNjZXNzZnVsIG9yIHVuZGVmIG90aGVyd2lzZQoKICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgIElEICAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMTIzLAogICAgICAgIFJlb3JkZXIgPT4gMSwgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICApOwoKPWN1dAoKc3ViIER5bmFtaWNGaWVsZERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEtleSAocXcoSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskS2V5fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEtleSEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBleGlzdHMKICAgIG15ICREeW5hbWljRmllbGQgPSAkU2VsZi0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtJRH0sCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkKTsKCiAgICAjIHJlLW9yZGVyIGJlZm9yZSBkZWxldGUKICAgIGlmICggIWV4aXN0cyAkUGFyYW17UmVvcmRlcn0gfHwgJFBhcmFte1Jlb3JkZXJ9ICkgewogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9EeW5hbWljRmllbGRSZW9yZGVyKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgIEZpZWxkT3JkZXIgPT4gJER5bmFtaWNGaWVsZC0+e0ZpZWxkT3JkZXJ9LAogICAgICAgICAgICBNb2RlICAgICAgID0+ICdEZWxldGUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxldGUgZHluYW1pYyBmaWVsZAogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZHluYW1pY19maWVsZCBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0lEfSBdLAogICAgKTsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICk7CiAgICAkQ2FjaGVPYmplY3QtPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRHluYW1pY0ZpZWxkVmFsdWUnLAogICAgKTsKCiAgICAjIHRyaWdnZXIgZXZlbnQKICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgRXZlbnQgPT4gJ0R5bmFtaWNGaWVsZERlbGV0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBOZXdEYXRhID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRHluYW1pY0ZpZWxkTGlzdCgpCgpnZXQgdGhlIER5bmFtaWNGaWVsZCBsaXN0IG9yZGVyZWQgYnkgdGhlICJGaWVsZCBPcmRlciIgZmllbGQgaW4gdGhlIERCCgogICAgbXkgJExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KCk7CgpvcgoKICAgIG15ICRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICBWYWxpZCA9PiAwLCAgICAgICAgICAgICAjIG9wdGlvbmFsLCBkZWZhdWx0cyB0byAxCgogICAgICAgICMgb2JqZWN0ICB0eXBlIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICBPYmplY3RUeXBlID0+IFsnVGlja2V0JywgJ0FydGljbGUnXSwKCiAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsICAgIyBvcHRpb25hbCwgJ0FSUkFZJyBvciAnSEFTSCcsIGRlZmF1bHRzIHRvICdBUlJBWScKCiAgICAgICAgRmllbGRGaWx0ZXIgPT4geyAgICAgICAgIyBvcHRpb25hbCwgb25seSBhY3RpdmUgZmllbGRzIChub24gMCkgd2lsbCBiZSByZXR1cm5lZAogICAgICAgICAgICBJdGVtT25lICAgPT4gMSwKICAgICAgICAgICAgSXRlbVR3byAgID0+IDIsCiAgICAgICAgICAgIEl0ZW1UaHJlZSA9PiAxLAogICAgICAgICAgICBJdGVtRm91ciAgPT4gMSwKICAgICAgICAgICAgSXRlbUZpdmUgID0+IDAsCiAgICAgICAgfSwKCiAgICAgICAgTmFtZXNwYWNlID0+ICdOYW1lc3BhY2UnLCAjIG9wdGlvbmFsLCBOYW1lc3BhY2UgYXMgc3RyaW5nICgnPG5vbmU+JyBmb3IgYWxsIGZpZWxkcyB3aXRob3V0IG5hbWVzcGFjZSkKICAgICk7CgpSZXR1cm5zOgoKICAgICRMaXN0ID0gewogICAgICAgIDEgPT4gJ0l0ZW1PbmUnLAogICAgICAgIDIgPT4gJ0l0ZW1Ud28nLAogICAgICAgIDMgPT4gJ0l0ZW1UaHJlZScsCiAgICAgICAgNCA9PiAnSXRlbUZvdXInLAogICAgfTsKCm9yCgogICAgJExpc3QgPSAoCiAgICAgICAgMSwKICAgICAgICAyLAogICAgICAgIDMsCiAgICAgICAgNAogICAgKTsKCj1jdXQKCnN1YiBEeW5hbWljRmllbGRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0byBzdG9yZSBmaWVsZElEcyB3aGl0ZS1saXN0CiAgICBteSAlQWxsb3dlZEZpZWxkSURzOwoKICAgIGlmICggZGVmaW5lZCAkUGFyYW17RmllbGRGaWx0ZXJ9ICYmIHJlZiAkUGFyYW17RmllbGRGaWx0ZXJ9IGVxICdIQVNIJyApIHsKCiAgICAgICAgIyBmaWxsIHRoZSBmaWVsZElEcyB3aGl0ZS1saXN0CiAgICAgICAgRklFTEROQU1FOgogICAgICAgIGZvciBteSAkRmllbGROYW1lICggc29ydCBrZXlzICV7ICRQYXJhbXtGaWVsZEZpbHRlcn0gfSApIHsKICAgICAgICAgICAgbmV4dCBGSUVMRE5BTUUgaWYgISRQYXJhbXtGaWVsZEZpbHRlcn0tPnskRmllbGROYW1lfTsKCiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICRTZWxmLT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJEZpZWxkTmFtZSApOwogICAgICAgICAgICBuZXh0IEZJRUxETkFNRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBGSUVMRE5BTUUgaWYgISRGaWVsZENvbmZpZy0+e0lEfTsKCiAgICAgICAgICAgICRBbGxvd2VkRmllbGRJRHN7ICRGaWVsZENvbmZpZy0+e0lEfSB9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJFZhbGlkID0gMTsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsaWR9ICYmICRQYXJhbXtWYWxpZH0gZXEgJzAnICkgewogICAgICAgICRWYWxpZCA9IDA7CiAgICB9CgogICAgIyBzZXQgY2FjaGUga2V5IG9iamVjdCB0eXBlIGNvbXBvbmVudCBkZXBlbmRpbmcgb24gdGhlIE9iamVjdFR5cGUgcGFyYW1ldGVyCiAgICBteSAkT2JqZWN0VHlwZSA9ICdBbGwnOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlfSApICkgewogICAgICAgICRPYmplY3RUeXBlID0gam9pbiAnXycsIHNvcnQgQHsgJFBhcmFte09iamVjdFR5cGV9IH07CiAgICB9CiAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlfSApICkgewogICAgICAgICRPYmplY3RUeXBlID0gJFBhcmFte09iamVjdFR5cGV9OwogICAgfQoKICAgICMgc2V0IGNhY2hlIGtleSBuYW1lc3BhY2UgY29tcG9uZW50IGRlcGVuZGluZyBvbiB0aGUgTmFtZXNwYWNlIHBhcmFtZXRlcgogICAgbXkgJE5hbWVzcGFjZSA9ICdBbGwnOwogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17TmFtZXNwYWNlfSApICkgewogICAgICAgICROYW1lc3BhY2UgPSAkUGFyYW17TmFtZXNwYWNlfTsKICAgIH0KCiAgICBteSAkUmVzdWx0VHlwZSA9ICRQYXJhbXtSZXN1bHRUeXBlfSB8fCAnQVJSQVknOwogICAgJFJlc3VsdFR5cGUgPSAkUmVzdWx0VHlwZSBlcSAnSEFTSCcgPyAnSEFTSCcgOiAnQVJSQVknOwoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgbXkgJENhY2hlS2V5ID0gJ0R5bmFtaWNGaWVsZExpc3Q6OlZhbGlkOjonCiAgICAgICAgLiAkVmFsaWQKICAgICAgICAuICc6Ok9iamVjdFR5cGU6OicKICAgICAgICAuICRPYmplY3RUeXBlCiAgICAgICAgLiAnOjpOYW1lc3BhY2U6OicKICAgICAgICAuICROYW1lc3BhY2UKICAgICAgICAuICc6OlJlc3VsdFR5cGU6OicKICAgICAgICAuICRSZXN1bHRUeXBlOwogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgaWYgKCRDYWNoZSkgewoKICAgICAgICAjIGNoZWNrIGlmIEZpZWxkRmlsdGVyIGlzIG5vdCBzZXQKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtGaWVsZEZpbHRlcn0gKSB7CgogICAgICAgICAgICAjIHJldHVybiByYXcgZGF0YSBmcm9tIGNhY2hlCiAgICAgICAgICAgIHJldHVybiAkQ2FjaGU7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggcmVmICRQYXJhbXtGaWVsZEZpbHRlcn0gbmUgJ0hBU0gnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnRmllbGRGaWx0ZXIgbXVzdCBiZSBhIEhBU0ggcmVmZXJlbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIGFwcGx5IHRoZSBmaWx0ZXIKICAgICAgICBteSAkRmlsdGVyZWREYXRhOwoKICAgICAgICAjIGNoZWNrIGlmIGNhY2hlIGlzIEFSUkFZIHJlZgogICAgICAgIGlmICggJFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgIEZJRUxESUQ6CiAgICAgICAgICAgIGZvciBteSAkRmllbGRJRCAoIEB7JENhY2hlfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRklFTERJRCBpZiAhJEFsbG93ZWRGaWVsZElEc3skRmllbGRJRH07CgogICAgICAgICAgICAgICAgcHVzaCBAeyRGaWx0ZXJlZERhdGF9LCAkRmllbGRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZXR1cm4gZmlsdGVyZWQgZGF0YSBmcm9tIGNhY2hlCiAgICAgICAgICAgIHJldHVybiAkRmlsdGVyZWREYXRhOwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgaXMgYSBIQVNIIHJlZgogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgRklFTERJRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZElEICggc29ydCBrZXlzICV7JENhY2hlfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRklFTERJRCBpZiAhJEFsbG93ZWRGaWVsZElEc3skRmllbGRJRH07CgogICAgICAgICAgICAgICAgJEZpbHRlcmVkRGF0YS0+eyRGaWVsZElEfSA9ICRDYWNoZS0+eyRGaWVsZElEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyByZXR1cm4gZmlsdGVyZWQgZGF0YSBmcm9tIGNhY2hlCiAgICAgICAgcmV0dXJuICRGaWx0ZXJlZERhdGE7CiAgICB9CgogICAgZWxzZSB7CiAgICAgICAgIyBjcmVhdGUgc3FsIHF1ZXJ5CiAgICAgICAgbXkgJFNRTCA9ICdTRUxFQ1QgaWQsIG5hbWUsIGZpZWxkX29yZGVyIEZST00gZHluYW1pY19maWVsZCc7CiAgICAgICAgbXkgQEJpbmQ7CgogICAgICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGNvbGxlY3Qgd2hlcmUgY2xhdXNlcyBpbiBhcnJheSBmb3Igam9pbmluZyB0aGVtIGxhdGVyCiAgICAgICAgbXkgQFdoZXJlQ2xhdXNlczsKCiAgICAgICAgaWYgKCRWYWxpZCkgewoKICAgICAgICAgICAgIyBnZXQgdmFsaWQgb2JqZWN0CiAgICAgICAgICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICAgICAgICAgbXkgQFZhbGlkSURzID0gJFZhbGlkT2JqZWN0LT5WYWxpZElEc0dldCgpOwoKICAgICAgICAgICAgaWYgKEBWYWxpZElEcykgewoKICAgICAgICAgICAgICAgICMgc2V0IG9uZSBxdWVzdGlvbiBtYXJrIGZvciBlYWNoIHZhbGlkIGlkIGluIG9yZGVyIHRvIHVzZSBiaW5kIGFycmF5CiAgICAgICAgICAgICAgICBwdXNoIEBXaGVyZUNsYXVzZXMsICd2YWxpZF9pZCBJTiAoJyAuIGpvaW4oICcsICcsIG1hcCB7Jz8nfSBAVmFsaWRJRHMgKSAuICcpJzsKICAgICAgICAgICAgICAgIHB1c2ggQEJpbmQsICAgICAgICAgbWFwIHsgXCRfIH0gQFZhbGlkSURzOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17T2JqZWN0VHlwZX0gKSB7CgogICAgICAgICAgICAjIGRpZmZlcmVudGlhdGUgd2hldGhlciB3ZSBoYXZlIGFuIG9iamVjdCB0eXBlIHN0cmluZyBvciBhcnJheQogICAgICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlfSApICYmICRQYXJhbXtPYmplY3RUeXBlfSBuZSAnQWxsJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFdoZXJlQ2xhdXNlcywgJ29iamVjdF90eXBlID0gPyc7CiAgICAgICAgICAgICAgICBwdXNoIEBCaW5kLCAgICAgICAgIFwkUGFyYW17T2JqZWN0VHlwZX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlfSApICkgewogICAgICAgICAgICAgICAgcHVzaCBAV2hlcmVDbGF1c2VzLCAnb2JqZWN0X3R5cGUgSU4gKCcgLiBqb2luKCAnLCAnLCBtYXAgeyc/J30gJFBhcmFte09iamVjdFR5cGV9LT5AKiApIC4gJyknOwogICAgICAgICAgICAgICAgcHVzaCBAQmluZCwgICAgICAgICBtYXAgeyBcJF8gfSAkUGFyYW17T2JqZWN0VHlwZX0tPkAqOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17TmFtZXNwYWNlfSAmJiAkUGFyYW17TmFtZXNwYWNlfSBuZSAnQWxsJyApIHsKCiAgICAgICAgICAgICMgc2VsZWN0IGFsbCBmaWVsZHMgd2l0aG91dCBhIG5hbWVzcGFjZQogICAgICAgICAgICBpZiAoICRQYXJhbXtOYW1lc3BhY2V9IGVxICc8bm9uZT4nICkgewogICAgICAgICAgICAgICAgcHVzaCBAV2hlcmVDbGF1c2VzLCAnbmFtZSBOT1QgTElLRSA/JzsKICAgICAgICAgICAgICAgIHB1c2ggQEJpbmQsICAgICAgICAgXCIlLSUiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNlbGVjdCBhbGwgZmllbGRzIG9mIHRoZSBnaXZlbiBuYW1lc3BhY2UKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBXaGVyZUNsYXVzZXMsICduYW1lIExJS0UgPyc7CiAgICAgICAgICAgICAgICBwdXNoIEBCaW5kLCAgICAgICAgIFwiJFBhcmFte05hbWVzcGFjZX0tJSI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChAV2hlcmVDbGF1c2VzKSB7CiAgICAgICAgICAgICRTUUwgLj0gIiBXSEVSRSAiIC4gam9pbiggIiBBTkQgIiwgQFdoZXJlQ2xhdXNlcyApOwogICAgICAgIH0KCiAgICAgICAgJFNRTCAuPSAiIE9SREVSIEJZIGZpZWxkX29yZGVyLCBpZCI7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgPT4gXEBCaW5kLAogICAgICAgICk7CgogICAgICAgIGlmICggJFJlc3VsdFR5cGUgZXEgJ0hBU0gnICkgewogICAgICAgICAgICBteSAlRGF0YTsKCiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJERhdGF7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IGNhY2hlCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgRmllbGRGaWx0ZXIgaXMgbm90IHNldAogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtGaWVsZEZpbHRlcn0gKSB7CgogICAgICAgICAgICAgICAgIyByZXR1cm4gcmF3IGRhdGEgZnJvbSBEQgogICAgICAgICAgICAgICAgcmV0dXJuIFwlRGF0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoIHJlZiAkUGFyYW17RmllbGRGaWx0ZXJ9IG5lICdIQVNIJyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ZpZWxkRmlsdGVyIG11c3QgYmUgYSBIQVNIIHJlZmVyZW5jZSEnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJUZpbHRlcmVkRGF0YTsKICAgICAgICAgICAgRklFTERJRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZElEICggc29ydCBrZXlzICVEYXRhICkgewogICAgICAgICAgICAgICAgbmV4dCBGSUVMRElEIGlmICEkQWxsb3dlZEZpZWxkSURzeyRGaWVsZElEfTsKCiAgICAgICAgICAgICAgICAkRmlsdGVyZWREYXRheyRGaWVsZElEfSA9ICREYXRheyRGaWVsZElEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZXR1cm4gZmlsdGVyZWQgZGF0YSBmcm9tIERCCiAgICAgICAgICAgIHJldHVybiBcJUZpbHRlcmVkRGF0YTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFJvd1swXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgY2FjaGUKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxARGF0YSwKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBpZiBGaWVsZEZpbHRlciBpcyBub3Qgc2V0CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFte0ZpZWxkRmlsdGVyfSApIHsKCiAgICAgICAgICAgICAgICAjIHJldHVybiByYXcgZGF0YSBmcm9tIERCCiAgICAgICAgICAgICAgICByZXR1cm4gXEBEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRQYXJhbXtGaWVsZEZpbHRlcn0gbmUgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnRmllbGRGaWx0ZXIgbXVzdCBiZSBhIEhBU0ggcmVmZXJlbmNlIScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSBARmlsdGVyZWREYXRhOwogICAgICAgICAgICBGSUVMRElEOgogICAgICAgICAgICBmb3IgbXkgJEZpZWxkSUQgKEBEYXRhKSB7CiAgICAgICAgICAgICAgICBuZXh0IEZJRUxESUQgaWYgISRBbGxvd2VkRmllbGRJRHN7JEZpZWxkSUR9OwoKICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkRGF0YSwgJEZpZWxkSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIGZpbHRlcmVkIGRhdGEgZnJvbSBEQgogICAgICAgICAgICByZXR1cm4gXEBGaWx0ZXJlZERhdGE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKPWhlYWQyIER5bmFtaWNGaWVsZExpc3RNYXNrKCkKCnJldHJpZXZlIER5bmFtaWNGaWVsZCBsaXN0IGZyb20gZ2l2ZW4gbWFzayBkZWZpbml0aW9uCgogICAgbXkgJExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0TWFzaygpOwoKb3IKCiAgICBteSAkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgIENvbnRlbnQgICAgPT4gWwogICAgICAgICAgICB7IERGID0+ICdGaWVsZE5hbWUxJyB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBHcmlkID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDIsCiAgICAgICAgICAgICAgICAgICAgUm93cyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgREYgPT4gJ0ZpZWxkTmFtZTInIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICApOwoKUmV0dXJuczoKCiAgICAkTGlzdCA9IFsKICAgICAgICAnSXRlbU9uZScsCiAgICAgICAgJ0l0ZW1Ud28nLAogICAgICAgICdJdGVtVGhyZWUnLAogICAgICAgICdJdGVtRm91cicsCiAgICBdOwoKPWN1dAoKc3ViIER5bmFtaWNGaWVsZExpc3RNYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q29udGVudH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29udGVudCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZXN1bHRUeXBlID0gJFBhcmFte1Jlc3VsdFR5cGV9IHx8ICdBUlJBWSc7CiAgICAkUmVzdWx0VHlwZSA9ICRSZXN1bHRUeXBlIGVxICdIQVNIJyA/ICdIQVNIJyA6ICdBUlJBWSc7CgogICAgIyB0cmFjayBmaWVsZHMgaW4gaGFzaCB0byBhdm9pZCByZXR1cm5pbmcgZHVwbGljYXRlcwogICAgbXkgJURGU2VlbjsKICAgIG15IEBERkxpc3Q7CgogICAgIyBjeWNsZSB0aHJvdWdoIGNvbnRlbnQgcm93cwogICAgQ09OVEVOVEVMRU1FTlQ6CiAgICBmb3IgbXkgJEVsZW1lbnQgKCAkUGFyYW17Q29udGVudH0tPkAqICkgewogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRFbGVtZW50KSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk1pc2NvbmZpZ3VyZWQgRGVmaW5pdGlvbiEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDT05URU5URUxFTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggJEVsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgIG5leHQgQ09OVEVOVEVMRU1FTlQgaWYgJERGU2VlbnsgJEVsZW1lbnQtPntERn0gfSsrOwogICAgICAgICAgICBwdXNoIEBERkxpc3QsICRFbGVtZW50LT57REZ9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRFbGVtZW50LT57R3JpZH0gKSB7CiAgICAgICAgICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJEVsZW1lbnQtPntHcmlkfXtSb3dzfSApICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzY29uZmlndXJlZCBHcmlkIC0gbmVlZCBSb3dzIGFzIEFycmF5ISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRFbGVtZW50LT57R3JpZH17Q29sdW1uc30gIX4gL14wKlsxLTldXGQqJC8gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNjb25maWd1cmVkIEdyaWQgLSBuZWVkIENvbHVtbnMgYXMgaW50ZWdlciA+IDAhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRFbGVtZW50LT57R3JpZH17Um93c30tPkAqICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRSb3dFbGVtZW50ICggJFJvdy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUm93RWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05URU5URUxFTUVOVCBpZiAkREZTZWVueyAkUm93RWxlbWVudC0+e0RGfSB9Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQERGTGlzdCwgJFJvd0VsZW1lbnQtPntERn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQERGTGlzdDsKfQoKPWhlYWQyIER5bmFtaWNGaWVsZExpc3RHZXQoKQoKZ2V0IGxpc3Qgb2YgdmFsaWQgZHluYW1pYyBmaWVsZHMgd2l0aCBjb21wbGV0ZSBkYXRhIG9yZGVyZWQgYnkgdGhlICJGaWVsZCBPcmRlciIgZmllbGQgaW4gdGhlIERCCgogICAgbXkgJExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0OwoKQWRkaXRpb25hbCByZXN0cmljdGlvbnMgY2FuIGJlIGFwcGxpZWQ6CgogICAgbXkgJExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgICA9PiAwLCAgICAgICAgICAgICMgb3B0aW9uYWwsIGRlZmF1bHRzIHRvIDEKCiAgICAgICAgIyBvYmplY3QgIHR5cGUgKG9wdGlvbmFsKSBhcyBTVFJJTkcgb3IgYXMgQVJSQVlSRUYKICAgICAgICAjIFRoZSBzcGVjaWFsIG9iamVjdCB0eXBlICdBbGwnIHBsYWNlcyBubyByZXN0cmljdGlvbiBvbiB0aGUgb2JqZWN0IHR5cGUgd2hlbgogICAgICAgICMgaXQgaXMgcGFzc2VkIGFzIGEgc2luZ2xlIHN0cmluZy4KICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZXQnLCAnQXJ0aWNsZSddLAoKICAgICAgICAjIG9wdGlvbmFsLCBmaWx0ZXIgYnkgbmFtZSBvZiB0aGUgZHluYW1pYyBmaWVsZAogICAgICAgICMgb25seSB0aGUgZmllbGRzIHdoZXJlIHRoZXJlIHRoZSBmaWVsZCBuYW1lIGhhcyBhIHRydWUgdmFsdWUgYXJlIHJldHVybmVkCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gewogICAgICAgICAgICBuYW1lZm9yZmllbGQgPT4gMSwKICAgICAgICAgICAgZmllbGRuYW1lICAgID0+IDIsCiAgICAgICAgICAgIG90aGVyICAgICAgICA9PiAwLAogICAgICAgICAgICBvdGhlcmZpZWxkICAgPT4gMCwKICAgICAgICB9LAogICAgKTsKClJldHVybnM6CgogICAgJExpc3QgPSBbCiAgICAgICAgewogICAgICAgICAgICBJRCAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICduYW1lZm9yZmllbGQnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICdUaGUgbGFiZWwgdG8gc2hvdycsCiAgICAgICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBPYmplY3RUeXBlICAgID0+ICdBcnRpY2xlJywKICAgICAgICAgICAgQ29uZmlnICAgICAgICA9PiAkQ29uZmlnSGFzaFJlZiwKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDExLTAyLTA4IDE1OjA4OjAwJywKICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAnMjAxMS0wNi0xMSAxNzoyMjowMCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIElEICAgICAgICAgICAgPT4gMzIxLAogICAgICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ2ZpZWxkbmFtZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJ0l0IGlzIG5vdCBhIGxhYmVsJywKICAgICAgICAgICAgRmllbGRUeXBlICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxMC0wOS0xMSAxMDowODowMCcsCiAgICAgICAgICAgIENoYW5nZVRpbWUgICAgPT4gJzIwMTEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICBdOwoKPWN1dAoKc3ViIER5bmFtaWNGaWVsZExpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkVmFsaWQgPSAxOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtWYWxpZH0gJiYgJFBhcmFte1ZhbGlkfSBlcSAnMCcgKSB7CiAgICAgICAgJFZhbGlkID0gMDsKICAgIH0KCiAgICAjIHNldCBjYWNoZSBrZXkgb2JqZWN0IHR5cGUgY29tcG9uZW50IGRlcGVuZGluZyBvbiB0aGUgT2JqZWN0VHlwZSBwYXJhbWV0ZXIKICAgIG15IEBPYmplY3RUeXBlczsKICAgIG15ICRPYmplY3RUeXBlQ2FjaGVLZXkgPSAnQWxsJzsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17T2JqZWN0VHlwZX0gKSApIHsKICAgICAgICBAT2JqZWN0VHlwZXMgICAgICAgID0gc29ydCAkUGFyYW17T2JqZWN0VHlwZX0tPkAqOwogICAgICAgICRPYmplY3RUeXBlQ2FjaGVLZXkgPSBqb2luICdfJywgQE9iamVjdFR5cGVzOwogICAgfQogICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17T2JqZWN0VHlwZX0gKSApIHsKICAgICAgICBAT2JqZWN0VHlwZXMgICAgICAgID0gJFBhcmFte09iamVjdFR5cGV9IGVxICdBbGwnID8gKCkgOiAoICRQYXJhbXtPYmplY3RUeXBlfSApOwogICAgICAgICRPYmplY3RUeXBlQ2FjaGVLZXkgPSAkUGFyYW17T2JqZWN0VHlwZX07CiAgICB9CgogICAgIyBnZXQgY2FjaGUgb2JqZWN0CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICBteSAkQ2FjaGVLZXkgPSBqb2luICc6OicsICdEeW5hbWljRmllbGRMaXN0R2V0JywKICAgICAgICBWYWxpZCAgICAgID0+ICRWYWxpZCwKICAgICAgICBPYmplY3RUeXBlID0+ICRPYmplY3RUeXBlQ2FjaGVLZXk7CiAgICBteSAkQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICBpZiAoJENhY2hlKSB7CgogICAgICAgICMgY2hlY2sgaWYgRmllbGRGaWx0ZXIgaXMgbm90IHNldAogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFte0ZpZWxkRmlsdGVyfSApIHsKCiAgICAgICAgICAgICMgcmV0dXJuIHJhdyBkYXRhIGZyb20gY2FjaGUKICAgICAgICAgICAgcmV0dXJuICRDYWNoZTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCByZWYgJFBhcmFte0ZpZWxkRmlsdGVyfSBuZSAnSEFTSCcgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdGaWVsZEZpbHRlciBtdXN0IGJlIGEgSEFTSCByZWZlcmVuY2UhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15IEBGaWx0ZXJlZERhdGE7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoICRDYWNoZS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRQYXJhbXtGaWVsZEZpbHRlcn0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICBwdXNoIEBGaWx0ZXJlZERhdGEsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIHJldHVybiBmaWx0ZXJlZCBkYXRhIGZyb20gY2FjaGUKICAgICAgICByZXR1cm4gXEBGaWx0ZXJlZERhdGE7CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGFzc2VtYmxlIFNRTAogICAgbXkgKCBAV2hlcmVDbGF1c2VzLCBAQmluZHMgKTsKICAgIGlmICgkVmFsaWQpIHsKICAgICAgICBteSAkVmFsaWRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICAgICAgcHVzaCBAV2hlcmVDbGF1c2VzLCBzcHJpbnRmICd2YWxpZF9pZCBJTiAoJXMpJywgam9pbiAnLCAnLCAkVmFsaWRPYmplY3QtPlZhbGlkSURzR2V0OwogICAgfQoKICAgIGlmIChAT2JqZWN0VHlwZXMpIHsKICAgICAgICBteSAlUXVlcnlDb25kaXRpb24gPSAkREJPYmplY3QtPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgID0+ICdvYmplY3RfdHlwZScsCiAgICAgICAgICAgIFZhbHVlcyAgID0+IFxAT2JqZWN0VHlwZXMsCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAV2hlcmVDbGF1c2VzLCAkUXVlcnlDb25kaXRpb257U1FMfTsKICAgICAgICBwdXNoIEBCaW5kcywgICAgICAgICRRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LT5AKjsKICAgIH0KCiAgICBteSAkV2hlcmVTUUwgPSAnJzsKICAgIGlmIChAV2hlcmVDbGF1c2VzKSB7CiAgICAgICAgJFdoZXJlU1FMID0gJ1dIRVJFICcgLiBqb2luICcgQU5EICcsIEBXaGVyZUNsYXVzZXM7CiAgICB9CgogICAgbXkgJFNRTCA9IDw8IkVORF9TUUwiOwpTRUxFQ1QgaWQsIG5hbWUsIGZpZWxkX29yZGVyCiAgRlJPTSBkeW5hbWljX2ZpZWxkCiAgJFdoZXJlU1FMCiAgT1JERVIgQlkgZmllbGRfb3JkZXIsIGlkCkVORF9TUUwKCiAgICByZXR1cm4gdW5sZXNzICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBcQEJpbmRzLAogICAgKTsKCiAgICAjIEZldGNoIGZpcnN0IHRoZSBsaXN0IG9mIElEcywKICAgICMgYXMgRHluYW1pY0ZpZWxkR2V0KCkgbWlnaHQgdXNlIEtlcm5lbGw6OlN5c3RlbTo6REIgYXMgd2VsbAogICAgbXkgQER5bmFtaWNGaWVsZElEczsKICAgIHdoaWxlICggbXkgKCRJRCkgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkSURzLCAkSUQ7CiAgICB9CgogICAgIyBGZXRjaCB0aGUgbGlzdCBvZiBoYXNocmVmcwogICAgbXkgQERhdGEgPSBtYXAgeyAkU2VsZi0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkXyApIH0gQER5bmFtaWNGaWVsZElEczsKCiAgICAjIHNldCBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFxARGF0YSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICk7CgogICAgIyBjaGVjayBpZiBGaWVsZEZpbHRlciBpcyBub3Qgc2V0CiAgICByZXR1cm4gXEBEYXRhIHVubGVzcyBkZWZpbmVkICRQYXJhbXtGaWVsZEZpbHRlcn07CgogICAgIyBjaGVjayBzYW5pdHkgb2YgdGhlIGZpZWxkIG5hbWUgZmlsdGVyCiAgICBpZiAoIHJlZiAkUGFyYW17RmllbGRGaWx0ZXJ9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ZpZWxkRmlsdGVyIG11c3QgYmUgYSBIQVNIIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIEZpbHRlciBieSBkeW5hbWljIGZpZWxkIG5hbWUKICAgIG15ICRGaWx0ZXJlZERhdGE7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoQERhdGEpIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBhcmFte0ZpZWxkRmlsdGVyfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgcHVzaCBAeyRGaWx0ZXJlZERhdGF9LCAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgfQoKICAgICMgcmV0dXJuIGZpbHRlcmVkIGRhdGEgZnJvbSBEQgogICAgcmV0dXJuICRGaWx0ZXJlZERhdGE7Cn0KCj1oZWFkMiBEeW5hbWljRmllbGRPcmRlclJlc2V0KCkKCnNldHMgdGhlIG9yZGVyIG9mIGFsbCBkeW5hbWljIGZpZWxkcyBiYXNlZCBvbiBhIGNvbnNlY3V0aXZlIG51bWJlciBsaXN0IHN0YXJ0aW5nIHdpdGggbnVtYmVyIDEuClRoaXMgZnVuY3Rpb24gd2lsbCByZW1vdmUgZHVwbGljYXRlIG9yZGVyIG51bWJlcnMgYW5kIGdhcHMgaW4gdGhlIG51bWJlcmluZy4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZE9yZGVyUmVzZXQoKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBpbiBjYXNlIG9mIGVycm9yCgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkT3JkZXJSZXNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGFsbCBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJFNlbGYtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgIyB0byBzZXQgdGhlIGZpZWxkIG9yZGVyCiAgICBteSAkQ291bnRlcjsKCiAgICAjIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGR5bmFtaWMgZmllbGRzCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7JER5bmFtaWNGaWVsZExpc3R9ICkgewoKICAgICAgICAjIHByZXBhcmUgdGhlIG5ldyBmaWVsZCBvcmRlcgogICAgICAgICRDb3VudGVyKys7CgogICAgICAgICMgc2tpcCB3cm9uZyBmaWVsZHMgKGlmIGFueSkKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CgogICAgICAgICMgc2tpcCBmaWVsZHMgd2l0aCB0aGUgY29ycmVjdCBvcmRlcgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfSBlcSAkQ291bnRlcjsKCiAgICAgICAgJER5bmFtaWNGaWVsZC0+e0ZpZWxkT3JkZXJ9ID0gJENvdW50ZXI7CgogICAgICAgICMgdXBkYXRlIHRoZSBkYXRhYmFzZQogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAgICAgJXskRHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICBSZW9yZGVyID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgdXBkYXRlIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdBbiBlcnJvciB3YXMgZGV0ZWN0ZWQgd2hpbGUgcmUgb3JkZXJpbmcgdGhlIGZpZWxkIGxpc3Qgb24gZmllbGQgJwogICAgICAgICAgICAgICAgICAgIC4gIkR5bmFtaWNGaWVsZC0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBEeW5hbWljRmllbGRPcmRlckNoZWNrKCkKCmNoZWNrcyBmb3IgZHVwbGljYXRlIG9yZGVyIG51bWJlcnMgYW5kIGdhcHMgaW4gdGhlIG51bWJlcmluZy4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZE9yZGVyQ2hlY2soKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwIGluIGNhc2UgZHVwbGljYXRlcyBvciBnYXBzIGluIHRoZSBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBvcmRlciBudW1iZXJpbmcKCj1jdXQKCnN1YiBEeW5hbWljRmllbGRPcmRlckNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkU2VsZi0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICAjIHRvIGhhZCBhIGNvcnJlY3Qgb3JkZXIgcmVmZXJlbmNlCiAgICBteSAkQ291bnRlcjsKCiAgICAjIGZsYWcgdG8gYmUgYWN0aXZhdGVkIGlmIHRoZSBvcmRlciBpcyBub3QgY29ycmVjdAogICAgbXkgJE9yZGVyRXJyb3I7CgogICAgIyBsb29wIHRocm91Z2ggYWxsIHRoZSBkeW5hbWljIGZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAjIHNraXAgd3JvbmcgZmllbGRzIChpZiBhbnkpCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAjIHNraXAgZmllbGRzIHdpdGggY29ycmVjdCBvcmRlcgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfSBlcSAkQ291bnRlcjsKCiAgICAgICAgIyB3aGVuIGZpbmRpbmcgYSBmaWVsZCB3aXRoIHdyb25nIG9yZGVyLCBzZXQgT3JkZXJFcnJvciBmbGFnIGFuZCBleGl0IGxvb3AKICAgICAgICAkT3JkZXJFcnJvciA9IDE7CiAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICB9CgogICAgcmV0dXJuIGlmICRPcmRlckVycm9yOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgT2JqZWN0TWFwcGluZ0dldCgpCgooYSkgRmV0Y2hlcyBvYmplY3QgSUQocykgZm9yIGdpdmVuIG9iamVjdCBuYW1lKHMpLgooYikgRmV0Y2hlcyBvYmplY3QgbmFtZShzKSBmb3IgZ2l2ZW4gb2JqZWN0IElEKHMpLgoKTk9URTogT25seSB1c2Ugb2JqZWN0IG1hcHBpbmdzIGZvciBkeW5hbWljIGZpZWxkcyB0aGF0IG11c3Qgc3VwcG9ydCBub24taW50ZWdlciBvYmplY3QgSURzLApsaWtlIGN1c3RvbWVyIHVzZXIgbG9naW5zIGFuZCBjdXN0b21lciBjb21wYW55IElEcy4KCiAgICBteSAkT2JqZWN0TWFwcGluZyA9ICREeW5hbWljRmllbGRPYmplY3QtPk9iamVjdE1hcHBpbmdHZXQoCiAgICAgICAgT2JqZWN0TmFtZSAgICAgICAgICAgID0+ICRPYmplY3ROYW1lLCAgICAjIE5hbWUgb3IgYXJyYXkgcmVmIG9mIG5hbWVzIG9mIHRoZSBvYmplY3QocykgdG8gZ2V0IHRoZSBJRChzKSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90ZTogZWl0aGVyIGdpdmUgT2JqZWN0TmFtZSBvciBPYmplY3RJRAogICAgICAgIE9iamVjdElEICAgICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgIyBJRCBvciBhcnJheSByZWYgb2YgSURzIG9mIHRoZSBvYmplY3QocykgdG8gZ2V0IHRoZSBuYW1lKHMpIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3RlOiBlaXRoZXIgZ2l2ZSBPYmplY3ROYW1lIG9yIE9iamVjdElECiAgICAgICAgT2JqZWN0VHlwZSAgICAgICAgICAgID0+ICdDdXN0b21lclVzZXInLCAjIFR5cGUgb2Ygb2JqZWN0IHRvIGdldCBtYXBwaW5nIGZvcgogICAgKTsKClJldHVybnMgZm9yIHBhcmFtZXRlciBPYmplY3RJRDoKCiAgICAkT2JqZWN0TWFwcGluZyA9IHsKICAgICAgICBPYmplY3RJRCA9PiBPYmplY3ROYW1lLAogICAgICAgIE9iamVjdElEID0+IE9iamVjdE5hbWUsCiAgICAgICAgT2JqZWN0SUQgPT4gT2JqZWN0TmFtZSwKICAgICAgICAjIC4uLgogICAgfTsKClJldHVybnMgZm9yIHBhcmFtZXRlciBPYmplY3ROYW1lOgoKICAgICRPYmplY3RNYXBwaW5nID0gewogICAgICAgIE9iamVjdE5hbWUgPT4gT2JqZWN0SUQsCiAgICAgICAgT2JqZWN0TmFtZSA9PiBPYmplY3RJRCwKICAgICAgICBPYmplY3ROYW1lID0+IE9iamVjdElELAogICAgICAgICMgLi4uCiAgICB9OwoKPWN1dAoKc3ViIE9iamVjdE1hcHBpbmdHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBPYmplY3RUeXBlICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtPYmplY3ROYW1lfSAmJiAkUGFyYW17T2JqZWN0SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRWl0aGVyIGdpdmUgcGFyYW1ldGVyIE9iamVjdE5hbWUgb3IgT2JqZWN0SUQsIG5vdCBib3RoLiIKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhJFBhcmFte09iamVjdE5hbWV9ICYmICEkUGFyYW17T2JqZWN0SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiWW91IGhhdmUgdG8gZ2l2ZSBwYXJhbWV0ZXIgT2JqZWN0TmFtZSBvciBPYmplY3RJRC4iCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgR2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgb2JqZWN0IHR5cGUKICAgIG15ICRDb25maWcgICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgiRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZSIpIHx8IHt9OwogICAgbXkgJE9iamVjdFR5cGVzQ29uZmlnID0gJENvbmZpZy0+eyAkUGFyYW17T2JqZWN0VHlwZX0gfTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT2JqZWN0VHlwZXNDb25maWcpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ29uZmlndXJhdGlvbiBmb3IgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZSAkUGFyYW17T2JqZWN0VHlwZX0gaXMgaW52YWxpZCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICEkT2JqZWN0VHlwZXNDb25maWctPntVc2VPYmplY3ROYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGUgJFBhcmFte09iamVjdFR5cGV9IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmdW5jdGlvbiIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRUeXBlID0gJFBhcmFte09iamVjdE5hbWV9ID8gJ09iamVjdE5hbWUnIDogJ09iamVjdElEJzsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRUeXBlfSApICkgewogICAgICAgICRQYXJhbXskVHlwZX0gPSBbCiAgICAgICAgICAgICRQYXJhbXskVHlwZX0sCiAgICAgICAgXTsKICAgIH0KICAgIG15ICVMb29rdXBWYWx1ZXMgPSBtYXAgeyAkXyA9PiAnPycgfSAkUGFyYW17JFR5cGV9LT5AKjsKCiAgICBteSAkQ2FjaGVLZXkgPSAnT2JqZWN0TWFwcGluZ0dldDo6JwogICAgICAgIC4gJFR5cGUgLiAnOjonCiAgICAgICAgLiAoIGpvaW4gJywnLCBzb3J0IGtleXMgJUxvb2t1cFZhbHVlcyApIC4gJzo6JwogICAgICAgIC4gJFBhcmFte09iamVjdFR5cGV9OwogICAgbXkgJENhY2hlVHlwZSA9ICdEeW5hbWljRmllbGRPYmplY3RNYXBwaW5nJyAuICRUeXBlOwoKICAgICMgR2V0IGNhY2hlIG9iamVjdC4KICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgbXkgJENhY2hlICAgICAgID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAkQ2FjaGVUeXBlLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgKTsKCiAgICByZXR1cm4gJENhY2hlIGlmIElzSGFzaFJlZldpdGhEYXRhKCRDYWNoZSk7CgogICAgbXkgJFNRTDsKICAgIGlmICggJFR5cGUgZXEgJ09iamVjdElEJyApIHsKICAgICAgICAkU1FMID0gJwogICAgICAgICAgICBTRUxFQ1Qgb2JqZWN0X2lkLCBvYmplY3RfbmFtZQogICAgICAgICAgICBGUk9NICBkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lCiAgICAgICAgICAgIFdIRVJFIG9iamVjdF9pZCBJTiAoJyAuICggam9pbiAnLCAnLCB2YWx1ZXMgJUxvb2t1cFZhbHVlcyApIC4gJykKICAgICAgICAgICAgICAgIEFORCBvYmplY3RfdHlwZSA9ID8nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNRTCA9ICcKICAgICAgICAgICAgU0VMRUNUIG9iamVjdF9uYW1lLCBvYmplY3RfaWQKICAgICAgICAgICAgRlJPTSBkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lCiAgICAgICAgICAgIFdIRVJFIG9iamVjdF9uYW1lIElOICgnIC4gKCBqb2luICcsICcsIHZhbHVlcyAlTG9va3VwVmFsdWVzICkgLiAnKQogICAgICAgICAgICAgICAgQU5EIG9iamVjdF90eXBlID0gPyc7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIHVubGVzcyAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBca2V5cyAlTG9va3VwVmFsdWVzLCAgICAjIGNyZWF0ZXMgYSBsaXN0IG9mIHJlZmVyZW5jZXMKICAgICAgICAgICAgXCRQYXJhbXtPYmplY3RUeXBlfSwKICAgICAgICBdLAogICAgKTsKCiAgICBteSAlT2JqZWN0TWFwcGluZzsKICAgIHdoaWxlICggbXkgKCAkS2V5LCAkVmFsdWUgKSA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICAkT2JqZWN0TWFwcGluZ3skS2V5fSA9ICRWYWx1ZTsKICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgbXkgJENhY2hlVFRMID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGQ6OkNhY2hlVFRMJykgfHwgNjAgKiA2MCAqIDEyOwogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJENhY2hlVHlwZSwKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVPYmplY3RNYXBwaW5nLAogICAgICAgIFRUTCAgID0+ICRDYWNoZVRUTCwKICAgICk7CgogICAgcmV0dXJuIFwlT2JqZWN0TWFwcGluZzsKfQoKPWhlYWQyIE9iamVjdE1hcHBpbmdDcmVhdGUoKQoKQ3JlYXRlcyBhbiBvYmplY3QgbWFwcGluZyBmb3IgdGhlIGdpdmVuIGdpdmVuIG9iamVjdCBuYW1lLgoKTk9URTogT25seSB1c2Ugb2JqZWN0IG1hcHBpbmdzIGZvciBkeW5hbWljIGZpZWxkcyB0aGF0IG11c3Qgc3VwcG9ydCBub24taW50ZWdlciBvYmplY3QgSURzLApsaWtlIGN1c3RvbWVyIHVzZXIgbG9naW5zIGFuZCBjdXN0b21lciBjb21wYW55IElEcy4KCiAgICBteSAkT2JqZWN0SUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5PYmplY3RNYXBwaW5nQ3JlYXRlKAogICAgICAgIE9iamVjdE5hbWUgPT4gJ2N1c3RvbWVyLTEnLCAgICMgTmFtZSBvZiB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgbWFwcGluZyBmb3IKICAgICAgICBPYmplY3RUeXBlID0+ICdDdXN0b21lclVzZXInLCAjIFR5cGUgb2Ygb2JqZWN0IHRvIGNyZWF0ZSB0aGUgbWFwcGluZyBmb3IKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0TWFwcGluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIE9iamVjdE5hbWUgT2JqZWN0VHlwZSApKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JE5lZWRlZH0gfHwgIWxlbmd0aCAkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgb2JqZWN0IHR5cGUKICAgIG15ICRDb25maWcgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZSIpIHx8IHt9OwogICAgbXkgJE9iamVjdFR5cGVzQ29uZmlnID0gJENvbmZpZy0+eyAkUGFyYW17T2JqZWN0VHlwZX0gfTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT2JqZWN0VHlwZXNDb25maWcpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ29uZmlndXJhdGlvbiBmb3IgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZSAkUGFyYW17T2JqZWN0VHlwZX0gaXMgaW52YWxpZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggISRPYmplY3RUeXBlc0NvbmZpZy0+e1VzZU9iamVjdE5hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZSAkUGFyYW17T2JqZWN0VHlwZX0gZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZ1bmN0aW9uIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lCiAgICAgICAgICAgICAgICAob2JqZWN0X25hbWUsIG9iamVjdF90eXBlKQogICAgICAgICAgICBWQUxVRVMKICAgICAgICAgICAgICAgICg/LCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17T2JqZWN0TmFtZX0sCiAgICAgICAgICAgIFwkUGFyYW17T2JqZWN0VHlwZX0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIG9iamVjdF9pZAogICAgICAgICAgICBGUk9NIGR5bmFtaWNfZmllbGRfb2JqX2lkX25hbWUKICAgICAgICAgICAgV0hFUkUgb2JqZWN0X25hbWUgPSA/CiAgICAgICAgICAgICAgICBBTkQgb2JqZWN0X3R5cGUgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtPYmplY3ROYW1lfSwKICAgICAgICAgICAgXCRQYXJhbXtPYmplY3RUeXBlfSwKICAgICAgICBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRPYmplY3RJRDsKICAgIHdoaWxlICggbXkgQERhdGEgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkT2JqZWN0SUQgPSAkRGF0YVswXTsKICAgIH0KCiAgICByZXR1cm4gJE9iamVjdElEOwp9Cgo9aGVhZDIgT2JqZWN0TWFwcGluZ05hbWVDaGFuZ2UoKQoKQ2hhbmdlcyBuYW1lIG9mIGdpdmVuIG9iamVjdCBtYXBwaW5nLgoKTk9URTogT25seSB1c2Ugb2JqZWN0IG1hcHBpbmdzIGZvciBkeW5hbWljIGZpZWxkcyB0aGF0IG11c3Qgc3VwcG9ydCBub24taW50ZWdlciBvYmplY3QgSURzLApsaWtlIGN1c3RvbWVyIHVzZXIgbG9naW5zIGFuZCBjdXN0b21lciBjb21wYW55IElEcy4KCgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5PYmplY3RNYXBwaW5nTmFtZUNoYW5nZSgKICAgICAgICBPbGRPYmplY3ROYW1lID0+ICdjdXN0b21lci0xJywKICAgICAgICBOZXdPYmplY3ROYW1lID0+ICdjdXN0b21lci0yJywKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdDdXN0b21lclVzZXInLCAjIFR5cGUgb2Ygb2JqZWN0IHRvIGNoYW5nZSBuYW1lIGZvcgogICAgKTsKCiAgICBSZXR1cm5zIDEgb24gc3VjY2Vzcy4KCj1jdXQKCnN1YiBPYmplY3RNYXBwaW5nTmFtZUNoYW5nZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIE9sZE9iamVjdE5hbWUgTmV3T2JqZWN0TmFtZSBPYmplY3RUeXBlICkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskTmVlZGVkfSB8fCAhbGVuZ3RoICRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBHZXQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBvYmplY3QgdHlwZQogICAgbXkgJENvbmZpZyAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlIikgfHwge307CiAgICBteSAkT2JqZWN0VHlwZXNDb25maWcgPSAkQ29uZmlnLT57ICRQYXJhbXtPYmplY3RUeXBlfSB9OwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRPYmplY3RUeXBlc0NvbmZpZykgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb25maWd1cmF0aW9uIGZvciBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlICRQYXJhbXtPYmplY3RUeXBlfSBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhJE9iamVjdFR5cGVzQ29uZmlnLT57VXNlT2JqZWN0TmFtZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlICRQYXJhbXtPYmplY3RUeXBlfSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZnVuY3Rpb24iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lCiAgICAgICAgICAgIFNFVCBvYmplY3RfbmFtZSA9ID8KICAgICAgICAgICAgV0hFUkUgb2JqZWN0X25hbWUgPSA/CiAgICAgICAgICAgICAgICBBTkQgb2JqZWN0X3R5cGUgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOZXdPYmplY3ROYW1lfSwKICAgICAgICAgICAgXCRQYXJhbXtPbGRPYmplY3ROYW1lfSwKICAgICAgICAgICAgXCRQYXJhbXtPYmplY3RUeXBlfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIENsZWFuIHVwIGNhY2hlIGZvciB0eXBlIER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0TmFtZS4KICAgICMgQSBjbGVhbnVwIGJhc2VkIG9uIHRoZSBjaGFuZ2VkIG9iamVjdCBuYW1lIGlzIG5vdCBwb3NzaWJsZS4KICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZE9iamVjdE1hcHBpbmdPYmplY3RJRCcsCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZE9iamVjdE1hcHBpbmdPYmplY3ROYW1lJywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBERVNUUk9ZIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBleGVjdXRlIGFsbCB0cmFuc2FjdGlvbiBldmVudHMKICAgICRTZWxmLT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgR2V0VmFsaWREeW5hbWljRmllbGRzKCkKClJldHVybnMgYSBsaXN0IG9mIHZhbGlkIGR5bmFtaWMgZmllbGRzLgoKICAgIG15ICREeW5hbWljRmllbGRzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+R2V0VmFsaWREeW5hbWljRmllbGRzKAoKICAgICAgICAjIG9iamVjdCAgdHlwZSAob3B0aW9uYWwpIGFzIFNUUklORyBvciBhcyBBUlJBWVJFRgogICAgICAgICMgVGhlIHNwZWNpYWwgb2JqZWN0IHR5cGUgJ0FsbCcgcGxhY2VzIG5vIHJlc3RyaWN0aW9uIG9uIHRoZSBvYmplY3QgdHlwZSB3aGVuCiAgICAgICAgIyBpdCBpcyBwYXNzZWQgYXMgYSBzaW5nbGUgc3RyaW5nLgogICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCcsICdBcnRpY2xlJ10sCgogICAgICAgICMgb3B0aW9uYWwsIGZpbHRlciBieSBuYW1lIG9mIHRoZSBkeW5hbWljIGZpZWxkCiAgICAgICAgIyBvbmx5IHRoZSBmaWVsZHMgd2hlcmUgdGhlcmUgdGhlIGZpZWxkIG5hbWUgaGFzIGEgdHJ1ZSB2YWx1ZSBhcmUgcmV0dXJuZWQKICAgICAgICBGaWVsZEZpbHRlciA9PiB7CiAgICAgICAgICAgIG5hbWVmb3JmaWVsZCA9PiAxLAogICAgICAgICAgICBmaWVsZG5hbWUgICAgPT4gMiwKICAgICAgICAgICAgb3RoZXIgICAgICAgID0+IDAsCiAgICAgICAgICAgIG90aGVyZmllbGQgICA9PiAwLAogICAgICAgIH0sCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkRHluYW1pY0ZpZWxkcyA9IHsKICAgICAgICAnRmllbGQxJyA9PiAnRmllbGQgMScsCiAgICAgICAgJ0ZpZWxkMicgPT4gJ0ZpZWxkMicsCiAgICB9OwoKPWN1dAoKc3ViIEdldFZhbGlkRHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICREeW5hbWljRmllbGRWYWxpZCA9ICRDb25maWdPYmplY3QtPkdldCgnWm51bnk0T1RPQk9BZHZhbmNlZER5bmFtaWNGaWVsZHM6OkR5bmFtaWNGaWVsZFZhbGlkJyk7CgogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkU2VsZi0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgVmFsaWQgICAgICA9PiAkRHluYW1pY0ZpZWxkVmFsaWQsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRzID0ge307CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAkRHluYW1pY0ZpZWxkcy0+eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGQtPntMYWJlbH07CiAgICB9CgogICAgcmV0dXJuICREeW5hbWljRmllbGRzOwp9Cgo9aGVhZDIgRHluYW1pY0ZpZWxkQ29uZmlnTmFtZTJJRCgpCgpUcmFuc2Zvcm1hdGlvbnMgb2YgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlnIG5lZWRlZCBmb3IgSW1wb3J0LCB3aGljaCBpbmNsdWRlcyB0cmFuc2l0aW9uaW5nIG5hbWVzIGluIGZpZWxkIGNvbmZpZ3MgaW50byBJRHMuCk5vdGUgdGhhdCB0aGUgcGFzc2VkIGluIGR5bmFtaWMgZmllbGQgY29uZmlnIGlzIG1vZGlmaWVkIGluIHBsYWNlLgoKICAgICRGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZENvbmZpZ05hbWUySUQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRGaWVsZENvbmZpZywKICAgICk7Cgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkQ29uZmlnTmFtZTJJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBEeW5hbWljRmllbGRDb25maWchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgaWYgKCBncmVwIHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJF8gfSBxdyhBZ2VudCBDb25maWdJdGVtIENvbmZpZ0l0ZW1WZXJzaW9uIEN1c3RvbWVyQ29tcGFueSBDdXN0b21lclVzZXIgRkFRIFRpY2tldCkgKSB7CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBOYW1lIC0+IElECiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gKSB7CiAgICAgICAgICAgIG15IEBRdWV1ZUlEczsKICAgICAgICAgICAgZm9yIG15ICRRdWV1ZU5hbWUgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAUXVldWVJRHMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5RdWV1ZUxvb2t1cCggUXVldWUgPT4gJFF1ZXVlTmFtZSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfSA9IFxAUXVldWVJRHM7CiAgICAgICAgfQogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgIG15IEBUeXBlSURzOwogICAgICAgICAgICBmb3IgbXkgJFR5cGVOYW1lICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAVHlwZUlEcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxvb2t1cCggVHlwZUlEID0+ICRUeXBlTmFtZSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ID0gXEBUeXBlSURzOwogICAgICAgIH0KICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSApIHsKICAgICAgICAgICAgbXkgJUNsYXNzTmFtZTJJRCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB9OwogICAgICAgICAgICBteSBAQ2xhc3NJRHMgPSBtYXAKICAgICAgICAgICAgICAgIHsgJENsYXNzTmFtZTJJRHskX30gfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntDbGFzc0lEc30tPkAqOwogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317RmllbGRUeXBlfSBlcSAnTGVucycgKSB7CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBOYW1lIC0+IElECiAgICAgICAgbXkgJEF0dHJpYnV0ZURGID0gJFNlbGYtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9ID0gJEF0dHJpYnV0ZURGLT57SUR9OwogICAgICAgIG15ICRSZWZlcmVuY2VERiA9ICRTZWxmLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e0lEfTsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307Cn0KCj1oZWFkMiBEeW5hbWljRmllbGRDb25maWdJRDJOYW1lKCkKClRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgbmVlZGVkIGZvciBJbXBvcnQvRXhwb3J0LCB3aGljaCBpbmNsdWRlcyB0cmFuc2l0aW9uaW5nIElEcyBpbiBmaWVsZCBjb25maWdzIGludG8gbmFtZXMuCk5vdGUgdGhhdCB0aGUgcGFzc2VkIGluIGR5bmFtaWMgZmllbGQgY29uZmlnIGlzIG1vZGlmaWVkIGluIHBsYWNlLgoKICAgICRGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZENvbmZpZ0lEMk5hbWUoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRGaWVsZENvbmZpZywKICAgICk7Cgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkQ29uZmlnSUQyTmFtZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBEeW5hbWljRmllbGRDb25maWchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgaWYgKCBncmVwIHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJF8gfSBxdyhBZ2VudCBDb25maWdJdGVtIENvbmZpZ0l0ZW1WZXJzaW9uIEN1c3RvbWVyQ29tcGFueSBDdXN0b21lclVzZXIgRkFRIFRpY2tldCkgKSB7CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBJRCAtPiBOYW1lCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gKSB7CiAgICAgICAgICAgIG15IEBRdWV1ZU5hbWVzOwogICAgICAgICAgICBmb3IgbXkgJFF1ZXVlSUQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAUXVldWVOYW1lcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlTG9va3VwKCBRdWV1ZUlEID0+ICRRdWV1ZUlEICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ID0gXEBRdWV1ZU5hbWVzOwogICAgICAgIH0KICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ICkgewogICAgICAgICAgICBteSBAVHlwZU5hbWVzOwogICAgICAgICAgICBmb3IgbXkgJFR5cGVJRCAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFR5cGVOYW1lcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxvb2t1cCggVHlwZUlEID0+ICRUeXBlSUQgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfSA9IFxAVHlwZU5hbWVzOwogICAgICAgIH0KICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSApIHsKICAgICAgICAgICAgbXkgJUNsYXNzSUQyTmFtZSA9ICV7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgfTsKICAgICAgICAgICAgbXkgQENsYXNzTmFtZXMgPSBtYXAKICAgICAgICAgICAgICAgIHsgJENsYXNzSUQyTmFtZXskX30gfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntDbGFzc0lEc30tPkAqOwogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gPSBcQENsYXNzTmFtZXM7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtGaWVsZFR5cGV9IGVxICdMZW5zJyApIHsKCiAgICAgICAgIyBuZWVkZWQgdHJhbnNmb3JtYXRpb246IElEIC0+IE5hbWUKICAgICAgICBteSAkQXR0cmlidXRlREYgPSAkU2VsZi0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBJRCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9ID0gJEF0dHJpYnV0ZURGLT57TmFtZX07CiAgICAgICAgbXkgJFJlZmVyZW5jZURGID0gJFNlbGYtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e05hbWV9OwogICAgfQoKICAgIHJldHVybiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWN1dAoKPWhlYWQyIF9EeW5hbWljRmllbGRSZW9yZGVyKCkKCnJlLW9yZGVyIHRoZSBsaXN0IG9mIGZpZWxkcy4KCiAgICAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPl9EeW5hbWljRmllbGRSZW9yZGVyKAogICAgICAgIElEICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIHRoZSBmaWVsZCBJRCB0aGF0IHRyaWdnZXJzIHRoZSByZS1vcmRlcgogICAgICAgIE1vZGUgICAgICAgPT4gJ0FkZCcsICAgICAgICAgICAgIyB8fCBVcGRhdGUgfHwgRGVsZXRlCiAgICAgICAgRmllbGRPcmRlciA9PiAyLCAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgdGhlIEZpZWxkT3JkZXIgZnJvbSB0aGUgdHJpZ2dlciBmaWVsZAogICAgKTsKCiAgICAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPl9EeW5hbWljRmllbGRSZW9yZGVyKAogICAgICAgIElEICAgICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgIyBtYW5kYXRvcnksIHRoZSBmaWVsZCBJRCB0aGF0IHRyaWdnZXJzIHRoZSByZS1vcmRlcgogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ1VwZGF0ZScsICAgICAgIyB8fCBVcGRhdGUgfHwgRGVsZXRlCiAgICAgICAgRmllbGRPcmRlciAgICA9PiAyLCAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgdGhlIEZpZWxkT3JkZXIgZnJvbSB0aGUgdHJpZ2dlciBmaWVsZAogICAgICAgIE9sZEZpZWxkT3JkZXIgPT4gMTAsICAgICAgICAgICAgIyBtYW5kYXRvcnkgZm9yIE1vZGUgPSAnVXBkYXRlJywgdGhlIEZpZWxkT3JkZXIgYmVmb3JlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUKICAgICk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZFJlb3JkZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KElEIEZpZWxkT3JkZXIgTW9kZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkICROZWVkZWQhJwogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdVcGRhdGUnICkgewoKICAgICAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgICAgIGlmICggISRQYXJhbXtPbGRGaWVsZE9yZGVyfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2xkRmllbGRPcmRlciEnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIER5bmFtaWMgRmllbGQgdHJpZ2dlcgogICAgbXkgJER5bmFtaWNGaWVsZFRyaWdnZXIgPSAkU2VsZi0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtJRH0sCiAgICApOwoKICAgICMgZXh0cmFjdCB0aGUgZmllbGQgb3JkZXIgZnJvbSB0aGUgcGFyYW1zCiAgICBteSAkVHJpZ2dlckZpZWxkT3JkZXIgPSAkUGFyYW17RmllbGRPcmRlcn07CgogICAgIyBnZXQgYWxsIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkU2VsZi0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSBmaWVsZHMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQKICAgIG15IEBOZWVkVG9VcGRhdGVMaXN0OwoKICAgICMgdG8gYWRkIG9yIHN1YnRyYWN0IHRoZSBmaWVsZCBvcmRlciBieSAxCiAgICBteSAkU3Vic3RyYWN0OwoKICAgICMgdXBkYXRlIGFuZCBhZGQgaGFzIGRpZmZlcmVudCBhbGdvcml0aG1zIHRvIHNlbGVjdCB0aGUgZmllbGRzIHRvIGJlIHVwZGF0ZWQKICAgICMgY2hlY2sgaWYgdXBkYXRlCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnVXBkYXRlJyApIHsKICAgICAgICBteSAkT2xkRmllbGRPcmRlciA9ICRQYXJhbXtPbGRGaWVsZE9yZGVyfTsKCiAgICAgICAgIyBpZiB0aGUgbmV3IG9yZGVyIGFuZCB0aGUgb2xkIG9yZGVyIGFyZSBlcXVhbCBubyBvcGVyYXRpb24gc2hvdWxkIGJlIHBlcmZvcm1lZAogICAgICAgICMgdGhpcyBpcyBhIGRvdWJsZSBjaGVjayBmcm9tIER5bmFtaWNGaWVsZFVwZGF0ZSAoaXMgY2FzZSBvZiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkCiAgICAgICAgIyBmcm9tIG91dHNpZGUpCiAgICAgICAgcmV0dXJuIGlmICRUcmlnZ2VyRmllbGRPcmRlciBlcSAkT2xkRmllbGRPcmRlcjsKCiAgICAgICAgIyBzZXQgc3VidHJhY3QgbW9kZSBmb3Igc2VsZWN0ZWQgZmllbGRzCiAgICAgICAgaWYgKCAkVHJpZ2dlckZpZWxkT3JkZXIgPiAkT2xkRmllbGRPcmRlciApIHsKICAgICAgICAgICAgJFN1YnN0cmFjdCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGlkZW50aWZ5IGZpZWxkcyB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgICAgICMgc2tpcCB3cm9uZyBmaWVsZHMgKGlmIGFueSkKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAgICAgbXkgJEN1cnJlbnRPcmRlciA9ICREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfTsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgd2l0aCBsb3dlciBvcmRlciBudW1iZXIKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQKICAgICAgICAgICAgICAgIGlmICRDdXJyZW50T3JkZXIgPCAkT2xkRmllbGRPcmRlciAmJiAkQ3VycmVudE9yZGVyIDwgJFRyaWdnZXJGaWVsZE9yZGVyOwoKICAgICAgICAgICAgIyBza2lwIHRyaWdnZXIgZmllbGQKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQKICAgICAgICAgICAgICAgIGlmICggJEN1cnJlbnRPcmRlciBlcSAkVHJpZ2dlckZpZWxkT3JkZXIgJiYgJER5bmFtaWNGaWVsZC0+e0lEfSBlcSAkUGFyYW17SUR9ICk7CgogICAgICAgICAgICAjIHNraXAgdGhpcyBhbmQgdGhlIHJlc3QgaWYgaGFzIGdyZWF0ZXIgb3JkZXIgbnVtYmVyCiAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxECiAgICAgICAgICAgICAgICBpZiAkQ3VycmVudE9yZGVyID4gJE9sZEZpZWxkT3JkZXIgJiYgJEN1cnJlbnRPcmRlciA+ICRUcmlnZ2VyRmllbGRPcmRlcjsKCiAgICAgICAgICAgIHB1c2ggQE5lZWRUb1VwZGF0ZUxpc3QsICREeW5hbWljRmllbGQ7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZGVsZXRlIGFjdGlvbgogICAgZWxzaWYgKCAkUGFyYW17TW9kZX0gZXEgJ0RlbGV0ZScgKSB7CgogICAgICAgICRTdWJzdHJhY3QgPSAxOwoKICAgICAgICAjIGlkZW50aWZ5IGZpZWxkcyB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgICAgICMgc2tpcCB3cm9uZyBmaWVsZHMgKGlmIGFueSkKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAgICAgbXkgJEN1cnJlbnRPcmRlciA9ICREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfTsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgd2l0aCBsb3dlciBvcmRlciBudW1iZXIKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQKICAgICAgICAgICAgICAgIGlmICRDdXJyZW50T3JkZXIgPCAkVHJpZ2dlckZpZWxkT3JkZXI7CgogICAgICAgICAgICAjIHNraXAgdHJpZ2dlciBmaWVsZAogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRAogICAgICAgICAgICAgICAgaWYgKCAkQ3VycmVudE9yZGVyIGVxICRUcmlnZ2VyRmllbGRPcmRlciAmJiAkRHluYW1pY0ZpZWxkLT57SUR9IGVxICRQYXJhbXtJRH0gKTsKCiAgICAgICAgICAgIHB1c2ggQE5lZWRUb1VwZGF0ZUxpc3QsICREeW5hbWljRmllbGQ7CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGlzIGFkZCBhY3Rpb24KICAgIGVsc2UgewoKICAgICAgICAjIGlkZW50aWZ5IGZpZWxkcyB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgICAgICMgc2tpcCB3cm9uZyBmaWVsZHMgKGlmIGFueSkKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAgICAgbXkgJEN1cnJlbnRPcmRlciA9ICREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfTsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgd2l0aCBsb3dlciBvcmRlciBudW1iZXIKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQKICAgICAgICAgICAgICAgIGlmICRDdXJyZW50T3JkZXIgPCAkVHJpZ2dlckZpZWxkT3JkZXI7CgogICAgICAgICAgICAjIHNraXAgdHJpZ2dlciBmaWVsZAogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRAogICAgICAgICAgICAgICAgaWYgKCAkQ3VycmVudE9yZGVyIGVxICRUcmlnZ2VyRmllbGRPcmRlciAmJiAkRHluYW1pY0ZpZWxkLT57SUR9IGVxICRQYXJhbXtJRH0gKTsKCiAgICAgICAgICAgIHB1c2ggQE5lZWRUb1VwZGF0ZUxpc3QsICREeW5hbWljRmllbGQ7CiAgICAgICAgfQogICAgfQoKICAgICMgdXBkYXRlIHRoZSBmaWVsZHMgb3JkZXIgaW5jcmVtZW50aW5nIG9yIGRlY3JlbWVudGluZyBieSAxCiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoQE5lZWRUb1VwZGF0ZUxpc3QpIHsKCiAgICAgICAgIyBoYXNoIHJlZiB2YWxpZGF0aW9uIGlzIG5vdCBuZWVkZWQgc2luY2UgaXQgd2FzIHZhbGlkYXRlZCBiZWZvcmUKICAgICAgICAjIGNoZWNrIGlmIG5lZWQgdG8gYWRkIG9yIHN1YnRyYWN0CiAgICAgICAgaWYgKCRTdWJzdHJhY3QpIHsKCiAgICAgICAgICAgICMgc3VidHJhY3QgMSB0byB0aGUgZHluYW1pYyBmaWVsZCBvcmRlciB2YWx1ZQogICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57RmllbGRPcmRlcn0tLTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGFkZCAxIHRvIHRoZSBkeW5hbWljIGZpZWxkIG9yZGVyIHZhbHVlCiAgICAgICAgICAgICREeW5hbWljRmllbGQtPntGaWVsZE9yZGVyfSsrOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFiYXNlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICAleyREeW5hbWljRmllbGR9LAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIFJlb3JkZXIgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZSB1cGRhdGUgd2FzIHN1Y2Nlc3NmdWwKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0FuIGVycm9yIHdhcyBkZXRlY3RlZCB3aGlsZSByZSBvcmRlcmluZyB0aGUgZmllbGQgbGlzdCBvbiBmaWVsZCAnCiAgICAgICAgICAgICAgICAgICAgLiAiJER5bmFtaWNGaWVsZC0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9ZW5kIEludGVybmFsOgoKPWN1dAoKMTsK</File>
        <File Location="Custom/Kernel/System/DynamicField/Driver/Lens.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojICRvcmlnaW46IG90b2JvIC0gNDBmODZmNTU3NGMxOGFhODQ1ZmNlNjA2ZDQyMTcyNDIzMTE1NzVkZiAtIEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9MZW5zLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpCYXNlKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50Cik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zIC0gZHJpdmVyIGZvciB0aGUgTGVucyBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFjY2VzcyB0byBhbiBhdHRyaWJ1dGUgb2YgYSByZWZlcmVuY2VkIG9iamVjdC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgpUaGlzIGR5bmFtaWMgZmllbGQgZHJpdmVyIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIEw8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uClBsZWFzZSBsb29rIHRoZXJlIGZvciBhIGRldGFpbGVkIHJlZmVyZW5jZSBvZiB0aGUgZnVuY3Rpb25zLgoKPWhlYWQyIG5ldygpCgppdCBpcyB1c3VhbGx5IG5vdCBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjcmVhdGUgaW5zdGFuY2VzIG9mIGR5bmFtaWMgZmllbGQgZHJpdmVycy4KSW5zdGFuY2VzIG9mIHRoZSBkcml2ZXJzIGFyZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUKZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdCBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIFVzZWQgZm9yIGRlY2xhcmluZyBDU1MgY2xhc3NlcwogICAgJFNlbGYtPntGaWVsZENTU0NsYXNzfSA9ICdEeW5hbWljRmllbGRMZW5zJzsKCiAgICAjIHNldCBmaWVsZCBiZWhhdmlvcnMKICAgICMgICBOT1RFIGJlaGF2aW9ycyBJc0FDTFJlZHVjaWJsZSBhbmQgSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgZ2V0IG92ZXJyaWRkZW4gd2l0aCB0aGUgYXR0cmlidXRlIGZpZWxkcyBiZWhhdmlvcnMgaW4gc3ViIEhhc0JlaGF2aW9yCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDEsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDAsCiAgICAgICAgJ0lzSGlkZGVuSW5UaWNrZXRJbmZvcm1hdGlvbicgID0+IDAsCiAgICAgICAgJ1NldHNEeW5hbWljQ29udGVudCcgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU2V0Q2FwYWJsZScgICAgICAgICAgICAgICAgID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgICMgaW4gc2V0IGNhc2UsIGFuIGFycmF5cmVmIG9mIG9iamVjdCBpZHMgaXMgcmV0dXJuZWQKICAgIG15ICRSZWZlcmVuY2VkT2JqZWN0SUQgPSAkU2VsZi0+X0dldFJlZmVyZW5jZWRPYmplY3RJRCgKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICAgICAgPT4gJFBhcmFte1VzZVJlZmVyZW5jZUVkaXRGaWVsZH0sCiAgICAgICAgU2V0ICAgICAgICAgICAgICAgICAgICA9PiAkUGFyYW17U2V0fSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkUmVmZXJlbmNlZE9iamVjdElEOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIHRoZSByZWZlcmVuY2VkIG9iamVjdAogICAgbXkgJFJlZmVyZW5jZURGQ29uZmlnID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIG15ICRPYmplY3RJRE9yTmFtZSA9ICRSZWZlcmVuY2VERkNvbmZpZy0+e0ZpZWxkVHlwZX0gPX4gL15DdXN0b21lci8gPyAnT2JqZWN0TmFtZScgOiAnT2JqZWN0SUQnOwoKICAgICMgaW4gc2V0IGNhc2UsIHZhbHVlcyBuZWVkIHRvIGJlIGNvbGxlY3RlZCBvbmUgYnkgb25lCiAgICBpZiAoICRQYXJhbXtTZXR9ICkgewogICAgICAgIG15IEBWYWx1ZXM7CiAgICAgICAgZm9yIG15ICRSZWZJRCAoICRSZWZlcmVuY2VkT2JqZWN0SUQtPkAqICkgewogICAgICAgICAgICBpZiAoICEkUmVmSUQgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWYWx1ZXMsIHVuZGVmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAVmFsdWVzLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgICAgICAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIFxAVmFsdWVzOwogICAgfQoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwp9CgpzdWIgVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIG5vdCBleHBsaWNpdGx5IGRlYWN0aXZhdGVkIHdlIGFzc3VtZSBiZWluZyBvbiBhbiBlZGl0IG1hc2sKICAgIG15ICRFZGl0RmllbGRWYWx1ZSA9ICRQYXJhbXtFZGl0RmllbGRWYWx1ZX0gLy8gMTsKICAgIG15ICRMZW5zREZDb25maWcgICA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKIyAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAojICAgICk7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciB0aGUgcmVmZXJlbmNlZCBvYmplY3QKICAgIG15ICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT5fR2V0UmVmZXJlbmNlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkT2JqZWN0SURPck5hbWUgPSAkUmVmZXJlbmNlREZDb25maWctPntGaWVsZFR5cGV9ID1+IC9eQ3VzdG9tZXIvID8gJ09iamVjdE5hbWUnIDogJ09iamVjdElEJzsKCiAgICAjIGluIHNldCBjYXNlLCB3ZSBpdGVyYXRlIG92ZXIgdGhlIHZhbHVlcyBhbmQgc2V0IHRoZW0gb25lIGJ5IG9uZQogICAgaWYgKCAkUGFyYW17U2V0fSApIHsKICAgICAgICBJTkRFWDoKICAgICAgICBmb3IgbXkgJFNldEluZGV4ICggMCAuLiAkI3sgJFBhcmFte1ZhbHVlfSB9ICkgewoKICAgICAgICAgICAgJExlbnNERkNvbmZpZy0+e1NldEluZGV4fSA9ICRTZXRJbmRleDsKCiAgICAgICAgICAgICMgd2l0aCBwYXJhbSBTZXRJbmRleCwgYSBzaW5nbGUgb2JlY3QgaWQgaXMgcmV0dXJuZWQKICAgICAgICAgICAgIyBhcyB3ZSBhcmUgYWxyZWFkeSBzYXZpbmcgd2UgdHJ1c3QsIHRoYXQgdGhlIHJlZmVyZW5jZSBlZGl0IGZpZWxkIGhhcyBiZWVuIHZhbGlkYXRlZAogICAgICAgICAgICBteSAkUmVmZXJlbmNlZE9iamVjdElEID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICAgICAgICAgICAgICBFZGl0RmllbGRWYWx1ZSAgICAgICAgID0+ICRFZGl0RmllbGRWYWx1ZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2xlYW4gdXAgb2JqZWN0IGlkIGluIGNhc2UgdGhhdCBPYmplY3ROYW1lIGlzIHBhc3NlZCB0byBub3QgY29sbGlkZQogICAgICAgICAgICBpZiAoICRPYmplY3RJRE9yTmFtZSBlcSAnT2JqZWN0TmFtZScgKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJFBhcmFte09iamVjdElEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBJTkRFWCB1bmxlc3MgJFJlZmVyZW5jZWRPYmplY3RJRDsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgICAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdElEICAgICA9PiAkUmVmZXJlbmNlZE9iamVjdElELAogICAgICAgICAgICApOwoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9WyRTZXRJbmRleF0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMCwKICAgICAgICAgICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICA9PiAwLAogICAgICAgICAgICAgICAgU2V0ICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgICAgICAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYXMgd2UgYXJlIGFscmVhZHkgc2F2aW5nIHdlIHRydXN0LCB0aGF0IHRoZSByZWZlcmVuY2UgZWRpdCBmaWVsZCBoYXMgYmVlbiB2YWxpZGF0ZWQKICAgIG15ICRSZWZlcmVuY2VkT2JqZWN0SUQgPSAkU2VsZi0+X0dldFJlZmVyZW5jZWRPYmplY3RJRCgKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICAgICAgPT4gJEVkaXRGaWVsZFZhbHVlLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRSZWZlcmVuY2VkT2JqZWN0SUQ7CgogICAgIyBjbGVhbiB1cCBvYmplY3QgaWQgaW4gY2FzZSB0aGF0IE9iamVjdE5hbWUgaXMgcGFzc2VkIHRvIG5vdCBjb2xsaWRlCiAgICBpZiAoICRPYmplY3RJRE9yTmFtZSBlcSAnT2JqZWN0TmFtZScgKSB7CiAgICAgICAgZGVsZXRlICRQYXJhbXtPYmplY3RJRH07CiAgICB9CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIFJlZmVyZW5jZWRPYmplY3RJRCAgICAgPT4gJFJlZmVyZW5jZWRPYmplY3RJRCwKICAgICk7CgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVTZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbmZpZ0l0ZW1IYW5kbGVkICA9PiAwLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICA9PiAwLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwp9CgpzdWIgVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVWYWxpZGF0ZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaFNRTEdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxPcmRlckZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBFZGl0RmllbGRSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgVGhlIGVkaXQgZmllbGQgc2hvdWxkIGJlIHJlbmRlcmVkIGxpa2UgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QsCiAgICAjIEJ1dCBuYW1lIGFuZCBMYWJlbCBzaG91bGQgYmUgdGhhdCBvZiB0aGUgTGVucyBkeW5hbWljIGZpZWxkLgogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gID0gJExlbnNERkNvbmZpZy0+e05hbWV9OwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TGFiZWx9ID0gJExlbnNERkNvbmZpZy0+e0xhYmVsfTsKICAgIG15ICRBdHRyaWJ1dGVGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgVXNlRGVmYXVsdFZhbHVlICAgID0+IDAsCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7CgogICAgcmV0dXJuICRBdHRyaWJ1dGVGaWVsZEhUTUw7Cn0KCnN1YiBFZGl0RmllbGRWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgIyBUaGUgbmFtZSB1c2VkIGluIHRoZSBHVUkgaXMgdGhlIG5hbWUgb2YgdGhlIExlbnMKICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+e05hbWV9ID0gJExlbnNERkNvbmZpZy0+e05hbWV9OwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlVmFsaWRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGZldGNoIGF0dHJpYnV0ZSBkZiBjb25maWcKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgIyBjYWxsIGF0dHJpYnV0ZSBkZiBjb25maWcgdmFsaWRhdGlvbgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVWYWxpZGF0ZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIERpc3BsYXlWYWx1ZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgcmV0dXJuICcnIHVubGVzcyAkQXR0cmlidXRlREZDb25maWc7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICVQYXJhbSwgICAgIyBlLmcuIFZhbHVlIGFuZCBIVE1MT3V0cHV0CiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hGaWVsZFJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgIE5hbWUgID0+ICRMZW5zREZDb25maWctPntOYW1lfSwKICAgICAgICAgICAgTGFiZWwgPT4gJExlbnNERkNvbmZpZy0+e0xhYmVsfSwKICAgICAgICB9CiAgICApOwp9CgpzdWIgU2VhcmNoRmllbGRWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIFNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgIE5hbWUgID0+ICRMZW5zREZDb25maWctPntOYW1lfSwKICAgICAgICAgICAgTGFiZWwgPT4gJExlbnNERkNvbmZpZy0+e0xhYmVsfSwKICAgICAgICB9CiAgICApOwogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCnN1YiBTZWFyY2hGaWVsZFByZWZlcmVuY2VzIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIFN0YXRzRmllbGRQYXJhbWV0ZXJCdWlsZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiB7CiAgICAgICAgTmFtZSAgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0xhYmVsfSwKICAgICAgICBFbGVtZW50ID0+ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICB9Owp9CgpzdWIgU3RhdHNTZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIHNldCBvcGVyYXRvcgogICAgbXkgJE9wZXJhdG9yID0gJ0VxdWFscyc7CgogICAgIyBzZWFyY2ggZm9yIGEgd2lsZCBjYXJkIGluIHRoZSB2YWx1ZQogICAgaWYgKCAkVmFsdWUgJiYgJFZhbHVlID1+IG17XCp9ICkgewoKICAgICAgICAjIGNoYW5nZSBvcGVyYXRvcgogICAgICAgICRPcGVyYXRvciA9ICdMaWtlJzsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgICRPcGVyYXRvciA9PiAkVmFsdWUsCiAgICB9Owp9CgpzdWIgUmVhZGFibGVWYWx1ZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICcnOwoKICAgICMgY2hlY2sgdmFsdWUKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoIHJlZiAkUGFyYW17VmFsdWV9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICAjIHByZXZlbnQgam9pbmluZyB1bmRlZmluZWQgdmFsdWVzCiAgICBAVmFsdWVzID0gbWFwIHsgJF8gLy8gJycgfSBAVmFsdWVzOwoKICAgICMgc2V0IG5ldyBsaW5lIHNlcGFyYXRvcgogICAgbXkgJEl0ZW1TZXBhcmF0b3IgPSAnLCAnOwoKICAgICMgT3V0cHV0IHRyYW5zZm9ybWF0aW9ucwogICAgJFZhbHVlID0gam9pbiggJEl0ZW1TZXBhcmF0b3IsIEBWYWx1ZXMgKTsKICAgIG15ICRUaXRsZSA9ICRWYWx1ZTsKCiAgICAjIGN1dCBzdHJpbmdzIGlmIG5lZWRlZAogICAgaWYgKCAkUGFyYW17VmFsdWVNYXhDaGFyc30gJiYgbGVuZ3RoKCRWYWx1ZSkgPiAkUGFyYW17VmFsdWVNYXhDaGFyc30gKSB7CiAgICAgICAgJFZhbHVlID0gc3Vic3RyKCAkVmFsdWUsIDAsICRQYXJhbXtWYWx1ZU1heENoYXJzfSApIC4gJy4uLic7CiAgICB9CiAgICBpZiAoICRQYXJhbXtUaXRsZU1heENoYXJzfSAmJiBsZW5ndGgoJFRpdGxlKSA+ICRQYXJhbXtUaXRsZU1heENoYXJzfSApIHsKICAgICAgICAkVGl0bGUgPSBzdWJzdHIoICRUaXRsZSwgMCwgJFBhcmFte1RpdGxlTWF4Q2hhcnN9ICkgLiAnLi4uJzsKICAgIH0KCiAgICAjIHJldHVybiBhIGRhdGEgc3RydWN0dXJlCiAgICByZXR1cm4gewogICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICB9Owp9CgpzdWIgVGVtcGxhdGVWYWx1ZVR5cGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfTsKCiAgICAjIHNldCB0aGUgZmllbGQgdHlwZXMKICAgIG15ICRFZGl0VmFsdWVUeXBlICAgPSAnU0NBTEFSJzsKICAgIG15ICRTZWFyY2hWYWx1ZVR5cGUgPSAnU0NBTEFSJzsKCiAgICAjIHJldHVybiB0aGUgY29ycmVjdCBzdHJ1Y3R1cmUKICAgIGlmICggJFBhcmFte0ZpZWxkVHlwZX0gZXEgJ0VkaXQnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPT4gJEVkaXRWYWx1ZVR5cGUsCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0ZpZWxkVHlwZX0gZXEgJ1NlYXJjaCcgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJ1NlYXJjaF8nIC4gJEZpZWxkTmFtZSA9PiAkU2VhcmNoVmFsdWVUeXBlLAogICAgICAgIH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAkRmllbGROYW1lICAgICAgICAgICAgID0+ICRFZGl0VmFsdWVUeXBlLAogICAgICAgICAgICAnU2VhcmNoXycgLiAkRmllbGROYW1lID0+ICRTZWFyY2hWYWx1ZVR5cGUsCiAgICAgICAgfTsKICAgIH0KfQoKc3ViIFJhbmRvbVZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkbyBub3RoaW5nIGJ1dCByZXBvcnRpbmcgc3VjY2VzcwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIFZhbHVlICAgPT4gMSwKICAgIH07Cn0KCnN1YiBPYmplY3RNYXRjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9OwoKICAgICMgcmV0dXJuIGZhbHNlIGlmIGZpZWxkIGlzIG5vdCBkZWZpbmVkCiAgICByZXR1cm4gMCB1bmxlc3MgZGVmaW5lZCAkUGFyYW17T2JqZWN0QXR0cmlidXRlc30tPnskRmllbGROYW1lfTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBub3QgbWF0Y2gKICAgIHJldHVybiAxIGlmICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfS0+eyRGaWVsZE5hbWV9IGVxICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gMDsKfQoKc3ViIEhpc3RvcmljYWxWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiB0aGUgaGlzdG9yaWNhbCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScpLT5IaXN0b3JpY2FsVmFsdWVHZXQoCiAgICAgICAgRmllbGRJRCAgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57SUR9LAogICAgICAgIFZhbHVlVHlwZSA9PiAnVGV4dCcsCiAgICApOwp9CgpzdWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlTG9va3VwKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIFZhbHVlSXNEaWZmZXJlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlSXNEaWZmZXJlbnQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgSGFzQmVoYXZpb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIFRPRE86IFRoaW5rIGFib3V0IGFkZGl0aW9uYWwgYmVoYXZpb3JzIHdlIGNhbiBqdXN0IGFkb3B0IGZyb20gdGhlIGF0dHJpYnV0ZSBmaWVsZAogICAgIyBmb3IgY2VydGFpbiBiZWhhdmlvcnMgaW5zdGVhZCB1c2UgdGhlIGF0dHJpYnV0ZSBmaWVsZCBiZWhhdmlvcnMKICAgIGlmICggZ3JlcCB7ICRQYXJhbXtCZWhhdmlvcn0gZXEgJF8gfSBxdy9Jc0FDTFJlZHVjaWJsZSBJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZS8gKSB7CiAgICAgICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXR1cm4gc3VjY2VzcyBpZiB0aGUgZHluYW1pYyBmaWVsZCBoYXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yCiAgICByZXR1cm4gJFNlbGYtPlNVUEVSOjpIYXNCZWhhdmlvciggQmVoYXZpb3IgPT4gJFBhcmFte0JlaGF2aW9yfSApOwp9CgpzdWIgUG9zc2libGVWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIEJ1aWxkU2VsZWN0aW9uRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIEdldEZpZWxkU3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CiAgICBteSAkTmVlZHNSZXNldDsKCiAgICAjIHJlc2V0IGlmIHRoZSByZWZlcmVuY2VkIG9iamVjdCBjaGFuZ2VzCiAgICBpZiAoICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IH0gKSB7CiAgICAgICAgJE5lZWRzUmVzZXQgPSAxOwogICAgfQoKICAgICMgb3IgaWYgd2UgaGF2ZSB0aGUgZmllbGQgcmVhcHBlYXIKICAgIGVsc2lmICggJFBhcmFte0NhY2hlZFZpc2liaWxpdHl9ICYmICEkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICkgewogICAgICAgICROZWVkc1Jlc2V0ID0gMTsKICAgIH0KCiAgICAjIFRPRE86IGFsc28gb24gaW5pdGlhbCBydW4/CgogICAgcmV0dXJuICgpIGlmICEkTmVlZHNSZXNldDsKCiAgICBteSAkREZQYXJhbSA9ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfTsKCiAgICBteSAkQXR0cmlidXRlRmllbGRWYWx1ZTsKICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICRTZWxmLT5IYXNCZWhhdmlvcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICk7CgogICAgbXkgJVJldHVybjsKICAgIG15ICRSZWZlcmVuY2VJRCA9ICRERlBhcmFtLT57ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1JlZmVyZW5jZURGTmFtZX0gfSA/ICRERlBhcmFtLT57ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1JlZmVyZW5jZURGTmFtZX0gfVswXSA6IHVuZGVmOwoKICAgICMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIGF0dHJpYnV0ZSBmaWVsZCBpZiBhbiBvYmplY3QgaXMgcmVmZXJlbmNlZAogICAgaWYgKCRSZWZlcmVuY2VJRCkgewoKICAgICAgICBteSAkUmVmZXJlbmNlREZOYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSAuICggJER5bmFtaWNGaWVsZENvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9IC8vICcnICk7CgogICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17U2V0SW5kZXh9ICkgewogICAgICAgICAgICAkUmVmZXJlbmNlREZOYW1lIC49ICJfJFBhcmFte1NldEluZGV4fSI7CiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntTZXRJbmRleH0gPSAkUGFyYW17U2V0SW5kZXh9OwogICAgICAgIH0KCiAgICAgICAgIyBpZiB0aGUgdmFsdWUgd291bGQgY2hhbmdlLCB3ZSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZSB1c2VyIGlzIHJlYWxseSBhbGxvd2VkCiAgICAgICAgIyB0byBhY2Nlc3MgdGhlIHByb3ZpZGVkIHJlZmVyZW5jZWQgb2JqZWN0IHZpYSB0aGlzIGZvcm0KICAgICAgICAjIHRoaXMgaXMgdGhlIGNhc2UgaWYgZWl0aGVyIHRoZSByZWZlcmVuY2VkIG9iamVjdCB3YXMgc2hvd24gdmlhIGEgc2VhcmNoICgxKQogICAgICAgICMgb3IgaXMgY3VycmVudGx5IHN0b3JlZCBmb3IgdGhlIGVkaXRlZCB0aWNrZXQvY2kvLi4uICgyKQogICAgICAgIG15ICRMYXN0U2VhcmNoUmVzdWx0cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5HZXRGb3JtRGF0YSgKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgS2V5ICAgICAgICAgID0+ICdQb3NzaWJsZVZhbHVlc18nIC4gJFJlZmVyZW5jZURGTmFtZSwKICAgICAgICApOwoKICAgICAgICAjIGluIHNldCBjYXNlLCB3ZSBmZXRjaCB0aGUgdGVtcGxhdGUgdmFsdWVzIGFuZCBlaXRoZXIgY29uY2F0IHRoZW0gdG8gdGhlIHNlYXJjaCByZXN1bHRzCiAgICAgICAgIyAgIG9yLCBpZiBubyBzZWFyY2ggcmVzdWx0cyBhcmUgcHJlc2VudCwgdXNlIHRoZSB0ZW1wbGF0ZSB2YWx1ZXMgZW50aXJlbHkKICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte1NldEluZGV4fSApIHsKICAgICAgICAgICAgbXkgJFRlbXBsYXRlTmFtZSAgICAgICAgICA9ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1JlZmVyZW5jZURGTmFtZX0gLiAnX1RlbXBsYXRlJzsKICAgICAgICAgICAgbXkgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5HZXRGb3JtRGF0YSgKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ1Bvc3NpYmxlVmFsdWVzXycgLiAkVGVtcGxhdGVOYW1lLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCByZWYgJExhc3RTZWFyY2hSZXN1bHRzICYmIHJlZiAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzICkgewogICAgICAgICAgICAgICAgcHVzaCAkTGFzdFNlYXJjaFJlc3VsdHMtPkAqLCAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzLT5AKjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoIHJlZiAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzICkgewogICAgICAgICAgICAgICAgJExhc3RTZWFyY2hSZXN1bHRzID0gJFRlbXBsYXRlU2VhcmNoUmVzdWx0czsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBhIHNlYXJjaCBoYXMgYWxyZWFkeSBiZWVuIHBlcmZvcm1lZCBmb3IgdGhpcyBmb3JtIGlkCiAgICAgICAgbXkgJEFsbG93ZWQgPSAoIGdyZXAgeyAkXyBlcSAkUmVmZXJlbmNlSUQgfSAkTGFzdFNlYXJjaFJlc3VsdHMtPkAqICkgPyAxIDogMDsKCiAgICAgICAgIyBhYm9ydCBpZiByZXF1ZXN0ZWQgdmFsdWUgaXMgbm90IGFsbG93ZWQKICAgICAgICBpZiAoICEkQWxsb3dlZCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJWYWx1ZSAkUmVmZXJlbmNlSUQgZm9yIGxlbnMgZmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGlzIG5vdCBhbGxvd2VkLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRBdHRyaWJ1dGVGaWVsZFZhbHVlID0gJFNlbGYtPlZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKCiAgICAgICAgICAgICMgVE9ETzogSW5zdGVhZCB3ZSBjb3VsZCBqdXN0IHNlbmQgJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9IGFzIE9iamVjdElECiAgICAgICAgICAgICMgYnV0IHdlIHdvdWxkIG5lZWQgdG8gaW50ZXJwcmV0IGl0IGxhdGVyIChmcm9tIENvbmZpZ0l0ZW1JRCB0byBMYXN0VmVyc2lvbklELCBlLmcuKQogICAgICAgICAgICAjIFRPRE86IFZhbGlkYXRlIHRoZSBSZWZlcmVuY2UgT2JqZWN0SUQgaGVyZSwgb3IgZWFybGllciwgdG8gcHJldmVudCBkYXRhIGxlYWtzIQogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgPT4gMSwgICAgIyB3aWxsIG5vdCBiZSB1c2VkOwogICAgICAgICAgICBVc2VSZWZlcmVuY2VFZGl0RmllbGQgPT4gMSwKICAgICAgICApIC8vICcnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEF0dHJpYnV0ZUZpZWxkVmFsdWUgPSAnJzsKICAgIH0KCiAgICAjIHNldCB0aGUgbmV3IHZhbHVlIGlmIGl0IGRpZmZlcnMKICAgIGlmICgKICAgICAgICAkU2VsZi0+VmFsdWVJc0RpZmZlcmVudCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlMSAgICAgICAgICAgICA9PiAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0sCiAgICAgICAgICAgIFZhbHVlMiAgICAgICAgICAgICA9PiAkQXR0cmlidXRlRmllbGRWYWx1ZSwKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgICRSZXR1cm57TmV3VmFsdWV9ID0gJEF0dHJpYnV0ZUZpZWxkVmFsdWU7CgogICAgICAgICMgYWxyZWFkeSB3cml0ZSB0aGUgbmV3IHZhbHVlIHRvIERGUGFyYW0sIGZvciBwb3NzaWJsZSB2YWx1ZXMgY2hlY2sgZnVydGhlciBkb3duCiAgICAgICAgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9ID0gJEF0dHJpYnV0ZUZpZWxkVmFsdWU7CiAgICB9CgogICAgIyBpZiB0aGlzIGZpZWxkIGlzIG5vbiBBQ0wgcmVkdWNpYmxlLCBzZXQgdGhlIGZpZWxkIHZhbHVlcwogICAgcmV0dXJuICVSZXR1cm4gaWYgISRJc0FDTFJlZHVjaWJsZTsKCiAgICAjIGdldCBwb3NzaWJsZSB2YWx1ZXMgaWYgQUNMUmVkdWNpYmxlCiAgICAjIHRoaXMgaXMgd2hhdCB0aGUgRmllbGRSZXN0cmljdGlvbnMgb2JqZWN0IHdvdWxkIGRvIGZvciBvdGhlciBmaWVsZHMKICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICk7CgogICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgIG15ICVBY2xEYXRhID0gJXskUG9zc2libGVWYWx1ZXN9OwogICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgIGlmICggJFBhcmFte1RpY2tldE9iamVjdH0gKSB7CiAgICAgICAgbXkgJEFDTCA9ICRQYXJhbXtUaWNrZXRPYmplY3R9LT5UaWNrZXRBY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgPT4gJFBhcmFte0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSAgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICk7CiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRQYXJhbXtUaWNrZXRPYmplY3R9LT5UaWNrZXRBY2xEYXRhKCk7CgogICAgICAgICAgICAjIGNvbnZlcnQgRmlsdGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzfSA9IG1hcCB7ICRfID0+ICRQb3NzaWJsZVZhbHVlcy0+eyRffSB9IGtleXMgJUZpbHRlcjsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtDb25maWdJdGVtT2JqZWN0fSApIHsKICAgICAgICBteSAkQUNMID0gJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19IH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFBhcmFte0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgKTsKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICBteSAlRmlsdGVyID0gJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgIyBjb252ZXJ0IEZpbHRlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc30gPSBtYXAgeyAkXyA9PiAkUG9zc2libGVWYWx1ZXMtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiTmVlZCBUaWNrZXQgb3IgQ0kgT2JqZWN0LiIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICgpOwogICAgfQoKICAgICMgY2hlY2sgd2hldGhlciBhbGwgc2VsZWN0ZWQgZW50cmllcyBhcmUgc3RpbGwgdmFsaWQKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifQogICAgICAgICYmCiAgICAgICAgKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gfHwgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9IGVxICcwJyApCiAgICAgICAgKQogICAgewogICAgICAgICMgbXVsdGlzZWxlY3QgZmllbGRzCiAgICAgICAgaWYgKCByZWYoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSApICkgewogICAgICAgICAgICBTRUxFQ1RFRDoKICAgICAgICAgICAgZm9yIG15ICRTZWxlY3RlZCAoIEB7ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSB9ICkgewoKICAgICAgICAgICAgICAgICMgaWYgYSBzZWxlY3RlZCB2YWx1ZSBpcyBub3QgcG9zc2libGUgYW55bW9yZQogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnskU2VsZWN0ZWR9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXR1cm57TmV3VmFsdWV9ID0gZ3JlcCB7IGRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57JFNlbGVjdGVkfSB9IEB7ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSB9OwoKICAgICAgICAgICAgICAgICAgICBsYXN0IFNFTEVDVEVEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNpbmdsZXNlbGVjdCBmaWVsZHMKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnsgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9IH0gKSB7CiAgICAgICAgICAgICAgICAkUmV0dXJue05ld1ZhbHVlfSA9ICcnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgJVJldHVybiwKICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICApOwp9Cgo9aGVhZDEgaW50ZXJuYWwgbWV0aG9kcwoKTWV0aG9kcyB0aGF0IGFyZSB1c2VkIG9ubHkgaW50ZXJuYWxseS4KCj1oZWFkMiBfR2V0UmVmZXJlbmNlREZDb25maWcoKQoKQSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGRlbGVnYXRlLgoKPWN1dAoKI1RPRE86IGluIENJIGRlZmluaXRpb25zIHN0b3JlIHRoZSBkZWZpbml0aW9uIGlkIG9yIGRmIGNvbmZpZ3MgaW4gdGhlIGxlbnMgY29uZmlnIGFuZCB1c2UgdGhpcyBvbmUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBkZiBjb25maWdzCnN1YiBfR2V0UmVmZXJlbmNlREZDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSAvLz0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiMgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKIyAgICApOwogICAgIyBjb25maWcgaXRlbXMgYW5kIGNpIHZlcnNpb25zIHN0b3JlIHRoZWlyIHJlc3BlY3RpdmUgcmVmZXJlbmNlIGNvbmZpZ3MgYXMgcGFydCBvZiB0aGUgbGVucyBjb25maWcKICAgICMgZWxzZSB1c2Ugc3RhbmRhcmQgZHluYW1pYyBmaWVsZCBnZXQKICAgICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSAvLz0gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e1JlZmVyZW5jZURGQ29uZmlnfQogICAgICAgIC8vICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBJRCA9PiAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICByZXR1cm4gJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9Owp9Cgo9aGVhZDIgX0dldEF0dHJpYnV0ZURGQ29uZmlnKCkKCkEgZHluYW1pYyBmaWVsZCBjb25maWd1cmF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBkZWxlZ2F0ZS4KCj1jdXQKCnN1YiBfR2V0QXR0cmlidXRlREZDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICFkZWZpbmVkICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSA9ICREeW5hbWljRmllbGRDb25maWcgPyB7ICREeW5hbWljRmllbGRDb25maWctPiUqIH0gOiB7fTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgI3JldHVybiAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07CiAgICBpZiAoICRQYXJhbXtSZWZlcmVuY2VkT2JqZWN0SUR9ICYmICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSApIHsKICAgICAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+e1JlZmVyZW5jZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07CgogICAgICAgIGlmICggJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH0tPiUqLAogICAgICAgICAgICAgICAgICAgIENJQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiTm8gQ29uZmlnSXRlbSB3aXRoIElEICckUGFyYW17UmVmZXJlbmNlZE9iamVjdElEfScuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsgJFNlbGYtPntBdHRyaWJ1dGVERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9LT4lKiB9OwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAp9Cgo9aGVhZDIgX0dldFJlZmVyZW5jZWRPYmplY3RJRCgpCgpUaGUgY29uZmlnIG9mIHRoZSBsZW5zIGNvbnRhaW5zIHRoZSBJRCBvZiBhbm90aGVyIGR5bmFtaWMgZmllbGQuIFRoYXQgZmllbGQgaXMgYSBSZWZlcmVuY2UgZHluYW1pYyBmaWVsZCB0aGF0CnJlZmVyZW5jZXMgYW5vdGhlciBvYmplY3QuIFRoZSBJRCBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QgaXMgdGhlIHZhbHVlIG9mIHRoZSBSZWZlcmVuY2UgZHluYW1pYyBmaWVsZC4KCj1jdXQKCnN1YiBfR2V0UmVmZXJlbmNlZE9iamVjdElEIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBleHRyYWN0IHBhcmFtcwogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIHRoZSByZWZlcmVuY2VkIG9iamVjdAogICAgbXkgJFJlZmVyZW5jZURGQ29uZmlnID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIGlmICggJFBhcmFte0VkaXRGaWVsZFZhbHVlfSApIHsKCiAgICAgICAgIyBzdWZmaXggbmFtZSB3aXRoIHByb2Nlc3MgaWQgYW5kIHNldCBpbmRleCwgaWYgcHJlc2VudAogICAgICAgIG15ICRSZWZlcmVuY2VERk5hbWUgPSAkUmVmZXJlbmNlREZDb25maWctPntOYW1lfTsKICAgICAgICBpZiAoICRMZW5zREZDb25maWctPntQcm9jZXNzU3VmZml4fSApIHsKICAgICAgICAgICAgJFJlZmVyZW5jZURGTmFtZSAuPSAkTGVuc0RGQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH07CiAgICAgICAgfQoKICAgICAgICBpZiAoIGRlZmluZWQgJExlbnNERkNvbmZpZy0+e1NldEluZGV4fSApIHsKICAgICAgICAgICAgJFJlZmVyZW5jZURGTmFtZSAuPSAiXyRMZW5zREZDb25maWctPntTZXRJbmRleH0iOwogICAgICAgIH0KCiAgICAgICAgbXkgJE9iamVjdElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5FZGl0RmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VERkNvbmZpZy0+JSosCiAgICAgICAgICAgICAgICBOYW1lID0+ICRSZWZlcmVuY2VERk5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwKICAgICAgICAgICAgVHJhbnNmb3JtRGF0ZXMgPT4gMCwKICAgICAgICAgICAgRm9yTGVucyAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYgISRPYmplY3RJRDsKICAgICAgICByZXR1cm4gJE9iamVjdElELT5bMF07CiAgICB9CgogICAgbXkgJE9iamVjdElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUdldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFJlZmVyZW5jZURGQ29uZmlnLAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIEZvckxlbnMgICAgICAgICAgICA9PiAxLAogICAgICAgIFNldCAgICAgICAgICAgICAgICA9PiAkUGFyYW17U2V0fSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkT2JqZWN0SUQ7CgogICAgIyBpbiBzZXQgY2FzZSwgd2UgbmVlZCB0byBtYXAgdGhlIHJldHVybmVkIGFycmF5IG9mIGFycmF5cyBpbnRvIGFuIGFycmF5IG9mIGZpcnN0IHZhbHVlcyBhcyBtdWx0aXZhbHVlIGxlbnNlcyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50CiAgICBpZiAoICRQYXJhbXtTZXR9ICkgewogICAgICAgIG15IEBPYmplY3RJRHMgPSBtYXAgeyAkXy0+WzBdIH0gJE9iamVjdElELT5AKjsKICAgICAgICByZXR1cm4gXEBPYmplY3RJRHM7CiAgICB9CgogICAgcmV0dXJuICRPYmplY3RJRC0+WzBdOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/System/ZnunyHelper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgWm51bnkgR21iSCwgaHR0cDovL3pudW55LmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyAkb3JpZ2luOiBvdG9ibyAtIDdjYzg0Y2UxM2M4ZTZjMzQ4NTYwNWFkZTU1ODUwMTRhYmQ5MTE1NzkgLSBLZXJuZWwvU3lzdGVtL1pudW55SGVscGVyLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6U3BlbGxDaGVjaykKCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBMaXN0OjpBbGxVdGlscyBxdyhub25lKTsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljQWdlbnQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpOb3RpZmljYXRpb25FdmVudCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQb3N0TWFzdGVyOjpGaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpEQjo6RW50aXR5JywKICAgICdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OkRCOjpQcm9jZXNzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6UXVldWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhbmRhcmRUZW1wbGF0ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RvcmFibGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBabnVueUhlbHBlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJFpudW55SGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBfSXRlbVJldmVyc2VMaXN0R2V0KCkKCmNoZWNrcyBpZiBhIGl0ZW0gKGZvciBleGFtcGxlIGEgc2VydmljZSBuYW1lKSBpcyBpbiBhIHJldmVyc2UgaXRlbSBsaXN0IChmb3IgZXhhbXBsZSByZXZlcnNlICVTZXJ2aWNlTGlzdCkKd2l0aCBjYXNlIHNlbnNpdGl2ZSBjaGVjawoKICAgIG15ICRJdGVtSUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoJFNlcnZpY2VOYW1lLCAlU2VydmljZUxpc3RSZXZlcnNlKTsKClJldHVybnM6CgogICAgbXkgJEl0ZW1JRCA9IDEyMzsKCj1jdXQKCnN1YiBfSXRlbVJldmVyc2VMaXN0R2V0IHsKICAgIG15ICggJFNlbGYsICRJdGVtTmFtZSwgJUl0ZW1MaXN0UmV2ZXJzZSApID0gQF87CgogICAgcmV0dXJuIGlmICEkSXRlbU5hbWU7CgogICAgJEl0ZW1OYW1lID1+IHN7XEFccyp9e31nOwogICAgJEl0ZW1OYW1lID1+IHN7XHMqXHp9e31nOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRJdGVtSUQ7CiAgICBpZiAoICREQk9iamVjdC0+e0JhY2tlbmR9LT57J0RCOjpDYXNlU2Vuc2l0aXZlJ30gKSB7CiAgICAgICAgJEl0ZW1JRCA9ICRJdGVtTGlzdFJldmVyc2V7JEl0ZW1OYW1lfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICVJdGVtTGlzdFJldmVyc2VMQyA9IG1hcCB7IGxjICRfID0+ICRJdGVtTGlzdFJldmVyc2V7JF99IH0ga2V5cyAlSXRlbUxpc3RSZXZlcnNlOwoKICAgICAgICAkSXRlbUlEID0gJEl0ZW1MaXN0UmV2ZXJzZUxDeyBsYyAkSXRlbU5hbWUgfTsKICAgIH0KCiAgICByZXR1cm4gJEl0ZW1JRDsKfQoKPWl0ZW0gX1Bvc3RtYXN0ZXJYSGVhZGVyQWRkKCkKClRoaXMgZnVuY3Rpb24gYWRkcyBhIFBvc3RtYXN0ZXIgWC1IZWFkZXIgdG8gdGhlIGxpc3Qgb2YgUG9zdG1hc3RlciBYLUhlYWRlcnMgdG8gdGhlIFN5c0NvbmZpZy4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyQWRkKAogICAgICAgIEhlYWRlciA9PiAnWC1PVFJTLU93bkhlYWRlcicKICAgICk7CgogICAgb3IKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyQWRkKAogICAgICAgIEhlYWRlciA9PiBbCiAgICAgICAgICAgICdYLU9UUlMtT3duSGVhZGVyJywKICAgICAgICAgICAgJ0Fub3RoZXJIZWFkZXInLAogICAgICAgIF0KICAgICk7Cgo9Y3V0CgpzdWIgX1Bvc3RtYXN0ZXJYSGVhZGVyQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEhlYWRlcikpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQEhlYWRlcnNUb0FkZDsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIEBIZWFkZXJzVG9BZGQgPSBAeyAkUGFyYW17SGVhZGVyfSB9OwogICAgfQogICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIHB1c2ggQEhlYWRlcnNUb0FkZCwgJFBhcmFte0hlYWRlcn07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJ0hlYWRlcicgc2hvdWxkIGJlIGFuIEFycmF5UmVmIG9mIFN0cmluZyB3aXRoIGRhdGEhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlndXJlZEhlYWRlcnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Bvc3RtYXN0ZXJYLUhlYWRlcicpOwogICAgcmV0dXJuIGlmIHJlZiAkQ29uZmlndXJlZEhlYWRlcnMgbmUgJ0FSUkFZJzsKCiAgICBteSAlQ29uZmlndXJlZEhlYWRlcnMgPSBtYXAgeyAkXyA9PiAxIH0gQHskQ29uZmlndXJlZEhlYWRlcnN9OwoKICAgIEhFQURFUjoKICAgIGZvciBteSAkSGVhZGVyVG9BZGQgKEBIZWFkZXJzVG9BZGQpIHsKICAgICAgICAkQ29uZmlndXJlZEhlYWRlcnN7JEhlYWRlclRvQWRkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Bvc3RtYXN0ZXJYLUhlYWRlcicsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gWyBzb3J0IGtleXMgJUNvbmZpZ3VyZWRIZWFkZXJzIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDb21tZW50cyA9PiAnUG9zdG1hc3RlclgtSGVhZGVyIHNldHRpbmdzIGFkZGVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cn0KCj1pdGVtIF9Qb3N0bWFzdGVyWEhlYWRlclJlbW92ZSgpCgpUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBQb3N0bWFzdGVyIFgtSGVhZGVyIGZyb20gdGhlIGxpc3Qgb2YgUG9zdG1hc3RlciBYLUhlYWRlcnMgaW4gdGhlIFN5c0NvbmZpZy4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyUmVtb3ZlKAogICAgICAgIEhlYWRlciA9PiAnWC1PVFJTLU93bkhlYWRlcicKICAgICk7CgogICAgb3IKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyUmVtb3ZlKAogICAgICAgIEhlYWRlciA9PiBbCiAgICAgICAgICAgICdYLU9UUlMtT3duSGVhZGVyJywKICAgICAgICAgICAgJ0Fub3RoZXJIZWFkZXInLAogICAgICAgIF0KICAgICk7Cgo9Y3V0CgpzdWIgX1Bvc3RtYXN0ZXJYSGVhZGVyUmVtb3ZlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEhlYWRlcikpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQEhlYWRlcnNUb1JlbW92ZTsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIEBIZWFkZXJzVG9SZW1vdmUgPSBAeyAkUGFyYW17SGVhZGVyfSB9OwogICAgfQogICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIHB1c2ggQEhlYWRlcnNUb1JlbW92ZSwgJFBhcmFte0hlYWRlcn07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJ0hlYWRlcicgc2hvdWxkIGJlIGFuIEFycmF5UmVmIG9mIFN0cmluZyB3aXRoIGRhdGEhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlndXJlZEhlYWRlcnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Bvc3RtYXN0ZXJYLUhlYWRlcicpOwogICAgcmV0dXJuIGlmIHJlZiAkQ29uZmlndXJlZEhlYWRlcnMgbmUgJ0FSUkFZJzsKCiAgICBteSAlQ29uZmlndXJlZEhlYWRlcnMgPSBtYXAgeyAkXyA9PiAxIH0gQHskQ29uZmlndXJlZEhlYWRlcnN9OwoKICAgIEhFQURFUjoKICAgIGZvciBteSAkSGVhZGVyVG9SZW1vdmUgKEBIZWFkZXJzVG9SZW1vdmUpIHsKICAgICAgICBkZWxldGUgJENvbmZpZ3VyZWRIZWFkZXJzeyRIZWFkZXJUb1JlbW92ZX07CiAgICB9CgogICAgcmV0dXJuICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Bvc3RtYXN0ZXJYLUhlYWRlcicsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gWyBzb3J0IGtleXMgJUNvbmZpZ3VyZWRIZWFkZXJzIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDb21tZW50cyA9PiAnUG9zdG1hc3RlclgtSGVhZGVyIHNldHRpbmdzIHJlbW92ZWQuJywKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKfQoKPWl0ZW0gX0V2ZW50QWRkKCkKClRoaXMgZnVuY3Rpb24gYWRkcyBhbiBFdmVudCB0byB0aGUgbGlzdCBvZiBFdmVudHMgb2YgYW4gT2JqZWN0IHRvIHRoZSBTeXNDb25maWcuCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9FdmVudEFkZCgKICAgICAgICBPYmplY3QgPT4gJ1RpY2tldCcsICMgVGlja2V0LCBBcnRpY2xlLCBRdWV1ZSwgLi4uCiAgICAgICAgRXZlbnQgID0+ICdNeUN1c3RvbUV2ZW50JwogICAgKTsKCiAgICBvcgoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRXZlbnRBZGQoCiAgICAgICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIEV2ZW50ICA9PiBbCiAgICAgICAgICAgICdNeUN1c3RvbUV2ZW50JywKICAgICAgICAgICAgJ0Fub3RoZXJDdXN0b21FdmVudCcsCiAgICAgICAgXQogICAgKTsKCj1jdXQKCnN1YiBfRXZlbnRBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoT2JqZWN0IEV2ZW50KSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBAQWRkRXZlbnRzOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtFdmVudH0gKSApIHsKICAgICAgICBAQWRkRXZlbnRzID0gQHsgJFBhcmFte0V2ZW50fSB9OwogICAgfQogICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17RXZlbnR9ICkgKSB7CiAgICAgICAgcHVzaCBAQWRkRXZlbnRzLCAkUGFyYW17RXZlbnR9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICdFdmVudCcgc2hvdWxkIGJlIGFuIEFycmF5UmVmIG9mIFN0cmluZyB3aXRoIGRhdGEhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRXZlbnRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdFdmVudHMnKTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRFdmVudHMpOwoKICAgICRFdmVudHMtPnsgJFBhcmFte09iamVjdH0gfSB8fD0gW107CgogICAgbXkgQENvbmZpZ0V2ZW50cyA9IEB7ICRFdmVudHMtPnsgJFBhcmFte09iamVjdH0gfSB9OwoKICAgIEVWRU5UOgogICAgZm9yIG15ICRBZGRFdmVudCAoQEFkZEV2ZW50cykgewogICAgICAgIG5leHQgRVZFTlQgaWYgZ3JlcCB7ICRBZGRFdmVudCBlcSAkXyB9IEBDb25maWdFdmVudHM7CiAgICAgICAgcHVzaCBAQ29uZmlnRXZlbnRzLCAkQWRkRXZlbnQ7CiAgICB9CgogICAgcmV0dXJuICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0V2ZW50cyMjIycgLiAkUGFyYW17T2JqZWN0fSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcQENvbmZpZ0V2ZW50cywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIENvbW1lbnRzID0+ICdFdmVudCBzZXR0aW5ncyBhZGRlZC4nLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwp9Cgo9aXRlbSBfRXZlbnRSZW1vdmUoKQoKVGhpcyBmdW5jdGlvbiByZW1vdmVzIGFuIEV2ZW50IHRvIHRoZSBsaXN0IG9mIEV2ZW50cyBvZiBhbiBPYmplY3QgdG8gdGhlIFN5c0NvbmZpZy4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0V2ZW50UmVtb3ZlKAogICAgICAgIE9iamVjdCA9PiAnVGlja2V0JywgIyBUaWNrZXQsIEFydGljbGUsIFF1ZXVlLCAuLi4KICAgICAgICBFdmVudCAgPT4gJ015Q3VzdG9tRXZlbnQnCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9FdmVudFJlbW92ZSgKICAgICAgICBPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgRXZlbnQgID0+IFsKICAgICAgICAgICAgJ015Q3VzdG9tRXZlbnQnLAogICAgICAgICAgICAnQW5vdGhlckN1c3RvbUV2ZW50JywKICAgICAgICBdCiAgICApOwoKPWN1dAoKc3ViIF9FdmVudFJlbW92ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhPYmplY3QgRXZlbnQpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBSZW1vdmVFdmVudHM7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0V2ZW50fSApICkgewogICAgICAgIEBSZW1vdmVFdmVudHMgPSBAeyAkUGFyYW17RXZlbnR9IH07CiAgICB9CiAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtFdmVudH0gKSApIHsKICAgICAgICBwdXNoIEBSZW1vdmVFdmVudHMsICRQYXJhbXtFdmVudH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJ0V2ZW50JyBzaG91bGQgYmUgYW4gQXJyYXlSZWYgb2YgU3RyaW5nIHdpdGggZGF0YSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRFdmVudHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0V2ZW50cycpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEV2ZW50cyk7CgogICAgJEV2ZW50cy0+eyAkUGFyYW17T2JqZWN0fSB9IHx8PSBbXTsKCiAgICBteSBAQ29uZmlnRXZlbnRzOwogICAgRVZFTlQ6CiAgICBmb3IgbXkgJEN1cnJlbnRFdmVudCAoIEB7ICRFdmVudHMtPnsgJFBhcmFte09iamVjdH0gfSB9ICkgewogICAgICAgIG5leHQgRVZFTlQgaWYgZ3JlcCB7ICRDdXJyZW50RXZlbnQgZXEgJF8gfSBAUmVtb3ZlRXZlbnRzOwogICAgICAgIHB1c2ggQENvbmZpZ0V2ZW50cywgJEN1cnJlbnRFdmVudDsKICAgIH0KCiAgICByZXR1cm4gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRXZlbnRzIyMjJyAuICRQYXJhbXtPYmplY3R9LAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFxAQ29uZmlnRXZlbnRzLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgQ29tbWVudHMgPT4gJ0V2ZW50IHNldHRpbmdzIHJlbW92ZWQuJywKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKfQoKPWl0ZW0gX1ZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdEdldCgpCgpSZXR1cm5zIGEgbGlzdCBvZiB2YWxpZCBzY3JlZW5zIGZvciBkeW5hbWljIGZpZWxkcy4KCiAgICBteSAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0R2V0KAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBPYmplY3RUeXBlID0+IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdLCAgIyBBUlJBWSByZWYsIGVuYWJsZXMgZmlsdGVyaW5nIGJ5IG9iamVjdCB0eXBlCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsICMgSEFTSCBvciBBUlJBWSwgZGVmYXVsdHMgdG8gQVJSQVkKICAgICk7CgpSZXR1cm5zIGFzIEhBU0g6CgogICAgbXkgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdCA9IHsKICAgICAgICAnRHluYW1pY0ZpZWxkU2NyZWVucycgPT4gewogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnID0+ICdBZ2VudFRpY2tldFpvb20nLAogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkJyA9PiAnUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZCcKICAgICAgICAgICBbLi4uXQogICAgICAgIH0sCiAgICAgICAgJ0RlZmF1bHRDb2x1bW5zU2NyZWVucycgPT4gewogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicgPT4gJ0Rhc2hib2FyZFdpZGdldCBUaWNrZXRFc2NhbGF0aW9uJywKICAgICAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTMwLVRpY2tldE9wZW4nID0+ICdEYXNoYm9hcmRXaWRnZXQgVGlja2V0T3BlbicsCiAgICAgICAgICAgIFsuLi5dCiAgICAgICAgfQogICAgfTsKClJldHVybnMgYXMgQVJSQVk6CgogICAgbXkgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdCA9IHsKICAgICAgICAnRHluYW1pY0ZpZWxkU2NyZWVucycgPT4gWwogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkJywKICAgICAgICAgICBbLi4uXQogICAgICAgIF0sCiAgICAgICAgJ0RlZmF1bHRDb2x1bW5zU2NyZWVucycgPT4gWwogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicsCiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEzMC1UaWNrZXRPcGVuJywKICAgICAgICAgICAgWy4uLl0KICAgICAgICBdCiAgICB9OwoKPWN1dAoKc3ViIF9WYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFja2FnZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJyk7CgogICAgJFBhcmFte1Jlc3VsdH0gPSBsYyggJFBhcmFte1Jlc3VsdH0gLy8gJ2FycmF5JyApOwojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRERlNjcmVlbnNGaWx0ZXJLZXk7CiAgICBpZiAoJFBhcmFte09iamVjdFR5cGV9KSB7CgogICAgICAgIGlmICggJFBhcmFte09iamVjdFR5cGV9IGVxICdUaWNrZXQnICkgewogICAgICAgICAgICAkREZTY3JlZW5zRmlsdGVyS2V5ID0gJ0ZyYW1ld29yayc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkREZTY3JlZW5zT2JqZWN0VHlwZXNDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZFNjcmVlbnM6Ok9iamVjdFR5cGVzJyk7CiAgICAgICAgICAgIGZvciBteSAkREZTY3JlZW5zS2V5IChrZXlzICRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZy0+JSopIHsKICAgICAgICAgICAgICAgIGlmIChncmVwIHsgJF8gZXEgJFBhcmFte09iamVjdFR5cGV9IH0gJERGU2NyZWVuc09iamVjdFR5cGVzQ29uZmlnLT57JERGU2NyZWVuc0tleX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICRERlNjcmVlbnNGaWx0ZXJLZXkgPSAkREZTY3JlZW5zS2V5OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgIG15ICRWYWxpZFNjcmVlbnM7CiAgICBTQ1JFRU46CiAgICBmb3IgbXkgJFNjcmVlbiAocXcoRHluYW1pY0ZpZWxkU2NyZWVucyBEZWZhdWx0Q29sdW1uc1NjcmVlbnMpKSB7CgogICAgICAgICRWYWxpZFNjcmVlbnMtPnskU2NyZWVufSA9IHt9OwogICAgICAgIG15ICRTY3JlZW5SZWdpc3RyYXRpb25zID0gJENvbmZpZ09iamVjdC0+R2V0KCRTY3JlZW4pOwoKICAgICAgICBSRUdJU1RSQVRJT046CiAgICAgICAgZm9yIG15ICRSZWdpc3RyYXRpb24gKCBzb3J0IGtleXMgJXskU2NyZWVuUmVnaXN0cmF0aW9uc30gKSB7CiAgICAgICAgICAgIGlmICggJFJlZ2lzdHJhdGlvbiA9fiBte15JVFNNLip9eG1zaSApIHsKICAgICAgICAgICAgICAgIG15ICRJc0luc3RhbGxlZCA9ICRQYWNrYWdlT2JqZWN0LT5QYWNrYWdlSXNJbnN0YWxsZWQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkUmVnaXN0cmF0aW9uLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgUkVHSVNUUkFUSU9OIGlmICEkSXNJbnN0YWxsZWQ7CiAgICAgICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICBuZXh0IFJFR0lTVFJBVElPTiBpZiAoJERGU2NyZWVuc0ZpbHRlcktleSAmJiAkUmVnaXN0cmF0aW9uIG5lICRERlNjcmVlbnNGaWx0ZXJLZXkgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAgICAgICAgICV7ICRWYWxpZFNjcmVlbnMtPnskU2NyZWVufSB9ID0gKAogICAgICAgICAgICAgICAgJXsgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59IH0sCiAgICAgICAgICAgICAgICAleyAkU2NyZWVuUmVnaXN0cmF0aW9ucy0+eyRSZWdpc3RyYXRpb259IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGNvbmZpZyBpcyBhbHJlYWR5IHZhbGlkIC8gZGVmaW5lZAogICAgICAgIGZvciBteSAkQ3VycmVudENvbmZpZyAoIHNvcnQga2V5cyAleyAkVmFsaWRTY3JlZW5zLT57JFNjcmVlbn0gfSApIHsKICAgICAgICAgICAgbXkgKCAkQ29uZmlnUGF0aCwgJEtleSApID0gc3BsaXQgLyMjIy8sICRDdXJyZW50Q29uZmlnOwogICAgICAgICAgICBteSAkQ29uZmlnRGF0YSA9ICRDb25maWdPYmplY3QtPkdldCgkQ29uZmlnUGF0aCk7CgogICAgICAgICAgICBkZWxldGUgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59LT57JEN1cnJlbnRDb25maWd9IGlmICFkZWZpbmVkICRDb25maWdEYXRhLT57JEtleX07CiAgICAgICAgfQoKICAgICAgICBuZXh0IFNDUkVFTiBpZiBsYyAkUGFyYW17UmVzdWx0fSBuZSAnYXJyYXknOwoKICAgICAgICBteSBAQXJyYXkgPSBzb3J0IGtleXMgJXsgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59IH07CiAgICAgICAgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59ID0gXEBBcnJheTsKICAgIH0KICAgIHJldHVybiAkVmFsaWRTY3JlZW5zOwp9Cgo9aXRlbSBfRGVmYXVsdENvbHVtbnNHZXQoKQoKVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBEZWZhdWx0Q29sdW1uIEF0dHJpYnV0ZXMgb2YgdGhlIHJlcXVlc3RlZCBTeXNDb25maWdzLgoKICAgIG15IEBDb25maWdzID0gKAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFN0YXR1c1ZpZXcjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UXVldWUjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UmVzcG9uc2libGVWaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFdhdGNoVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRMb2NrZWRWaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEVzY2FsYXRpb25WaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZXJ2aWNlIyMjRGVmYXVsdENvbHVtbnMnLAoKICAgICAgICAjIHN1YnN0cnVjdHVyZSBvZiBEZWZhdWx0Q29sdW1ucwogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEwMC1UaWNrZXRQZW5kaW5nUmVtaW5kZXInLAogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDExMC1UaWNrZXRFc2NhbGF0aW9uJywKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMjAtVGlja2V0TmV3JywKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMzAtVGlja2V0T3BlbicsCgogICAgICAgICMgc3Vic3RydWN0dXJlIG9mIERlZmF1bHRDb2x1bW5zCiAgICAgICAgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAxMDAtQ0lDLVRpY2tldFBlbmRpbmdSZW1pbmRlcicsCiAgICAgICAgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAxMTAtQ0lDLVRpY2tldEVzY2FsYXRpb24nLAogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTIwLUNJQy1UaWNrZXROZXcnLAogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTMwLUNJQy1UaWNrZXRPcGVuJywKICAgICk7CgogICAgbXkgJUNvbmZpZ3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EZWZhdWx0Q29sdW1uc0dldChAQ29uZmlncyk7CgpSZXR1cm5zOgoKICAgIG15ICVDb25maWdzID0gKAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFN0YXR1c1ZpZXcjIyNEZWZhdWx0Q29sdW1ucycgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgID0+IDIsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICAgICAgICAgICAgPT4gMQogICAgICAgICAgICBEeW5hbWljRmllbGRfRHJvcGRvd25UZXN0ID0+IDEsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9Bbm90aGVyb25lICAgPT4gMiwKICAgICAgICB9LAogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEwMC1UaWNrZXRQZW5kaW5nUmVtaW5kZXInID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICA9PiAyLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgICAgICAgICAgID0+IDEKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Ryb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBEeW5hbWljRmllbGRfQW5vdGhlcm9uZSAgID0+IDIsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgX0RlZmF1bHRDb2x1bW5zR2V0IHsKICAgIG15ICggJFNlbGYsIEBTY3JlZW5Db25maWcgKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIHJldHVybiAxIGlmICFAU2NyZWVuQ29uZmlnOwogICAgbXkgJUNvbmZpZ3M7CgogICAgVklFVzoKICAgIGZvciBteSAkVmlldyAoQFNjcmVlbkNvbmZpZykgewoKICAgICAgICBteSAkRnJvbnRlbmRQYXRoID0gJFZpZXc7CgogICAgICAgIGlmICgKICAgICAgICAgICAgJFZpZXcgIX4gbXsoRGFzaGJvYXJkQmFja2VuZHxBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQpfXhtc2kKICAgICAgICAgICAgJiYgJFZpZXcgIX4gbXsoXHcrOjopK1x3K314bXNpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGcm9udGVuZFBhdGggPSAiVGlja2V0OjpGcm9udGVuZDo6JFZpZXciOwogICAgICAgIH0KCiAgICAgICAgbXkgQEtleXMgICA9IHNwbGl0IC8jIyMvLCAkRnJvbnRlbmRQYXRoOwogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRLZXlzWzBdICk7CgogICAgICAgICMgY2hlY2sgaWYgY29uZmlnIGhhcyBEZWZhdWx0Q29sdW1ucyBhdHRyaWJ1dGUgYW5kIHNldCBpdAogICAgICAgIGlmICggISQjS2V5cyAmJiAkQ29uZmlnLT57RGVmYXVsdENvbHVtbnN9ICkgewogICAgICAgICAgICBwdXNoIEBLZXlzLCAnRGVmYXVsdENvbHVtbnMnOwogICAgICAgIH0KCiAgICAgICAgSU5ERVg6CiAgICAgICAgZm9yIG15ICRJbmRleCAoIDEgLi4gJCNLZXlzICkgewogICAgICAgICAgICBsYXN0IElOREVYIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQ29uZmlnKTsKICAgICAgICAgICAgJENvbmZpZyA9ICRDb25maWctPnsgJEtleXNbJEluZGV4XSB9OwogICAgICAgIH0KCiAgICAgICAgbmV4dCBWSUVXIGlmIHJlZiAkQ29uZmlnIG5lICdIQVNIJzsKCiAgICAgICAgbXkgJUV4aXN0aW5nU2V0dGluZyA9ICV7JENvbmZpZ307CiAgICAgICAgJENvbmZpZ3N7JFZpZXd9IHx8PSB7fTsKCiAgICAgICAgIyBjaGVja3MgaWYgc3Vic3RydWN0dXJlIG9mIERlZmF1bHRDb2x1bW5zIGV4aXN0cyBpbiBzZXR0aW5ncwogICAgICAgIGlmICggJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gKSB7CiAgICAgICAgICAgICRDb25maWdzeyRWaWV3fSA9ICRFeGlzdGluZ1NldHRpbmd7RGVmYXVsdENvbHVtbnN9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ3N7JFZpZXd9ID0gXCVFeGlzdGluZ1NldHRpbmc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlQ29uZmlnczsKfQoKPWl0ZW0gX0RlZmF1bHRDb2x1bW5zRW5hYmxlKCkKClRoaXMgZnVuY3Rpb24gZW5hYmxlcyB0aGUgZ2l2ZW4gQXR0cmlidXRlcyBmb3IgdGhlIHJlcXVlc3RlZCBEZWZhdWx0Q29sdW1ucy4KCiAgICBteSAlQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICA9PiAyLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgICAgICAgICAgID0+IDEKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Ryb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBEeW5hbWljRmllbGRfQW5vdGhlcm9uZSAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgPT4gMiwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgICAgICA9PiAxCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9Ecm9wZG93blRlc3QgPT4gMSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Fub3RoZXJvbmUgICA9PiAyLAogICAgICAgIH0sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UXVldWUjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlVmlldyMjI0RlZmF1bHRDb2x1bW5zJyA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRXYXRjaFZpZXcjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TG9ja2VkVmlldyMjI0RlZmF1bHRDb2x1bW5zJyAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEVzY2FsYXRpb25WaWV3IyMjRGVmYXVsdENvbHVtbnMnICA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VydmljZSMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgID0+IHt9LAoKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMjAtVGlja2V0TmV3JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMzAtVGlja2V0T3BlbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEwMC1DSUMtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDExMC1DSUMtVGlja2V0RXNjYWxhdGlvbicgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEyMC1DSUMtVGlja2V0TmV3JyAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEzMC1DSUMtVGlja2V0T3BlbicgICAgICAgICAgICA9PiB7fSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EZWZhdWx0Q29sdW1uc0VuYWJsZSglQ29uZmlncyk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfRGVmYXVsdENvbHVtbnNFbmFibGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJVNjcmVlbkNvbmZpZyA9ICVQYXJhbTsKICAgIG15IEBTZXR0aW5nczsKCiAgICBteSAkTm9Db25maWdSZWJ1aWxkID0gMDsKICAgIGlmICggJFBhcmFte05vQ29uZmlnUmVidWlsZH0gKSB7CiAgICAgICAgJE5vQ29uZmlnUmVidWlsZCA9IDE7CiAgICAgICAgZGVsZXRlICRQYXJhbXtOb0NvbmZpZ1JlYnVpbGR9OwogICAgfQoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkNvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkNvbmZpZ3skVmlld30gKTsKCiAgICAgICAgbXkgJEZyb250ZW5kUGF0aCA9ICRWaWV3OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRWaWV3ICF+IG17KERhc2hib2FyZEJhY2tlbmR8QWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kKX14bXNpCiAgICAgICAgICAgICYmICRWaWV3ICF+IG17KFx3Kzo6KStcdyt9eG1zaQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gIlRpY2tldDo6RnJvbnRlbmQ6OiRWaWV3IjsKICAgICAgICB9CgogICAgICAgIG15IEBLZXlzICAgPSBzcGxpdCAvIyMjLywgJEZyb250ZW5kUGF0aDsKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNvbmZpZyBoYXMgRGVmYXVsdENvbHVtbnMgYXR0cmlidXRlIGFuZCBzZXQgaXQKICAgICAgICBpZiAoICEkI0tleXMgJiYgJENvbmZpZy0+e0RlZmF1bHRDb2x1bW5zfSApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0RlZmF1bHRDb2x1bW5zJzsKICAgICAgICB9CgogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CgogICAgICAgIG5leHQgVklFVyBpZiByZWYgJENvbmZpZyBuZSAnSEFTSCc7CgogICAgICAgIG15ICVFeGlzdGluZ1NldHRpbmcgPSAleyRDb25maWd9OwoKICAgICAgICAjIGFkZCB0aGUgbmV3IHNldHRpbmdzCiAgICAgICAgbXkgJU5ld0R5bmFtaWNGaWVsZENvbmZpZzsKCiAgICAgICAgIyBjaGVja3MgaWYgRGVmYXVsdENvbHVtbnMgZXhpc3RzIGluIHNldHRpbmdzIChEYXNoYm9hcmRCYWNrZW5kIyMjMDEzMC1UaWNrZXRPcGVuKQogICAgICAgIGlmICggJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gKSB7CgogICAgICAgICAgICAleyAkRXhpc3RpbmdTZXR0aW5ne0RlZmF1bHRDb2x1bW5zfSB9ID0gKAogICAgICAgICAgICAgICAgJXsgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gfSwKICAgICAgICAgICAgICAgICV7ICRTY3JlZW5Db25maWd7JFZpZXd9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGFsbCB1bmRlZiBwYXJhbXMKICAgICAgICAgICAgQ09ORklHOgogICAgICAgICAgICBmb3IgbXkgJEN1cnJlbnRDb25maWcgKCBzb3J0IGtleXMgJXsgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHIGlmIGRlZmluZWQgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30tPnskQ3VycmVudENvbmZpZ307CiAgICAgICAgICAgICAgICBkZWxldGUgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30tPnskQ3VycmVudENvbmZpZ307CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICVOZXdEeW5hbWljRmllbGRDb25maWcgPSAlRXhpc3RpbmdTZXR0aW5nOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJU5ld0R5bmFtaWNGaWVsZENvbmZpZyA9ICgKICAgICAgICAgICAgICAgICVFeGlzdGluZ1NldHRpbmcsCiAgICAgICAgICAgICAgICAleyAkU2NyZWVuQ29uZmlneyRWaWV3fSB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgdW5kZWYgcGFyYW1zCiAgICAgICAgICAgIENPTkZJRzoKICAgICAgICAgICAgZm9yIG15ICRDdXJyZW50Q29uZmlnICggc29ydCBrZXlzICVOZXdEeW5hbWljRmllbGRDb25maWcgKSB7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJRyBpZiBkZWZpbmVkICROZXdEeW5hbWljRmllbGRDb25maWd7JEN1cnJlbnRDb25maWd9OwogICAgICAgICAgICAgICAgZGVsZXRlICROZXdEeW5hbWljRmllbGRDb25maWd7JEN1cnJlbnRDb25maWd9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgU3lzQ29uZmlnCiAgICAgICAgbXkgJFN5c0NvbmZpZ0tleSA9IGpvaW4gJyMjIycsIEBLZXlzOwoKICAgICAgICBwdXNoIEBTZXR0aW5ncywgewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkU3lzQ29uZmlnS2V5LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcJU5ld0R5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICB9OwogICAgfQoKICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFxAU2V0dGluZ3MsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnRGVmYXVsdCBjb2x1bW5zIHNldHRpbmdzIGVuYWJsZWQuJywKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJE5vQ29uZmlnUmVidWlsZDsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzCiAgICAjIGdldCBhIG5ldyBjb25maWcgb2JqZWN0IHRvIG1ha2Ugc3VyZSBjb25maWcgaXMgdXBkYXRlZAogICAgJFNlbGYtPl9SZWJ1aWxkQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EZWZhdWx0Q29sdW1uc0Rpc2FibGUoKQoKVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgZ2l2ZW4gQXR0cmlidXRlcyBmb3IgdGhlIHJlcXVlc3RlZCBEZWZhdWx0Q29sdW1ucy4KCiAgICBteSAlQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICA9PiAyLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgICAgICAgICAgID0+IDEKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Ryb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBEeW5hbWljRmllbGRfQW5vdGhlcm9uZSAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgPT4gMiwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgICAgICA9PiAxCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9Ecm9wZG93blRlc3QgPT4gMSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Fub3RoZXJvbmUgICA9PiAyLAogICAgICAgIH0sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UXVldWUjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlVmlldyMjI0RlZmF1bHRDb2x1bW5zJyA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRXYXRjaFZpZXcjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TG9ja2VkVmlldyMjI0RlZmF1bHRDb2x1bW5zJyAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEVzY2FsYXRpb25WaWV3IyMjRGVmYXVsdENvbHVtbnMnICA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VydmljZSMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgID0+IHt9LAoKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMjAtVGlja2V0TmV3JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMzAtVGlja2V0T3BlbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEwMC1DSUMtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDExMC1DSUMtVGlja2V0RXNjYWxhdGlvbicgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEyMC1DSUMtVGlja2V0TmV3JyAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEzMC1DSUMtVGlja2V0T3BlbicgICAgICAgICAgICA9PiB7fSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EZWZhdWx0Q29sdW1uc0Rpc2FibGUoJUNvbmZpZ3MpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0RlZmF1bHRDb2x1bW5zRGlzYWJsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAlU2NyZWVuQ29uZmlnID0gJVBhcmFtOwoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkNvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkNvbmZpZ3skVmlld30gKTsKCiAgICAgICAgbXkgJEZyb250ZW5kUGF0aCA9ICRWaWV3OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRWaWV3ICF+IG17KERhc2hib2FyZEJhY2tlbmR8QWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kKX14bXNpCiAgICAgICAgICAgICYmICRWaWV3ICF+IG17KFx3Kzo6KStcdyt9eG1zaQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gIlRpY2tldDo6RnJvbnRlbmQ6OiRWaWV3IjsKICAgICAgICB9CgogICAgICAgIG15IEBLZXlzICAgPSBzcGxpdCAvIyMjLywgJEZyb250ZW5kUGF0aDsKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNvbmZpZyBoYXMgRGVmYXVsdENvbHVtbnMgYXR0cmlidXRlIGFuZCBzZXQgaXQKICAgICAgICBpZiAoICEkI0tleXMgJiYgJENvbmZpZy0+e0RlZmF1bHRDb2x1bW5zfSApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0RlZmF1bHRDb2x1bW5zJzsKICAgICAgICB9CgogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CgogICAgICAgIG5leHQgVklFVyBpZiByZWYgJENvbmZpZyBuZSAnSEFTSCc7CgogICAgICAgIG15ICVFeGlzdGluZ1NldHRpbmcgPSAleyRDb25maWd9OwoKICAgICAgICAjIGFkZCB0aGUgbmV3IHNldHRpbmdzCiAgICAgICAgbXkgJU5ld0R5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICBpZiAoICRFeGlzdGluZ1NldHRpbmd7RGVmYXVsdENvbHVtbnN9ICkgewoKICAgICAgICAgICAgJU5ld0R5bmFtaWNGaWVsZENvbmZpZyA9ICVFeGlzdGluZ1NldHRpbmc7CiAgICAgICAgICAgIGRlbGV0ZSAkTmV3RHluYW1pY0ZpZWxkQ29uZmlne0RlZmF1bHRDb2x1bW5zfTsKCiAgICAgICAgICAgIFNFVFRJTkc6CiAgICAgICAgICAgIGZvciBteSAkRXhpc3RpbmdTZXR0aW5nS2V5ICggc29ydCBrZXlzICV7ICRFeGlzdGluZ1NldHRpbmd7RGVmYXVsdENvbHVtbnN9IH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmICRTY3JlZW5Db25maWd7JFZpZXd9LT57JEV4aXN0aW5nU2V0dGluZ0tleX07CiAgICAgICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkQ29uZmlne0RlZmF1bHRDb2x1bW5zfS0+eyRFeGlzdGluZ1NldHRpbmdLZXl9ID0gJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30tPnskRXhpc3RpbmdTZXR0aW5nS2V5fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgIFNFVFRJTkc6CiAgICAgICAgICAgIGZvciBteSAkRXhpc3RpbmdTZXR0aW5nS2V5ICggc29ydCBrZXlzICVFeGlzdGluZ1NldHRpbmcgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmICRTY3JlZW5Db25maWd7JFZpZXd9LT57JEV4aXN0aW5nU2V0dGluZ0tleX07CiAgICAgICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkQ29uZmlneyRFeGlzdGluZ1NldHRpbmdLZXl9ID0gJEV4aXN0aW5nU2V0dGluZ3skRXhpc3RpbmdTZXR0aW5nS2V5fTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJFN5c0NvbmZpZ0tleSA9IGpvaW4gJyMjIycsIEBLZXlzOwogICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFwlTmV3RHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgQ29tbWVudHMgPT4gJ0RlZmF1bHQgY29sdW1ucyBzZXR0aW5ncyBkaXNhYmxlZC4nLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzRGVmYXVsdENvbHVtbnNHZXQoKQoKUmV0dXJucyB0aGUgRGVmYXVsdENvbHVtbiBhdHRyaWJ1dGVzIG9mIHRoZSByZXF1ZXN0ZWQgU3lzQ29uZmlncywgcmVkdWNlZCB0byBkeW5hbWljIGZpZWxkcy4KCiAgICBteSBAQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFF1ZXVlIyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRXYXRjaFZpZXcjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TG9ja2VkVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRFc2NhbGF0aW9uVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VydmljZSMjI0RlZmF1bHRDb2x1bW5zJywKCiAgICAgICAgIyBzdWJzdHJ1Y3R1cmUgb2YgRGVmYXVsdENvbHVtbnMKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJywKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicsCiAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTIwLVRpY2tldE5ldycsCiAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTMwLVRpY2tldE9wZW4nLAoKICAgICAgICAjIHN1YnN0cnVjdHVyZSBvZiBEZWZhdWx0Q29sdW1ucwogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTAwLUNJQy1UaWNrZXRQZW5kaW5nUmVtaW5kZXInLAogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTEwLUNJQy1UaWNrZXRFc2NhbGF0aW9uJywKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEyMC1DSUMtVGlja2V0TmV3JywKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEzMC1DSUMtVGlja2V0T3BlbicsCiAgICApOwoKICAgIG15ICVDb25maWdzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0RlZmF1bHRDb2x1bW5zR2V0KEBDb25maWdzKTsKClJldHVybnM6CgogICAgbXkgJUNvbmZpZ3MgPSAoCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U3RhdHVzVmlldyMjI0RlZmF1bHRDb2x1bW5zJyA9PiB7CiAgICAgICAgICAgIERyb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBBbm90aGVyb25lICAgPT4gMiwKICAgICAgICB9LAogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEwMC1UaWNrZXRQZW5kaW5nUmVtaW5kZXInID0+IHsKICAgICAgICAgICAgRHJvcGRvd25UZXN0ID0+IDEsCiAgICAgICAgICAgIEFub3RoZXJvbmUgICA9PiAyLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGVmYXVsdENvbHVtbnNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIENvbmZpZ0l0ZW1zICkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJVNjcmVlbkNvbmZpZyA9ICRTZWxmLT5fRGVmYXVsdENvbHVtbnNHZXQoIEB7ICRQYXJhbXtDb25maWdJdGVtc30gfSApOwogICAgaWYgKCAhJVNjcmVlbkNvbmZpZyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgRGF0YSAoRGVmYXVsdENvbHVtbnMpIG9mIFN5c0NvbmZpZyAnJFBhcmFte0NvbmZpZ0l0ZW1zfScgISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUNvbmZpZzsKICAgIGZvciBteSAkQ29uZmlnSXRlbSAoIEB7ICRQYXJhbXtDb25maWdJdGVtc30gfSApIHsKCiAgICAgICAgbXkgJUN1cnJlbnRTY3JlZW5Db25maWcgPSAleyAkU2NyZWVuQ29uZmlneyRDb25maWdJdGVtfSB9OwoKICAgICAgICBJVEVNOgogICAgICAgIGZvciBteSAkSXRlbSAoIHNvcnQga2V5cyAlQ3VycmVudFNjcmVlbkNvbmZpZyApIHsKCiAgICAgICAgICAgIG5leHQgSVRFTSBpZiAkSXRlbSAhfiBte1xBRHluYW1pY0ZpZWxkX307CgogICAgICAgICAgICBteSAkVmFsdWUgPSAkQ3VycmVudFNjcmVlbkNvbmZpZ3skSXRlbX07CiAgICAgICAgICAgICRJdGVtID1+IHN7XEFEeW5hbWljRmllbGRffXt9OwogICAgICAgICAgICAkQ29uZmlneyRDb25maWdJdGVtfS0+eyRJdGVtfSA9ICRWYWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVDb25maWc7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzU2NyZWVuR2V0KCkKClRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgZGVmaW5lZCBkeW5hbWljIGZpZWxkcyBpbiB0aGUgc2NyZWVucy4KCiAgICBteSBAQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZCcsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0Wm9vbSMjI0ZvbGxvd1VwRHluYW1pY0ZpZWxkJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNTZWFyY2hDU1ZEeW5hbWljRmllbGQnLAogICAgKTsKCiAgICBteSAlQ29uZmlncyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNEZWZhdWx0Q29sdW1uc0dldChAQ29uZmlncyk7CgoKUmV0dXJuczoKCiAgICBteSAlQ29uZmlncyA9ICgKICAgICAgICBUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMiwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMCwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMiwKICAgICAgICB9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMSA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMiA9PiAyLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMyA9PiAwLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNCA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNSA9PiAyLAogICAgICAgIH0sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkJyA9PiB7CiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQxID0+IDEsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQyID0+IDIsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQzID0+IDAsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQ0ID0+IDEsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQ1ID0+IDIsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNTY3JlZW5HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtcykpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUNvbmZpZzsKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKCBAeyAkUGFyYW17Q29uZmlnSXRlbXN9IH0gKSB7CiAgICAgICAgbXkgQEtleXMgPSBzcGxpdCAvIyMjLywgJENvbmZpZ0l0ZW07CgogICAgICAgIG15ICRDb25maWdJdGVtQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1Db25maWcpOwogICAgICAgICAgICAkQ29uZmlnSXRlbUNvbmZpZyA9ICRDb25maWdJdGVtQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CiAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICEkQ29uZmlnSXRlbUNvbmZpZzsKICAgICAgICBuZXh0IENPTkZJR0lURU0gaWYgcmVmICRDb25maWdJdGVtQ29uZmlnIG5lICdIQVNIJzsKCiAgICAgICAgJENvbmZpZ3skQ29uZmlnSXRlbX0gPSAkQ29uZmlnSXRlbUNvbmZpZzsKICAgIH0KCiAgICByZXR1cm4gJUNvbmZpZzsKfQoKPWl0ZW0gX0R5bmFtaWNGaWVsZHNTY3JlZW5FbmFibGUoKQoKVGhpcyBmdW5jdGlvbiBlbmFibGVzIHRoZSBkZWZpbmVkIGR5bmFtaWMgZmllbGRzIGluIHRoZSBuZWVkZWQgc2NyZWVucy4KCiAgICBteSAlU2NyZWVucyA9ICgKICAgICAgICBBZ2VudFRpY2tldEZyZWVUZXh0ID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMSA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMiA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMyA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNCA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgJ0FnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdJVFNNQ2hhbmdlOjpGcm9udGVuZDo6QWdlbnRJVFNNQ2hhbmdlRWRpdCMjI0R5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDEgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQyID0+IDEsCiAgICAgICAgICAgIENoYW5nZUZyZWVUZXh0MyA9PiAxLAogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDQgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQ1ID0+IDEsCiAgICAgICAgfSwKICAgICAgICAnSVRTTVdvcmtPcmRlcjo6RnJvbnRlbmQ6OkFnZW50SVRTTVdvcmtPcmRlckVkaXQjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQxID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0MiA9PiAxLAogICAgICAgICAgICBXb3JrT3JkZXJGcmVlVGV4dDMgPT4gMSwKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQ0ID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0NSA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkVuYWJsZSglU2NyZWVucyk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc1NjcmVlbkVuYWJsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGRlZmluZSB0aGUgZW5hYmxlZCBkeW5hbWljIGZpZWxkcyBmb3IgZWFjaCBzY3JlZW4KICAgICMgKHRha2VuIGZyb20gc3lzY29uZmlnKQogICAgbXkgJVNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZyA9ICVQYXJhbTsKICAgIG15IEBTZXR0aW5nczsKCiAgICBteSAkTm9Db25maWdSZWJ1aWxkID0gMDsKICAgIGlmICggJFBhcmFte05vQ29uZmlnUmVidWlsZH0gKSB7CiAgICAgICAgJE5vQ29uZmlnUmVidWlsZCA9IDE7CiAgICAgICAgZGVsZXRlICRQYXJhbXtOb0NvbmZpZ1JlYnVpbGR9OwogICAgfQoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZ3skVmlld30gKTsKCiAgICAgICAgIyBUaGVyZSBhcmUgc3BlY2lhbCBjYXNlcyBmb3IgZGVmaW5pbmcgdGhlIHZpc2liaWxpdHkgb2YgRHluYW1pY0ZpZWxkcwogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZAogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRab29tIyMjRm9sbG93VXBEeW5hbWljRmllbGQKICAgICAgICAjIFRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkCiAgICAgICAgIwogICAgICAgICMgb24gcmVndWxhciBjYWxscyAkVmlldyBjb250YWlucyBmb3IgZXhhbXBsZSAiQWdlbnRUaWNrZXRFbWFpbCIKICAgICAgICAjCiAgICAgICAgIyBmb3IgdGhlIHRocmVlIHNwZWNpYWwgY2FzZXMgJFZpZXcgY29udGFpbnM6CiAgICAgICAgIyBBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZAogICAgICAgICMgQWdlbnRUaWNrZXRTZWFyY2gjIyNTZWFyY2hDU1ZEeW5hbWljRmllbGQKICAgICAgICAjCiAgICAgICAgIyBvciBjYWxscyBmb3IgaXRzbSBjaGFuZ2UgbWFuYWdlbWVudCBmb3IgZXhhbXBsZQogICAgICAgICMKICAgICAgICAjIElUU01DaGFuZ2U6OkZyb250ZW5kOjpBZ2VudElUU01DaGFuZ2VFZGl0IyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBJVFNNV29ya09yZGVyOjpGcm9udGVuZDo6QWdlbnRJVFNNV29ya09yZGVyRWRpdCMjI0R5bmFtaWNGaWVsZAogICAgICAgICMKICAgICAgICAjIHNvIHNwbGl0IG9uICcjIyMnCiAgICAgICAgIyBhbmQgcHV0IHRoZSB2YWx1ZXMgaW4gdGhlIEBLZXlzIGFycmF5CiAgICAgICAgIwogICAgICAgICMgZm9yIHJlZ3VsYXIgY2FzZXMgd2UgcHV0IGluIHRoZSBWaWV3IG5hbWUgb24gJEtleXNbMF0gYW5kICdEeW5hbWljRmllbGQnIG9uICRLZXlzWzFdCgogICAgICAgIG15ICRGcm9udGVuZFBhdGggPSAiVGlja2V0OjpGcm9udGVuZDo6JFZpZXciOwogICAgICAgIGlmICggJFZpZXcgPX4gbXsoXHcrOjopK1x3K314bXNpICkgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gJFZpZXc7CiAgICAgICAgfQogICAgICAgIG15IEBLZXlzID0gc3BsaXQgLyMjIy8sICRGcm9udGVuZFBhdGg7CgogICAgICAgIGlmICggISQjS2V5cyApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0R5bmFtaWNGaWVsZCc7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CiAgICAgICAgbmV4dCBWSUVXIGlmIHJlZiAkQ29uZmlnIG5lICdIQVNIJzsKICAgICAgICBteSAlRXhpc3RpbmdTZXR0aW5nID0gJXskQ29uZmlnfTsKCiAgICAgICAgIyBhZGQgdGhlIG5ldyBzZXR0aW5ncwogICAgICAgIG15ICVOZXdEeW5hbWljRmllbGRDb25maWcgPSAoICVFeGlzdGluZ1NldHRpbmcsICV7ICRTY3JlZW5EeW5hbWljRmllbGRDb25maWd7JFZpZXd9IH0gKTsKCiAgICAgICAgIyBkZWxldGUgYWxsIHVuZGVmIHBhcmFtcwogICAgICAgIENPTkZJRzoKICAgICAgICBmb3IgbXkgJEN1cnJlbnRDb25maWcgKCBzb3J0IGtleXMgJU5ld0R5bmFtaWNGaWVsZENvbmZpZyApIHsKICAgICAgICAgICAgbmV4dCBDT05GSUcgaWYgZGVmaW5lZCAkTmV3RHluYW1pY0ZpZWxkQ29uZmlneyRDdXJyZW50Q29uZmlnfTsKICAgICAgICAgICAgZGVsZXRlICROZXdEeW5hbWljRmllbGRDb25maWd7JEN1cnJlbnRDb25maWd9OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIHN5c2NvbmZpZwogICAgICAgIG15ICRTeXNDb25maWdLZXkgPSBqb2luICcjIyMnLCBAS2V5czsKCiAgICAgICAgcHVzaCBAU2V0dGluZ3MsIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gXCVOZXdEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgfTsKICAgIH0KCiAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBTZXR0aW5ncyA9PiBcQFNldHRpbmdzLAogICAgICAgIENvbW1lbnRzID0+ICdEeW5hbWljRmllbGRzIHNjcmVlbiBzZXR0aW5ncyBlbmFibGVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJE5vQ29uZmlnUmVidWlsZDsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzCiAgICAjIGdldCBhIG5ldyBjb25maWcgb2JqZWN0IHRvIG1ha2Ugc3VyZSBjb25maWcgaXMgdXBkYXRlZAogICAgJFNlbGYtPl9SZWJ1aWxkQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzU2NyZWVuRGlzYWJsZSgpCgpUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBkZWZpbmVkIGR5bmFtaWMgZmllbGRzIGluIHRoZSBuZWVkZWQgc2NyZWVucy4KCiAgICBteSAlU2NyZWVucyA9ICgKICAgICAgICBBZ2VudFRpY2tldEZyZWVUZXh0ID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMSA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMiA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMyA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNCA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgJ0FnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdJVFNNQ2hhbmdlOjpGcm9udGVuZDo6QWdlbnRJVFNNQ2hhbmdlRWRpdCMjI0R5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDEgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQyID0+IDEsCiAgICAgICAgICAgIENoYW5nZUZyZWVUZXh0MyA9PiAxLAogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDQgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQ1ID0+IDEsCiAgICAgICAgfSwKICAgICAgICAnSVRTTVdvcmtPcmRlcjo6RnJvbnRlbmQ6OkFnZW50SVRTTVdvcmtPcmRlckVkaXQjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQxID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0MiA9PiAxLAogICAgICAgICAgICBXb3JrT3JkZXJGcmVlVGV4dDMgPT4gMSwKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQ0ID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0NSA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkRpc2FibGUoJVNjcmVlbnMpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNTY3JlZW5EaXNhYmxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZGVmaW5lIHRoZSBlbmFibGVkIGR5bmFtaWMgZmllbGRzIGZvciBlYWNoIHNjcmVlbgogICAgIyAodGFrZW4gZnJvbSBzeXNjb25maWcpCiAgICBteSAlU2NyZWVuRHluYW1pY0ZpZWxkQ29uZmlnID0gJVBhcmFtOwoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZ3skVmlld30gKTsKCiAgICAgICAgIyBUaGVyZSBhcmUgc3BlY2lhbCBjYXNlcyBmb3IgZGVmaW5pbmcgdGhlIHZpc2liaWxpdHkgb2YgRHluYW1pY0ZpZWxkcwogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZAogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRab29tIyMjRm9sbG93VXBEeW5hbWljRmllbGQKICAgICAgICAjIFRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkCiAgICAgICAgIwogICAgICAgICMgb24gcmVndWxhciBjYWxscyAkVmlldyBjb250YWlucyBmb3IgZXhhbXBsZSAiQWdlbnRUaWNrZXRFbWFpbCIKICAgICAgICAjCiAgICAgICAgIyBmb3IgdGhlIHRocmVlIHNwZWNpYWwgY2FzZXMgJFZpZXcgY29udGFpbnM6CiAgICAgICAgIyBBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZAogICAgICAgICMgQWdlbnRUaWNrZXRTZWFyY2gjIyNTZWFyY2hDU1ZEeW5hbWljRmllbGQKICAgICAgICAjCiAgICAgICAgIyBvciBjYWxscyBmb3IgaXRzbSBjaGFuZ2UgbWFuYWdlbWVudCBmb3IgZXhhbXBsZQogICAgICAgICMKICAgICAgICAjIElUU01DaGFuZ2U6OkZyb250ZW5kOjpBZ2VudElUU01DaGFuZ2VFZGl0IyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBJVFNNV29ya09yZGVyOjpGcm9udGVuZDo6QWdlbnRJVFNNV29ya09yZGVyRWRpdCMjI0R5bmFtaWNGaWVsZAogICAgICAgICMKICAgICAgICAjIHNvIHNwbGl0IG9uICcjIyMnCiAgICAgICAgIyBhbmQgcHV0IHRoZSB2YWx1ZXMgaW4gdGhlIEBLZXlzIGFycmF5CiAgICAgICAgIwogICAgICAgICMgZm9yIHJlZ3VsYXIgY2FzZXMgd2UgcHV0IGluIHRoZSBWaWV3IG5hbWUgb24gJEtleXNbMF0gYW5kICdEeW5hbWljRmllbGQnIG9uICRLZXlzWzFdCgogICAgICAgIG15ICRGcm9udGVuZFBhdGggPSAiVGlja2V0OjpGcm9udGVuZDo6JFZpZXciOwogICAgICAgIGlmICggJFZpZXcgPX4gbXsoXHcrOjopK1x3K314bXNpICkgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gJFZpZXc7CiAgICAgICAgfQogICAgICAgIG15IEBLZXlzID0gc3BsaXQgLyMjIy8sICRGcm9udGVuZFBhdGg7CgogICAgICAgIGlmICggISQjS2V5cyApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0R5bmFtaWNGaWVsZCc7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CiAgICAgICAgbmV4dCBWSUVXIGlmIHJlZiAkQ29uZmlnIG5lICdIQVNIJzsKICAgICAgICBteSAlRXhpc3RpbmdTZXR0aW5nID0gJXskQ29uZmlnfTsKCiAgICAgICAgbXkgJU5ld0R5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkRXhpc3RpbmdTZXR0aW5nS2V5ICggc29ydCBrZXlzICVFeGlzdGluZ1NldHRpbmcgKSB7CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgJFNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZ3skVmlld30tPnskRXhpc3RpbmdTZXR0aW5nS2V5fTsKCiAgICAgICAgICAgICROZXdEeW5hbWljRmllbGRDb25maWd7JEV4aXN0aW5nU2V0dGluZ0tleX0gPSAkRXhpc3RpbmdTZXR0aW5neyRFeGlzdGluZ1NldHRpbmdLZXl9OwogICAgICAgIH0KCiAgICAgICAgbXkgJFN5c0NvbmZpZ0tleSA9IGpvaW4gJyMjIycsIEBLZXlzOwogICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFwlTmV3RHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgQ29tbWVudHMgPT4gJ0R5bmFtaWNGaWVsZHMgc2NyZWVuIHNldHRpbmdzIGRpc2FibGVkLicsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZWxvYWQgdGhlIFpaWiBmaWxlcwogICAgICAgICMgZ2V0IGEgbmV3IGNvbmZpZyBvYmplY3QgdG8gbWFrZSBzdXJlIGNvbmZpZyBpcyB1cGRhdGVkCiAgICAgICAgJFNlbGYtPl9SZWJ1aWxkQ29uZmlnKCk7CgogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfRHluYW1pY0ZpZWxkc0RlbGV0ZSgpCgpUaGlzIGZ1bmN0aW9uIGRlbGV0ZSB0aGUgZGVmaW5lZCBkeW5hbWljIGZpZWxkcwoKICAgIG15IEBEeW5hbWljRmllbGRzID0gKAogICAgICAgICdUZXN0RHluYW1pY0ZpZWxkMScsCiAgICAgICAgJ1Rlc3REeW5hbWljRmllbGQyJywKICAgICAgICAnVGVzdER5bmFtaWNGaWVsZDMnLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNEZWxldGUoQER5bmFtaWNGaWVsZHMpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgQER5bmFtaWNGaWVsZHMgKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIHJldHVybiAxIGlmICFARHluYW1pY0ZpZWxkczsKCiAgICAjIGdldCBhbGwgY3VycmVudCBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwoKICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZExpc3QpOwoKICAgICMgY3JlYXRlIGEgZHluYW1pYyBmaWVsZHMgbG9va3VwIHRhYmxlCiAgICBteSAlRHluYW1pY0ZpZWxkTG9va3VwOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggQHskRHluYW1pY0ZpZWxkTGlzdH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZExvb2t1cHsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkOwogICAgfQoKICAgICMgZGVsZXRlIHRoZSBkeW5hbWljIGZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lIChARHluYW1pY0ZpZWxkcykgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRMb29rdXB7JER5bmFtaWNGaWVsZE5hbWV9ICk7CgogICAgICAgICRCYWNrZW5kT2JqZWN0LT5BbGxWYWx1ZXNEZWxldGUoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkTG9va3VweyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAleyAkRHluYW1pY0ZpZWxkTG9va3VweyREeW5hbWljRmllbGROYW1lfSB9LAogICAgICAgICAgICBSZW9yZGVyID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfRHluYW1pY0ZpZWxkc0Rpc2FibGUoKQoKVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgZGVmaW5lZCBkeW5hbWljIGZpZWxkcwoKICAgIG15IEBEeW5hbWljRmllbGRzID0gKAogICAgICAgICdUZXN0RHluYW1pY0ZpZWxkMScsCiAgICAgICAgJ1Rlc3REeW5hbWljRmllbGQyJywKICAgICAgICAnVGVzdER5bmFtaWNGaWVsZDMnLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNEaXNhYmxlKEBEeW5hbWljRmllbGRzKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGlzYWJsZSB7CiAgICBteSAoICRTZWxmLCBARHluYW1pY0ZpZWxkcyApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICByZXR1cm4gMSBpZiAhQER5bmFtaWNGaWVsZHM7CgogICAgIyBnZXQgYWxsIGN1cnJlbnQgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCREeW5hbWljRmllbGRMaXN0KTsKCiAgICAjIGNyZWF0ZSBhIGR5bmFtaWMgZmllbGRzIGxvb2t1cCB0YWJsZQogICAgbXkgJUR5bmFtaWNGaWVsZExvb2t1cDsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7JER5bmFtaWNGaWVsZExpc3R9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CgogICAgICAgICREeW5hbWljRmllbGRMb29rdXB7ICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgIH0KCiAgICBteSAkSW52YWxpZElEID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICBWYWxpZCA9PiAnaW52YWxpZCcsCiAgICApOwoKICAgICMgZGlzYWJsZSB0aGUgZHluYW1pYyBmaWVsZHMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoQER5bmFtaWNGaWVsZHMpIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRMb29rdXB7JER5bmFtaWNGaWVsZE5hbWV9OwoKICAgICAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgICAgICV7ICREeW5hbWljRmllbGRMb29rdXB7JER5bmFtaWNGaWVsZE5hbWV9IH0sCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJEludmFsaWRJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBhbGwgZHluYW1pYyBmaWVsZHMgdGhhdCBhcmUgbmVjZXNzYXJ5CgogICAgbXkgQER5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdUZXN0RHluYW1pY0ZpZWxkMScsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gIlRlc3REeW5hbWljRmllbGQxIiwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGV4dCcsCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICIiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdUZXN0RHluYW1pY0ZpZWxkMicsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gIlRlc3REeW5hbWljRmllbGQyIiwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGV4dCcsCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICIiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzQ3JlYXRlSWZOb3RFeGlzdHMoIEBEeW5hbWljRmllbGRzICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc0NyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsIEBEZWZpbml0aW9uICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZ2V0IGFsbCBjdXJyZW50IGR5bmFtaWMgZmllbGRzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCREeW5hbWljRmllbGRMaXN0KSApIHsKICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9IFtdOwogICAgfQoKICAgIG15IEBEeW5hbWljRmllbGRFeGlzdHNOb3Q7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJE5ld0R5bmFtaWNGaWVsZCAoQERlZmluaXRpb24pIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCROZXdEeW5hbWljRmllbGQpOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiBncmVwIHsgJE5ld0R5bmFtaWNGaWVsZC0+e05hbWV9IGVxICRfLT57TmFtZX0gfSBAeyREeW5hbWljRmllbGRMaXN0fTsKCiAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkRXhpc3RzTm90LCAkTmV3RHluYW1pY0ZpZWxkOwogICAgfQoKICAgIHJldHVybiAxIGlmICFARHluYW1pY0ZpZWxkRXhpc3RzTm90OwoKICAgIHJldHVybiAkU2VsZi0+X0R5bmFtaWNGaWVsZHNDcmVhdGUoQER5bmFtaWNGaWVsZEV4aXN0c05vdCk7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzQ3JlYXRlKCkKCmNyZWF0ZXMgYWxsIGR5bmFtaWMgZmllbGRzIHRoYXQgYXJlIG5lY2Vzc2FyeQoKVXNhYmxlIFNuaXBwZXRzIChTdWJsaW1lVGV4dEFkanVzdG1lbnRzKToKICAgIG90cnMuZHluYW1pY2ZpZWxkLmNvbmZpZy50ZXh0CiAgICBvdHJzLmR5bmFtaWNmaWVsZC5jb25maWcuY2hlY2tib3gKICAgIG90cnMuZHluYW1pY2ZpZWxkLmNvbmZpZy5kYXRldGltZQogICAgb3Rycy5keW5hbWljZmllbGQuY29uZmlnLmRyb3Bkb3duCiAgICBvdHJzLmR5bmFtaWNmaWVsZC5jb25maWcudGV4dGFyZWEKICAgIG90cnMuZHluYW1pY2ZpZWxkLmNvbmZpZy5tdWx0aXNlbGVjdAoKICAgIG15IEBEeW5hbWljRmllbGRzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnVGVzdER5bmFtaWNGaWVsZDEnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICJUZXN0RHluYW1pY0ZpZWxkMSIsCiAgICAgICAgICAgIEludGVybmFsRmllbGQgPT4gMCwgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCAwIG9yIDEsIGludGVybmFsIGZpZWxkcyBhcmUgcHJvdGVjdGVkCiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiIiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1Rlc3REeW5hbWljRmllbGQyJywKICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICAgICAgPT4gIlRlc3REeW5hbWljRmllbGQyIiwKICAgICAgICAgICAgSW50ZXJuYWxGaWVsZCAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCAwIG9yIDEsIGludGVybmFsIGZpZWxkcyBhcmUgcHJvdGVjdGVkCiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgICAgICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBGaWVsZFR5cGUgICAgICAgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIEZpZWxkT3JkZXJBZnRlckZpZWxkID0+ICdUZXN0RHluYW1pY0ZpZWxkMScsICAgIyBzcGVjaWFsIGZlYXR1cmUgdG8gb3JkZXIgZmllbGRzIGF0IGEgc3BlY2lmaWMgcG9pbnQuIENhbiBiZSBhbHNvIHVzZWQgZm9yIGZpZWxkcyB3aGljaCBhcmUgZ2V0dGluZyBjcmVhdGVkIGluIHRoZSBzYW1lIGFycmF5IGJlZm9yZSB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICIiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0NyZWF0ZSggQER5bmFtaWNGaWVsZHMgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsIEBEeW5hbWljRmllbGRzICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICBteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICk7CgogICAgIyBnZXQgYWxsIGN1cnJlbnQgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZExpc3QpICkgewogICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gW107CiAgICB9CgogICAgIyBnZXQgdGhlIGxhc3QgZWxlbWVudCBmcm9tIHRoZSBvcmRlciBsaXN0IGFuZCBhZGQgMQogICAgbXkgJE5leHRPcmRlck51bWJlciA9IDE7CiAgICBpZiAoCiAgICAgICAgSXNBcnJheVJlZldpdGhEYXRhKCREeW5hbWljRmllbGRMaXN0KQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkTGlzdC0+Wy0xXSApCiAgICAgICAgJiYgJER5bmFtaWNGaWVsZExpc3QtPlstMV0tPntGaWVsZE9yZGVyfQogICAgICAgICkKICAgIHsKICAgICAgICAkTmV4dE9yZGVyTnVtYmVyID0gJER5bmFtaWNGaWVsZExpc3QtPlstMV0tPntGaWVsZE9yZGVyfSArIDE7CiAgICB9CgogICAgIyBjcmVhdGUgYSBkeW5hbWljIGZpZWxkcyBsb29rdXAgdGFibGUKICAgIG15ICVEeW5hbWljRmllbGRMb29rdXA7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAkRHluYW1pY0ZpZWxkTG9va3VweyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGQ7CiAgICB9CgogICAgIyBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBmb3IgdGhlIEZpZWxkT3JkZXJBZnRlckZpZWxkIGZ1bmN0aW9uYWxpdHkKICAgIG15ICRGaWVsZE9yZGVyQWZ0ZXJGaWVsZEFjdGl2ZSA9IGdyZXAgeyAkXy0+e0ZpZWxkT3JkZXJBZnRlckZpZWxkfSB8fCAkXy0+e0ZpZWxkT3JkZXJBZnRlckZpZWxkVXBkYXRlfSB9IEBEeW5hbWljRmllbGRzOwogICAgbXkgJEVycm9yICAgICAgICAgICAgICAgICAgICAgID0gMDsKCiAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGRzIGFuZCBzcGxpdCBkeW5hbWljIGZpZWxkcyBpbiB0aHJlZSBzZXBhcmF0ZSBncm91cHMKICAgIG15ICVOYW1lc3BhY2VzOwogICAgbXkgQE5vcm1hbEZpZWxkczsKICAgIG15IEBMZW5zRmllbGRzOwogICAgbXkgQFNldEZpZWxkczsKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnIChARHluYW1pY0ZpZWxkcykgewoKICAgICAgICAjIGNoZWNrIGZvciBuYW1lc3BhY2VzCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICBpZiAoICRGaWVsZE5hbWUgIX4gbXsgXEEgW2EtekEtWlxkXC1dKyBceiB9eG1zICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkludmFsaWQgRHluYW1pY0ZpZWxkIG5hbWUgJyRGaWVsZE5hbWUnLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmICggJEZpZWxkTmFtZSA9fiAvXihbXi1dKyktLyApIHsKICAgICAgICAgICAgJE5hbWVzcGFjZXN7JDF9ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc29ydCBmaWVsZCBpbnRvIGZpdHRpbmcgYXJyYXkKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdMZW5zJyApIHsKICAgICAgICAgICAgcHVzaCBATGVuc0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgcHVzaCBAU2V0RmllbGRzLCAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHVzaCBATm9ybWFsRmllbGRzLCAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNvcnQgbGVucyBmaWVsZHMgaW4gY2FzZSBhIGxlbnMgaGFzIGFub3RoZXIgbGVucyBhcyBhdHRyaWJ1dGUgZHluYW1pYyBmaWVsZAogICAgbXkgQExlbnNGaWVsZHNTb3J0ZWQgPSBzb3J0IHsKICAgICAgICAoICRiLT57TmFtZX0gZXEgJGEtPntDb25maWd9e0F0dHJpYnV0ZURGfSApIDw9PiAoICRhLT57TmFtZX0gZXEgJGItPntDb25maWd9e0F0dHJpYnV0ZURGfSApCiAgICB9IEBMZW5zRmllbGRzOwoKICAgICMgbmFtZXNwYWNlIGhhbmRsaW5nCiAgICBpZiAoJU5hbWVzcGFjZXMpIHsKCiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAgICAgIyBHZXQgY3VycmVudCBzZXR0aW5nIHZhbHVlLgogICAgICAgIG15ICVTZXR0aW5nID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzJywKICAgICAgICApOwoKICAgICAgICBteSAkRXhpc3RpbmdOYW1lc3BhY2VzID0gJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9OwogICAgICAgIG15ICVBbGxOYW1lc3BhY2VzICAgICAgPSAoCiAgICAgICAgICAgICggbWFwIHsgJF8gPT4gMSB9ICRFeGlzdGluZ05hbWVzcGFjZXMtPkAqICksCiAgICAgICAgICAgICVOYW1lc3BhY2VzLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZXNwYWNlcyBuZWVkIHRvIGJlIGNoYW5nZWQKICAgICAgICBteSAkVXBkYXRlTmFtZXNwYWNlcyA9IDA7CiAgICAgICAgTkVXTkFNRVNQQUNFOgogICAgICAgIGZvciBteSAkTmV3TmFtZXNwYWNlICgga2V5cyAlQWxsTmFtZXNwYWNlcyApIHsKICAgICAgICAgICAgaWYgKCBub25lIHsgJE5ld05hbWVzcGFjZSBlcSAkXyB9ICRFeGlzdGluZ05hbWVzcGFjZXMtPkAqICkgewogICAgICAgICAgICAgICAgJFVwZGF0ZU5hbWVzcGFjZXMgPSAxOwogICAgICAgICAgICAgICAgbGFzdCBORVdOQU1FU1BBQ0U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRVcGRhdGVOYW1lc3BhY2VzKSB7CgogICAgICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgRm9yY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgVXBkYXRlIHNldHRpbmcgd2l0aCBtb2RpZmllZCBkYXRhCiAgICAgICAgICAgIG15ICVSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcycsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgICAgPT4gWyBrZXlzICVBbGxOYW1lc3BhY2VzIF0sCiAgICAgICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkUmVzdWx0e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvdWxkIG5vdCB1cGRhdGUgc2V0dGluZyBEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMuJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvdWxkIG5vdCB1bmxvY2sgc2V0dGluZyBEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMuJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICVEZXBsb3ltZW50UmVzdWx0ID0gJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlndXJhdGlvbkRlcGxveSgKICAgICAgICAgICAgICAgIENvbW1lbnRzICAgICAgPT4gIkR5bmFtaWNGaWVsZEltcG9ydCB1cGRhdGluZyBEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRm9yY2UgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGlydHlTZXR0aW5ncyA9PiBbJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcyddLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRGVwbG95bWVudCBmYWlsZWQhJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgb3IgdXBkYXRlIGR5bmFtaWMgZmllbGRzCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJE5ld0R5bmFtaWNGaWVsZCAoIEBOb3JtYWxGaWVsZHMsIEBMZW5zRmllbGRzU29ydGVkLCBAU2V0RmllbGRzICkgewoKICAgICAgICAjIGZpZWxkIGNvbmZpZyB0cmFuc2Zvcm1hdGlvbgogICAgICAgICROZXdEeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRDb25maWdOYW1lMklEKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE5ld0R5bmFtaWNGaWVsZCwKICAgICAgICApOwoKICAgICAgICBteSAkQ3JlYXRlRHluYW1pY0ZpZWxkOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBkeW5hbWljIGZpZWxkIGFscmVhZHkgZXhpc3RzCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRMb29rdXB7ICROZXdEeW5hbWljRmllbGQtPntOYW1lfSB9ICkgKSB7CiAgICAgICAgICAgICRDcmVhdGVEeW5hbWljRmllbGQgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB0aGUgZmllbGQgZXhpc3RzIGNoZWNrIGlmIHRoZSB0eXBlIG1hdGNoZXMgd2l0aCB0aGUgbmVlZGVkIHR5cGUKICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRMb29rdXB7ICROZXdEeW5hbWljRmllbGQtPntOYW1lfSB9LT57RmllbGRUeXBlfQogICAgICAgICAgICBuZSAkTmV3RHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAlT2xkRHluYW1pY0ZpZWxkQ29uZmlnID0gJXsgJER5bmFtaWNGaWVsZExvb2t1cHsgJE5ld0R5bmFtaWNGaWVsZC0+e05hbWV9IH0gfTsKCiAgICAgICAgICAgICMgcmVuYW1lIHRoZSBmaWVsZCBhbmQgY3JlYXRlIGEgbmV3IG9uZQogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAgICAgICAgICVPbGREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tOYW1lfSAuICdPbGQnLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSByZW5hbWluZyBkeW5hbWljIGZpZWxkICRPbGREeW5hbWljRmllbGRDb25maWd7TmFtZX0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRXJyb3IgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkQ3JlYXRlRHluYW1pY0ZpZWxkID0gMTsKICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIGlmIHRoZSBmaWVsZCBleGlzdHMgYW5kIHRoZSB0eXBlIG1hdGNoZXMsIHVwZGF0ZSBpdCBhcyBkZWZpbmVkCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICVPbGREeW5hbWljRmllbGRDb25maWcgPSAleyAkRHluYW1pY0ZpZWxkTG9va3VweyAkTmV3RHluYW1pY0ZpZWxkLT57TmFtZX0gfSB9OwoKICAgICAgICAgICAgbXkgJEZpZWxkT3JkZXJVcGRhdGUgPSAkU2VsZi0+RHluYW1pY0ZpZWxkRmllbGRPcmRlckFmdGVyRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICROZXdEeW5hbWljRmllbGQtPntGaWVsZE9yZGVyQWZ0ZXJGaWVsZFVwZGF0ZX0sCiAgICAgICAgICAgICkgfHwgJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tGaWVsZE9yZGVyfTsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICAgICAgJXskTmV3RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgIElEICAgICAgICAgPT4gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tJRH0sCiAgICAgICAgICAgICAgICBGaWVsZE9yZGVyID0+ICRGaWVsZE9yZGVyVXBkYXRlLAogICAgICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAkTmV3RHluYW1pY0ZpZWxkLT57VmFsaWRJRH0gfHwgJFZhbGlkSUQsCiAgICAgICAgICAgICAgICBSZW9yZGVyICAgID0+IDAsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIHVwZGF0aW5nIGR5bmFtaWMgZmllbGQgJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tOYW1lfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRFcnJvciA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbmV3IGZpZWxkIGhhcyB0byBiZSBjcmVhdGVkCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRDcmVhdGVEeW5hbWljRmllbGQ7CgogICAgICAgIG15ICRGaWVsZE9yZGVyQWRkID0gJFNlbGYtPkR5bmFtaWNGaWVsZEZpZWxkT3JkZXJBZnRlckZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICROZXdEeW5hbWljRmllbGQtPntGaWVsZE9yZGVyQWZ0ZXJGaWVsZH0sCiAgICAgICAgKSB8fCAkTmV4dE9yZGVyTnVtYmVyOwoKICAgICAgICAjIGNyZWF0ZSBhIG5ldyBmaWVsZAogICAgICAgIG15ICRGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICROZXdEeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTmV3RHluYW1pY0ZpZWxkLT57TGFiZWx9LAogICAgICAgICAgICBGaWVsZE9yZGVyICAgID0+ICRGaWVsZE9yZGVyQWRkLAogICAgICAgICAgICBGaWVsZFR5cGUgICAgID0+ICROZXdEeW5hbWljRmllbGQtPntGaWVsZFR5cGV9LAogICAgICAgICAgICBPYmplY3RUeXBlICAgID0+ICROZXdEeW5hbWljRmllbGQtPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgQ29uZmlnICAgICAgICA9PiAkTmV3RHluYW1pY0ZpZWxkLT57Q29uZmlnfSwKICAgICAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAkTmV3RHluYW1pY0ZpZWxkLT57SW50ZXJuYWxGaWVsZH0gfHwgMCwKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAkTmV3RHluYW1pY0ZpZWxkLT57VmFsaWRJRH0gICAgICAgfHwgJFZhbGlkSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIGNyZWF0aW5nIGR5bmFtaWMgZmllbGQgJE5ld0R5bmFtaWNGaWVsZC0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRFcnJvciA9IDE7CiAgICAgICAgfQogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRmllbGRJRDsKCiAgICAgICAgIyBpbmNyZWFzZSB0aGUgb3JkZXIgbnVtYmVyCiAgICAgICAgJE5leHRPcmRlck51bWJlcisrOwogICAgfQoKICAgIHJldHVybiAhJEVycm9yOwp9Cgo9aXRlbSBEeW5hbWljRmllbGRGaWVsZE9yZGVyQWZ0ZXJGaWVsZEdldCgpCgpUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBmaWVsZCBvcmRlciBhZnRlciBhIHNwZWNpZmljIGR5bmFtaWMgZmllbGQgZmllbGQgbmFtZS4KCmUuZy4KClRlc3REeW5hbWljRmllbGQgaGFzIHRoZSBmaWVsZCBvcmRlciAxMDAuCgoKICAgIG15ICRGaWVsZE9yZGVyID0gJFpudW55SGVscGVyT2JqZWN0LT5EeW5hbWljRmllbGRGaWVsZE9yZGVyQWZ0ZXJGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICdUZXN0RHluYW1pY0ZpZWxkMScsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkRmllbGRPcmRlciA9IDEwMTsKCj1jdXQKCnN1YiBEeW5hbWljRmllbGRGaWVsZE9yZGVyQWZ0ZXJGaWVsZEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgcmV0dXJuIGlmICEkUGFyYW17TmFtZX07CgogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwoKICAgIG15ICgkRHluYW1pY0ZpZWxkRmllbGRPcmRlcikgPSBncmVwIHsgJF8tPntOYW1lfSBlcSAkUGFyYW17TmFtZX0gfSBAeyAkRHluYW1pY0ZpZWxkTGlzdCB8fCBbXSB9OwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZEZpZWxkT3JkZXIpOwogICAgcmV0dXJuICREeW5hbWljRmllbGRGaWVsZE9yZGVyLT57RmllbGRPcmRlcn0gKyAxOwp9Cgo9aXRlbSBEeW5hbWljRmllbGRWYWx1ZUNyZWF0ZSgpCgpBZGQgYSBuZXcgZHJvcGRvd24gdmFsdWUgdG8gYSBkeW5hbWljIGZpZWxkLiBUaGlzIGZ1bmN0aW9uCndpbGwgZXh0ZW5kZWQgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIGZpZWxkLgoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5EeW5hbWljRmllbGRWYWx1ZUNyZWF0ZSgKICAgICAgICBOYW1lICA9PiAnRHluYW1pY0ZpZWxkTmFtZScsCiAgICAgICAgS2V5ICAgPT4gJ1ZhbHVlRHJvcGRvd24nLAogICAgICAgIFZhbHVlID0+ICdWYWx1ZURyb3Bkb3duJywgICAgIyBvcHRpb25hbCAoUGFyYW1ldGVyICJLZXkiIGlzIGRlZmF1bHQpCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkVmFsdWVDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUgS2V5KSkgewogICAgICAgIG5leHQgTkVFREVEIGlmICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkTmFtZSAgPSAkUGFyYW17TmFtZX07CiAgICBteSAkS2V5ICAgPSAkUGFyYW17S2V5fTsKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0tleX07CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICROYW1lLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfS0+eyRLZXl9CiAgICAgICAgJiYgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30tPnskS2V5fSBlcSAkVmFsdWU7CgogICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gfHw9IHt9OwogICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30tPnskS2V5fSA9ICRWYWx1ZTsKCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAleyREeW5hbWljRmllbGRDb25maWd9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAkU3VjY2VzczsKCiAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICBNZXNzYWdlICA9PiAiQ2FuIG5vdCB1cGRhdGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmF0aW9uIG9mIGZpZWxkICciIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gIichIiwKICAgICk7CgogICAgcmV0dXJuOwp9Cgo9aXRlbSBfRHluYW1pY0ZpZWxkc0NvbmZpZ0V4cG9ydCgpCgpleHBvcnRzIGNvbmZpZ3VyYXRpb24gb2YgYWxsIGR5bmFtaWMgZmllbGRzCgogICAgbXkgJENvbmZpZ3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzQ29uZmlnRXhwb3J0KAogICAgICAgIEZvcm1hdCAgICAgICAgICAgICAgICA9PiAncGVybHx5bWx8dmFyJywgIyBkZWZhdWx0cyB0byBwZXJsLiB2YXIgcmV0dXJucyB0aGUKICAgICAgICBJbmNsdWRlSW50ZXJuYWxGaWVsZHMgPT4gMSwgIyBkZWZhdWx0cyB0byAxLCBhbHNvIGluY2x1ZGVzIGR5bmFtaWMgZmllbGRzIHdpdGggZmxhZyAnSW50ZXJuYWxGaWVsZCcsCiAgICAgICAgSW5jbHVkZUFsbENvbmZpZ0tleXMgID0+IDEsICMgZGVmYXVsdHMgdG8gMSwgYWxzbyBpbmNsdWRlcyBjb25maWcga2V5cyBDaGFuZ2VUaW1lLCBDcmVhdGVUaW1lLCBJRCwgSW50ZXJuYWxGaWVsZCwgVmFsaWRJRAogICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICA9PiAnQVJSQVknLCAjIEhBU0ggb3IgQVJSQVksIGRlZmF1bHRzIHRvIEFSUkFZCiAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgID0+IFsgICMgb3B0aW9uYWwsIHJldHVybnMgb25seSB0aGUgY29uZmlncyBmb3IgdGhlIGdpdmVuIGZpZWxkcwogICAgICAgICAgICAnTmFtZU9mRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgJ1NlY29uZER5bmFtaWNGaWVsZCcsCiAgICAgICAgXSwKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRBUlJBWVJlc3VsdCA9IFsKICAgICAgICB7CiAgICAgICAgICAnQ29uZmlnJyA9PiB7CiAgICAgICAgICAgICAgJ0RlZmF1bHRWYWx1ZScgPT4gJycKICAgICAgICAgIH0sCiAgICAgICAgICAnRmllbGRPcmRlcicgPT4gJzEnLAogICAgICAgICAgJ0ZpZWxkVHlwZScgID0+ICdUZXh0JywKICAgICAgICAgICdMYWJlbCcgICAgICA9PiAiRHluRmllbGQxIExhYmVsIiwKICAgICAgICAgICdOYW1lJyAgICAgICA9PiAnRHluRmllbGQxJywKICAgICAgICAgICdPYmplY3RUeXBlJyA9PiAnVGlja2V0JwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgJ0NvbmZpZycgPT4gewogICAgICAgICAgICAgICdEZWZhdWx0VmFsdWUnID0+ICcnCiAgICAgICAgICB9LAogICAgICAgICAgJ0ZpZWxkT3JkZXInID0+ICcyJywKICAgICAgICAgICdGaWVsZFR5cGUnICA9PiAnVGV4dCcsCiAgICAgICAgICAnTGFiZWwnICAgICAgPT4gJ0R5bkZpZWxkMiBMYWJlbCcsCiAgICAgICAgICAnTmFtZScgICAgICAgPT4gJ0R5bkZpZWxkMicsCiAgICAgICAgICAnT2JqZWN0VHlwZScgPT4gJ1RpY2tldCcKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkSEFTSFJlc3VsdCA9IHsKICAgICAgICAnRHluRmllbGQxJyA9PiB7CiAgICAgICAgICAnQ29uZmlnJyA9PiB7CiAgICAgICAgICAgICdEZWZhdWx0VmFsdWUnID0+ICcnCiAgICAgICAgICB9LAogICAgICAgICAgJ0ZpZWxkT3JkZXInID0+ICcxJywKICAgICAgICAgICdGaWVsZFR5cGUnICA9PiAnVGV4dCcsCiAgICAgICAgICAnTGFiZWwnICAgICAgPT4gIkR5bkZpZWxkMSBMYWJlbCIsCiAgICAgICAgICAnTmFtZScgICAgICAgPT4gJ0R5bkZpZWxkMScsCiAgICAgICAgICAnT2JqZWN0VHlwZScgPT4gJ1RpY2tldCcKICAgICAgICB9LAogICAgICAgICdEeW5GaWVsZDInID0+IHsKICAgICAgICAgICdDb25maWcnID0+IHsKICAgICAgICAgICAgJ0RlZmF1bHRWYWx1ZScgPT4gJycKICAgICAgICAgIH0sCiAgICAgICAgICAnRmllbGRPcmRlcicgPT4gJzInLAogICAgICAgICAgJ0ZpZWxkVHlwZScgID0+ICdUZXh0JywKICAgICAgICAgICdMYWJlbCcgICAgICA9PiAnRHluRmllbGQyIExhYmVsJywKICAgICAgICAgICdOYW1lJyAgICAgICA9PiAnRHluRmllbGQyJywKICAgICAgICAgICdPYmplY3RUeXBlJyA9PiAnVGlja2V0JwogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzQ29uZmlnRXhwb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJFN0b3JhYmxlT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdG9yYWJsZScpOwoKICAgIG15ICRGb3JtYXQgPSBsYyggJFBhcmFte0Zvcm1hdH0gLy8gJ3BlcmwnICk7CiAgICBpZiAoICRGb3JtYXQgbmUgJ3ltbCcgJiYgJEZvcm1hdCBuZSAncGVybCcgJiYgJEZvcm1hdCBuZSAndmFyJyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHZhbHVlICRGb3JtYXQgZm9yIHBhcmFtZXRlciBGb3JtYXQuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkUmVzdWx0VHlwZSA9IGxjKCAkUGFyYW17UmVzdWx0fSAvLyAnYXJyYXknICk7CiAgICBpZiAoICRSZXN1bHRUeXBlIG5lICdoYXNoJyAmJiAkUmVzdWx0VHlwZSBuZSAnYXJyYXknICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdmFsdWUgJFJlc3VsdFR5cGUgZm9yIHBhcmFtZXRlciBSZXN1bHQuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFVzZSBjbG9uZSB0byBtYWtlIGEgY29weSB0byBwcmV2ZW50IHdlaXJkIGlzc3VlcyB3aXRoIG11bHRpcGxlIGNhbGxzIHRvIER5bmFtaWNGaWVsZExpc3RHZXQoKS4KICAgICMgU29tZWhvdyBjYWxscyB0byBEeW5hbWljRmllbGRMaXN0R2V0KCkgd2lsbCByZXBvcnQgdGhlIGFscmVhZHkgY2hhbmdlZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3MKICAgICMgYWNjb3JkaW5nIHRvIGdpdmVuIHBhcmFtZXRlcnMuCiAgICBteSAkRHluYW1pY0ZpZWxkcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoKSAvLyBbXTsKICAgICREeW5hbWljRmllbGRzID0gJFN0b3JhYmxlT2JqZWN0LT5DbG9uZSggRGF0YSA9PiAkRHluYW1pY0ZpZWxkcyApOwogICAgbXkgQER5bmFtaWNGaWVsZENvbmZpZ3MgPSBzb3J0IHsgJGEtPntOYW1lfSBjbXAgJGItPntOYW1lfSB9IEB7JER5bmFtaWNGaWVsZHN9OwoKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkc30gKSApIHsKICAgICAgICBteSAlUmVzdHJpY3RUb0R5bmFtaWNGaWVsZHMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0R5bmFtaWNGaWVsZHN9IH07CiAgICAgICAgQER5bmFtaWNGaWVsZENvbmZpZ3MgPSBncmVwIHsgJFJlc3RyaWN0VG9EeW5hbWljRmllbGRzeyAkXy0+e05hbWV9IH0gfSBARHluYW1pY0ZpZWxkQ29uZmlnczsKICAgIH0KCiAgICAjIFJlbW92ZSBpbnRlcm5hbCBkeW5hbWljIGZpZWxkIGNvbmZpZ3MKICAgIG15ICRJbmNsdWRlSW50ZXJuYWxGaWVsZHMgPSAkUGFyYW17SW5jbHVkZUludGVybmFsRmllbGRzfSAvLyAxOwogICAgaWYgKCAhJEluY2x1ZGVJbnRlcm5hbEZpZWxkcyApIHsKICAgICAgICBARHluYW1pY0ZpZWxkQ29uZmlncyA9IGdyZXAgeyAhJF8tPntJbnRlcm5hbEZpZWxkfSB9IEBEeW5hbWljRmllbGRDb25maWdzOwogICAgfQoKICAgICMgUmVtb3ZlIGhhc2gga2V5cwogICAgbXkgJEluY2x1ZGVBbGxDb25maWdLZXlzID0gJFBhcmFte0luY2x1ZGVBbGxDb25maWdLZXlzfSAvLyAxOwogICAgaWYgKCAhJEluY2x1ZGVBbGxDb25maWdLZXlzICkgewogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkIChARHluYW1pY0ZpZWxkQ29uZmlncykgewogICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoQ2hhbmdlVGltZSBDcmVhdGVUaW1lIElEIEludGVybmFsRmllbGQgVmFsaWRJRCkpIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkRHluYW1pY0ZpZWxkLT57JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBwZXJmb3JtIHRyYW5zZm9ybWF0aW9ucyBpZiBuZWNlc3NhcnkKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnIChARHluYW1pY0ZpZWxkQ29uZmlncykgewogICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRDb25maWdJRDJOYW1lKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIHRpZHkgZXhwb3J0IGRhdGEKICAgICAgICBkZWxldGUgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UGFydE9mU2V0fTsKICAgICAgICBkZWxldGUgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfTsKICAgIH0KCiAgICBteSAkRGF0YTsKICAgIGlmICggJFJlc3VsdFR5cGUgZXEgJ2hhc2gnICkgewogICAgICAgICV7JERhdGF9ID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEBEeW5hbWljRmllbGRDb25maWdzOwogICAgfQogICAgZWxzaWYgKCAkUmVzdWx0VHlwZSBlcSAnYXJyYXknICkgewogICAgICAgICREYXRhID0gXEBEeW5hbWljRmllbGRDb25maWdzOwogICAgfQoKICAgIHJldHVybiAkRGF0YSBpZiAkRm9ybWF0IGVxICd2YXInOwoKICAgIG15ICRDb25maWdTdHJpbmcgPSAnJzsKICAgIGlmICggJEZvcm1hdCBlcSAncGVybCcgKSB7CiAgICAgICAgJENvbmZpZ1N0cmluZyA9ICRNYWluT2JqZWN0LT5EdW1wKCREYXRhKTsKICAgIH0KICAgIGVsc2lmICggJEZvcm1hdCBlcSAneW1sJyApIHsKICAgICAgICAkQ29uZmlnU3RyaW5nID0gJFlBTUxPYmplY3QtPkR1bXAoIERhdGEgPT4gJERhdGEgKTsKICAgIH0KCiAgICByZXR1cm4gJENvbmZpZ1N0cmluZzsKfQoKPWl0ZW0gX0R5bmFtaWNGaWVsZHNTY3JlZW5Db25maWdFeHBvcnQoKQoKZXhwb3J0cyBhbGwgY29uZmlndXJlZCBzY3JlZW5zIG9mIG9uZSBvcmUgbW9yZSBkeW5hbWljIGZpZWxkcwoKICAgIG15ICRDb25maWdzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkNvbmZpZ0V4cG9ydCgKICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgPT4gWyAgICAgICAgICAgICAgIyBvcHRpb25hbCwgcmV0dXJucyBvbmx5IGZvciB0aG9zZSBmaWVsZHMKICAgICAgICAgICAgJ05hbWVPZkR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICdTZWNvbmREeW5hbWljRmllbGQnLAogICAgICAgIF0sCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkUmVzdWx0ID0gewogICAgICAgICdEeW5GaWVsZDEnID0+IHsKICAgICAgICAgICAgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAxMDAtQ0lDLVRpY2tldFBlbmRpbmdSZW1pbmRlcicgPT4gJzInLAogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEzMC1UaWNrZXRPcGVuJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTQwLVJ1bm5pbmdUaWNrZXRQcm9jZXNzJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRRdWV1ZSMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlIyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdENvbHVtbnMnICAgICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnICAgICAgICAgICAgICAgICAgICAgICAgID0+ICcwJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXcjIyNEeW5hbWljRmllbGQnICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6T3ZlcnZpZXdQcmV2aWV3IyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgfSwKICAgICAgICAnRHluRmllbGQyJyA9PiB7CiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlIyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdENvbHVtbnMnICAgICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzU2NyZWVuQ29uZmlnRXhwb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgbXkgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdCA9ICRTZWxmLT5fVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0R2V0KCk7CgogICAgbXkgQER5bmFtaWNGaWVsZHM7CiAgICBpZiAoICEkUGFyYW17RHluYW1pY0ZpZWxkc30gKSB7CiAgICAgICAgbXkgJExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICAgICApOwogICAgICAgIEBEeW5hbWljRmllbGRzID0gc29ydCB2YWx1ZXMgJXskTGlzdH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBARHluYW1pY0ZpZWxkcyA9IEB7ICRQYXJhbXtEeW5hbWljRmllbGRzfSB9OwogICAgfQoKICAgIG15ICVDb25maWc7CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoQER5bmFtaWNGaWVsZHMpIHsKICAgICAgICBEWU5BTUlDRklFTERTQ1JFRU46CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRTY3JlZW4gKCBAeyAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0LT57RHluYW1pY0ZpZWxkU2NyZWVuc30gfSApIHsKICAgICAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNjcmVlbkNvbmZpZyA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkc1NjcmVlbkdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zID0+IFskRHluYW1pY0ZpZWxkU2NyZWVuXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEU0NSRUVOCiAgICAgICAgICAgICAgICBpZiAhSXNTdHJpbmdXaXRoRGF0YSggJER5bmFtaWNGaWVsZFNjcmVlbkNvbmZpZ3skRHluYW1pY0ZpZWxkU2NyZWVufS0+eyREeW5hbWljRmllbGR9ICk7CgogICAgICAgICAgICAkQ29uZmlneyREeW5hbWljRmllbGR9LT57JER5bmFtaWNGaWVsZFNjcmVlbn0gPSAkRHluYW1pY0ZpZWxkU2NyZWVuQ29uZmlneyREeW5hbWljRmllbGRTY3JlZW59LT57JER5bmFtaWNGaWVsZH07CiAgICAgICAgfQoKICAgICAgICBERUZBVUxUQ09MVU1OU0NSRUVOOgogICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbnNTY3JlZW4gKCBAeyAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0LT57RGVmYXVsdENvbHVtbnNTY3JlZW5zfSB9ICkgewogICAgICAgICAgICBteSAlRGVmYXVsdENvbHVtbnNTY3JlZW5Db25maWcgPSAkU2VsZi0+X0R5bmFtaWNGaWVsZHNEZWZhdWx0Q29sdW1uc0dldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zID0+IFskRGVmYXVsdENvbHVtbnNTY3JlZW5dLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBERUZBVUxUQ09MVU1OU0NSRUVOCiAgICAgICAgICAgICAgICBpZiAhSXNTdHJpbmdXaXRoRGF0YSggJERlZmF1bHRDb2x1bW5zU2NyZWVuQ29uZmlneyREZWZhdWx0Q29sdW1uc1NjcmVlbn0tPnskRHluYW1pY0ZpZWxkfSApOwoKICAgICAgICAgICAgJENvbmZpZ3skRHluYW1pY0ZpZWxkfS0+eyREZWZhdWx0Q29sdW1uc1NjcmVlbn0gPSAkRGVmYXVsdENvbHVtbnNTY3JlZW5Db25maWd7JERlZmF1bHRDb2x1bW5zU2NyZWVufS0+eyREeW5hbWljRmllbGR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJUNvbmZpZzsKfQoKPWl0ZW0gX0R5bmFtaWNGaWVsZHNTY3JlZW5Db25maWdJbXBvcnQoKQoKaW1wb3J0cyBhbGwgY29uZmlndXJlZCBzY3JlZW5zIG9mIG9uZSBvcmUgbW9yZSBkeW5hbWljIGZpZWxkcwoKICAgICVDb25maWcgPSB7CiAgICAgICAgJ0R5bkZpZWxkMScgPT4gewogICAgICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEwMC1DSUMtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiAnMicsCiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEwMC1UaWNrZXRQZW5kaW5nUmVtaW5kZXInICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTMwLVRpY2tldE9wZW4nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxNDAtUnVubmluZ1RpY2tldFByb2Nlc3MnICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFF1ZXVlIyMjRGVmYXVsdENvbHVtbnMnICAgICAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UmVzcG9uc2libGUjIyNEeW5hbWljRmllbGQnICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFN0YXR1c1ZpZXcjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbSMjI0R5bmFtaWNGaWVsZCcgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRPdmVydmlldyMjI0R5bmFtaWNGaWVsZCcgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpPdmVydmlld1ByZXZpZXcjIyNEeW5hbWljRmllbGQnICAgICAgICAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICB9LAogICAgICAgICdEeW5GaWVsZDInID0+IHsKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UmVzcG9uc2libGUjIyNEeW5hbWljRmllbGQnICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgfSwKICAgIH07CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzU2NyZWVuQ29uZmlnSW1wb3J0KCAlQ29uZmlnICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc1NjcmVlbkNvbmZpZ0ltcG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWcpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3QgPSAkU2VsZi0+X1ZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdEdldCgpOwoKICAgIG15ICVTY3JlZW5Db25maWc7CiAgICBteSAlQ29sdW1uU2NyZWVuQ29uZmlnOwoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBrZXlzICV7ICRQYXJhbXtDb25maWd9IH0gKSB7CgogICAgICAgIERZTkFNSUNGSUVMRFNDUkVFTjoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZFNjcmVlbiAoIEB7ICRWYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3QtPntEeW5hbWljRmllbGRTY3JlZW5zfSB9ICkgewogICAgICAgICAgICAkU2NyZWVuQ29uZmlneyREeW5hbWljRmllbGRTY3JlZW59LT57JER5bmFtaWNGaWVsZH0gPSAkUGFyYW17Q29uZmlnfS0+eyREeW5hbWljRmllbGR9LT57JER5bmFtaWNGaWVsZFNjcmVlbn07CiAgICAgICAgfQoKICAgICAgICBERUZBVUxUQ09MVU1OU0NSRUVOOgogICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbnNTY3JlZW4gKCBAeyAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0LT57RGVmYXVsdENvbHVtbnNTY3JlZW5zfSB9ICkgewogICAgICAgICAgICAkQ29sdW1uU2NyZWVuQ29uZmlneyREZWZhdWx0Q29sdW1uc1NjcmVlbn0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQifSA9ICRQYXJhbXtDb25maWd9LT57JER5bmFtaWNGaWVsZH0tPnskRGVmYXVsdENvbHVtbnNTY3JlZW59OwogICAgICAgIH0KICAgIH0KCiAgICAkU2NyZWVuQ29uZmlne05vQ29uZmlnUmVidWlsZH0gPSAxOwogICAgJFNlbGYtPl9EeW5hbWljRmllbGRzU2NyZWVuRW5hYmxlKCVTY3JlZW5Db25maWcpOwoKICAgICRDb2x1bW5TY3JlZW5Db25maWd7Tm9Db25maWdSZWJ1aWxkfSA9IDE7CiAgICAkU2VsZi0+X0RlZmF1bHRDb2x1bW5zRW5hYmxlKCVDb2x1bW5TY3JlZW5Db25maWcpOwoKICAgICMgcmVsb2FkIHRoZSBaWlogZmlsZXMKICAgICMgZ2V0IGEgbmV3IGNvbmZpZyBvYmplY3QgdG8gbWFrZSBzdXJlIGNvbmZpZyBpcyB1cGRhdGVkCiAgICAkU2VsZi0+X1JlYnVpbGRDb25maWcoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX1Bvc3RNYXN0ZXJGaWx0ZXJDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIGFsbCBwb3N0bWFzdGVyIGZpbHRlciB0aGF0IGFyZSBuZWNlc3NhcnkKCiAgICBteSBARmlsdGVycyA9ICgKICAgICAgICB7CiAgICAgICAgICAgICdNYXRjaCcgPT4gewogICAgICAgICAgICAgICAgJ0F1dG8tU3VibWl0dGVkJyA9PiAnMTIzJwogICAgICAgICAgICB9LAogICAgICAgICAgICAnTmFtZScgPT4gJ2FzZGYnLAogICAgICAgICAgICAnTm90JyA9PiB7CiAgICAgICAgICAgICAgICAnQXV0by1TdWJtaXR0ZWQnID0+IHVuZGVmCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdTZXQnID0+IHsKICAgICAgICAgICAgICAgICdYLU9UUlMtRHluYW1pY0ZpZWxkLWJsdWInID0+ICcxMjMnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdTdG9wQWZ0ZXJNYXRjaCcgPT4gJzAnCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RNYXN0ZXJGaWx0ZXJDcmVhdGVJZk5vdEV4aXN0cyggQEZpbHRlcnMgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9Qb3N0TWFzdGVyRmlsdGVyQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgQERlZmluaXRpb24gKSA9IEBfOwoKICAgIG15ICRQTUZpbHRlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQb3N0TWFzdGVyOjpGaWx0ZXInKTsKCiAgICBteSBAUG9zdE1hc3RlckZpbHRlckV4aXN0c05vdDsKICAgIG15ICVGaWx0ZXJMaXN0ID0gJFBNRmlsdGVyT2JqZWN0LT5GaWx0ZXJMaXN0KCk7CgogICAgRklMVEVSOgogICAgZm9yIG15ICROZXdQb3N0TWFzdGVyRmlsdGVyIChARGVmaW5pdGlvbikgewogICAgICAgIG5leHQgRklMVEVSIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkTmV3UG9zdE1hc3RlckZpbHRlcik7CgogICAgICAgICMgb25seSBjcmVhdGUgaWYgbm90IGV4aXN0cwogICAgICAgIG15ICRGaWx0ZXJGb3VuZCA9IGdyZXAgeyAkTmV3UG9zdE1hc3RlckZpbHRlci0+e05hbWV9IGVxICRfIH0gc29ydCBrZXlzICVGaWx0ZXJMaXN0OwogICAgICAgIG5leHQgRklMVEVSIGlmICRGaWx0ZXJGb3VuZDsKCiAgICAgICAgcHVzaCBAUG9zdE1hc3RlckZpbHRlckV4aXN0c05vdCwgJE5ld1Bvc3RNYXN0ZXJGaWx0ZXI7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fUG9zdE1hc3RlckZpbHRlckNyZWF0ZShAUG9zdE1hc3RlckZpbHRlckV4aXN0c05vdCk7Cn0KCj1pdGVtIF9Qb3N0TWFzdGVyRmlsdGVyQ3JlYXRlKCkKCmNyZWF0ZXMgYWxsIHBvc3RtYXN0ZXIgZmlsdGVyIHRoYXQgYXJlIG5lY2Vzc2FyeQoKICAgIG15IEBGaWx0ZXJzID0gKAogICAgICAgIHsKICAgICAgICAgICAgJ01hdGNoJyA9PiB7CiAgICAgICAgICAgICAgICAnQXV0by1TdWJtaXR0ZWQnID0+ICcxMjMnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdOYW1lJyA9PiAnYXNkZicsCiAgICAgICAgICAgICdOb3QnID0+IHsKICAgICAgICAgICAgICAgICdBdXRvLVN1Ym1pdHRlZCcgPT4gdW5kZWYKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ1NldCcgPT4gewogICAgICAgICAgICAgICAgJ1gtT1RSUy1EeW5hbWljRmllbGQtYmx1YicgPT4gJzEyMycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ1N0b3BBZnRlck1hdGNoJyA9PiAnMCcKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkUmVzdWx0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fUG9zdE1hc3RlckZpbHRlckNyZWF0ZSggQEZpbHRlcnMgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9Qb3N0TWFzdGVyRmlsdGVyQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsIEBEZWZpbml0aW9uICkgPSBAXzsKCiAgICBteSAkUE1GaWx0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UG9zdE1hc3Rlcjo6RmlsdGVyJyk7CgogICAgRklMVEVSOgogICAgZm9yIG15ICROZXdQb3N0TWFzdGVyRmlsdGVyIChARGVmaW5pdGlvbikgewogICAgICAgIG5leHQgRklMVEVSIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkTmV3UG9zdE1hc3RlckZpbHRlcik7CgogICAgICAgICMgZ2V0IGZpbHRlcgogICAgICAgIG15ICVGaWx0ZXIgPSAleyROZXdQb3N0TWFzdGVyRmlsdGVyfTsKCiAgICAgICAgbXkgQENvbnZlcnRTdHJ1Y3R1cmVLZXlzID0gcXcoTWF0Y2ggTm90IFNldCk7CgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJENvbnZlcnRTdHJ1Y3R1cmVLZXkgKEBDb252ZXJ0U3RydWN0dXJlS2V5cykgewoKICAgICAgICAgICAgbXkgJEhhc2hSZWYgPSAkRmlsdGVyeyRDb252ZXJ0U3RydWN0dXJlS2V5fTsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRIYXNoUmVmKTsKCiAgICAgICAgICAgIG15IEBOZXdTdHJ1Y3R1cmU7CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnS2V5ICggc29ydCBrZXlzICV7JEhhc2hSZWZ9ICkgewogICAgICAgICAgICAgICAgbXkgJENvbmZpZ1ZhbHVlID0gJEhhc2hSZWYtPnskQ29uZmlnS2V5fTsKCiAgICAgICAgICAgICAgICBwdXNoKAogICAgICAgICAgICAgICAgICAgIEBOZXdTdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkQ29uZmlnS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEZpbHRlcnskQ29udmVydFN0cnVjdHVyZUtleX0gPSBcQE5ld1N0cnVjdHVyZTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIGZpcnN0IChiZWNhdXNlIG5vIHVwZGF0ZSBmdW5jdGlvbiBleGlzdHMpCiAgICAgICAgJFBNRmlsdGVyT2JqZWN0LT5GaWx0ZXJEZWxldGUoJUZpbHRlcik7CgogICAgICAgICMgYWRkIGZpbHRlcgogICAgICAgICRQTUZpbHRlck9iamVjdC0+RmlsdGVyQWRkKCVGaWx0ZXIpOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfUG9zdE1hc3RlckZpbHRlckNvbmZpZ0V4cG9ydCgpCgpleHBvcnRzIGNvbmZpZ3VyYXRpb24gb2YgYWxsIHBvc3RtYXN0ZXIgZmlsdGVyCgogICAgbXkgJENvbmZpZ3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qb3N0TWFzdGVyRmlsdGVyQ29uZmlnRXhwb3J0KAogICAgICAgIEZvcm1hdCA9PiAneW1sfHBlcmwnLCAjIGRlZmF1bHRzIHRvIHBlcmwKICAgICk7Cgo9Y3V0CgpzdWIgX1Bvc3RNYXN0ZXJGaWx0ZXJDb25maWdFeHBvcnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTWFpbk9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgbXkgJFBNRmlsdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBvc3RNYXN0ZXI6OkZpbHRlcicpOwogICAgbXkgJFlBTUxPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICBteSAkRm9ybWF0ID0gbGMoICRQYXJhbXtGb3JtYXR9IC8vICdwZXJsJyApOwogICAgaWYgKCAkRm9ybWF0IG5lICd5bWwnICYmICRGb3JtYXQgbmUgJ3BlcmwnICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdmFsdWUgJEZvcm1hdCBmb3IgcGFyYW1ldGVyIEZvcm1hdC4iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBGaWx0ZXJzOwogICAgbXkgJUZpbHRlckxpc3QgPSAkUE1GaWx0ZXJPYmplY3QtPkZpbHRlckxpc3QoKTsKICAgIGZvciBteSAkRmlsdGVyTmFtZSAoIHNvcnQga2V5cyAlRmlsdGVyTGlzdCApIHsKICAgICAgICBteSAlRGF0YSA9ICRQTUZpbHRlck9iamVjdC0+RmlsdGVyR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWx0ZXJOYW1lLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEZpbHRlcnMsIFwlRGF0YTsKICAgIH0KCiAgICBteSAkQ29uZmlnU3RyaW5nID0gJyc7CiAgICBpZiAoICRGb3JtYXQgZXEgJ3BlcmwnICkgewogICAgICAgICRDb25maWdTdHJpbmcgPSAkTWFpbk9iamVjdC0+RHVtcCggXEBGaWx0ZXJzICk7CiAgICB9CiAgICBlbHNpZiAoICRGb3JtYXQgZXEgJ3ltbCcgKSB7CiAgICAgICAgJENvbmZpZ1N0cmluZyA9ICRZQU1MT2JqZWN0LT5EdW1wKCBEYXRhID0+IFxARmlsdGVycyApOwogICAgfQoKICAgIHJldHVybiAkQ29uZmlnU3RyaW5nOwp9CgojIHRvZG8gdGhpcyBzaG91bGQgYmUgbWVyZ2VkIHRvCiMgJ19Qb3N0TWFzdGVyRmlsdGVyQ3JlYXRlSWZOb3RFeGlzdHMnIGFuZCAnX1Bvc3RNYXN0ZXJGaWx0ZXJDcmVhdGUnCiMgd2hpbGUgT1RSUyA3IHBvcnRpbmcKCj1pdGVtIF9Qb3N0TWFzdGVyRmlsdGVyQ29uZmlnSW1wb3J0KCkKCmltcG9ydHMgY29uZmlndXJhdGlvbiBvZiBwb3N0bWFzdGVyIGZpbHRlciB2aWEgeW1sCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qb3N0TWFzdGVyRmlsdGVyQ29uZmlnSW1wb3J0KAogICAgICAgIEZpbHRlciA9PiAkRmlsdGVyLAogICAgICAgIEZvcm1hdCA9PiAneW1sJywgICAgICAgICMgb3B0aW9uYWwgLSBkZWZhdWx0CiAgICApOwoKICAgICRGaWx0ZXIgPSAiLS0tCi0gTWF0Y2g6CiAgLSBLZXk6IEJvZHkKICAgIFZhbHVlOiAnMTIzJwogIE5hbWU6ICdQb3N0bWFzdGVyRmlsdGVyJwogIE5vdDoKICAtIEtleTogQm9keQogICAgVmFsdWU6IH4KICBTZXQ6CiAgLSBLZXk6IFgtT1RSUy1EeW5hbWljRmllbGQtdGVzdAogICAgVmFsdWU6ICcxMjMnCiAgU3RvcEFmdGVyTWF0Y2g6IDAKIjsKCgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfUG9zdE1hc3RlckZpbHRlckNvbmZpZ0ltcG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICBteSAkRm9ybWF0ID0gbGMoICRQYXJhbXtGb3JtYXR9IC8vICd5bWwnICk7CgogICAgbXkgJEZpbHRlcjsKICAgIGlmICggJEZvcm1hdCBlcSAneW1sJyApIHsKICAgICAgICAkRmlsdGVyID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJHsgJFBhcmFte0ZpbHRlcn0gfSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuICRTZWxmLT5fUG9zdE1hc3RlckZpbHRlckNyZWF0ZUlmTm90RXhpc3RzKCBAeyRGaWx0ZXJ9ICk7Cn0KCj1pdGVtIF9Hcm91cENyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgZ3JvdXAgaWYgbm90IGV4aXN0cwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fR3JvdXBDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBOYW1lID0+ICdTb21lIEdyb3VwIE5hbWUnLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9Hcm91cENyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlR3JvdXBzUmV2ZXJzZWQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTGlzdCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKICAgICVHcm91cHNSZXZlcnNlZCA9IHJldmVyc2UgJUdyb3Vwc1JldmVyc2VkOwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFBhcmFte05hbWV9LCAlR3JvdXBzUmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgcmV0dXJuICRHcm91cE9iamVjdC0+R3JvdXBBZGQoCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAlUGFyYW0sCiAgICApOwp9Cgo9aXRlbSBfUm9sZUNyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgcm9sZSBpZiBub3QgZXhpc3RzCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Sb2xlQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSA9PiAnU29tZSBSb2xlIE5hbWUnLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9Sb2xlQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVSb2xlc1JldmVyc2VkID0gJEdyb3VwT2JqZWN0LT5Sb2xlTGlzdCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKICAgICVSb2xlc1JldmVyc2VkID0gcmV2ZXJzZSAlUm9sZXNSZXZlcnNlZDsKCiAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRQYXJhbXtOYW1lfSwgJVJvbGVzUmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgcmV0dXJuICRHcm91cE9iamVjdC0+Um9sZUFkZCgKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICVQYXJhbSwKICAgICk7Cn0KCj1pdGVtIF9UeXBlQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBUeXBlIGlmIG5vdCBleGlzdHMKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1R5cGVDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBOYW1lID0+ICdTb21lIFR5cGUgTmFtZScsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX1R5cGVDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFR5cGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJVR5cGVzUmV2ZXJzZWQgPSAkVHlwZU9iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CiAgICAlVHlwZXNSZXZlcnNlZCA9IHJldmVyc2UgJVR5cGVzUmV2ZXJzZWQ7CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkUGFyYW17TmFtZX0sICVUeXBlc1JldmVyc2VkICk7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAkSXRlbUlEOwoKICAgIHJldHVybiAkVHlwZU9iamVjdC0+VHlwZUFkZCgKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICVQYXJhbSwKICAgICk7Cn0KCj1pdGVtIF9Qcmlvcml0eUNyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgUHJpb3JpdHkgaWYgbm90IGV4aXN0cwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUHJpb3JpdHlDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBOYW1lID0+ICdTb21lIFByaW9yaXR5IE5hbWUnLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9Qcmlvcml0eUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFByaW9yaXR5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlByaW9yaXR5Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlUHJpb3JpdHlzUmV2ZXJzZWQgPSAkUHJpb3JpdHlPYmplY3QtPlByaW9yaXR5TGlzdCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKICAgICVQcmlvcml0eXNSZXZlcnNlZCA9IHJldmVyc2UgJVByaW9yaXR5c1JldmVyc2VkOwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFBhcmFte05hbWV9LCAlUHJpb3JpdHlzUmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgcmV0dXJuICRQcmlvcml0eU9iamVjdC0+UHJpb3JpdHlBZGQoCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAlUGFyYW0sCiAgICApOwp9Cgo9aXRlbSBfU3RhdGVDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIFN0YXRlIGlmIG5vdCBleGlzdHMKCiAgICAjIGUuZy4gbmV3fG9wZW58Y2xvc2VkfHBlbmRpbmcgcmVtaW5kZXJ8cGVuZGluZyBhdXRvfHJlbW92ZWR8bWVyZ2VkCiAgICBteSAkU3RhdGVUeXBlSUQgPSAkU3RhdGVPYmplY3QtPlN0YXRlVHlwZUxvb2t1cCggU3RhdGVUeXBlID0+ICdwZW5kaW5nIGF1dG8nICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9TdGF0ZUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgICA9PiAnU29tZSBTdGF0ZSBOYW1lJywKICAgICAgICBUeXBlSUQgPT4gJFN0YXRlVHlwZUlELAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9TdGF0ZUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFN0YXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlU3RhdGVzUmV2ZXJzZWQgPSAkU3RhdGVPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gMQogICAgKTsKICAgICVTdGF0ZXNSZXZlcnNlZCA9IHJldmVyc2UgJVN0YXRlc1JldmVyc2VkOwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFBhcmFte05hbWV9LCAlU3RhdGVzUmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgcmV0dXJuICRTdGF0ZU9iamVjdC0+U3RhdGVBZGQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwp9Cgo9aXRlbSBfU3RhdGVEaXNhYmxlKCkKCmRpc2FibGVzIGEgZ2l2ZW4gc3RhdGUKCiAgICBteSBAU3RhdGVzID0gKAogICAgICAgICdTdGF0ZTEnLAogICAgICAgICdTdGF0ZTInLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1N0YXRlRGlzYWJsZShAU3RhdGVzKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9TdGF0ZURpc2FibGUgewogICAgbXkgKCAkU2VsZiwgQFN0YXRlcyApID0gQF87CgogICAgbXkgJFZhbGlkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CiAgICBteSAkU3RhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKCiAgICByZXR1cm4gMSBpZiAhQFN0YXRlczsKCiAgICAjZ2V0IGN1cnJlbnQgaW52YWxpZCBpZAogICAgbXkgJEludmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ2ludmFsaWQnLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9IDE7CgogICAgIyBkaXNhYmxlIHRoZSBzdGF0ZXMKICAgIFNUQVRFOgogICAgZm9yIG15ICRTdGF0ZU5hbWUgKEBTdGF0ZXMpIHsKCiAgICAgICAgbXkgJVN0YXRlID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICAgICAgTmFtZSA9PiAkU3RhdGVOYW1lLAogICAgICAgICk7CiAgICAgICAgbmV4dCBTVEFURSBpZiAhJVN0YXRlOwoKICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRTdGF0ZU9iamVjdC0+U3RhdGVVcGRhdGUoCiAgICAgICAgICAgICVTdGF0ZSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkSW52YWxpZElELAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aXRlbSBfU3RhdGVUeXBlQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBzdGF0ZSB0eXBlcyBpZiBub3QgZXhpc3RzCgogICAgbXkgJFN0YXRlVHlwZUlEID0gJFpudW55SGVscGVyT2JqZWN0LT5fU3RhdGVUeXBlQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSAgICA9PiAnTmV3IFN0YXRlVHlwZScsCiAgICAgICAgQ29tbWVudCA9PiAnc29tZSBjb21tZW50JywKICAgICAgICBVc2VySUQgID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgX1N0YXRlVHlwZUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICREQk9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUgVXNlcklEKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGV4aXN0cwogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgbmFtZSBGUk9NIHRpY2tldF9zdGF0ZV90eXBlIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKICAgIG15ICRFeGlzdHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRXhpc3RzID0gMTsKICAgIH0KICAgIHJldHVybiAxIGlmICRFeGlzdHM7CgogICAgIyBjcmVhdGUgbmV3CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyB0aWNrZXRfc3RhdGVfdHlwZSAobmFtZSwgY29tbWVudHMsJwogICAgICAgICAgICAuICcgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSknCiAgICAgICAgICAgIC4gJyBWQUxVRVMgKD8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte05hbWV9LCAgIFwkUGFyYW17Q29tbWVudH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IG5ldyBzdGF0ZXR5cGUgaWQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSB0aWNrZXRfc3RhdGVfdHlwZSBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkSUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJElEOwogICAgcmV0dXJuICRJRDsKfQoKPWl0ZW0gX1NlcnZpY2VDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIFNlcnZpY2UgaWYgbm90IGV4aXN0cwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fU2VydmljZUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgPT4gJ1NvbWUgU2VydmljZU5hbWUnLAogICAgICAgICVJVFNNUGFyYW1zLCAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgcGFyYW1zIGZvciBDcml0aWNhbGl0eSBvciBUeXBlSUQgaWYgSVRTTSBpcyBpbnN0YWxsZWQKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfU2VydmljZUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkTmFtZSA9ICRQYXJhbXtOYW1lfTsKCiAgICAjIElUU01QYXJhbXMKICAgICRQYXJhbXtUeXBlSUR9ICAgICAgfHw9ICcyJzsKICAgICRQYXJhbXtDcml0aWNhbGl0eX0gfHw9ICczIG5vcm1hbCc7CgogICAgbXkgJVNlcnZpY2VSZXZlcnNlZCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gMQogICAgKTsKICAgICVTZXJ2aWNlUmV2ZXJzZWQgPSByZXZlcnNlICVTZXJ2aWNlUmV2ZXJzZWQ7CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkTmFtZSwgJVNlcnZpY2VSZXZlcnNlZCApOwogICAgcmV0dXJuICRJdGVtSUQgaWYgJEl0ZW1JRDsKCiAgICAjIHNwbGl0IHN0cmluZyB0byBjaGVjayBmb3IgcG9zc2libGUgc3ViIHNlcnZpY2VzCiAgICBteSBAU2VydmljZUFycmF5ID0gc3BsaXQgLzo6LywgJE5hbWU7CgogICAgIyBjcmVhdGUgc2VydmljZSB3aXRoIHBhcmVudAogICAgbXkgJENvbXBsZXRlU2VydmljZU5hbWUgPSAnJzsKICAgIG15ICRTZXJ2aWNlSUQ7CgogICAgU0VSVklDRToKICAgIGZvciBteSAkU2VydmljZU5hbWUgKEBTZXJ2aWNlQXJyYXkpIHsKCiAgICAgICAgbXkgJFBhcmVudElEOwogICAgICAgIGlmICgkQ29tcGxldGVTZXJ2aWNlTmFtZSkgewoKICAgICAgICAgICAgJFBhcmVudElEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJENvbXBsZXRlU2VydmljZU5hbWUsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRQYXJlbnRJRCApIHsKCiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgZ2V0dGluZyBTZXJ2aWNlSUQgZm9yIHBhcmVudCBzZXJ2aWNlICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiJyRDb21wbGV0ZVNlcnZpY2VOYW1lJyBmb3IgbmV3IHNlcnZpY2UgJyIgLiAkTmFtZSAuICInLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkQ29tcGxldGVTZXJ2aWNlTmFtZSAuPSAnOjonOwogICAgICAgIH0KCiAgICAgICAgJENvbXBsZXRlU2VydmljZU5hbWUgLj0gJFNlcnZpY2VOYW1lOwoKICAgICAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRDb21wbGV0ZVNlcnZpY2VOYW1lLCAlU2VydmljZVJldmVyc2VkICk7CiAgICAgICAgaWYgKCRJdGVtSUQpIHsKICAgICAgICAgICAgJFNlcnZpY2VJRCA9ICRJdGVtSUQ7CiAgICAgICAgICAgIG5leHQgU0VSVklDRTsKICAgICAgICB9CgogICAgICAgICRTZXJ2aWNlSUQgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUFkZCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBOYW1lICAgICA9PiAkU2VydmljZU5hbWUsCiAgICAgICAgICAgIFBhcmVudElEID0+ICRQYXJlbnRJRCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU2VydmljZUlEICkgewoKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBhZGRpbmcgbmV3IHNlcnZpY2UgJyRTZXJ2aWNlTmFtZScgKCRQYXJlbnRJRCkuIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJVNlcnZpY2VSZXZlcnNlZCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxCiAgICAgICAgKTsKICAgICAgICAlU2VydmljZVJldmVyc2VkID0gcmV2ZXJzZSAlU2VydmljZVJldmVyc2VkOwogICAgfQoKICAgIHJldHVybiAkU2VydmljZUlEOwp9Cgo9aXRlbSBfU0xBQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBTTEEgaWYgbm90IGV4aXN0cwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fU0xBQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSA9PiAnU29tZSBTZXJ2aWNlTmFtZScsCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICA9PiBbIDEsIDUsIDcgXSwgICMgKG9wdGlvbmFsKQogICAgICAgIEZpcnN0UmVzcG9uc2VUaW1lICAgPT4gMTIwLCAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBGaXJzdFJlc3BvbnNlTm90aWZ5ID0+IDYwLCAgICAgICAgICAgIyAob3B0aW9uYWwpIG5vdGlmeSBhZ2VudCBpZiBmaXJzdCByZXNwb25zZSBlc2NhbGF0aW9uIGlzIDYwJSByZWFjaGVkCiAgICAgICAgVXBkYXRlVGltZSAgICAgICAgICA9PiAxODAsICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVwZGF0ZU5vdGlmeSAgICAgICAgPT4gODAsICAgICAgICAgICAjIChvcHRpb25hbCkgbm90aWZ5IGFnZW50IGlmIHVwZGF0ZSBlc2NhbGF0aW9uIGlzIDgwJSByZWFjaGVkCiAgICAgICAgU29sdXRpb25UaW1lICAgICAgICA9PiA1ODAsICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFNvbHV0aW9uTm90aWZ5ICAgICAgPT4gODAsICAgICAgICAgICAjIChvcHRpb25hbCkgbm90aWZ5IGFnZW50IGlmIHNvbHV0aW9uIGVzY2FsYXRpb24gaXMgODAlIHJlYWNoZWQKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfU0xBQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU0xBT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U0xBJyk7CiAgICBteSAkVmFsaWRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgSVRTTVBhcmFtcwogICAgJFBhcmFte1R5cGVJRH0gICAgICB8fD0gJzInOwogICAgJFBhcmFte0NyaXRpY2FsaXR5fSB8fD0gJzMgbm9ybWFsJzsKCiAgICBteSAlU0xBUmV2ZXJzZWQgPSAkU0xBT2JqZWN0LT5TTEFMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxCiAgICApOwogICAgJVNMQVJldmVyc2VkID0gcmV2ZXJzZSAlU0xBUmV2ZXJzZWQ7CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkUGFyYW17TmFtZX0sICVTTEFSZXZlcnNlZCApOwogICAgcmV0dXJuICRJdGVtSUQgaWYgJEl0ZW1JRDsKCiAgICBteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICk7CiAgICBteSAkU0xBSUQgPSAkU0xBT2JqZWN0LT5TTEFBZGQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFNMQUlEOwp9Cgo9aXRlbSBfVXNlckNyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgdXNlciBpZiBub3QgZXhpc3RzCgogICAgbXkgJFVzZXJJRCA9ICRabnVueUhlbHBlck9iamVjdC0+X1VzZXJDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBVc2VyRmlyc3RuYW1lID0+ICdNYW5mcmVkJywKICAgICAgICBVc2VyTGFzdG5hbWUgID0+ICdIdWJlcicsCiAgICAgICAgVXNlckxvZ2luICAgICA9PiAnbWh1YmVyJywKICAgICAgICBVc2VyUHcgICAgICAgID0+ICdzb21lLXBhc3MnLCAjIG5vdCByZXF1aXJlZAogICAgICAgIFVzZXJFbWFpbCAgICAgPT4gJ2VtYWlsQGV4YW1wbGUuY29tJywKICAgICAgICBVc2VyTW9iaWxlICAgID0+ICcxMjM0NTY3ODkwJywgIyBub3QgcmVxdWlyZWQKICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgQ2hhbmdlVXNlcklEICA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkVXNlciA9IDEyMzsKCj1jdXQKCnN1YiBfVXNlckNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFVzZXJPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlckxvZ2luKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlVXNlckxpc3RSZXZlcnNlZCA9ICRVc2VyT2JqZWN0LT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICAgPT4gJ1Nob3J0JywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAlVXNlckxpc3RSZXZlcnNlZCA9IHJldmVyc2UgJVVzZXJMaXN0UmV2ZXJzZWQ7CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkUGFyYW17VXNlckxvZ2lufSwgJVVzZXJMaXN0UmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgbXkgJFZhbGlkSUQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgIFZhbGlkID0+ICd2YWxpZCcsCiAgICApOwogICAgbXkgJFVzZXJJRCA9ICRVc2VyT2JqZWN0LT5Vc2VyQWRkKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZElELAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRVc2VySUQ7Cn0KCj1pdGVtIF9DdXN0b21lclVzZXJDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIEN1c3RvbWVyVXNlciBpZiBub3QgZXhpc3RzCgogICAgbXkgJEN1c3RvbWVyVXNlckxvZ2luID0gJFpudW55SGVscGVyT2JqZWN0LT5fQ3VzdG9tZXJVc2VyQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgU291cmNlICAgICAgICAgPT4gJ0N1c3RvbWVyVXNlcicsICMgQ3VzdG9tZXJVc2VyIHNvdXJjZSBjb25maWcKICAgICAgICBVc2VyRmlyc3RuYW1lICA9PiAnTWFuZnJlZCcsCiAgICAgICAgVXNlckxhc3RuYW1lICAgPT4gJ0h1YmVyJywKICAgICAgICBVc2VyQ3VzdG9tZXJJRCA9PiAnQTEyNCcsCiAgICAgICAgVXNlckxvZ2luICAgICAgPT4gJ21odWJlcicsCiAgICAgICAgVXNlclBhc3N3b3JkICAgPT4gJ3NvbWUtcGFzcycsICMgbm90IHJlcXVpcmVkCiAgICAgICAgVXNlckVtYWlsICAgICAgPT4gJ2VtYWlsQGV4YW1wbGUuY29tJywKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRDdXN0b21lclVzZXJMb2dpbiA9ICdtaHViZXInOwoKPWN1dAoKc3ViIF9DdXN0b21lclVzZXJDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlckxvZ2luKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlQ3VzdG9tZXJVc2VyUmV2ZXJzZWRWYWxpZCA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyU2VhcmNoKAogICAgICAgIFVzZXJMb2dpbiA9PiAkUGFyYW17VXNlckxvZ2lufSwKICAgICAgICBWYWxpZCAgICAgPT4gMSwKICAgICk7CiAgICBteSAlQ3VzdG9tZXJVc2VyUmV2ZXJzZWRJblZhbGlkID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJTZWFyY2goCiAgICAgICAgVXNlckxvZ2luID0+ICRQYXJhbXtVc2VyTG9naW59LAogICAgICAgIFZhbGlkICAgICA9PiAwLAogICAgKTsKICAgIG15ICVDdXN0b21lclVzZXJSZXZlcnNlZCA9ICgKICAgICAgICAlQ3VzdG9tZXJVc2VyUmV2ZXJzZWRWYWxpZCwKICAgICAgICAlQ3VzdG9tZXJVc2VyUmV2ZXJzZWRJblZhbGlkLAogICAgKTsKCiAgICAjIHNoaXR0eSBzb2x1dGlvbiBmb3IgdGhlIGNoZWNrLgogICAgIyBzb21lYm9keSBzaG91bGQgZml4IHRoaXMgYW5kIHVzZSB0aGUgQ3VzdG9tZXJLZXkgaW5zdGVhZCBmb3IgdGhlIGNoZWNrLgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkUGFyYW17VXNlckxvZ2lufSwgJUN1c3RvbWVyVXNlclJldmVyc2VkICk7CiAgICByZXR1cm4gJFBhcmFte1VzZXJMb2dpbn0gaWYgJEl0ZW1JRDsKCiAgICBteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICk7CiAgICBteSAkQ3VzdG9tZXJVc2VySUQgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJBZGQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJEN1c3RvbWVyVXNlcklEOwp9Cgo9aXRlbSBfUXVldWVDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIFF1ZXVlIGlmIG5vdCBleGlzdHMKCiAgICBteSAkUXVldWVJRCA9ICRabnVueUhlbHBlck9iamVjdC0+X1F1ZXVlQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSAgICA9PiAnU29tZSBRdWV1ZSBOYW1lJywKICAgICAgICBHcm91cElEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkUXVldWVJRCA9IDEyMzsKCj1jdXQKCnN1YiBfUXVldWVDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBHcm91cElEKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkTmFtZSA9ICRQYXJhbXtOYW1lfTsKCiAgICBteSAlUXVldWVSZXZlcnNlZCA9ICRRdWV1ZU9iamVjdC0+UXVldWVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIFZhbGlkICA9PiAwLAogICAgKTsKICAgICVRdWV1ZVJldmVyc2VkID0gcmV2ZXJzZSAlUXVldWVSZXZlcnNlZDsKCiAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICROYW1lLCAlUXVldWVSZXZlcnNlZCApOwogICAgcmV0dXJuICRJdGVtSUQgaWYgJEl0ZW1JRDsKCiAgICAjIHNwbGl0IHN0cmluZyB0byBjaGVjayBmb3IgcG9zc2libGUgc3ViIFF1ZXVlcwogICAgbXkgQFF1ZXVlQXJyYXkgPSBzcGxpdCAvOjovLCAkTmFtZTsKCiAgICAjIGNyZWF0ZSBRdWV1ZSB3aXRoIHBhcmVudAogICAgbXkgJENvbXBsZXRlUXVldWVOYW1lID0gJyc7CiAgICBteSAkUXVldWVJRDsKCiAgICBRVUVVRToKICAgIGZvciBteSAkUXVldWVOYW1lIChAUXVldWVBcnJheSkgewoKICAgICAgICBpZiAoJENvbXBsZXRlUXVldWVOYW1lKSB7CiAgICAgICAgICAgICRDb21wbGV0ZVF1ZXVlTmFtZSAuPSAnOjonOwogICAgICAgIH0KCiAgICAgICAgJENvbXBsZXRlUXVldWVOYW1lIC49ICRRdWV1ZU5hbWU7CgogICAgICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJENvbXBsZXRlUXVldWVOYW1lLCAlUXVldWVSZXZlcnNlZCApOwogICAgICAgIGlmICgkSXRlbUlEKSB7CiAgICAgICAgICAgICRRdWV1ZUlEID0gJEl0ZW1JRDsKICAgICAgICAgICAgbmV4dCBRVUVVRTsKICAgICAgICB9CgogICAgICAgICRRdWV1ZUlEID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUFkZCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRDb21wbGV0ZVF1ZXVlTmFtZSwKICAgICAgICAgICAgUGFyZW50UXVldWVJRCA9PiAkUXVldWVJRCwKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFF1ZXVlSUQgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgYWRkaW5nIG5ldyBRdWV1ZSAnJFF1ZXVlTmFtZScgKCRRdWV1ZUlEKS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAlUXVldWVSZXZlcnNlZCA9ICRRdWV1ZU9iamVjdC0+UXVldWVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICVRdWV1ZVJldmVyc2VkID0gcmV2ZXJzZSAlUXVldWVSZXZlcnNlZDsKICAgIH0KCiAgICByZXR1cm4gJFF1ZXVlSUQ7Cn0KCj1pdGVtIF9HZW5lcmFsQ2F0YWxvZ0l0ZW1DcmVhdGVJZk5vdEV4aXN0cygpCgphZGRzIGEgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0gaWYgaXQgZG9lcyBub3QgZXhpc3QKCiAgICBteSAkSXRlbUlEID0gJFpudW55SGVscGVyT2JqZWN0LT5fR2VuZXJhbENhdGFsb2dJdGVtQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICdUZXN0IEl0ZW0nLAogICAgICAgIENsYXNzICAgICAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6VGVzdCcsCiAgICAgICAgQ29tbWVudCAgICAgICAgID0+ICdDbGFzcyBmb3IgdGVzdCBpdGVtLicsCiAgICAgICAgUGVybWlzc2lvbkdyb3VwID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLCAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKClJldHVybnM6CgogICAgbXkgJEl0ZW1JRCA9IDEyMzQ7Cgo9Y3V0CgpzdWIgX0dlbmVyYWxDYXRhbG9nSXRlbUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJERCT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkR3JvdXBPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKICAgIG15ICRNYWluT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkVmFsaWRPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBDbGFzcykpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJE5hbWUgPSAkUGFyYW17TmFtZX07CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJEdlbmVyYWxDYXRhbG9nTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEdlbmVyYWxDYXRhbG9nTG9hZGVkOwoKICAgIG15ICRWYWxpZElEID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICBWYWxpZCA9PiAndmFsaWQnLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGl0ZW0gYWxyZWFkeSBleGlzdHMKICAgIG15ICRJdGVtTGlzdFJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBWYWxpZCA9PiAkVmFsaWRJRCwKICAgICk7CgogICAgbXkgJUl0ZW1MaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXsgJEl0ZW1MaXN0UmVmIHx8IHt9IH07CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkTmFtZSwgJUl0ZW1MaXN0UmV2ZXJzZSApOwogICAgcmV0dXJuICRJdGVtSUQgaWYgJEl0ZW1JRDsKCiAgICAjIGFkZCBpdGVtIGlmIGl0IGRvZXMgbm90IGV4aXN0CiAgICAkSXRlbUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICAgID0+ICROYW1lLAogICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkSUQsCiAgICAgICAgQ29tbWVudCA9PiAkUGFyYW17Q29tbWVudH0sCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gICAgICAgICBpZiAhJEl0ZW1JRDsKICAgIHJldHVybiAkSXRlbUlEIGlmICEkUGFyYW17UGVybWlzc2lvbkdyb3VwfTsKCiAgICBteSAkR3JvdXBJRCA9ICRHcm91cE9iamVjdC0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgPT4gJFBhcmFte1Blcm1pc3Npb25Hcm91cH0sCiAgICApOwogICAgcmV0dXJuICRJdGVtSUQgaWYgISRHcm91cElEOwoKICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgICAgIFZhbHVlICA9PiAkR3JvdXBJRCwKICAgICk7CgogICAgcmV0dXJuICRJdGVtSUQ7Cn0KCj1pdGVtIF9JVFNNQ29uZmlnSXRlbURlZmluaXRpb25DcmVhdGUoKQoKYWRkcyBvciB1cGRhdGVzIGEgZGVmaW5pdGlvbiBmb3IgYSBDb25maWdJdGVtQ2xhc3MuIFlvdSBuZWVkIHRvIHByb3ZpZGUgdGhlIGNvbmZpZ3VyYXRpb24Kb2YgdGhlIENNREIgY2xhc3MgaW4gdGhlIGZvbGxvd2luZyBkaXJlY3Rvcnk6Cgovb3B0L290cnMvc2NyaXB0cy9jbWRiX2NsYXNzZXMvUHJpdmF0ZV9FbmRnZXJhZXRlLmNvbmZpZwoKVGhlIHJlcXVpcmVkIGdlbmVyYWwgY2F0YWxvZyBpdGVtIHdpbGwgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LgoKICAgIG15ICREZWZpbml0aW9uSUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9JVFNNQ29uZmlnSXRlbURlZmluaXRpb25DcmVhdGUoCiAgICAgICAgQ2xhc3MgICAgICAgICAgID0+ICdQcml2YXRlIEVuZGdlcmFldGUnLAogICAgICAgIENsYXNzRmlsZSAgICAgICA9PiAnUHJpdmF0ZV9FbmRnZXJhZXRlJywgICMgb3B0aW9uYWwKICAgICAgICBQZXJtaXNzaW9uR3JvdXAgPT4gJ2l0c20tY29uZmlnaXRlbScsICAgICAjIG9wdGlvbmFsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkRGVmaW5pdGlvbklEID0gMTIzNDsKCj1jdXQKCnN1YiBfSVRTTUNvbmZpZ0l0ZW1EZWZpbml0aW9uQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTWFpbk9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJFlBTUxPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ2xhc3MpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRIb21lID0gJENvbmZpZ09iamVjdC0+R2V0KCdIb21lJyk7CgogICAgIyBjaGVjayBpZiBJVFNNQ29uZmlnSXRlbSBtb2R1bGUgaXMgaW5zdGFsbGVkCiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1Mb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICAgICBTaWxlbnQgPT4gMSwKICAgICk7CiAgICByZXR1cm4gaWYgISRJVFNNQ29uZmlnSXRlbUxvYWRlZDsKCiAgICAjIGNyZWF0ZSBnZW5lcmFsIGNhdGFsb2cgaXRlbSBmb3IgY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJFNlbGYtPl9HZW5lcmFsQ2F0YWxvZ0l0ZW1DcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBQZXJtaXNzaW9uR3JvdXAgPT4gJFBhcmFte1Blcm1pc3Npb25Hcm91cH0sCiAgICApOwogICAgcmV0dXJuIGlmICEkQ2xhc3NJRDsKCiAgICAjIGRvIGNoZWNrIGNyZWF0ZSBpZiBub3QgZXhpc3RzCiAgICBpZiAoICRQYXJhbXtDcmVhdGVJZk5vdEV4aXN0c30gKSB7CiAgICAgICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25MaXN0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICREZWZpbml0aW9uTGlzdFJlZi0+Wy0xXS0+e0RlZmluaXRpb25JRH0gaWYgSXNBcnJheVJlZldpdGhEYXRhKCREZWZpbml0aW9uTGlzdFJlZik7CiAgICB9CgogICAgIyBjaGVjayB3aGljaCB0eXBlIG9mIGltcG9ydCBmaWxlIGlzIHByZXNlbnQgKFBlcmwgc3RydWN0dXJlIG9yIFlBTUwpLgogICAgbXkgJEJhc2VDbGFzc0ZpbGVQYXRoID0gJEhvbWUgLiAnL3NjcmlwdHMvY21kYl9jbGFzc2VzLycgLiAoICRQYXJhbXtDbGFzc0ZpbGV9IHx8ICRQYXJhbXtDbGFzc30gKTsKCiAgICBteSAkQ2xhc3NGaWxlUGF0aCAgID0gJEJhc2VDbGFzc0ZpbGVQYXRoIC4gJy55bWwnOwogICAgbXkgJENsYXNzRmlsZUlzWUFNTCA9IDE7CiAgICBpZiAoICEtZiAkQ2xhc3NGaWxlUGF0aCApIHsKICAgICAgICAkQ2xhc3NGaWxlUGF0aCAgID0gJEJhc2VDbGFzc0ZpbGVQYXRoIC4gJy5jb25maWcnOwogICAgICAgICRDbGFzc0ZpbGVJc1lBTUwgPSAwOwogICAgfQogICAgcmV0dXJuIGlmICEtZiAkQ2xhc3NGaWxlUGF0aDsKCiAgICAjIGdldCBjb25maWd1cmF0aW9uIGZyb20gdGhlIGZpbGUgc3lzdGVtCiAgICBteSAkQ29udGVudFNDQUxBUlJlZiA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkQ2xhc3NGaWxlUGF0aCwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICAgICAgUmVzdWx0ICAgPT4gJ1NDQUxBUicsCiAgICApOwogICAgcmV0dXJuIGlmICEkQ29udGVudFNDQUxBUlJlZjsKCiAgICBteSAkQ29udGVudCA9ICR7JENvbnRlbnRTQ0FMQVJSZWZ9OwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRDb250ZW50IHx8ICFsZW5ndGggJENvbnRlbnQ7CgogICAgIyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgNi4wLjE4IHN3aXRjaGVkIGZvcm1hdCBvZiBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBmcm9tIFBlcmwKICAgICMgdG8gWUFNTC4gQ2hlY2sgd2hpY2ggb25lIGlzIG5lZWRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNvbnNvbGUgY29tbWFuZAogICAgIyBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ2l0ZW06OkRlZmluaXRpb25QZXJsMllBTUwKICAgICMgZXhpc3RzLgogICAgbXkgJERlZmluaXRpb25QZXJsMllBTUxGaWxlUGF0aCA9ICRIb21lCiAgICAgICAgLiAnL0tlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kL01haW50L0lUU00vQ29uZmlnaXRlbS9EZWZpbml0aW9uUGVybDJZQU1MLnBtJzsKICAgIG15ICRZQU1MQ29uZmlnSXRlbURlZmluaXRpb25FeHBlY3RlZCA9ICggLWYgJERlZmluaXRpb25QZXJsMllBTUxGaWxlUGF0aCApID8gMSA6IDA7CgogICAgaWYgKAogICAgICAgICEkQ2xhc3NGaWxlSXNZQU1MCiAgICAgICAgJiYgJFlBTUxDb25maWdJdGVtRGVmaW5pdGlvbkV4cGVjdGVkCiAgICAgICAgKQogICAgewogICAgICAgICMgVHVybiBQZXJsIGNvbmZpZyBpdGVtIGZpbGUgaW50byBQZXJsIHN0cnVjdHVyZS4KICAgICAgICAkQ29udGVudCA9IGV2YWwgJENvbnRlbnQ7ICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgICAgIHJldHVybiBpZiAhZGVmaW5lZCAkQ29udGVudDsKCiAgICAgICAgIyBUdXJuIFBlcmwgc3RydWN0dXJlIGludG8gWUFNTC4KICAgICAgICAkQ29udGVudCA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoCiAgICAgICAgJENsYXNzRmlsZUlzWUFNTAogICAgICAgICYmICEkWUFNTENvbmZpZ0l0ZW1EZWZpbml0aW9uRXhwZWN0ZWQKICAgICAgICApCiAgICB7CiAgICAgICAgIyBUdXJuIFlBTUwgY29uZmlnIGl0ZW0gZmlsZSBpbnRvIFBlcmwgc3RydWN0dXJlLgogICAgICAgICRDb250ZW50ID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgIWRlZmluZWQgJENvbnRlbnQ7CgogICAgICAgICMgVHVybiBQZXJsIHN0cnVjdHVyZSBpbnRvIHN0cmluZy4KICAgICAgICAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5EdW1wKAogICAgICAgICAgICAkQ29udGVudCwKICAgICAgICApOwoKICAgICAgICAjIFJlbW92ZSBsZWFkaW5nICckVkFSMSA9JyBmcm9tIGR1bXAuCiAgICAgICAgJENvbnRlbnQgPX4gc3tcQVwkVkFSMSA9IH17fTsKICAgIH0KCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJENvbnRlbnQgfHwgIWxlbmd0aCAkQ29udGVudDsKCiAgICAjIGdldCBsYXN0IGRlZmluaXRpb24KICAgIG15ICRMYXN0RGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICApOwoKICAgICMgc3RvcCBhZGQgaWYgZGVmaW5pdGlvbiB3YXMgbm90IGNoYW5nZWQKICAgIHJldHVybiAkTGFzdERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9CiAgICAgICAgaWYgSXNIYXNoUmVmV2l0aERhdGEoJExhc3REZWZpbml0aW9uKSAmJiAkTGFzdERlZmluaXRpb24tPntEZWZpbml0aW9ufSBlcSAkQ29udGVudDsKCiAgICBteSAkRGVmaW5pdGlvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRDb250ZW50LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICREZWZpbml0aW9uSUQ7Cn0KCj1pdGVtIF9JVFNNQ29uZmlnSXRlbURlZmluaXRpb25DcmVhdGVJZk5vdEV4aXN0cygpCgphZGQgaWYgbm90IGV4aXN0cyBhIGRlZmluaXRpb24gZm9yIGEgQ29uZmlnSXRlbUNsYXNzLiBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSBjb25maWd1cmF0aW9uCm9mIHRoZSBDTURCIGNsYXNzIGluIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5OgoKL29wdC9vdHJzL3NjcmlwdHMvY21kYl9jbGFzc2VzL1ByaXZhdGVfRW5kZ2VyYWV0ZS5jb25maWcKClRoZSByZXF1aXJlZCBnZW5lcmFsIGNhdGFsb2cgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4KCiAgICBteSAkRGVmaW5pdGlvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1EZWZpbml0aW9uQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgQ2xhc3MgICAgICAgICAgID0+ICdQcml2YXRlIEVuZGdlcmFldGUnLAogICAgICAgIENsYXNzRmlsZSAgICAgICA9PiAnUHJpdmF0ZV9FbmRnZXJhZXRlJywgICMgb3B0aW9uYWwKICAgICAgICBQZXJtaXNzaW9uR3JvdXAgPT4gJ2l0c20tY29uZmlnaXRlbScsICAgICAjIG9wdGlvbmFsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkRGVmaW5pdGlvbklEID0gMTIzNDsKCj1jdXQKCnN1YiBfSVRTTUNvbmZpZ0l0ZW1EZWZpbml0aW9uQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPl9JVFNNQ29uZmlnSXRlbURlZmluaXRpb25DcmVhdGUoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENyZWF0ZUlmTm90RXhpc3RzID0+IDEsCiAgICApOwp9Cgo9aXRlbSBfSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKCkKCmFkZHMgb3IgdXBkYXRlcyBhIENvbmZpZ0l0ZW0gdmVyc2lvbi4KCiAgICBteSAkVmVyc2lvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMTIzNDUsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnZXhhbXBsZSBuYW1lJywKCiAgICAgICAgQ2xhc3NJRCAgICAgICA9PiAxMjM0LAogICAgICAgIENsYXNzTmFtZSAgICAgPT4gJ2V4YW1wbGUgY2xhc3MnLAogICAgICAgIERlZmluaXRpb25JRCAgPT4gMTIzNCwKCiAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAxMjM0LAogICAgICAgIERlcGxTdGF0ZU5hbWUgPT4gJ1Byb2R1Y3Rpb24nLAoKICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDEyMzQsCiAgICAgICAgSW5jaVN0YXRlTmFtZSA9PiAnT3BlcmF0aW9uYWwnLAoKICAgICAgICBYTUxEYXRhID0+IHsKICAgICAgICAgICAgJ1ByaW9yaXR5JyAgICA9PiAnaGlnaCcsCiAgICAgICAgICAgICdQcm9kdWN0JyAgICAgPT4gJ3Rlc3QnLAogICAgICAgICAgICAnRGVzY3JpcHRpb24nID0+ICd0ZXN0JwogICAgICAgIH0sCiAgICApOwoKICAgIEVYQU1QTEUgQ3JlYXRlIENvbXB1dGVyOgoKICAgIG15ICRabnVueUhlbHBlck9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpabnVueUhlbHBlcicpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICMgZ2V0IHZhbGlkIGlkCiAgICBteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICk7CgogICAgbXkgJENsYXNzTGlzdFJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAkVmFsaWRJRCwKICAgICk7CiAgICBteSAlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyAkQ2xhc3NMaXN0UmVmIHx8IHt9IH07CgogICAgbXkgJFllc05vUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8nLAogICAgICAgIFZhbGlkID0+ICRWYWxpZElELAogICAgKTsKICAgIG15ICVZZXNOb0xpc3QgPSByZXZlcnNlICV7ICRZZXNOb1JlZiB8fCB7fSB9OwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0xpc3R7Q29tcHV0ZXJ9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgbmV3IHZlcnNpb24gb2YgQ29uZmlnSXRlbQogICAgbXkgJFZlcnNpb25JRCA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtVmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnYmx1YicsCiAgICAgICAgQ2xhc3NOYW1lICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIERlcGxTdGF0ZU5hbWUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZU5hbWUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBYTUxEYXRhID0+IHsKICAgICAgICAgICAgT3RoZXJFcXVpcG1lbnQgICAgICAgICA9PiAnLi4uJywKICAgICAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMjAxNi0wMS0wMScsCiAgICAgICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgPT4gJzIwMTYtMDEtMDEnLAogICAgICAgICAgICBOSUMgICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOSUMnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRZZXNOb0xpc3R7WWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4wLjAuMScKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFZlcnNpb25JRCA9IDEyMzQ7Cgo9Y3V0CgpzdWIgX0lUU01Db25maWdJdGVtVmVyc2lvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIE5hbWUpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggISRQYXJhbXtEZXBsU3RhdGVJRH0gJiYgISRQYXJhbXtEZXBsU3RhdGVOYW1lfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJ0RlcGxTdGF0ZUlEJyBvciAnRGVwbFN0YXRlTmFtZScgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoICEkUGFyYW17SW5jaVN0YXRlSUR9ICYmICEkUGFyYW17SW5jaVN0YXRlTmFtZX0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICdEZXBsU3RhdGVJRCcgb3IgJ0RlcGxTdGF0ZU5hbWUnIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCAkUGFyYW17WE1MRGF0YX0gJiYgcmVmICRQYXJhbXtYTUxEYXRhfSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICdYTUxEYXRhJyBhcyBoYXNoIHJlZiBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGdlbmVyYWwgY2F0YWxvZyBtb2R1bGUgaXMgaW5zdGFsbGVkCiAgICBteSAkR2VuZXJhbENhdGFsb2dMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICAgICBTaWxlbnQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkR2VuZXJhbENhdGFsb2dMb2FkZWQ7CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJElUU01Db25maWdJdGVtTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJElUU01Db25maWdJdGVtTG9hZGVkOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkVmFsaWRPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICBteSAlQ29uZmlnSXRlbSAgID0gJXsgJFBhcmFte1hNTERhdGF9IHx8IHt9IH07CgogICAgbXkgJVZlcnNpb24gPSAkU2VsZi0+X0lUU01WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICVEZXBsU3RhdGVMaXN0ID0gJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgKQogICAgICAgICAgICB8fCB7fQogICAgfTsKICAgIG15ICVEZXBsU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJURlcGxTdGF0ZUxpc3Q7CgogICAgbXkgJUluY2lTdGF0ZUxpc3QgPSAlewogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgKQogICAgICAgICAgICB8fCB7fQogICAgfTsKICAgIG15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJUluY2lTdGF0ZUxpc3Q7CgogICAgIyBnZXQgZGVmaW5pdGlvbgogICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbXtEZWZpbml0aW9uSUR9OwogICAgaWYgKCAhJERlZmluaXRpb25JRCApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgaWQgb3IgbmFtZQogICAgICAgIG15ICRDbGFzc0lEID0gJFBhcmFte0NsYXNzSUR9OwogICAgICAgIGlmICggJFBhcmFte0NsYXNzTmFtZX0gKSB7CgogICAgICAgICAgICAjIGdldCB2YWxpZCBpZAogICAgICAgICAgICBteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAndmFsaWQnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEl0ZW1MaXN0UmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAkVmFsaWRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICVJdGVtTGlzdCA9IHJldmVyc2UgJXsgJEl0ZW1MaXN0UmVmIHx8IHt9IH07CgogICAgICAgICAgICAkQ2xhc3NJRCA9ICRJdGVtTGlzdHsgJFBhcmFte0NsYXNzTmFtZX0gfTsKICAgICAgICB9CgogICAgICAgIG15ICRYTUxEZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb25JRCA9ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkVmVyc2lvbntOYW1lfSA9ICRQYXJhbXtOYW1lfTsKICAgIH0KICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gfHwgJFBhcmFte0NsYXNzSUR9IHx8ICRQYXJhbXtDbGFzc05hbWV9ICkgewogICAgICAgICRWZXJzaW9ue0RlZmluaXRpb25JRH0gPSAkRGVmaW5pdGlvbklEOwogICAgfQogICAgaWYgKCAkUGFyYW17RGVwbFN0YXRlSUR9ICkgewogICAgICAgICRWZXJzaW9ue0RlcGxTdGF0ZUlEfSA9ICRQYXJhbXtEZXBsU3RhdGVJRH07CiAgICB9CiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJFZlcnNpb257SW5jaVN0YXRlSUR9ID0gJFBhcmFte0luY2lTdGF0ZUlEfTsKICAgIH0KICAgIGlmICggJFBhcmFte0RlcGxTdGF0ZU5hbWV9ICkgewogICAgICAgICRWZXJzaW9ue0RlcGxTdGF0ZUlEfSA9ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXsgJFBhcmFte0RlcGxTdGF0ZU5hbWV9IH07CiAgICB9CiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVOYW1lfSApIHsKICAgICAgICAkVmVyc2lvbntJbmNpU3RhdGVJRH0gPSAkSW5jaVN0YXRlTGlzdFJldmVyc2V7ICRQYXJhbXtJbmNpU3RhdGVOYW1lfSB9OwogICAgfQoKICAgICVDb25maWdJdGVtID0gKCAleyAkVmVyc2lvbntYTUxEYXRhfSB8fCB7fSB9LCAlQ29uZmlnSXRlbSApOwoKICAgIG15ICRYTUxEYXRhID0gWwogICAgICAgIHVuZGVmLAogICAgICAgIHsKICAgICAgICAgICAgJ1ZlcnNpb24nID0+IFsKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAge30sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIF07CiAgICAkU2VsZi0+X1BhcnNlRGF0YTJYTUwoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFJlc3VsdCA9PiAkWE1MRGF0YS0+WzFdLT57VmVyc2lvbn0tPlstMV0sCiAgICAgICAgRGF0YSAgID0+IFwlQ29uZmlnSXRlbSwKICAgICk7CgogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIE5hbWUgICAgICAgICA9PiAkVmVyc2lvbntOYW1lfSwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFZlcnNpb257RGVmaW5pdGlvbklEfSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFZlcnNpb257RGVwbFN0YXRlSUR9LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkVmVyc2lvbntJbmNpU3RhdGVJRH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFZlcnNpb25JRDsKfQoKPWl0ZW0gX0lUU01Db25maWdJdGVtVmVyc2lvbkV4aXN0cygpCgpjaGVja3MgaWYgYSB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzIHdpdGhvdXQgcmV0dXJuaW5nIGEgZXJyb3IuCgoKICAgIG15ICRGb3VuZCA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtVmVyc2lvbkV4aXN0cygKICAgICAgICBWZXJzaW9uSUQgID0+IDEyMywKICAgICk7CgogICAgb3IKCiAgICBteSAkRm91bmQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25FeGlzdHMoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7CgoKUmV0dXJuczoKCiAgICBteSAkRm91bmQgPSAxOwoKPWN1dAoKc3ViIF9JVFNNQ29uZmlnSXRlbVZlcnNpb25FeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICREQk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICYmICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFZlcnNpb25JRCBvciBDb25maWdJdGVtSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGdlbmVyYWwgY2F0YWxvZyBtb2R1bGUgaXMgaW5zdGFsbGVkCiAgICBteSAkR2VuZXJhbENhdGFsb2dMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICAgICBTaWxlbnQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkR2VuZXJhbENhdGFsb2dMb2FkZWQ7CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJElUU01Db25maWdJdGVtTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJElUU01Db25maWdJdGVtTG9hZGVkOwoKICAgIGlmICggJFBhcmFte1ZlcnNpb25JRH0gKSB7CgogICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgMSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VmVyc2lvbklEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCAxIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIFdIRVJFIGNvbmZpZ2l0ZW1faWQgPSA/IE9SREVSIEJZIGlkIERFU0MnLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRm91bmQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRm91bmQgPSAxOwogICAgfQoKICAgIHJldHVybiAkRm91bmQ7Cn0KCj1pdGVtIF9JVFNNQ29uZmlnSXRlbVZlcnNpb25HZXQoKQoKZ2V0IGEgQ29uZmlnSXRlbSB2ZXJzaW9uLgoKICAgIG15ICVWZXJzaW9uID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICA9PiAxMjM0NSwKICAgICAgICBYTUxEYXRhTXVsdGlwbGUgPT4gMSwgICAgICAjIGRlZmF1bHQ6IDAsIFRoaXMgb3B0aW9uIHdpbGwgcmV0dXJuIGEgbW9yZSBjb21wbGV4IFhNTERhdGEgc3RydWN0dXJlIHdpdGggbXVsdGlwbGUgZWxlbWVudCBkYXRhISBNYWtlcyBzZW5zZSBpZiB5b3UgYXJlIHVzaW5nIENvdW50TWluLCBDb3VudE1heCBldGMuLgogICAgKTsKClJldHVybnM6CgogICAgbXkgJVZlcnNpb24gPSAoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxMjM0NSwKCiAgICAgICAgRGVmaW5pdGlvbklEID0+IDEyMzQsCiAgICAgICAgRGVwbFN0YXRlSUQgID0+IDEyMzQsCiAgICAgICAgRGVwbFN0YXRlICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMTIzNCwKICAgICAgICBJbmNpU3RhdGUgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ2V4YW1wbGUgbmFtZScsCiAgICAgICAgWE1MRGF0YSAgICAgID0+IHsKICAgICAgICAgICAgJ1ByaW9yaXR5JyAgICA9PiAnaGlnaCcsCiAgICAgICAgICAgICdQcm9kdWN0JyAgICAgPT4gJ3Rlc3QnLAogICAgICAgICAgICAnRGVzY3JpcHRpb24nID0+ICd0ZXN0JwogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIF9JVFNNQ29uZmlnSXRlbVZlcnNpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTWFpbk9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGNoZWNrIGlmIGdlbmVyYWwgY2F0YWxvZyBtb2R1bGUgaXMgaW5zdGFsbGVkCiAgICBteSAkR2VuZXJhbENhdGFsb2dMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICAgICBTaWxlbnQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkR2VuZXJhbENhdGFsb2dMb2FkZWQ7CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJElUU01Db25maWdJdGVtTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJElUU01Db25maWdJdGVtTG9hZGVkOwogICAgcmV0dXJuIGlmICEkU2VsZi0+X0lUU01Db25maWdJdGVtVmVyc2lvbkV4aXN0cyglUGFyYW0pOwoKICAgIG15ICRWZXJzaW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFhNTERhdGFHZXQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkVmVyc2lvblJlZik7CgogICAgbXkgJVZlcnNpb25Db25maWdJdGVtOwogICAgJFZlcnNpb25Db25maWdJdGVte1hNTERhdGF9IHx8PSB7fTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRWZXJzaW9uUmVmLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0gKSApIHsKICAgICAgICAkU2VsZi0+X1BhcnNlWE1MMkRhdGEoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUmVzdWx0ID0+ICRWZXJzaW9uQ29uZmlnSXRlbXtYTUxEYXRhfSwKICAgICAgICAgICAgRGF0YSAgID0+ICRWZXJzaW9uUmVmLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEZpZWxkIChxdyhDb25maWdJdGVtSUQgTmFtZSBDbGFzc0lEIENsYXNzIERlZmluaXRpb25JRCBEZXBsU3RhdGVJRCBEZXBsU3RhdGUgSW5jaVN0YXRlSUQgSW5jaVN0YXRlKSkgewogICAgICAgICRWZXJzaW9uQ29uZmlnSXRlbXskRmllbGR9ID0gJFZlcnNpb25SZWYtPnskRmllbGR9OwogICAgfQoKICAgIHJldHVybiAlVmVyc2lvbkNvbmZpZ0l0ZW07Cn0KCj1pdGVtIF9JVFNNVmVyc2lvbkFkZCgpCgpERVBSRUNBVEVELCB1c2UgJFNlbGYtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25BZGQgaW5zdGVhZC4KCj1jdXQKCnN1YiBfSVRTTVZlcnNpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25BZGQoJVBhcmFtKTsKfQoKPWl0ZW0gX0lUU01WZXJzaW9uRXhpc3RzKCkKCkRFUFJFQ0FURUQsIHVzZSAkU2VsZi0+X0lUU01Db25maWdJdGVtVmVyc2lvbkV4aXN0cyBpbnN0ZWFkLgoKPWN1dAoKc3ViIF9JVFNNVmVyc2lvbkV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+X0lUU01Db25maWdJdGVtVmVyc2lvbkV4aXN0cyglUGFyYW0pOwp9Cgo9aXRlbSBfSVRTTVZlcnNpb25HZXQoKQoKREVQUkVDQVRFRCwgdXNlICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uR2V0IGluc3RlYWQuCgo9Y3V0CgpzdWIgX0lUU01WZXJzaW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uR2V0KCVQYXJhbSk7Cn0KCj1pdGVtIF9QYXJzZVhNTDJEYXRhKCkKCnRoaXMgaXMgYSBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgX0lUU01WZXJzaW9uR2V0IHRvIHBhcnNlIHRoZSBhZGRpdGlvbmFsIGRhdGEKc3RvcmVkIGluIFhNTERhdGEuCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9QYXJzZVhNTDJEYXRhKAogICAgICAgIFBhcmVudCAgICAgICAgICA9PiAkSWRlbnRpZmllciwgICAgICAgICAgIyBvcHRpb25hbDogY29udGFpbnMgdGhlIGZpZWxkIG5hbWUgb2YgdGhlIHBhcmVudCB4bWwKICAgICAgICBSZXN1bHQgICAgICAgICAgPT4gJFJlc3VsdCwgICAgICAgICAgICAgICMgY29udGFpbnMgdGhlIHJlZmVyZW5jZSB0byB0aGUgcmVzdWx0IGhhc2gKICAgICAgICBEYXRhICAgICAgICAgICAgPT4gJERhdGF7JEZpZWxkfS0+WzFdLCAgICMgY29udGFpbnMgdGhlIHhtbCBoYXNoIHdlIHdhbnQgdG8gcGFyc2UKICAgICAgICBYTUxEYXRhTXVsdGlwbGUgPT4gMSwgICAgICAgICAgICAgICAgICAgICMgZGVmYXVsdDogMCwgVGhpcyBvcHRpb24gd2lsbCByZXR1cm4gYSBtb3JlIGNvbXBsZXggWE1MRGF0YSBzdHJ1Y3R1cmUgd2l0aCBtdWx0aXBsZSBlbGVtZW50IGRhdGEhIE1ha2VzIHNlbnNlIGlmIHlvdSBhcmUgdXNpbmcgQ291bnRNaW4sIENvdW50TWF4IGV0Yy4uCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX1BhcnNlWE1MMkRhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ICAgICAgICAgID0gJFBhcmFte1Jlc3VsdH07CiAgICBteSAkWE1MRGF0YU11bHRpcGxlID0gJFBhcmFte1hNTERhdGFNdWx0aXBsZX07CiAgICBteSAkUGFyZW50ICAgICAgICAgID0gJFBhcmFte1BhcmVudH0gfHwgJyc7CiAgICBteSAlRGF0YSAgICAgICAgICAgID0gJXsgJFBhcmFte0RhdGF9IHx8IHt9IH07CgogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCBrZXlzICVEYXRhICkgewogICAgICAgIG5leHQgRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJERhdGF7JEZpZWxkfSApOwoKICAgICAgICBpZiAoJFhNTERhdGFNdWx0aXBsZSkgewogICAgICAgICAgICAkUmVzdWx0LT57JEZpZWxkfSA9IFtdOwoKICAgICAgICAgICAgZm9yIG15ICRJbmRleCAoIDEgLi4gJCN7ICREYXRheyRGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREYXRheyRGaWVsZH0tPlskSW5kZXhdLT57Q29udGVudH07CgogICAgICAgICAgICAgICAgbXkgJEN1cnJlbnRSZXN1bHQgPSB7fTsKCiAgICAgICAgICAgICAgICAkU2VsZi0+X1BhcnNlWE1MMkRhdGEoCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIFBhcmVudCA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICRDdXJyZW50UmVzdWx0LAogICAgICAgICAgICAgICAgICAgIERhdGEgICA9PiAkRGF0YXskRmllbGR9LT5bJEluZGV4XSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRWYWx1ZSApIHsKICAgICAgICAgICAgICAgICAgICAkQ3VycmVudFJlc3VsdC0+e0NvbnRlbnR9ID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIGtleXMgJXskQ3VycmVudFJlc3VsdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJFJlc3VsdC0+eyRGaWVsZH0gfSwgJEN1cnJlbnRSZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkVmFsdWUgPSAkRGF0YXskRmllbGR9LT5bMV0tPntDb250ZW50fTsKCiAgICAgICAgICAgIG5leHQgRklFTEQgaWYgIWRlZmluZWQgJFZhbHVlOwoKICAgICAgICAgICAgJFJlc3VsdC0+eyRGaWVsZH0gPSAkVmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfUGFyc2VEYXRhMlhNTCgpCgp0aGlzIGlzIGEgaW50ZXJuYWwgZnVuY3Rpb24gZm9yIF9JVFNNVmVyc2lvbkFkZCB0byBwYXJzZSB0aGUgYWRkaXRpb25hbCBkYXRhCmZvciB4bWwgc3RvcmFnZS4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1BhcnNlRGF0YTJYTUwoCiAgICAgICAgUGFyZW50ID0+ICRJZGVudGlmaWVyLCAgICAgICAgICAjIG9wdGlvbmFsOiBjb250YWlucyB0aGUgZmllbGQgbmFtZSBvZiB0aGUgcGFyZW50IHhtbAogICAgICAgIFJlc3VsdCA9PiAkUmVzdWx0LCAgICAgICAgICAgICAgIyBjb250YWlucyB0aGUgcmVmZXJlbmNlIHRvIHRoZSByZXN1bHQgaGFzaAogICAgICAgIERhdGEgICA9PiAkRGF0YXskRmllbGR9LT5bMV0sICAgIyBjb250YWlucyB0aGUgeG1sIGhhc2ggd2Ugd2FudCB0byBwYXJzZQogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9QYXJzZURhdGEyWE1MIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRQYXJhbXtSZXN1bHR9OwogICAgbXkgJFBhcmVudCA9ICRQYXJhbXtQYXJlbnR9IHx8ICcnOwogICAgbXkgJURhdGEgICA9ICV7ICRQYXJhbXtEYXRhfSB8fCB7fSB9OwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKICAgICAgICBuZXh0IElURU0gaWYgJEl0ZW1JRCBlcSAkUGFyZW50OwogICAgICAgIG5leHQgSVRFTSBpZiAkSXRlbUlEIGVxICdDb250ZW50JzsKCiAgICAgICAgbXkgJEl0ZW0gPSAkRGF0YXskSXRlbUlEfTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJEl0ZW0pICkgewoKICAgICAgICAgICAgJFJlc3VsdC0+eyRJdGVtSUR9ID0gW3VuZGVmXTsKCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjeyRJdGVtfSApIHsKICAgICAgICAgICAgICAgIG15ICRJdGVtRGF0YSA9ICRJdGVtLT5bJEluZGV4XTsKCiAgICAgICAgICAgICAgICBwdXNoIEB7ICRSZXN1bHQtPnskSXRlbUlEfSB9LCB7CiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQnID0+ICRJdGVtLT5bJEluZGV4XS0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAkU2VsZi0+X1BhcnNlRGF0YTJYTUwoCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIFBhcmVudCA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAkUmVzdWx0LT57JEl0ZW1JRH0tPlstMV0sCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+ICREYXRheyRJdGVtSUR9LT5bJEluZGV4XSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRSZXN1bHQtPnskSXRlbUlEfSA9IFsKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9XZWJzZXJ2aWNlQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyB3ZWIgc2VydmljZXMgdGhhdCBub3QgZXhpc3QgeWV0CgogICAgIyBpbnN0YWxscyBhbGwgLnltbCBmaWxlcyBpbiAkT1RSUy9zY3JpcHRzL3dlYnNlcnZpY2VzLwogICAgIyBuYW1lIG9mIHRoZSBmaWxlIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIHdlYnNlcnZpY2UKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9XZWJzZXJ2aWNlQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgU3ViRGlyID0+ICdabnVueTRPVFJTQXNzZXREZXNrJywgIyBvcHRpb25hbAogICAgKTsKCk9SOgoKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9XZWJzZXJ2aWNlQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgV2Vic2VydmljZXMgPT4gewogICAgICAgICAgICAnTmV3IFdlYnNlcnZpY2UgMTIzNCcgPT4gJy9wYXRoL3RvL1dlYnNlcnZpY2UueW1sJywKICAgICAgICAgICAgLi4uCiAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBfV2Vic2VydmljZUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFdlYnNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTWFpbk9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJFdlYnNlcnZpY2VzID0gJFBhcmFte1dlYnNlcnZpY2VzfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlcykgKSB7CiAgICAgICAgJFdlYnNlcnZpY2VzID0gJFNlbGYtPl9XZWJzZXJ2aWNlc0dldCgKICAgICAgICAgICAgU3ViRGlyID0+ICRQYXJhbXtTdWJEaXJ9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlcyk7CgogICAgbXkgJFdlYnNlcnZpY2VMaXN0ID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VMaXN0KCk7CiAgICBpZiAoIHJlZiAkV2Vic2VydmljZUxpc3QgbmUgJ0hBU0gnICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIGdldHRpbmcgbGlzdCBvZiBXZWJzZXJ2aWNlcyEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgV0VCU0VSVklDRToKICAgIGZvciBteSAkV2Vic2VydmljZU5hbWUgKCBzb3J0IGtleXMgJXskV2Vic2VydmljZXN9ICkgewoKICAgICAgICAjIHN0b3AgaWYgYWxyZWFkeSBhZGRlZAogICAgICAgIG5leHQgV0VCU0VSVklDRSBpZiBncmVwIHsgJFdlYnNlcnZpY2VOYW1lIGVxICRfIH0gc29ydCB2YWx1ZXMgJXskV2Vic2VydmljZUxpc3R9OwoKICAgICAgICBteSAkV2Vic2VydmljZVlBTUxQYXRoID0gJFdlYnNlcnZpY2VzLT57JFdlYnNlcnZpY2VOYW1lfTsKCiAgICAgICAgIyByZWFkIGNvbmZpZwogICAgICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkV2Vic2VydmljZVlBTUxQYXRoLAogICAgICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbnRlbnQgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgcmVhZCAkV2Vic2VydmljZVlBTUxQYXRoISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBXRUJTRVJWSUNFOwogICAgICAgIH0KCiAgICAgICAgbXkgJENvbmZpZyA9ICRZQU1MT2JqZWN0LT5Mb2FkKCBEYXRhID0+ICR7JENvbnRlbnR9ICk7CiAgICAgICAgaWYgKCAhJENvbmZpZyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBsb2FkaW5nICRXZWJzZXJ2aWNlWUFNTFBhdGghIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFdFQlNFUlZJQ0U7CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB3ZWJzZXJ2aWNlIHRvIHRoZSBzeXN0ZW0KICAgICAgICBteSAkV2Vic2VydmljZUlEID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VBZGQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgICAgICAgICBDb25maWcgID0+ICRDb25maWcsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgIG5leHQgV0VCU0VSVklDRSBpZiAkV2Vic2VydmljZUlEOwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBhZGRpbmcgV2Vic2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBmcm9tICRXZWJzZXJ2aWNlWUFNTFBhdGghIgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9XZWJzZXJ2aWNlQ3JlYXRlKCkKCmNyZWF0ZXMgb3IgdXBkYXRlcyB3ZWIgc2VydmljZXMKCiAgICAjIGluc3RhbGxzIGFsbCAueW1sIGZpbGVzIGluICRPVFJTL3NjcmlwdHMvd2Vic2VydmljZXMvCiAgICAjIG5hbWUgb2YgdGhlIGZpbGUgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgd2Vic2VydmljZQogICAgbXkgJFJlc3VsdCA9ICRabnVueUhlbHBlck9iamVjdC0+X1dlYnNlcnZpY2VDcmVhdGUoCiAgICAgICAgU3ViRGlyID0+ICdabnVueTRPVFJTQXNzZXREZXNrJywgIyBvcHRpb25hbAogICAgKTsKCk9SOgoKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9XZWJzZXJ2aWNlQ3JlYXRlKAogICAgICAgIFdlYnNlcnZpY2VzID0+IHsKICAgICAgICAgICAgJ05ldyBXZWJzZXJ2aWNlIDEyMzQnID0+ICcvcGF0aC90by9XZWJzZXJ2aWNlLnltbCcsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgX1dlYnNlcnZpY2VDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRNYWluT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICBteSAkV2Vic2VydmljZXMgPSAkUGFyYW17V2Vic2VydmljZXN9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VzKSApIHsKICAgICAgICAkV2Vic2VydmljZXMgPSAkU2VsZi0+X1dlYnNlcnZpY2VzR2V0KAogICAgICAgICAgICBTdWJEaXIgPT4gJFBhcmFte1N1YkRpcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VzKTsKCiAgICBteSAkV2Vic2VydmljZUxpc3QgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUxpc3QoKTsKICAgIGlmICggcmVmICRXZWJzZXJ2aWNlTGlzdCBuZSAnSEFTSCcgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgZ2V0dGluZyBsaXN0IG9mIFdlYnNlcnZpY2VzISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG15ICVXZWJzZXJ2aWNlTGlzdFJldmVyc2VkID0gcmV2ZXJzZSAleyRXZWJzZXJ2aWNlTGlzdH07CgogICAgV0VCU0VSVklDRToKICAgIGZvciBteSAkV2Vic2VydmljZU5hbWUgKCBzb3J0IGtleXMgJXskV2Vic2VydmljZXN9ICkgewoKICAgICAgICBteSAkV2Vic2VydmljZUlEICAgICAgICAgICA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkV2Vic2VydmljZU5hbWUsICVXZWJzZXJ2aWNlTGlzdFJldmVyc2VkICk7CiAgICAgICAgbXkgJFVwZGF0ZU9yQ3JlYXRlRnVuY3Rpb24gPSAnV2Vic2VydmljZUFkZCc7CgogICAgICAgIGlmICgkV2Vic2VydmljZUlEKSB7CiAgICAgICAgICAgICRVcGRhdGVPckNyZWF0ZUZ1bmN0aW9uID0gJ1dlYnNlcnZpY2VVcGRhdGUnOwogICAgICAgIH0KCiAgICAgICAgbXkgJFdlYnNlcnZpY2VZQU1MUGF0aCA9ICRXZWJzZXJ2aWNlcy0+eyRXZWJzZXJ2aWNlTmFtZX07CgogICAgICAgICMgcmVhZCBjb25maWcKICAgICAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICAgICAgTG9jYXRpb24gPT4gJFdlYnNlcnZpY2VZQU1MUGF0aCwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDb250ZW50ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IHJlYWQgJFdlYnNlcnZpY2VZQU1MUGF0aCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgV0VCU0VSVklDRTsKICAgICAgICB9CgogICAgICAgIG15ICRDb25maWcgPSAkWUFNTE9iamVjdC0+TG9hZCggRGF0YSA9PiAkeyRDb250ZW50fSApOwogICAgICAgIGlmICggISRDb25maWcgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgbG9hZGluZyAkV2Vic2VydmljZVlBTUxQYXRoISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBXRUJTRVJWSUNFOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgb3IgdXBkYXRlIHdlYnNlcnZpY2UKICAgICAgICBteSAkU3VjY2VzcyA9ICRXZWJzZXJ2aWNlT2JqZWN0LT4kVXBkYXRlT3JDcmVhdGVGdW5jdGlvbigKICAgICAgICAgICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgQ29uZmlnICA9PiAkQ29uZmlnLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IFdFQlNFUlZJQ0UgaWYgJFN1Y2Nlc3M7CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIHVwZGF0aW5nL2FkZGluZyBXZWJzZXJ2aWNlICckV2Vic2VydmljZU5hbWUnIGZyb20gJFdlYnNlcnZpY2VZQU1MUGF0aCEiCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX1dlYnNlcnZpY2VEZWxldGUoKQoKZGVsZXRlcyB3ZWIgc2VydmljZXMKCiAgICAjIGRlbGV0ZXMgYWxsIC55bWwgZmlsZXMgd2Vic2VydmljZXMgaW4gJE9UUlMvc2NyaXB0cy93ZWJzZXJ2aWNlcy8KICAgICMgbmFtZSBvZiB0aGUgZmlsZSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSB3ZWJzZXJ2aWNlCiAgICBteSAkUmVzdWx0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fV2Vic2VydmljZURlbGV0ZSgKICAgICAgICBTdWJEaXIgPT4gJ1pudW55NE9UUlNBc3NldERlc2snLCAjIG9wdGlvbmFsCiAgICApOwoKT1I6CgogICAgbXkgJFJlc3VsdCA9ICRabnVueUhlbHBlck9iamVjdC0+X1dlYnNlcnZpY2VEZWxldGUoCiAgICAgICAgV2Vic2VydmljZXMgPT4gewogICAgICAgICAgICAnTm90IG5lZWRlZCBXZWJzZXJ2aWNlIDEyMzQnID0+IDEsICMgdmFsdWUgaXMgbm90IHVzZWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBfV2Vic2VydmljZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15ICRXZWJzZXJ2aWNlcyA9ICRQYXJhbXtXZWJzZXJ2aWNlc307CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZXMpICkgewogICAgICAgICRXZWJzZXJ2aWNlcyA9ICRTZWxmLT5fV2Vic2VydmljZXNHZXQoCiAgICAgICAgICAgIFN1YkRpciA9PiAkUGFyYW17U3ViRGlyfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZXMpOwoKICAgIG15ICRXZWJzZXJ2aWNlTGlzdCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlTGlzdCgpOwogICAgaWYgKCByZWYgJFdlYnNlcnZpY2VMaXN0IG5lICdIQVNIJyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBnZXR0aW5nIGxpc3Qgb2YgV2Vic2VydmljZXMhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJVdlYnNlcnZpY2VMaXN0UmV2ZXJzZWQgPSByZXZlcnNlICV7JFdlYnNlcnZpY2VMaXN0fTsKCiAgICBXRUJTRVJWSUNFOgogICAgZm9yIG15ICRXZWJzZXJ2aWNlTmFtZSAoIHNvcnQga2V5cyAleyRXZWJzZXJ2aWNlc30gKSB7CgogICAgICAgICMgc3RvcCBpZiBhbHJlYWR5IGRlbGV0ZWQKICAgICAgICBuZXh0IFdFQlNFUlZJQ0UgaWYgISRXZWJzZXJ2aWNlTGlzdFJldmVyc2VkeyRXZWJzZXJ2aWNlTmFtZX07CgogICAgICAgICMgZGVsZXRlIHdlYnNlcnZpY2UKICAgICAgICBteSAkU3VjY2VzcyA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlRGVsZXRlKAogICAgICAgICAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VMaXN0UmV2ZXJzZWR7JFdlYnNlcnZpY2VOYW1lfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgZGVsZXRpbmcgV2Vic2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9XZWJzZXJ2aWNlc0dldCgpCgpnZXRzIGEgbGlzdCBvZiAueW1sIGZpbGVzIGZyb20gJE9UT0JPL3NjcmlwdHMvd2Vic2VydmljZXMKCiAgICBteSAkUmVzdWx0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fV2Vic2VydmljZXNHZXQoCiAgICAgICAgU3ViRGlyID0+ICdabnVueTRPVFJTQXNzZXREZXNrJywgIyBvcHRpb25hbAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgICdXZWJzZXJ2aWNlJyAgICAgICAgICA9PiAnJE9UUlMvc2NyaXB0cy93ZWJzZXJ2aWNlcy9abnVueTRPVFJTQXNzZXREZXNrL1dlYnNlcnZpY2UueW1sJywKICAgICAgICAnTmV3IFdlYnNlcnZpY2UgMTIzNCcgPT4gJyRPVFJTL3NjcmlwdHMvd2Vic2VydmljZXMvWm51bnk0T1RSU0Fzc2V0RGVzay9OZXcgV2Vic2VydmljZSAxMjM0LnltbCcsCiAgICB9Cgo9Y3V0CgpzdWIgX1dlYnNlcnZpY2VzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTWFpbk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkV2Vic2VydmljZURpcmVjdG9yeSA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpCiAgICAgICAgLiAnL3NjcmlwdHMvd2Vic2VydmljZXMnOwoKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte1N1YkRpcn0gKSApIHsKICAgICAgICAkV2Vic2VydmljZURpcmVjdG9yeSAuPSAnLycgLiAkUGFyYW17U3ViRGlyfTsKICAgIH0KCiAgICBteSBARmlsZXNJbkRpcmVjdG9yeSA9ICRNYWluT2JqZWN0LT5EaXJlY3RvcnlSZWFkKAogICAgICAgIERpcmVjdG9yeSA9PiAkV2Vic2VydmljZURpcmVjdG9yeSwKICAgICAgICBGaWx0ZXIgICAgPT4gJyoueW1sJywKICAgICk7CgogICAgbXkgJVdlYnNlcnZpY2VzOwogICAgZm9yIG15ICRGaWxlV2l0aFBhdGggKEBGaWxlc0luRGlyZWN0b3J5KSB7CgogICAgICAgIG15ICRXZWJzZXJ2aWNlTmFtZSA9ICRGaWxlV2l0aFBhdGg7CiAgICAgICAgJFdlYnNlcnZpY2VOYW1lID1+IHN7XEEgLis/IFwvIChbXlwvXSspIFwuIHltbCBcen17JDF9eG1zOwoKICAgICAgICAkV2Vic2VydmljZXN7JFdlYnNlcnZpY2VOYW1lfSA9ICRGaWxlV2l0aFBhdGg7CiAgICB9CgogICAgcmV0dXJuIFwlV2Vic2VydmljZXM7Cn0KCj1pdGVtIF9SZWJ1aWxkQ29uZmlnKCkKClJlYnVpbGRzIE9UUlMgY29uZmlnLgoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUmVidWlsZENvbmZpZygpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX1JlYnVpbGRDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgICMgUmVidWlsZCB0aGUgY29uZmlndXJhdGlvbgogICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlndXJhdGlvbkRlcGxveSgKICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgIEZvcmNlICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgogICAgZGVsZXRlICRJTkN7J0tlcm5lbC9Db25maWcvRmlsZXMvWlpaQUF1dG8ucG0nfTsKCiAgICAjIERvbid0IHVzZSBPYmplY3REaXNjYXJkIG9mIE9iamVjdE1hbmFnZXIgYmVjYXVzZQogICAgIyByZXN0b3JlIGRhdGFiYXNlIHdpbGwgbm90IHdvcmsgYW55bW9yZSAoaW4gdGVzdHMpLgogICAgZGVsZXRlICRLZXJuZWw6Ok9NLT57T2JqZWN0c30tPnsnS2VybmVsOjpDb25maWcnfTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfUHJvY2Vzc0NyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgcHJvY2Vzc2VzIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBwcm9jZXNzIHdpdGggdGhlIHNhbWUgbmFtZQoKICAgICMgaW5zdGFsbHMgYWxsIC55bWwgZmlsZXMgaW4gJE9UUlMvc2NyaXB0cy9wcm9jZXNzZXMvCiAgICAjIG5hbWUgb2YgdGhlIGZpbGUgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgcHJvY2VzcwogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qcm9jZXNzQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgU3ViRGlyID0+ICdabnVueTRPVFJTQXNzZXREZXNrJywgIyBvcHRpb25hbAogICAgKTsKCk9SOgoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUHJvY2Vzc0NyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIFByb2Nlc3NlcyA9PiB7CiAgICAgICAgICAgICdOZXcgUHJvY2VzcyAxMjM0JyA9PiAnL3BhdGgvdG8vUHJvY2Vzcy55bWwnLAogICAgICAgICAgICAuLi4KICAgICAgICB9CiAgICApOwoKPWN1dAoKc3ViIF9Qcm9jZXNzQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTWFpbk9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJERCUHJvY2Vzc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6REI6OlByb2Nlc3MnKTsKICAgIG15ICRFbnRpdHlPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OkRCOjpFbnRpdHknKTsKCiAgICBteSAkUHJvY2Vzc2VzOwogICAgaWYgKCBleGlzdHMgJFBhcmFte1Byb2Nlc3Nlc30gKSB7CiAgICAgICAgJFByb2Nlc3NlcyA9ICRQYXJhbXtQcm9jZXNzZXN9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFByb2Nlc3NlcyA9ICRTZWxmLT5fUHJvY2Vzc2VzR2V0KAogICAgICAgICAgICBTdWJEaXIgPT4gJFBhcmFte1N1YkRpcn0sICAgICMgU3ViRGlyIGNhbiBiZSB1bmRlZgogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFByb2Nlc3NlcykgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gcHJvY2Vzc2VzIGZvdW5kIGZvciBnaXZlbiBwYXJhbWV0ZXJzLicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRQcm9jZXNzTGlzdCA9ICREQlByb2Nlc3NPYmplY3QtPlByb2Nlc3NMaXN0R2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkUHJvY2Vzc0xpc3QpICkgewogICAgICAgICRQcm9jZXNzTGlzdCA9IFtdOwogICAgfQoKICAgIFBST0NFU1M6CiAgICBmb3IgbXkgJFByb2Nlc3NOYW1lICggc29ydCBrZXlzICV7JFByb2Nlc3Nlc30gKSB7CgogICAgICAgIG15ICRQcm9jZXNzWUFNTFBhdGggPSAkUHJvY2Vzc2VzLT57JFByb2Nlc3NOYW1lfTsKCiAgICAgICAgIyByZWFkIGNvbmZpZwogICAgICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkUHJvY2Vzc1lBTUxQYXRoLAogICAgICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29udGVudCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCByZWFkICRQcm9jZXNzWUFNTFBhdGghIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFByb2Nlc3NEYXRhID0gJFlBTUxPYmplY3QtPkxvYWQoIERhdGEgPT4gJHskQ29udGVudH0gKTsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUHJvY2Vzc0RhdGEpICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIllBTUwgcGFyc2luZyBmYWlsZWQgZm9yIGZpbGUgJFByb2Nlc3NZQU1MUGF0aCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFByb2Nlc3NEYXRhLT57UHJvY2Vzc30gKSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBwcm9jZXNzIGZvdW5kIGluIGZpbGUgJFByb2Nlc3NZQU1MUGF0aCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkUHJvY2Vzc0RhdGEtPntQcm9jZXNzfS0+e05hbWV9ICkgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUHJvY2VzcyBoYXMgbm8gbmFtZSBpbiBmaWxlICRQcm9jZXNzWUFNTFBhdGghIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFBhcmFte1VwZGF0ZUV4aXN0aW5nfSApIHsKICAgICAgICAgICAgRVhJU1RJTkdQUk9DRVNTOgogICAgICAgICAgICBmb3IgbXkgJEV4aXN0aW5nUHJvY2VzcyAoIEB7JFByb2Nlc3NMaXN0fSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IEVYSVNUSU5HUFJPQ0VTUyBpZiAhZGVmaW5lZCAkRXhpc3RpbmdQcm9jZXNzLT57TmFtZX07CiAgICAgICAgICAgICAgICBuZXh0IEVYSVNUSU5HUFJPQ0VTUyBpZiAkRXhpc3RpbmdQcm9jZXNzLT57TmFtZX0gbmUgJFByb2Nlc3NEYXRhLT57UHJvY2Vzc30tPntOYW1lfTsKICAgICAgICAgICAgICAgIG5leHQgRVhJU1RJTkdQUk9DRVNTIGlmICFkZWZpbmVkICRFeGlzdGluZ1Byb2Nlc3MtPntTdGF0ZX07CiAgICAgICAgICAgICAgICBuZXh0IEVYSVNUSU5HUFJPQ0VTUyBpZiAkRXhpc3RpbmdQcm9jZXNzLT57U3RhdGV9IG5lICdBY3RpdmUnOwoKICAgICAgICAgICAgICAgIG5leHQgUFJPQ0VTUzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVByb2Nlc3NJbXBvcnQgPSAkREJQcm9jZXNzT2JqZWN0LT5Qcm9jZXNzSW1wb3J0KAogICAgICAgICAgICBDb250ZW50ICAgICAgICAgICAgICAgICAgID0+ICR7JENvbnRlbnR9LAogICAgICAgICAgICBPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICElUHJvY2Vzc0ltcG9ydAogICAgICAgICAgICB8fCAhJFByb2Nlc3NJbXBvcnR7U3VjY2Vzc30KICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICRQcm9jZXNzSW1wb3J0e01lc3NhZ2V9IC8vPSAnJzsKCiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJJbXBvcnRpbmcgcHJvY2VzcyAnJFByb2Nlc3NEYXRhLT57UHJvY2Vzc30tPntOYW1lfScgZnJvbSBmaWxlICckUHJvY2Vzc1lBTUxQYXRoJyBmYWlsZWQuXG4iCiAgICAgICAgICAgICAgICAgICAgLiAiXHRCYWNrZW5kIEVycm9yIE1lc3NhZ2U6XG5cdCRQcm9jZXNzSW1wb3J0e01lc3NhZ2V9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBTeW5jaHJvbml6ZSBuZXdseSBjcmVhdGVkIHByb2Nlc3NlcwogICAgbXkgJENvbmZpZ0ZpbGVMb2NhdGlvbiA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvQ29uZmlnL0ZpbGVzL1paWlByb2Nlc3NNYW5hZ2VtZW50LnBtJzsKCiAgICBteSAkUHJvY2Vzc0R1bXAgPSAkREJQcm9jZXNzT2JqZWN0LT5Qcm9jZXNzRHVtcCgKICAgICAgICBSZXN1bHRUeXBlID0+ICdGSUxFJywKICAgICAgICBMb2NhdGlvbiAgID0+ICRDb25maWdGaWxlTG9jYXRpb24sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKICAgIGlmICggISRQcm9jZXNzRHVtcCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdFcnJvciB3aGlsZSBkdW1waW5nIHByb2Nlc3NlcyB2aWEgUHJvY2Vzc0R1bXAoKS4nLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkU3luY2hyb25pemVkID0gJEVudGl0eU9iamVjdC0+RW50aXR5U3luY1N0YXRlUHVyZ2UoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgaWYgKCAhJFN5bmNocm9uaXplZCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdFcnJvciBzeW5jaHJvbml6aW5nIHByb2Nlc3Nlcy4nLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX1Byb2Nlc3NDcmVhdGUoKQoKY3JlYXRlcyBvciB1cGRhdGVzIHByb2Nlc3NlcwoKICAgICMgaW5zdGFsbHMgYWxsIC55bWwgZmlsZXMgaW4gJE9UUlMvc2NyaXB0cy9wcm9jZXNzZXMvCiAgICAjIG5hbWUgb2YgdGhlIGZpbGUgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgcHJvY2VzcwogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qcm9jZXNzQ3JlYXRlKAogICAgICAgIFN1YkRpciA9PiAnWm51bnk0T1RSU0Fzc2V0RGVzaycsICMgb3B0aW9uYWwKICAgICk7CgpPUjoKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Byb2Nlc3NDcmVhdGUoCiAgICAgICAgUHJvY2Vzc2VzID0+IHsKICAgICAgICAgICAgJ05ldyBQcm9jZXNzIDEyMzQnID0+ICcvcGF0aC90by9Qcm9jZXNzLnltbCcsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgX1Byb2Nlc3NDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPl9Qcm9jZXNzQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFVwZGF0ZUV4aXN0aW5nID0+IDEsCiAgICApOwp9Cgo9aXRlbSBfUHJvY2Vzc2VzR2V0KCkKCmdldHMgYSBsaXN0IG9mIC55bWwgZmlsZXMgZnJvbSAkT1RPQk8vc2NyaXB0cy9wcm9jZXNzZXMKCiAgICBteSAkUmVzdWx0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fUHJvY2Vzc2VzR2V0KAogICAgICAgIFN1YkRpciA9PiAnWm51bnk0T1RSU0Fzc2V0RGVzaycsICMgb3B0aW9uYWwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICAnUHJvY2VzcycgICAgICAgICAgPT4gJyRPVFJTL3NjcmlwdHMvcHJvY2Vzc2VzL1pudW55NE9UUlNBc3NldERlc2svUHJvY2Vzcy55bWwnLAogICAgICAgICdOZXcgUHJvY2VzcyAxMjM0JyA9PiAnJE9UUlMvc2NyaXB0cy9wcm9jZXNzZXMvWm51bnk0T1RSU0Fzc2V0RGVzay9OZXcgUHJvY2VzcyAxMjM0LnltbCcsCiAgICB9Cgo9Y3V0CgpzdWIgX1Byb2Nlc3Nlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJE1haW5PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJFByb2Nlc3NEaXJlY3RvcnkgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKQogICAgICAgIC4gJy9zY3JpcHRzL3Byb2Nlc3Nlcyc7CgogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17U3ViRGlyfSApICkgewogICAgICAgICRQcm9jZXNzRGlyZWN0b3J5IC49ICcvJyAuICRQYXJhbXtTdWJEaXJ9OwogICAgfQoKICAgIG15IEBGaWxlc0luRGlyZWN0b3J5ID0gJE1haW5PYmplY3QtPkRpcmVjdG9yeVJlYWQoCiAgICAgICAgRGlyZWN0b3J5ID0+ICRQcm9jZXNzRGlyZWN0b3J5LAogICAgICAgIEZpbHRlciAgICA9PiAnKi55bWwnLAogICAgKTsKCiAgICBteSAlUHJvY2Vzc2VzOwogICAgZm9yIG15ICRGaWxlV2l0aFBhdGggKEBGaWxlc0luRGlyZWN0b3J5KSB7CgogICAgICAgIG15ICRQcm9jZXNzTmFtZSA9ICRGaWxlV2l0aFBhdGg7CiAgICAgICAgJFByb2Nlc3NOYW1lID1+IHN7XEEgLis/IFwvIChbXlwvXSspIFwuIHltbCBcen17JDF9eG1zOwoKICAgICAgICAkUHJvY2Vzc2VzeyRQcm9jZXNzTmFtZX0gPSAkRmlsZVdpdGhQYXRoOwogICAgfQoKICAgIHJldHVybiBcJVByb2Nlc3NlczsKfQoKPWl0ZW0gX1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNHZXQoKQoKZ2V0cyBQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzCgogICAgIyBnZXQgUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcwogICAgbXkgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzR2V0KCk7CgogICAgcmV0dXJuOgoKICAgICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzID0gKAogICAgICAgIEdyb3VwMSA9IFsKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZDEnLAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkMycsCiAgICAgICAgXSwKICAgICAgICBHcm91cDIgPSBbCiAgICAgICAgICAgICdEeW5hbWljRmllbGQyJywKICAgICAgICBdLAogICAgKTsKCj1jdXQKCnN1YiBfUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBteSAkQWdlbnRUaWNrZXRab29tQ29uZmlnICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tJyk7CiAgICBteSAlUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcyA9ICV7ICRBZ2VudFRpY2tldFpvb21Db25maWctPntQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzfSB9OwoKICAgIHJldHVybiBpZiAhJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHM7CgogICAgbXkgJUNvbmZpZzsKICAgIGZvciBteSAkR3JvdXAgKCBzb3J0IGtleXMgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMgKSB7CgogICAgICAgIG15IEBEeW5hbWljRmllbGRzID0gc3BsaXQgL1wsLywgJFByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHN7JEdyb3VwfTsKICAgICAgICAkQ29uZmlneyRHcm91cH0gPSBcQER5bmFtaWNGaWVsZHMgfHwgW107CiAgICB9CgogICAgcmV0dXJuICVDb25maWc7Cgp9Cgo9aXRlbSBfUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc0FkZCgpCgpnZXRzIFByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMKCiAgICBteSAlUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcyA9ICgKICAgICAgICBHcm91cDEgPSBbCiAgICAgICAgICAgICdEeW5hbWljRmllbGQxJywKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZDMnLAogICAgICAgIF0sCiAgICAgICAgR3JvdXAyID0gWwogICAgICAgICAgICAnRHluYW1pY0ZpZWxkMicsCiAgICAgICAgXSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzQWRkKAogICAgICAgICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzCiAgICApOwoKPWN1dAoKc3ViIF9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzQWRkIHsKICAgIG15ICggJFNlbGYsICVHcm91cHMgKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgbXkgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMgPSAkU2VsZi0+X1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNHZXQoKTsKCiAgICBteSAlTmV3RHluYW1pY0ZpZWxkQ29uZmlnOwogICAgbXkgJEFnZW50VGlja2V0Wm9vbUNvbmZpZyAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbScpOwogICAgbXkgJUN1cnJlbnREeW5hbWljRmllbGRDb25maWcgPSAleyAkQWdlbnRUaWNrZXRab29tQ29uZmlnLT57UHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc30gfTsKCiAgICBHUk9VUDoKICAgIGZvciBteSAkR3JvdXAgKCBzb3J0IGtleXMgJUdyb3VwcyApIHsKCiAgICAgICAgbXkgJE5ld0R5bmFtaWNGaWVsZHM7CiAgICAgICAgbXkgQE5ld0R5bmFtaWNGaWVsZHM7CiAgICAgICAgbXkgQEN1cnJlbnREeW5hbWljRmllbGRzOwoKICAgICAgICBpZiAoICRQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzeyRHcm91cH0gKSB7CgogICAgICAgICAgICBAQ3VycmVudER5bmFtaWNGaWVsZHMgPSBAeyAkUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc3skR3JvdXB9IH07CiAgICAgICAgICAgIHB1c2ggQE5ld0R5bmFtaWNGaWVsZHMsIEBDdXJyZW50RHluYW1pY0ZpZWxkczsKICAgICAgICB9CgogICAgICAgIE5FV0RZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBAeyAkR3JvdXBzeyRHcm91cH0gfSApIHsKCiAgICAgICAgICAgIG15ICRFeGlzdHMgPSBncmVwIHsgJER5bmFtaWNGaWVsZE5hbWUgZXEgJF8gfSBAQ3VycmVudER5bmFtaWNGaWVsZHM7CgogICAgICAgICAgICAjIG5leHQgZHluYW1pYyBmaWVsZCBpZiBhbHJlYWR5IGV4aXN0cwogICAgICAgICAgICBuZXh0IE5FV0RZTkFNSUNGSUVMRCBpZiAkRXhpc3RzOwoKICAgICAgICAgICAgcHVzaCBATmV3RHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZE5hbWU7CiAgICAgICAgfQoKICAgICAgICAkTmV3RHluYW1pY0ZpZWxkcyAuPSBqb2luICcsJywgQE5ld0R5bmFtaWNGaWVsZHM7CiAgICAgICAgJE5ld0R5bmFtaWNGaWVsZENvbmZpZ3skR3JvdXB9ID0gJE5ld0R5bmFtaWNGaWVsZHM7CiAgICB9CgogICAgJU5ld0R5bmFtaWNGaWVsZENvbmZpZyA9ICgKICAgICAgICAlQ3VycmVudER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAlTmV3RHluYW1pY0ZpZWxkQ29uZmlnLAogICAgKTsKCiAgICBteSAkU3lzQ29uZmlnS2V5ID0gJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbSMjI1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMnOwoKICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkU3lzQ29uZmlnS2V5LAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFwlTmV3RHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgQ29tbWVudHMgPT4gJ1Byb2Nlc3Mgd2lkZ2V0IGR5bmFtaWMgZmllbGQgZ3JvdXBzIHNldHRpbmdzIGFkZGVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgIyByZWxvYWQgdGhlIFpaWiBmaWxlcwogICAgIyBnZXQgYSBuZXcgY29uZmlnIG9iamVjdCB0byBtYWtlIHN1cmUgY29uZmlnIGlzIHVwZGF0ZWQKICAgICRTZWxmLT5fUmVidWlsZENvbmZpZygpOwoKICAgIHJldHVybiAxIGlmICRTdWNjZXNzOwoKICAgIHJldHVybiAwOwp9Cgo9aXRlbSBfUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc1JlbW92ZSgpCgpnZXRzIFByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMKCiAgICBteSAlUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcyA9ICgKICAgICAgICBHcm91cDEgPSBbCiAgICAgICAgICAgICdEeW5hbWljRmllbGQxJywKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZDMnLAogICAgICAgIF0sCiAgICAgICAgR3JvdXAyID0gW10sICAgICAgICAgICAgIyBkZWxldGVzIHRoZSB3aG9sZSBncm91cAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNSZW1vdmUoCiAgICAgICAgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMKICAgICk7Cgo9Y3V0CgpzdWIgX1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNSZW1vdmUgewogICAgbXkgKCAkU2VsZiwgJUdyb3VwcyApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgbXkgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMgPSAkU2VsZi0+X1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNHZXQoKTsKICAgIG15ICVOZXdEeW5hbWljRmllbGRDb25maWc7CgogICAgR1JPVVA6CiAgICBmb3IgbXkgJEdyb3VwICggc29ydCBrZXlzICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzICkgewoKICAgICAgICBteSAkTmV3RHluYW1pY0ZpZWxkczsKCiAgICAgICAgaWYgKCAhJEdyb3Vwc3skR3JvdXB9ICkgewogICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkcyAgICAgICAgICAgICAgPSBqb2luICcsJywgQHsgJFByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHN7JEdyb3VwfSB9OwogICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkQ29uZmlneyRHcm91cH0gPSAkTmV3RHluYW1pY0ZpZWxkczsKICAgICAgICAgICAgbmV4dCBHUk9VUDsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHdob2xlIGdyb3VwIGlmIGFycmF5IGlzIGVtcHR5CiAgICAgICAgbmV4dCBHUk9VUCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkR3JvdXBzeyRHcm91cH0gKTsKCiAgICAgICAgbXkgQE5ld0R5bmFtaWNGaWVsZHM7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIEB7ICRQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzeyRHcm91cH0gfSApIHsKCiAgICAgICAgICAgIG15ICRFeGlzdHMgPSBncmVwIHsgJER5bmFtaWNGaWVsZE5hbWUgZXEgJF8gfSBAeyAkR3JvdXBzeyRHcm91cH0gfTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRFeGlzdHM7CiAgICAgICAgICAgIHB1c2ggQE5ld0R5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGROYW1lOwoKICAgICAgICB9CgogICAgICAgICROZXdEeW5hbWljRmllbGRzID0gam9pbiAnLCcsIEBOZXdEeW5hbWljRmllbGRzOwoKICAgICAgICAjIHJlbW92ZXMgZW1wdHkgZ3JvdXBzCiAgICAgICAgbmV4dCBHUk9VUCBpZiAhJE5ld0R5bmFtaWNGaWVsZHM7CiAgICAgICAgJE5ld0R5bmFtaWNGaWVsZENvbmZpZ3skR3JvdXB9ID0gJE5ld0R5bmFtaWNGaWVsZHM7CiAgICB9CgogICAgbXkgJFN5c0NvbmZpZ0tleSA9ICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzJzsKCiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcJU5ld0R5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIENvbW1lbnRzID0+ICdQcm9jZXNzIHdpZGdldCBkeW5hbWljIGZpZWxkIGdyb3VwcyBzZXR0aW5ncyByZW1vdmVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgIyByZWxvYWQgdGhlIFpaWiBmaWxlcwogICAgIyBnZXQgYSBuZXcgY29uZmlnIG9iamVjdCB0byBtYWtlIHN1cmUgY29uZmlnIGlzIHVwZGF0ZWQKICAgICRTZWxmLT5fUmVidWlsZENvbmZpZygpOwoKICAgIHJldHVybiAxIGlmICRTdWNjZXNzOwoKICAgIHJldHVybiAwOwp9Cgo9aXRlbSBfTW9kdWxlR3JvdXBBZGQoKQoKVGhpcyBmdW5jdGlvbiBhZGRzIG9uZSBvciBtb3JlIGdyb3VwcyB0byB0aGUgbGlzdCBvZiBncm91cHMgb2YgYSBmcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBhbnkgaW50ZXJmYWNlLgoKICAgIG15ICRTdWNjZXNzID0gJEhlbHBlck9iamVjdC0+X01vZHVsZUdyb3VwQWRkKAogICAgICAgIE1vZHVsZSA9PiAnQWRtaW4nLAogICAgICAgIEdyb3VwICA9PiBbCiAgICAgICAgICAgICd1c2VycycsCiAgICAgICAgXSwKICAgICAgICBHcm91cFJvID0+IFsKICAgICAgICAgICAgJ3NvbWVfb3RoZXJfZ3JvdXAnCiAgICAgICAgXSwKICAgICAgICBGcm9udGVuZCA9PiAnRnJvbnRlbmQ6Ok1vZHVsZScsICMgRnJvbnRlbmQ6Ok1vZHVsZSAoZGVmYXVsdCksIFB1YmxpY0Zyb250ZW5kOjpNb2R1bGUsIEN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZQogICAgKTsKCj1jdXQKCnN1YiBfTW9kdWxlR3JvdXBBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTW9kdWxlKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoCiAgICAgICAgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0dyb3VwfSApCiAgICAgICAgJiYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0dyb3VwUm99ICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgJFBhcmFte0Zyb250ZW5kfSB8fD0gJ0Zyb250ZW5kOjpNb2R1bGUnOwoKICAgIG15ICRGcm9udGVuZExpc3QgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRQYXJhbXtGcm9udGVuZH0gKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEZyb250ZW5kTGlzdCk7CgogICAgIyBTcGxpdCBtb2R1bGUgInBhdGgiIChlLiBnLiBBZG1pbiMjIzAwMS1GcmFtZXdvcmspCiAgICBteSAkTW9kdWxlID0gJFBhcmFte01vZHVsZX07CiAgICBteSBATW9kdWxlUGF0aEVsZW1lbnRzID0gc3BsaXQgLyMjIy8sICRNb2R1bGU7CgogICAgbXkgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9ICRGcm9udGVuZExpc3Q7CiAgICBmb3IgbXkgJE1vZHVsZVBhdGhFbGVtZW50IChATW9kdWxlUGF0aEVsZW1lbnRzKSB7CiAgICAgICAgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9ICRNb2R1bGVSZWdpc3RyYXRpb24tPnskTW9kdWxlUGF0aEVsZW1lbnR9OwogICAgICAgIHJldHVybiBpZiAhJE1vZHVsZVJlZ2lzdHJhdGlvbjsKICAgIH0KCiAgICByZXR1cm4gaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkTW9kdWxlUmVnaXN0cmF0aW9uKSAmJiAhSXNIYXNoUmVmV2l0aERhdGEoJE1vZHVsZVJlZ2lzdHJhdGlvbik7CiAgICBteSAkSXNBcnJheSA9IElzQXJyYXlSZWZXaXRoRGF0YSgkTW9kdWxlUmVnaXN0cmF0aW9uKTsKCiAgICAjIFNvbWUgY29uZmlnIHNldHRpbmdzIGFyZSBoYXNoZXMsIHNvbWUgYXJlIGFycmF5cyBvZiBoYXNoZXMuCiAgICAjIFR1cm4gYWxsIGludG8gYXJyYXlzIHRlbXBvcmFyaWx5IGZvciBlYXNpZXIgaGFuZGxpbmcuCiAgICBpZiAoICEkSXNBcnJheSApIHsKICAgICAgICAkTW9kdWxlUmVnaXN0cmF0aW9uID0gWyRNb2R1bGVSZWdpc3RyYXRpb25dOwogICAgfQoKICAgIE1PRFVMRVJFR0lTVFJBVElPTjoKICAgIGZvciBteSAkQ3VycmVudE1vZHVsZVJlZ2lzdHJhdGlvbiAoIEB7JE1vZHVsZVJlZ2lzdHJhdGlvbn0gKSB7CgogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkR3JvdXBUeXBlIChxdyhHcm91cCBHcm91cFJvKSkgewoKICAgICAgICAgICAgbXkgJEFkZEdyb3VwcyA9ICRQYXJhbXskR3JvdXBUeXBlfTsKICAgICAgICAgICAgbmV4dCBHUk9VUCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRBZGRHcm91cHMpOwoKICAgICAgICAgICAgbXkgJE9sZEdyb3VwcyA9ICRDdXJyZW50TW9kdWxlUmVnaXN0cmF0aW9uLT57JEdyb3VwVHlwZX0gfHwgW107CgogICAgICAgICAgICBteSAlQWRkR3JvdXBzID0gbWFwIHsgJF8gPT4gMSB9IEB7JEFkZEdyb3Vwc307CiAgICAgICAgICAgIG15ICVPbGRHcm91cHMgPSBtYXAgeyAkXyA9PiAxIH0gQHskT2xkR3JvdXBzfTsKCiAgICAgICAgICAgIG15ICVOZXdHcm91cHMgPSAoCiAgICAgICAgICAgICAgICAlQWRkR3JvdXBzLAogICAgICAgICAgICAgICAgJU9sZEdyb3VwcwogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQE5ld0dyb3VwcyA9IHNvcnQga2V5cyAlTmV3R3JvdXBzOwoKICAgICAgICAgICAgJEN1cnJlbnRNb2R1bGVSZWdpc3RyYXRpb24tPnskR3JvdXBUeXBlfSA9IFxATmV3R3JvdXBzOwogICAgICAgIH0KICAgIH0KCiAgICAjIFR1cm4gY29uZmlnIGFycmF5cyBpbnRvIHRoZWlyIG9yaWdpbmFsIGZvcm0gc28gdGhhdCBjb25maWcgc2V0dGluZyB1cGRhdGUgd29ya3MuCiAgICBpZiAoICEkSXNBcnJheSApIHsKICAgICAgICAkTW9kdWxlUmVnaXN0cmF0aW9uID0gc2hpZnQgQHskTW9kdWxlUmVnaXN0cmF0aW9ufTsKICAgIH0KCiAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRQYXJhbXtGcm9udGVuZH0gLiAnIyMjJyAuICRQYXJhbXtNb2R1bGV9LAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRNb2R1bGVSZWdpc3RyYXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDb21tZW50cyA9PiAnTW9kdWxlIGdyb3VwIHNldHRpbmdzIGFkZGVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Nb2R1bGVHcm91cFJlbW92ZSgpCgpUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgb25lIG9yIG1vcmUgZ3JvdXBzIGZyb20gdGhlIGxpc3Qgb2YgZ3JvdXBzIG9mIGEgZnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgYW55IGludGVyZmFjZS4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X01vZHVsZUdyb3VwUmVtb3ZlKAogICAgICAgIE1vZHVsZSA9PiAnQWRtaW4nLAogICAgICAgIEdyb3VwICA9PiBbCiAgICAgICAgICAgICd1c2VycycsCiAgICAgICAgXSwKICAgICAgICBHcm91cFJvID0+IFsKICAgICAgICAgICAgJ3NvbWVfb3RoZXJfZ3JvdXAnCiAgICAgICAgXSwKICAgICAgICBGcm9udGVuZCA9PiAnRnJvbnRlbmQ6Ok1vZHVsZScsICMgRnJvbnRlbmQ6Ok1vZHVsZSAoZGVmYXVsdCksIFB1YmxpY0Zyb250ZW5kOjpNb2R1bGUsIEN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZQogICAgKTsKCj1jdXQKCnN1YiBfTW9kdWxlR3JvdXBSZW1vdmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTW9kdWxlKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoCiAgICAgICAgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0dyb3VwfSApCiAgICAgICAgJiYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0dyb3VwUm99ICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgJFBhcmFte0Zyb250ZW5kfSB8fD0gJ0Zyb250ZW5kOjpNb2R1bGUnOwoKICAgIG15ICRGcm9udGVuZExpc3QgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRQYXJhbXtGcm9udGVuZH0gKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEZyb250ZW5kTGlzdCk7CgogICAgIyBTcGxpdCBtb2R1bGUgInBhdGgiIChlLiBnLiBBZG1pbiMjIzAwMS1GcmFtZXdvcmspCiAgICBteSAkTW9kdWxlID0gJFBhcmFte01vZHVsZX07CiAgICBteSBATW9kdWxlUGF0aEVsZW1lbnRzID0gc3BsaXQgLyMjIy8sICRNb2R1bGU7CgogICAgbXkgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9ICRGcm9udGVuZExpc3Q7CiAgICBmb3IgbXkgJE1vZHVsZVBhdGhFbGVtZW50IChATW9kdWxlUGF0aEVsZW1lbnRzKSB7CiAgICAgICAgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9ICRNb2R1bGVSZWdpc3RyYXRpb24tPnskTW9kdWxlUGF0aEVsZW1lbnR9OwogICAgICAgIHJldHVybiBpZiAhJE1vZHVsZVJlZ2lzdHJhdGlvbjsKICAgIH0KCiAgICByZXR1cm4gaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkTW9kdWxlUmVnaXN0cmF0aW9uKSAmJiAhSXNIYXNoUmVmV2l0aERhdGEoJE1vZHVsZVJlZ2lzdHJhdGlvbik7CiAgICBteSAkSXNBcnJheSA9IElzQXJyYXlSZWZXaXRoRGF0YSgkTW9kdWxlUmVnaXN0cmF0aW9uKTsKCiAgICAjIFNvbWUgY29uZmlnIHNldHRpbmdzIGFyZSBoYXNoZXMsIHNvbWUgYXJlIGFycmF5cyBvZiBoYXNoZXMuCiAgICAjIFR1cm4gYWxsIGludG8gYXJyYXlzIHRlbXBvcmFyaWx5IGZvciBlYXNpZXIgaGFuZGxpbmcuCiAgICBpZiAoICEkSXNBcnJheSApIHsKICAgICAgICAkTW9kdWxlUmVnaXN0cmF0aW9uID0gWyRNb2R1bGVSZWdpc3RyYXRpb25dOwogICAgfQoKICAgIE1PRFVMRVJFR0lTVFJBVElPTjoKICAgIGZvciBteSAkQ3VycmVudE1vZHVsZVJlZ2lzdHJhdGlvbiAoIEB7JE1vZHVsZVJlZ2lzdHJhdGlvbn0gKSB7CgogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkR3JvdXBUeXBlIChxdyhHcm91cCBHcm91cFJvKSkgewoKICAgICAgICAgICAgbXkgJFJlbW92ZUdyb3VwcyA9ICRQYXJhbXskR3JvdXBUeXBlfTsKICAgICAgICAgICAgbmV4dCBHUk9VUCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRSZW1vdmVHcm91cHMpOwoKICAgICAgICAgICAgbXkgJE9sZEdyb3VwcyA9ICRDdXJyZW50TW9kdWxlUmVnaXN0cmF0aW9uLT57JEdyb3VwVHlwZX07CiAgICAgICAgICAgIG5leHQgR1JPVVAgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkT2xkR3JvdXBzKTsKCiAgICAgICAgICAgIG15ICVPbGRHcm91cHMgPSBtYXAgeyAkXyA9PiAxIH0gQHskT2xkR3JvdXBzfTsKCiAgICAgICAgICAgIGZvciBteSAkUmVtb3ZlR3JvdXAgKCBAeyRSZW1vdmVHcm91cHN9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRPbGRHcm91cHN7JFJlbW92ZUdyb3VwfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQE5ld0dyb3VwcyA9IHNvcnQga2V5cyAlT2xkR3JvdXBzOwoKICAgICAgICAgICAgJEN1cnJlbnRNb2R1bGVSZWdpc3RyYXRpb24tPnskR3JvdXBUeXBlfSA9IFxATmV3R3JvdXBzOwogICAgICAgIH0KICAgIH0KCiAgICAjIFR1cm4gY29uZmlnIGFycmF5cyBpbnRvIHRoZWlyIG9yaWdpbmFsIGZvcm0gc28gdGhhdCBjb25maWcgc2V0dGluZyB1cGRhdGUgd29ya3MuCiAgICBpZiAoICEkSXNBcnJheSApIHsKICAgICAgICAkTW9kdWxlUmVnaXN0cmF0aW9uID0gc2hpZnQgQHskTW9kdWxlUmVnaXN0cmF0aW9ufTsKICAgIH0KCiAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRQYXJhbXtGcm9udGVuZH0gLiAnIyMjJyAuICRQYXJhbXtNb2R1bGV9LAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRNb2R1bGVSZWdpc3RyYXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDb21tZW50cyA9PiAnTW9kdWxlIGdyb3VwIHNldHRpbmdzIHJlbW92ZWQuJywKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX05vdGlmaWNhdGlvbkV2ZW50Q3JlYXRlKCkKCmNyZWF0ZSBvciB1cGRhdGUgbm90aWZpY2F0aW9uIGV2ZW50CgogICAgbXkgQE5vdGlmaWNhdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lID0+ICdBZ2VudDo6Q3VzdG9tZXJWSVBQcmlvcml0eVVwZGF0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXZlbnRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnVGlja2V0UHJpb3JpdHlVcGRhdGUnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIEFydGljbGVBdHRhY2htZW50SW5jbHVkZSA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzAnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ2VuJywKICAgICAgICAgICAgICAgICAgICAnZGUnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQXJ0aWNsZVR5cGVJRCA9PiBbCiAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBSZWNpcGllbnRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnQ3VzdG9tZXInLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFRyYW5zcG9ydEVtYWlsVGVtcGxhdGUgPT4gWwogICAgICAgICAgICAgICAgICAgICdEZWZhdWx0JywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBUcmFuc3BvcnRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnRW1haWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFZpc2libGVGb3JBZ2VudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzAnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWVzc2FnZSA9PiB7CiAgICAgICAgICAgICAgICBlbiA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3ViamVjdCAgICAgPT4gJ1ByaW9yaXR5IGZvciB5b3VyIHRpY2tldCBjaGFuZ2VkJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICAgICBCb2R5ICAgICAgICA9PiAnLi4uJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3ViamVjdCAgICAgPT4gJ0RpZSBQcmlvcml0YWV0IElocmVzIFRpY2tldHMgd3VyZGUgZ2VhZW5kZXJ0JywKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICAgICBCb2R5ICAgICAgICA9PiAnLi4uJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICAjIC4uLgogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X05vdGlmaWNhdGlvbkV2ZW50Q3JlYXRlKCBATm90aWZpY2F0aW9uTGlzdCApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX05vdGlmaWNhdGlvbkV2ZW50Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsIEBOb3RpZmljYXRpb25FdmVudHMgKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICROb3RpZmljYXRpb25FdmVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpOb3RpZmljYXRpb25FdmVudCcpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwogICAgTk9USUZJQ0FUSU9ORVZFTlQ6CiAgICBmb3IgbXkgJE5vdGlmaWNhdGlvbkV2ZW50IChATm90aWZpY2F0aW9uRXZlbnRzKSB7CiAgICAgICAgbmV4dCBOT1RJRklDQVRJT05FVkVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE5vdGlmaWNhdGlvbkV2ZW50KTsKCiAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICBORUVERUQ6CiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUpKSB7CgogICAgICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICROb3RpZmljYXRpb25FdmVudC0+eyROZWVkZWR9OwoKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAlTm90aWZpY2F0aW9uRXZlbnRSZXZlcnNlZCA9ICROb3RpZmljYXRpb25FdmVudE9iamVjdC0+Tm90aWZpY2F0aW9uTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+IDEKICAgICAgICApOwogICAgICAgICVOb3RpZmljYXRpb25FdmVudFJldmVyc2VkID0gcmV2ZXJzZSAlTm90aWZpY2F0aW9uRXZlbnRSZXZlcnNlZDsKCiAgICAgICAgbXkgJEl0ZW1JRCAgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJE5vdGlmaWNhdGlvbkV2ZW50LT57TmFtZX0sICVOb3RpZmljYXRpb25FdmVudFJldmVyc2VkICk7CiAgICAgICAgbXkgJFZhbGlkSUQgPSAkTm90aWZpY2F0aW9uRXZlbnQtPntWYWxpZElEfSAvLyAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgICAgICBWYWxpZCA9PiAndmFsaWQnLAogICAgICAgICk7CgogICAgICAgIGlmICgkSXRlbUlEKSB7CiAgICAgICAgICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJE5vdGlmaWNhdGlvbkV2ZW50T2JqZWN0LT5Ob3RpZmljYXRpb25VcGRhdGUoCiAgICAgICAgICAgICAgICAleyROb3RpZmljYXRpb25FdmVudH0sCiAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZElELAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRDcmVhdGVJRCA9ICROb3RpZmljYXRpb25FdmVudE9iamVjdC0+Tm90aWZpY2F0aW9uQWRkKAogICAgICAgICAgICAgICAgJXskTm90aWZpY2F0aW9uRXZlbnR9LAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDcmVhdGVJRCApIHsKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1pdGVtIF9Ob3RpZmljYXRpb25FdmVudENyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgbm90aWZpY2F0aW9uIGV2ZW50IGlmIG5vdCBleGlzdHMKCiAgICBteSAkTm90aWZpY2F0aW9uSUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Ob3RpZmljYXRpb25FdmVudENyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgPT4gJ0FnZW50OjpDdXN0b21lclZJUFByaW9yaXR5VXBkYXRlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRXZlbnRzID0+IFsKICAgICAgICAgICAgICAgICdUaWNrZXRQcmlvcml0eVVwZGF0ZScsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEFydGljbGVBdHRhY2htZW50SW5jbHVkZSA9PiBbCiAgICAgICAgICAgICAgICAnMCcKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCA9PiBbCiAgICAgICAgICAgICAgICAnZW4nLAogICAgICAgICAgICAgICAgJ2RlJwogICAgICAgICAgICBdLAogICAgICAgICAgICBOb3RpZmljYXRpb25BcnRpY2xlVHlwZUlEID0+IFsKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFJlY2lwaWVudHMgPT4gWwogICAgICAgICAgICAgICAgJ0N1c3RvbWVyJywKICAgICAgICAgICAgXSwKICAgICAgICAgICAgVHJhbnNwb3J0RW1haWxUZW1wbGF0ZSA9PiBbCiAgICAgICAgICAgICAgICAnRGVmYXVsdCcsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFRyYW5zcG9ydHMgPT4gWwogICAgICAgICAgICAgICAgJ0VtYWlsJywKICAgICAgICAgICAgXSwKICAgICAgICAgICAgVmlzaWJsZUZvckFnZW50ID0+IFsKICAgICAgICAgICAgICAgICcwJywKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIE1lc3NhZ2UgPT4gewogICAgICAgICAgICBlbiA9PiB7CiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICA9PiAnUHJpb3JpdHkgZm9yIHlvdXIgdGlja2V0IGNoYW5nZWQnLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBCb2R5ICAgICAgICA9PiAnLi4uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZGUgPT4gewogICAgICAgICAgICAgICAgU3ViamVjdCAgICAgPT4gJ0RpZSBQcmlvcml0YWV0IElocmVzIFRpY2tldHMgd3VyZGUgZ2VhZW5kZXJ0JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgQm9keSAgICAgICAgPT4gJy4uLicsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICROb3RpZmljYXRpb25JRCA9IDEyMzsKCj1jdXQKCnN1YiBfTm90aWZpY2F0aW9uRXZlbnRDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICROb3RpZmljYXRpb25FdmVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpOb3RpZmljYXRpb25FdmVudCcpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlTm90aWZpY2F0aW9uRXZlbnRSZXZlcnNlZCA9ICROb3RpZmljYXRpb25FdmVudE9iamVjdC0+Tm90aWZpY2F0aW9uTGlzdCgKICAgICAgICBVc2VySUQgPT4gMQogICAgKTsKICAgICVOb3RpZmljYXRpb25FdmVudFJldmVyc2VkID0gcmV2ZXJzZSAlTm90aWZpY2F0aW9uRXZlbnRSZXZlcnNlZDsKCiAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRQYXJhbXtOYW1lfSwgJU5vdGlmaWNhdGlvbkV2ZW50UmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgbXkgJFZhbGlkSUQgPSAkUGFyYW17VmFsaWRJRH0gLy8gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICBWYWxpZCA9PiAndmFsaWQnLAogICAgKTsKICAgIG15ICROb3RpZmljYXRpb25FdmVudElEID0gJE5vdGlmaWNhdGlvbkV2ZW50T2JqZWN0LT5Ob3RpZmljYXRpb25BZGQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJE5vdGlmaWNhdGlvbkV2ZW50SUQ7Cn0KCj1pdGVtIF9TdGFuZGFyZFRlbXBsYXRlQ3JlYXRlKCkKCmNyZWF0ZSBvciB1cGRhdGUgc3RhbmRhcmQgdGVtcGxhdGUKCiAgICBteSBAU3RhbmRhcmRUZW1wbGF0ZUxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ05ldyBTdGFuZGFyZCBUZW1wbGF0ZScsCiAgICAgICAgICAgIFRlbXBsYXRlICAgICA9PiAnVGhhbmsgeW91IGZvciB5b3VyIGVtYWlsLicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgICAgIFRlbXBsYXRlVHlwZSA9PiAnQW5zd2VyJywgICAgICAgICAgICAgICAgICAgICAjICdBbnN3ZXInLCAnQ3JlYXRlJywgJ0VtYWlsJywgJ0ZvcndhcmQnLCAnTm90ZScsICdQaG9uZUNhbGwnCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1N0YW5kYXJkVGVtcGxhdGVDcmVhdGUoIEBTdGFuZGFyZFRlbXBsYXRlTGlzdCApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX1N0YW5kYXJkVGVtcGxhdGVDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgQFN0YW5kYXJkVGVtcGxhdGVMaXN0ICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CiAgICBteSAkU3RhbmRhcmRUZW1wbGF0ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGFuZGFyZFRlbXBsYXRlJyk7CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKICAgIE5PVElGSUNBVElPTkVWRU5UOgogICAgZm9yIG15ICRTdGFuZGFyZFRlbXBsYXRlIChAU3RhbmRhcmRUZW1wbGF0ZUxpc3QpIHsKICAgICAgICBuZXh0IFN0YW5kYXJkVGVtcGxhdGUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRTdGFuZGFyZFRlbXBsYXRlKTsKCiAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICBORUVERUQ6CiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUpKSB7CgogICAgICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRTdGFuZGFyZFRlbXBsYXRlLT57JE5lZWRlZH07CgogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICVTdGFuZGFyZFRlbXBsYXRlUmV2ZXJzZWQgPSAkU3RhbmRhcmRUZW1wbGF0ZU9iamVjdC0+U3RhbmRhcmRUZW1wbGF0ZUxpc3QoKTsKICAgICAgICAlU3RhbmRhcmRUZW1wbGF0ZVJldmVyc2VkID0gcmV2ZXJzZSAlU3RhbmRhcmRUZW1wbGF0ZVJldmVyc2VkOwoKICAgICAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRTdGFuZGFyZFRlbXBsYXRlLT57TmFtZX0sICVTdGFuZGFyZFRlbXBsYXRlUmV2ZXJzZWQgKTsKCiAgICAgICAgbXkgJFZhbGlkSUQgPSAkU3RhbmRhcmRUZW1wbGF0ZS0+e1ZhbGlkSUR9IC8vICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgICAgIFZhbGlkID0+ICd2YWxpZCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRJdGVtSUQpIHsKICAgICAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkU3RhbmRhcmRUZW1wbGF0ZU9iamVjdC0+U3RhbmRhcmRUZW1wbGF0ZVVwZGF0ZSgKICAgICAgICAgICAgICAgICV7JFN0YW5kYXJkVGVtcGxhdGV9LAogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFN1Y2Nlc3MgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkQ3JlYXRlSUQgPSAkU3RhbmRhcmRUZW1wbGF0ZU9iamVjdC0+U3RhbmRhcmRUZW1wbGF0ZUFkZCgKICAgICAgICAgICAgICAgICV7JFN0YW5kYXJkVGVtcGxhdGV9LAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDcmVhdGVJRCApIHsKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1pdGVtIF9HZW5lcmljQWdlbnRDcmVhdGUoKQoKY3JlYXRlcyBvciB1cGRhdGVzIGdlbmVyaWMgYWdlbnRzCgogICAgbXkgQEdlbmVyaWNBZ2VudHMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lID0+ICdKb2JOYW1lJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBWYWxpZCA9PiAnMScsCgogICAgICAgICAgICAgICAgIyBBdXRvbWF0aWMgZXhlY3V0aW9uIChtdWx0aXBsZSB0aWNrZXRzKQogICAgICAgICAgICAgICAgU2NoZWR1bGVNaW51dGVzID0+IFsKICAgICAgICAgICAgICAgICAgICAnMTYnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgU2NoZWR1bGVIb3VycyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzQnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgU2NoZWR1bGVEYXlzID0+IFsKICAgICAgICAgICAgICAgICAgICAnNScKICAgICAgICAgICAgICAgIF0sCgogICAgICAgICAgICAgICAgIyBFdmVudCBiYXNlZCBleGVjdXRpb24gKHNpbmdsZSB0aWNrZXQpCiAgICAgICAgICAgICAgICBFdmVudFZhbHVlcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1RpY2tldENyZWF0ZScKICAgICAgICAgICAgICAgICAgICAjIFN5c0NvbmZpZyAtIEV2ZW50cyMjI1RpY2tldAogICAgICAgICAgICAgICAgICAgICMgU3lzQ29uZmlnIC0gRXZlbnRzIyMjQXJ0aWNsZQogICAgICAgICAgICAgICAgXSwKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBUaWNrZXRzCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgICAgPT4gJ0t1bmRlbm51bW1lcicsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJMb2dpbiA9PiAnS3VuZGVuYmVudXR6ZXInLAogICAgICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgPT4gJ1ZvblpudW55JywKICAgICAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgID0+ICdBblpudW55JywKICAgICAgICAgICAgICAgIENjICAgICAgICAgICAgICAgID0+ICdDQ1pudW55JywKICAgICAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgID0+ICdTdWJqZWN0JywKICAgICAgICAgICAgICAgIFNlcnZpY2VJRHMgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAnMScKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBTTEFJRHMgPT4gWwogICAgICAgICAgICAgICAgICAgICcxJwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFByaW9yaXR5SURzID0+IFsKICAgICAgICAgICAgICAgICAgICAnMycKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBRdWV1ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzInLAogICAgICAgICAgICAgICAgICAgICcxJwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFN0YXRlSURzID0+IFsKICAgICAgICAgICAgICAgICAgICAnNCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBPd25lcklEcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzEnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgTG9ja0lEcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzEnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgU2VhcmNoX0R5bmFtaWNGaWVsZF9UZXh0ID0+ICcnLAoKICAgICAgICAgICAgICAgIEVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlID0+ICcnLAogICAgICAgICAgICAgICAgRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGUgPT4gJycsCiAgICAgICAgICAgICAgICBFc2NhbGF0aW9uVGltZVNlYXJjaFR5cGUgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIEVzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZSAgID0+ICcnLAogICAgICAgICAgICAgICAgTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBUaW1lUGVuZGluZ1NlYXJjaFR5cGUgPT4gJycsCiAgICAgICAgICAgICAgICBUaW1lU2VhcmNoVHlwZSAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBDaGFuZ2VUaW1lU2VhcmNoVHlwZSA9PiAnJywKICAgICAgICAgICAgICAgIENsb3NlVGltZVNlYXJjaFR5cGUgID0+ICcnLAoKICAgICAgICAgICAgICAgICMgVXBkYXRlL0FkZCBUaWNrZXQgQXR0cmlidXRlcwogICAgICAgICAgICAgICAgTmV3UGVuZGluZ1RpbWUgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdDdXN0b21lcklEICAgICAgICA9PiAnWm51bnknLAogICAgICAgICAgICAgICAgTmV3Q3VzdG9tZXJVc2VyTG9naW4gPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgICAgIE5ld0xvY2tJRCAgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgIE5ld093bmVySUQgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgIE5ld1BlbmRpbmdUaW1lVHlwZSAgID0+ICc2MCcsCiAgICAgICAgICAgICAgICBOZXdQcmlvcml0eUlEICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBOZXdRdWV1ZUlEICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICAgICBOZXdTTEFJRCAgICAgICAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICBOZXdTZXJ2aWNlSUQgICAgICAgICA9PiAnNycsCiAgICAgICAgICAgICAgICBOZXdTdGF0ZUlEICAgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBOZXdUaXRsZSAgICAgICAgICAgICA9PiAnTmV3IFRpdGxlJywKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZF9UZXh0ICAgID0+ICcnLAoKICAgICAgICAgICAgICAgICMgQWRkIE5vdGUKICAgICAgICAgICAgICAgIE5ld05vdGVGcm9tICAgICAgPT4gJ3N1cHBvcnRAem51bnkuY29tJywKICAgICAgICAgICAgICAgIE5ld05vdGVTdWJqZWN0ICAgPT4gJ1pudW55IE5vdGUgU3ViamVjdCcsCiAgICAgICAgICAgICAgICBOZXdOb3RlQm9keSAgICAgID0+ICdabnVueSBOb3RlIFRleHQnLAogICAgICAgICAgICAgICAgTmV3Tm90ZVRpbWVVbml0cyA9PiAnMTYwNCcsCgogICAgICAgICAgICAgICAgIyBFeGVjdXRlIFRpY2tldCBDb21tYW5kcwogICAgICAgICAgICAgICAgTmV3Q01EICAgICAgICAgICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgTmV3U2VuZE5vTm90aWZpY2F0aW9uID0+ICcwJywKICAgICAgICAgICAgICAgIE5ld0RlbGV0ZSAgICAgICAgICAgICA9PiAnMCcsCgogICAgICAgICAgICAgICAgIyBFeGVjdXRlIEN1c3RvbSBNb2R1bGUKICAgICAgICAgICAgICAgIE5ld01vZHVsZSAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1LZXkxICAgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbUtleTIgICA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtS2V5MyAgID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1LZXk0ICAgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbUtleTUgICA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtS2V5NiAgID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1WYWx1ZTEgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbVZhbHVlMiA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtVmFsdWUzID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1WYWx1ZTQgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbVZhbHVlNSA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtVmFsdWU2ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0dlbmVyaWNBZ2VudENyZWF0ZSggQEdlbmVyaWNBZ2VudHMgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9HZW5lcmljQWdlbnRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgQEdlbmVyaWNBZ2VudHMgKSA9IEBfOwoKICAgIG15ICRHZW5lcmljQWdlbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0FnZW50Jyk7CgogICAgIyBnZXQgYWxsIGN1cnJlbnQgZHluYW1pYyBmaWVsZHMKICAgIG15ICVHZW5lcmljQWdlbnRMaXN0ID0gJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iTGlzdCgpOwoKICAgICMgY3JlYXRlIG9yIHVwZGF0ZSBnZW5lcmljIGFnZW50cwogICAgR0VORVJJQ0FHRU5UOgogICAgZm9yIG15ICROZXdHZW5lcmljQWdlbnQgKEBHZW5lcmljQWdlbnRzKSB7CgogICAgICAgIG15ICVOZXdHZW5lcmljQWdlbnQgPSAleyROZXdHZW5lcmljQWdlbnR9OwoKICAgICAgICAjIGNoZWNrIGFuZCBkZWxldGUgaWYgdGhlIGdlbmVyaWMgYWdlbnQgYWxyZWFkeSBleGlzdHMKICAgICAgICAjIG5vIGdlbmVyaWMgYWdlbnQgdXBkYXRlIGZ1bmN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJEdlbmVyaWNBZ2VudExpc3R7ICROZXdHZW5lcmljQWdlbnQtPntOYW1lfSB9ICkgewoKICAgICAgICAgICAgbXkgJUV4aXN0aW5nSm9iID0gJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iR2V0KCBOYW1lID0+ICRHZW5lcmljQWdlbnRMaXN0eyAkTmV3R2VuZXJpY0FnZW50e05hbWV9IH0gKTsKCiAgICAgICAgICAgICMgcHJlcGFyZSBqb2JzIHRvIGRpZmYgY29ycmVjdGx5CiAgICAgICAgICAgIG15ICVOZXdHZW5lcmljQWdlbnREaWZmID0gJU5ld0dlbmVyaWNBZ2VudDsKCiAgICAgICAgICAgIGRlbGV0ZSAkTmV3R2VuZXJpY0FnZW50RGlmZntVc2VySUR9OwogICAgICAgICAgICBkZWxldGUgJE5ld0dlbmVyaWNBZ2VudERpZmZ7TmFtZX07CgogICAgICAgICAgICBteSAlRXhpc3RpbmdKb2JEaWZmID0gKAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUV4aXN0aW5nSm9iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGRlbGV0ZSAkRXhpc3RpbmdKb2JEaWZme0RhdGF9LT57TmFtZX07CgogICAgICAgICAgICAjIGRpZmYgYm90aCBqb2JzCiAgICAgICAgICAgIG15ICRJc0RpZmYgPSBEYXRhSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICBEYXRhMSA9PiBcJUV4aXN0aW5nSm9iRGlmZiwKICAgICAgICAgICAgICAgIERhdGEyID0+IFwlTmV3R2VuZXJpY0FnZW50RGlmZiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaWYgYm90aCBqb2JzIGFyZSBpZGVudGljYWwgc2tpcCB0aGlzIEdBCiAgICAgICAgICAgIG5leHQgR0VORVJJQ0FHRU5UIGlmICEkSXNEaWZmOwoKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iRGVsZXRlKAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICROZXdHZW5lcmljQWdlbnR7TmFtZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGdlbmVyaWMgYWdlbnQKICAgICAgICAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAlTmV3R2VuZXJpY0FnZW50LAogICAgICAgICk7CgogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfR2VuZXJpY0FnZW50Q3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBnZW5lcmljIGFnZW50cyBpZiBub3QgZXhpc3RzCgogICAgbXkgQEdlbmVyaWNBZ2VudHMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lID0+ICdKb2JOYW1lJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBWYWxpZCA9PiAnMScsCiAgICAgICAgICAgICAgICAuLi4KICAgICAgICAgICAgICAgIFRpdGxlID0+ICdUZXN0JwogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0dlbmVyaWNBZ2VudENyZWF0ZUlmTm90RXhpc3RzKCBAR2VuZXJpY0FnZW50cyApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0dlbmVyaWNBZ2VudENyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsIEBHZW5lcmljQWdlbnRzICkgPSBAXzsKCiAgICBteSAkR2VuZXJpY0FnZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNBZ2VudCcpOwoKICAgICMgZ2V0IGFsbCBjdXJyZW50IGR5bmFtaWMgZmllbGRzCiAgICBteSAlR2VuZXJpY0FnZW50TGlzdCA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkpvYkxpc3QoKTsKCiAgICBHRU5FUklDQUdFTlQ6CiAgICBmb3IgbXkgJE5ld0dlbmVyaWNBZ2VudCAoQEdlbmVyaWNBZ2VudHMpIHsKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgZ2VuZXJpYyBhZ2VudCBhbHJlYWR5IGV4aXN0cwogICAgICAgIG5leHQgR0VORVJJQ0FHRU5UIGlmICRHZW5lcmljQWdlbnRMaXN0eyAkTmV3R2VuZXJpY0FnZW50LT57TmFtZX0gfTsKCiAgICAgICAgIyBjcmVhdGUgZ2VuZXJpYyBhZ2VudAogICAgICAgICRHZW5lcmljQWdlbnRPYmplY3QtPkpvYkFkZCgKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICV7JE5ld0dlbmVyaWNBZ2VudH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0FydGljbGVBY3Rpb25zQWRkKCkKCkFkZHMgYXJ0aWNsZSBhY3Rpb24gbWVudSBpdGVtcy4KCiAgICBteSAlQXJ0aWNsZUFjdGlvbnMgPSAoCiAgICAgICAgSW50ZXJuYWwgPT4gWyAjIENoYW5uZWwgbmFtZSAoSW50ZXJuYWwsIFBob25lLCBFbWFpbCwgQ2hhdCBvciBJbnZhbGlkKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICA9PiAnWm51bnk0T1RSU01hcmtUaWNrZXRTZWVuVW5zZWVuJywKICAgICAgICAgICAgICAgIE1vZHVsZSAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6TXlNZW51SXRlbScsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiA5OTksCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9BcnRpY2xlQWN0aW9uc0FkZCglQXJ0aWNsZUFjdGlvbk1lbnVJdGVtcyk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfQXJ0aWNsZUFjdGlvbnNBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEFydGljbGVBY3Rpb25Db25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFydGljbGU6OkFjdGlvbnMnKSAvLyB7fTsKCiAgICBteSBAU2V0dGluZ3M7CiAgICBDSEFOTkVMTkFNRToKICAgIGZvciBteSAkQ2hhbm5lbE5hbWUgKCBzb3J0IGtleXMgJVBhcmFtICkgewoKICAgICAgICBuZXh0IENIQU5ORUxOQU1FIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXskQ2hhbm5lbE5hbWV9ICk7CgogICAgICAgIGZvciBteSAkQXJ0aWNsZUFjdGlvbiAoIEB7ICRQYXJhbXskQ2hhbm5lbE5hbWV9IH0gKSB7CiAgICAgICAgICAgICRBcnRpY2xlQWN0aW9uQ29uZmlnLT57JENoYW5uZWxOYW1lfS0+eyAkQXJ0aWNsZUFjdGlvbi0+e0tleX0gfSA9IHsKICAgICAgICAgICAgICAgIE1vZHVsZSA9PiAkQXJ0aWNsZUFjdGlvbi0+e01vZHVsZX0sCiAgICAgICAgICAgICAgICBQcmlvICAgPT4gJEFydGljbGVBY3Rpb24tPntQcmlvcml0eX0sCiAgICAgICAgICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQFNldHRpbmdzLCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zIyMjJyAuICRDaGFubmVsTmFtZSwKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJEFydGljbGVBY3Rpb25Db25maWctPnskQ2hhbm5lbE5hbWV9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CgogICAgfQoKICAgIG15ICRTZXR0aW5nU2V0ID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnQXJ0aWNsZSBhY3Rpb24gc2V0dGluZ3MgYWRkZWQuJywKICAgICAgICBTZXR0aW5ncyA9PiBcQFNldHRpbmdzLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRTZXR0aW5nU2V0OwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfQXJ0aWNsZUFjdGlvbnNSZW1vdmUoKQoKUmVtb3ZlcyBhcnRpY2xlIGFjdGlvbiBtZW51IGl0ZW1zLgoKICAgIG15ICVBcnRpY2xlQWN0aW9ucyA9ICgKICAgICAgICBJbnRlcm5hbCA9PiBbICMgQ2hhbm5lbCBuYW1lIChJbnRlcm5hbCwgUGhvbmUsIEVtYWlsLCBDaGF0IG9yIEludmFsaWQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE1vZHVsZSAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6QXJ0aWNsZUFjdGlvbjo6TXlNZW51SXRlbScsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiA5OTksCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9BcnRpY2xlQWN0aW9uc1JlbW92ZSglQXJ0aWNsZUFjdGlvbnMpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0FydGljbGVBY3Rpb25zUmVtb3ZlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRBcnRpY2xlQWN0aW9uQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zJykgLy8ge307CgogICAgbXkgQFNldHRpbmdzOwogICAgQ0hBTk5FTE5BTUU6CiAgICBmb3IgbXkgJENoYW5uZWxOYW1lICggc29ydCBrZXlzICVQYXJhbSApIHsKCiAgICAgICAgbmV4dCBDSEFOTkVMTkFNRSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17JENoYW5uZWxOYW1lfSApOwoKICAgICAgICBmb3IgbXkgJEFydGljbGVBY3Rpb24gKCBAeyAkUGFyYW17JENoYW5uZWxOYW1lfSB9ICkgewogICAgICAgICAgICBkZWxldGUgJEFydGljbGVBY3Rpb25Db25maWctPnskQ2hhbm5lbE5hbWV9LT57ICRBcnRpY2xlQWN0aW9uLT57S2V5fSB9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAU2V0dGluZ3MsIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1RpY2tldDo6RnJvbnRlbmQ6OkFydGljbGU6OkFjdGlvbnMjIyMnIC4gJENoYW5uZWxOYW1lLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkQXJ0aWNsZUFjdGlvbkNvbmZpZy0+eyRDaGFubmVsTmFtZX0sCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgfTsKCiAgICB9CgogICAgbXkgJFNldHRpbmdTZXQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdBcnRpY2xlIGFjdGlvbiBzZXR0aW5ncyByZW1vdmVkLicsCiAgICAgICAgU2V0dGluZ3MgPT4gXEBTZXR0aW5ncywKICAgICk7CgogICAgcmV0dXJuIGlmICEkU2V0dGluZ1NldDsKCiAgICByZXR1cm4gMTsKfQoKPWJhY2sKCj1jdXQKCjE7Cg==</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItem.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgoKICAgIDwhLS0gcmVnaXN0cmF0aW9uIG9mIGFnZW50IGFuZCBjdXN0b21lciBmcm9udGVuZCBtb2R1bGVzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BZG1pbi48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uTW9kdWxlIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZG1pbiBhcmVhIG5hdmlnYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6QWRtaW5PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6TmF2QmFyOjpNb2R1bGVBZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5DTURCU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikljb25CaWciPmZhLWxhcHRvcDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSWNvblNtYWxsIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluSVRTTUNvbmZpZ0l0ZW0jIyMwMDItSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkNvZGVNaXJyb3JFZGl0b3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkFkbWluLklUU01Db25maWdJdGVtLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvZm9sZGd1dHRlci5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2RpYWxvZy9kaWFsb2cuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL21vZGUveWFtbC95YW1sLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9tYXRjaHRhZ3MuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0cy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZXRhZy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoY3Vyc29yLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2ZvbGRjb2RlLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9lZGl0L3RyYWlsaW5nc3BhY2UuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tcG9pbnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZm9sZC9mb2xkZ3V0dGVyLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2JyYWNlLWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvaW5kZW50LWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvY29tbWVudC1mb2xkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9jb21tZW50L2NvbW1lbnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2NvbW1lbnQvY29udGludWVjb21tZW50LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaWFsb2cvZGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvanVtcC10by1saW5lLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPklUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5JdGVtQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBjb25maWcgaXRlbSBvdmVydmlldy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5PdmVydmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE8gcmVsZXZhbnQgZm9yIGNvbHVtbiBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tLSBUT0RPIHJlbGV2YW50IGZvciBjb2x1bW4gc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TWVudTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMxMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJzdmdJY29uIj52YXIvaHR0cGQvaHRkb2NzL3NraW5zL0N1c3RvbWVyL2RlZmF1bHQvaW1nL2RldmljZXNfYmxhY2tfMjRkcC5zdmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBjb25maWcgaXRlbXMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1TZWFyY2guY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlByaW50LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFsbG9jYXRpb25MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5QcmludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pxdWVyeS10YWJsZXNvcnRlci0yLjI4LjE0L2pxdWVyeS50YWJsZXNvcnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkR5bmFtaWNGaWVsZERCRGV0YWlsZWRTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkxpbmtPYmplY3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maXJtRGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGVkaXQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJEZXRhaWxlZFNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5EeW5hbWljRmllbGREQlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNSaWNoVGV4dFdpZHRoIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1FZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCslPyQiPjYyMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjI1JpY2hUZXh0SGVpZ2h0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRWRpdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJT8kIj4zMjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gcHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+RGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPklUU00gQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5Db25maWdJdGVtIFRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5JVFNNIENvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5UcmVlVmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRyZWVWaWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pzcGx1bWItMS42LjQvanNwbHVtYi5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGFkZC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5BZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtQWRkIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk5ldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4yMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggY29uZmlnIGl0ZW1zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5UYWJsZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHJpbnQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIGNvbmZpZyBpdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPm9uY2xpY2s9IklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcpOyBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9IGVsc2UgeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1lbnUgbW9kdWxlcyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMjAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMDAtRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNDAwLVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludCI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNTAwLUxpbmsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50TGlua09iamVjdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM1NTAtVHJlZVZpZXciIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbSBUcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3O1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNjAwLUR1cGxpY2F0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzcwMC1Db25maWdJdGVtRGVsZXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRGVsZXRlO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+Q29uZmlybURpYWxvZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRWxlbWVudFNlbGVjdG9yIj4jTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU7U3ViYWN0aW9uPUNvbmZpZ0l0ZW1EZWxldGU7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nVGl0bGUiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIFslIENvbmZpZygiSVRTTUNvbmZpZ0l0ZW06Okhvb2siKSAlXSBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gc2V0dGluZ3MgZm9yIHNwZWNpZmljIGNvbmZpZyBpdGVtIGNsYXNzZXMgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6Q0lOYW1lUmVnZXgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbXB1dGVyOjpDSU5hbWVSZWdleCI+XkFCQy4qPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb21wdXRlcjo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgY29tcHV0ZXIgbmFtZSBtdXN0IHN0YXJ0IHdpdGggQUJDITwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSGFyZHdhcmU6OkNJTmFtZVJlZ2V4Ij4uKlxkXGQkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJIYXJkd2FyZTo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgaGFyZHdhcmUgbmFtZSBtdXN0IGVuZCB3aXRoIHR3byBkaWdpdHMhPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIHNldHRpbmdzIGZvciB0aGUgTGlua09iamVjdCBmZWF0dXJlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6Q29tcGxleFRhYmxlOjpTZXR0aW5nc1Zpc2liaWxpdHkjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgJ0lUU01Db25maWdJdGVtJy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5DbGllbnQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5DdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3VyRGVwbFNpZ25hbDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zQnlDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpXYXJyYW50eUV4cGlyYXRpb25EYXRlOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkNyZWF0ZVRpbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6VHlwZTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpBZGRyZXNzOjoxPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBzdGF0cyBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IlN0YXRzOjpEeW5hbWljT2JqZWN0UmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN0YXRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJbXBvcnQvRXhwb3J0IHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kUmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gZXZlbnQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihDb25maWdJdGVtQ3JlYXRlfFZlcnNpb25DcmVhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbURlbGV0ZXxMaW5rQWRkfExpbmtEZWxldGV8RGVmaW5pdGlvblVwZGF0ZXxOYW1lVXBkYXRlfFZlcnNpb25EZWxldGV8QXR0YWNobWVudEFkZFBvc3R8QXR0YWNobWVudERlbGV0ZVBvc3R8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMzMDAtRGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZWZpbml0aW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjNDAwMC1TY3JpcHREeW5hbWljRmllbGRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2YWx1YXRlIGFsbCBzY3JpcHQgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RXZhbHVhdGVTY3JpcHRGaWVsZHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1vcmUgZnJvbnRlbmQgbW9kdWxlIHNldHRpbmdzIGFuZCByZWdpc3RyYXRpb25zIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9Im5vcm1hbCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9InJldmVyc2UiIFRyYW5zbGF0YWJsZT0iMSI+cmV2ZXJzZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0ibm9ybWFsIiBUcmFuc2xhdGFibGU9IjEiPm5vcm1hbDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gaGlzdG9yeS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5IyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXM6OlVwZGF0ZUFKQVg6OkFsbG93ZWQjIyMwMDItSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkEgbGlzdCBvZiBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSB1cGRhdGVkIHZpYSB0aGUgVXBkYXRlQUpBWC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI0RlcGxveW1lbnRTdGF0ZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlIFR5cGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4yMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InBvc3Rwcm9kdWN0aXZlIiBUcmFuc2xhdGFibGU9IjEiPnBvc3Rwcm9kdWN0aXZlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InByZXByb2R1Y3RpdmUiIFRyYW5zbGF0YWJsZT0iMSI+cHJlcHJvZHVjdGl2ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwcm9kdWN0aXZlIiBUcmFuc2xhdGFibGU9IjEiPnByb2R1Y3RpdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5GdW5jdGlvbmFsaXR5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+T3B0aW9uPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIEdlbmVyYWxDYXRhbG9nIHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI0RlcGxveW1lbnRTdGF0ZXNDb2xvcnMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlIENvbG9yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPkNvbG9yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29sb3JQaWNrZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI05hbWVNb2R1bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPk5hbWUgTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5OYW1lTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+TmFtZU1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNOdW1iZXJNb2R1bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIE1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjQwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+TnVtYmVyTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+TnVtYmVyTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1ZlcnNpb25TdHJpbmdNb2R1bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5WZXJzaW9uIFN0cmluZyBNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij41MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5DaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDwhLS0gVE9ETyByZW5hbWUgRGF0YVNlbGVjdGVkIHByb3Blcmx5IHRvIERhdGFTZWxlY3RlZElELCBhcyBpdCBpcyBwYXNzZWQgYXMgU2VsZWN0ZWRJRCBzdWJzZXF1ZW50bHkgLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGFTZWxlY3RlZCI+SW5jcmVtZW50YWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VmVyc2lvblN0cmluZ01vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPlZlcnNpb25TdHJpbmdNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1ZlcnNpb25TdHJpbmdFeHByZXNzaW9uIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5WZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+NjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VmVyc2lvblN0cmluZ0V4cHJlc3Npb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5JbnB1dDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzIyMjVmVyc2lvblRyaWdnZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5WZXJzaW9uIFRyaWdnZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij43MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5DaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkRlc2NyaXB0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxTdGF0ZUlEIiBUcmFuc2xhdGFibGU9IjEiPkRlcGxveW1lbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpU3RhdGVJRCIgVHJhbnNsYXRhYmxlPSIxIj5JbmNpZGVudFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmluaXRpb25VcGRhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5WZXJzaW9uVHJpZ2dlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbmZpZ0l0ZW1WZXJzaW9uVHJpZ2dlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNdWx0aXBsZSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzIyMjQ2F0ZWdvcmllcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yaWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+ODA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPkNhdGVnb3JpZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db25maWdJdGVtQ2xhc3NDYXRlZ29yaWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNdWx0aXBsZSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIHBlcm1pc3Npb24gc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3MjIyMwMTAtQ2xhc3NHcm91cENoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXF1aXJlZCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JhbnRlZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbSMjIzAxMC1JdGVtQ2xhc3NHcm91cENoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW1DbGFzc0dyb3VwQ2hlY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJlcXVpcmVkIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcmFudGVkIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZG1pbklUU01Db25maWdJdGVtIyMjRWRpdG9yUm93cyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46OlZpZXc6OklUU01Db25maWdJdGVtRGVmaW5pdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20jIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRXh0ZW5kZWRTZWFyY2hDb25kaXRpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiZhbXA7JmFtcDsqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkFnZSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkFnZSIgVHJhbnNsYXRhYmxlPSIxIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8IS0tIFRPRE8gdmVyaWZ5IGF0dHJpYnV0ZSBuYW1lcyAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPCEtLSBUT0RPIHRlc3QgZHluYW1pYyBmaWVsZHMgLS0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRGF0YSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EYXRhIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+Q3JlYXRlVGltZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI051bWJlciIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOYW1lIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0RlcGxveW1lbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSW5jaWRlbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ3VzdG9tZXJJRCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNDdXN0b21lclVzZXJMb2dpbiIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVNsb3QiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVTbG90IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NlYXJjaFByZXZpb3VzVmVyc2lvbnMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgJ1gnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6ICdhIHRleHQnLCBEcm9wZG93bjogJzEnLCBEYXRlL1RpbWU6ICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OycgYW5kIG9yICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03JzsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlcGxveW1lbnRTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNJbmNpZGVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNFeHRlbmRlZFNlYXJjaENvbmRpdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJmFtcDsmYW1wOyprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjQwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQWdlIiBUcmFuc2xhdGFibGU9IjEiPkFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTnVtYmVyIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI05hbWUiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRGVwbG95bWVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJbmNpZGVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSAnWCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogJ2EgdGV4dCcsIERyb3Bkb3duOiAnMScsIERhdGUvVGltZTogJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7JyBhbmQgb3IgJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTcnOy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1Blcm1pc3Npb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlBlcm1pc3Npb24gR3JvdXA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPlBlcm1pc3Npb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+UGVybWlzc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7U3ViYWN0aW9uPUFKQVg8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaDo6SmF2YVNjcmlwdCMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgdGhlIHNlYXJjaCBmcm9udGVuZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+SVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMxMDAtQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBKUyBmaWxlcyB0byBhbHdheXMgYmUgbG9hZGVkIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkLmpzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0NvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZlcmVuY2VHcm91cCI+TWlzY2VsbGFuZW91czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBJdGVtIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSIgVHJhbnNsYXRhYmxlPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNDb25maWdJdGVtT3ZlcnZpZXdGaWx0ZXJTZXR0aW5ncyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyAnQWN0aXZlJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyJ3MgYmVoYWxmLiBVc2UgJ1ByZWZlcmVuY2VHcm91cCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpDb2x1bW5GaWx0ZXJzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQgZmlsdGVycy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgxMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDb2x1bW5zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWQiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6SG9vayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5Db25maWdJdGVtIzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xMDAwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDYXRlZ29yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbT5BbGw8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0Rpc2FibGVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0F2YWlsYWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjQ2xhc3NDb2x1bW5zRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlVuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzICgnY2xhc3MnKSBvciBnbG9iYWxseSAoJ2dsb2JhbCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJnbG9iYWwiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJnbG9iYWwiIFRyYW5zbGF0YWJsZT0iMSI+Z2xvYmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJjbGFzcyIgVHJhbnNsYXRhYmxlPSIxIj5jbGFzczwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkJ1bGtBY3Rpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkJ1bGtBY3Rpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnVzZXJzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkJ1bGsgQWN0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VG8gZG93bmxvYWQgYXR0YWNobWVudHMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50OjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlRvIGRvd25sb2FkIGF0dGFjaG1lbnRzLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMxMDAtWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMyMDAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlIyMjMzAwLUR1cGxpY2F0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RHVwbGljYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV07UmV0dXJuVG9MYXN0U2NyZWVuPTE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI0RlcGxTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1CdWxrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI0luY2lTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtQnVsazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpBZG1pbk1vZHVsZUdyb3VwcyMjIzIwMC1JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhdmFpbGFibGUgZ3JvdXBzIGZvciB0aGUgYWRtaW4gb3ZlcnZpZXcgc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6Ok5hdkJhck1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDTURCU2V0dGluZ3MiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkNNREIgU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3JkZXIiPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20jIyNWZXJzaW9uc0VuYWJsZWQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OklUU01Db25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20jIyNWZXJzaW9uc1NlbGVjdGFibGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIyMjR2VuZXJhbEluZm8iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+V2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBIaWRkZW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaWRlbnRTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QXNzaWduZWQgQ0lzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+Q3VzdG9tZXJDb21wYW55PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGaWx0ZXIiIFRyYW5zbGF0YWJsZT0iMSI+QWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW1pdCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBlcm1pc3Npb24iPnJvPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudExhcmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYWNoZVRUTExvY2FsIj4wLjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0l0ZW1LZXkiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gQXZhaWxhYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYXN0Q2hhbmdlZCIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ1VJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6SVRTTUNvbmZpZ0l0ZW1HZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Bc3NpZ25lZCBDSXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj5DdXN0b21lcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRmlsdGVyIiBUcmFuc2xhdGFibGU9IjEiPkFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGltaXQiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5ybzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRMYXJnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVExMb2NhbCI+MC41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtS2V5Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBcHBsaWFuY2UiPkNvbnRhY3QtVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGllbnQiPkNvbnRhY3QtVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGllbnQgKHZpcnR1YWwpIj5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzcGxheSI+Q29udGFjdC1Vc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRldmljZSAodW5pZGVudGlmaWVkKSI+Q29udGFjdC1Vc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vYmlsZSBEZXZpY2UiPkNvbnRhY3QtVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPdGhlciBBY2Nlc3NvcmllcyI+Q29udGFjdC1Vc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBob25lIj5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbnRlciI+Q29udGFjdC1Vc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByb2plY3RvciI+Q29udGFjdC1Vc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJvdXRlciAoRmlyZXdhbGwpIj5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmVyIj5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmVyICh2aXJ0dWFsKSI+Q29udGFjdC1Vc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNtYXJ0Ym9hcmQiPkNvbnRhY3QtVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdG9yYWdlIj5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3dpdGNoIj5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVVBTIj5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iV0xBTiBhY2Nlc3MgcG9pbnQiPkNvbnRhY3QtVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHRDb2x1bW5zIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEF2YWlsYWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSUNsYXNzZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OkV4Y2x1ZGVkQ0lEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFbGFzdGljc2VhcmNoOjpDb25maWdJdGVtU3RvcmVGaWVsZHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJhc2ljIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1JRDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3NJRDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TZWFyY2hGaWVsZHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmFzaWMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dGFjaG1lbnRzIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OlF1aWNrU2VhcmNoU2hvdyMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb3VudCI+NTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFdmVudHMjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIGFsbCBQYWNrYWdlIGV2ZW50cyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEdVSS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1DcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db25maWdJdGVtVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VmVyc2lvbkNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPlZlcnNpb25VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsb3ltZW50U3RhdGVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpZGVudFN0YXRlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbURlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5BdHRhY2htZW50QWRkUG9zdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkF0dGFjaG1lbnREZWxldGVQb3N0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VmVyc2lvbkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gZHluYW1pYyBmaWVsZCByZWxhdGVkIHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZSMjI0lUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBvYmplY3QgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5JVFNNIENvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6T2JqZWN0VHlwZTo6SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjExNTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRTY3JlZW5zIyMjSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgY29uZmlndXJhdGlvbiBkZWZpbmVzIGFsbCBwb3NzaWJsZSBzY3JlZW5zIHRvIGVuYWJsZSBvciBkaXNhYmxlIGR5bmFtaWMgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkR5bmFtaWNGaWVsZFNjcmVlbnM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjI0R5bmFtaWNGaWVsZCI+QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50IyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtUHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0R5bmFtaWNGaWVsZCI+QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtWm9vbSMjI0R5bmFtaWNGaWVsZCI+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0R5bmFtaWNGaWVsZCI+Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEZWZhdWx0Q29sdW1uc1NjcmVlbnMjIyNJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBjb25maWd1cmF0aW9uIGRlZmluZXMgYWxsIHBvc3NpYmxlIHNjcmVlbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGVmYXVsdCBjb2x1bW5zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkR5bmFtaWNGaWVsZFNjcmVlbnM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ1VJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlciI+RGFzaGJvYXJkV2lkZ2V0IENVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55Ij5EYXNoYm9hcmRXaWRnZXQgQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNEZWZhdWx0Q29sdW1ucyI+QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjRGVmYXVsdENvbHVtbnMiPkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkU2NyZWVuczo6T2JqZWN0VHlwZXMjIyNJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+PC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBkeW5hbWljIGZpZWxkIElUU01Db25maWdJdGVtIFJlZmVyZW5jZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkRyaXZlciMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIGJhY2tlbmQgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6RHJpdmVyUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluRHluYW1pY0ZpZWxkUmVmZXJlbmNlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRW5kIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW0gUmVmZXJlbmNlIC0tPgoKICAgIDwhLS0gZHluYW1pYyBmaWVsZCBJVFNNQ29uZmlnSXRlbVZlcnNpb24gUmVmZXJlbmNlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6RHJpdmVyIyMjQ29uZmlnSXRlbVZlcnNpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIGJhY2tlbmQgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6RHJpdmVyUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ0l0ZW0gVmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW1WZXJzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluRHluYW1pY0ZpZWxkUmVmZXJlbmNlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRW5kIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uIFJlZmVyZW5jZSAtLT4KCiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGQ6OkV2ZW50TW9kdWxlUG9zdCMjIzIwMC1EeW5hbWljRmllbGRTeW5jIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RXZlbnQ6OklUU01Db25maWdJdGVtRGVmaW5pdGlvblN5bmM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EeW5hbWljRmllbGRVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZDo6RXZlbnRNb2R1bGVQb3N0IyMjMjQwMC1SZWJ1aWxkQUNMUHJlc2VsZWN0aW9uQ2FjaGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVidWlsZHMgdGhlIEFDTCBwcmVzZWxlY3Rpb24gY2FjaGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpSZWJ1aWxkQUNMUHJlc2VsZWN0aW9uQ2FjaGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZWZpbml0aW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+QWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzA0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIFRyZWVWaWV3IHJlbGF0ZWQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJDTURCVHJlZVZpZXc6OkRlZmF1bHREZXB0aCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4zPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDTURCVHJlZVZpZXc6OlNob3dMaW5rTGFiZWxzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IlllcyI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlllcyIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik5vIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpEeW5hbWljRmllbGRTZXQ6OklubmVyRmllbGRzVGlja2V0VG9DSSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN3YXBwZWREaXNrU04iPklUU01TdG9yYWdlLVNlcmlhbE51bWJlcjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpY2Vuc2VDb3VudCMjIzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXCZsdDtPVE9CT19DT05GSUdJVEVNX1hcJmd0OyB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+SVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj5JVFNNTGljZW5zZS1MaWNlbnNlc0F2YWlsYWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+SVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPk1pc2M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+VGhlIGxpY2Vuc2UgJmx0O09UT0JPX0NPTkZJR0lURU1fTkFNRSZndDsgaGFzIGxlc3MgdGhhbiAmbHQ7T1RPQk9fQ09ORklHSVRFTV9MSUNFTlNFU19NSU4mZ3Q7IGl0ZW1zICgmbHQ7T1RPQk9fQ09ORklHSVRFTV9MSUNFTlNFU19BVkFJTCZndDsgbGljZW5zZXMgbGVmdCkuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+Q01EQkxpY2Vuc2VOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxpY2Vuc2UgUmVwcm92aXNpb25pbmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+c3lzdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+c3lzdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMjAwLUxpY2Vuc2VMaW5rQ291bnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q291bnRMaWNlbnNlTGlua3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZXBsb3ltZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV98RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemACL.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgo8IS0tIFRPRE86IG1lcmdlIGZpbGUgaW50byBzdGFuZGFyZCBjb25maWdpdGVtLnhtbCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMU1hdGNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzRGF0YWJhc2UiPlByb3BlcnRpZXNEYXRhYmFzZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDFDaGFuZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBvc3NpYmxlIj5Qb3NzaWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUG9zc2libGVBZGQiPlBvc3NpYmxlQWRkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQb3NzaWJsZU5vdCI+UG9zc2libGVOb3Q8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0l0ZW0iPkNvbmZpZ0l0ZW08L0l0ZW0+CjwhLS0gVE9ETyAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWN0aW9uPC9JdGVtPiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRm9ybSI+Rm9ybTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDI6OlBvc3NpYmxlQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSI+Q29uZmlnSXRlbTwvSXRlbT4KPCEtLSBUT0RPICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BY3Rpb248L0l0ZW0+IC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGb3JtIj5Gb3JtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UG9zc2libGVOb3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtIj5Db25maWdJdGVtPC9JdGVtPgo8IS0tIFRPRE8gICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFjdGlvbjwvSXRlbT4gLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZvcm0iPkZvcm08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQcm9wZXJ0aWVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGcm9udGVuZCIgVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlciIgVHJhbnNsYXRhYmxlPSIxIj5Vc2VyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UHJvcGVydGllc0RhdGFiYXNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyIiBUcmFuc2xhdGFibGU9IjEiPlVzZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwzOjpBY3Rpb25zIyMjMTAwLURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciAnQWN0aW9uJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNvbmZpZ0l0ZW1BQ0w6OkFDTFByZXNlbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemGenericInterface.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1VcHNlcnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+NTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOdW1iZXIiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJJbmNpU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IERlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IEluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBZ2UiIFRyYW5zbGF0YWJsZT0iMSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDcmVhdGVkIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkNoYW5nZWQiIFRyYW5zbGF0YWJsZT0iMSI+Q2hhbmdlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbU1hbmFnZW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW1NYW5hZ2VtZW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJEZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLUdlbmVyaWNJbnRlcmZhY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpIYW5kbGVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihWZXJzaW9uVXBkYXRlfE5hbWVVcGRhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUNyZWF0ZXxDb25maWdJdGVtVXBkYXRlfFZlcnNpb25DcmVhdGV8Q29uZmlnSXRlbURlbGV0ZXxBdHRhY2htZW50QWRkUG9zdHxBdHRhY2htZW50RGVsZXRlUG9zdCk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbUZldGNoOjpDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPjxBcnJheT48L0FycmF5PjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbUNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtRmV0Y2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgYWRtaW4gYXJlYSBvZiBPVE9CTy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIEludm9rZXIgR1VJPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyQ29uZmlnSXRlbSMjIzAwNy1JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2UuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5HZW5lcmljSW50ZXJmYWNlSW52b2tlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydDo6Q2xhc3NlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPjxBcnJheT48L0FycmF5PjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIE9wZXJhdGlvbiBHVUk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0jIyMwMDItR2VuZXJpY0ludGVyZmFjZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uR2VuZXJpY0ludGVyZmFjZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb24uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemTicketLink.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzA0Mi1JVFNNQ29uZmlnSXRlbVRpY2tldFN0YXR1c0xpbmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KExpbmtBZGR8TGlua0RlbGV0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyMwNDItSVRTTUNvbmZpZ0l0ZW1UaWNrZXRTdGF0dXNMaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpUaWNrZXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VGlja2V0U3RhdHVzTGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihUaWNrZXRTdGF0ZVVwZGF0ZXxUaWNrZXRUeXBlVXBkYXRlKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5XYXJuaW5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+T3BlcmF0aW9uYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZWxldmFudFRvIj5JbmNpZGVudDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI0NNREJOb3RpZmljYXRpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+Q01EQk5vdGlmaWNhdGlvbnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4wIDQgKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpJVFNNOjpDb25maWdJdGVtOjpDcmVhdGVDb25kaXRpb25hbFRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ01EQk5vdGlmaWNhdGlvbnM6OlJ1bGVzIyMjMDAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtOjpOb3RpZmljYXRpb25FdmVudDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+TGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Qcm9kdWN0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+SVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPi0zMGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPk1pc2M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+VGhlIGxpY2Vuc2UgJmx0O09UT0JPX0NPTkZJR0lURU1fTkFNRSZndDsgcnVucyBvdXQgaW4gMzAgZGF5cyAoJmx0O09UT0JPX0NPTkZJR0lURU1fREFURSZndDspLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxpY2Vuc2UgUmVuZXdhbDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAyMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlTWFuYWdlbWVudCMjIzAxLVN0YW5kYXJkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+SVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj5JVFNNTGljZW5zZS1BdmFpbGFibGVMaWNlbnNlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj5JVFNNLVJlZmVyZW5jZVRvTGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZU1hbmFnZW1lbnQjIyMwMi1SdWxlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZU1hbmFnZW1lbnQjIyMwMy1SdWxlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMjAwLUxpY2Vuc2VVcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpDb3VudExpY2Vuc2VMaW5rczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihEZXBsb3ltZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV98RGVsZXRlKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4K</File>
        <File Location="Kernel/GenericInterface/Event/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RXZlbnQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtIC0gR2VuZXJpY0ludGVyZmFjZSBldmVudCBkYXRhIGhhbmRsZXIKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBldmVudCBoYW5kbGVyIGdhdGhlcnMgZGF0YSBmcm9tIG9iamVjdHMuCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ29uZmlnSXRlbUlEISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE9iamVjdERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAleyRPYmplY3REYXRhfTsKfQoKMTsK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbW1vbiAtIGNvbW1vbiBJbnZva2VyIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29tbW9uIGZ1bmN0aW9ucyBmb3IgQ29uZmlnSXRlbXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKICAgIG15ICRDb25maWdJdGVtQ29tbW9uT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCAgICAgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIEludm9rZXIgICAgICAgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsICMgZXhhbXBsZQogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IEludm9rZXIgV2Vic2VydmljZUlEICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgICAgIERhdGEgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICB9LAogICAgKTsKClJlc3VsdCBleGFtcGxlOgoKICAgIHsKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgID0+ICdDSUNsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgPT4gJ1NvbWUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSA9PiAnREZWYWx1ZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgID0+IDQ1NiwKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW0uTWlzc2luZ0RhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IFRoZSByZXF1ZXN0IGRhdGEgaXMgaW52YWxpZCEiLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLk1pc3NpbmdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IENvbmZpZ0l0ZW1JRCBpcyByZXF1aXJlZCEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5NaXNzaW5nQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRTZWxmLT57SW52b2tlcn0gLiAiOiBVc2VyIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb25maWcgaXRlbSEiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9IC4gIjogVXNlciBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgY29uZmlnIGl0ZW0hIiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50RGF0YTsKICAgIG15IEBDb25maWdJdGVtQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRGaWxlbmFtZSAoQENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCkgewogICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJEZpbGVuYW1lOwogICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIE9ubHlNeUJhY2tlbmQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgIyB1c2UgJ3V0ZjgnIGluc3RlYWQgb2YgJ3V0Zi04JwogICAgICAgICMgYmVjYXVzZSBPcGVyYXRpb24gVGlja2V0Q3JlYXRlL1RpY2tldFVwZGF0ZQogICAgICAgICMgY3VycmVudGx5IGRvZXMgbm90IGFjY2VwdCAndXRmLTgnCiAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gc3t1dGYtOH17dXRmOH07CgogICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9ICk7CgogICAgICAgICRBdHRhY2htZW50LT57RmlsZW5hbWV9ID0gJEZpbGVuYW1lOwogICAgICAgICRBdHRhY2htZW50LT57TWltZVR5cGV9ID0gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CiAgICAgICAgJEF0dGFjaG1lbnQtPntNaW1lVHlwZX0gPX4gc3sgWyw7XSBbIF0qIGNoYXJzZXQ9IC4rIFx6IH17fXhtc2k7CgogICAgICAgICMgcmVtb3ZlIGVtcHR5IGF0dHJpYnV0ZXMKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJEF0dGFjaG1lbnQtPiUqICkgewogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICdDb250ZW50VHlwZSc7CiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICRBdHRyaWJ1dGUgZXEgJ0NvbnRlbnQnOwogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9ICk7CiAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAQXR0YWNobWVudERhdGEsICRBdHRhY2htZW50OwogICAgfQoKICAgICMgYWRkIGF0dGFjaG1lbnRzIHdpdGggb2xkIHN0cnVjdHVyZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERhdGEgKSApIHsKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntBdHRhY2htZW50fSA9IFxAQXR0YWNobWVudERhdGE7CiAgICB9CgogICAgIyByZXBsYWNlIGNvbmZpZyBpdGVtIHZhbHVlcyB3aXRoIHJlYWRhYmxlIHZhbHVlcwogICAgJENvbmZpZ0l0ZW1EYXRhID0gJFNlbGYtPl9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtRGF0YSwKICAgICk7CgogICAgJFNlbGYtPntSZXF1ZXN0RGF0YX0gPSBcJVBhcmFtOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLAogICAgfTsKfQoKPWhlYWQyIEhhbmRsZVJlc3BvbnNlKCkKCmhhbmRsZSByZXNwb25zZSBkYXRhIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViLXNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYi1zZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSAmJiAhJFBhcmFte0RhdGF9ICkgewogICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5SZXNwb25zZUVycm9yJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9CiAgICAgICAgICAgICAgICAgICAgLiAiOiBHb3QgcmVzcG9uc2UgZXJyb3IsIGJ1dCBubyByZXNwb25zZSBlcnJvciBtZXNzYWdlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKPWhlYWQyIFJldHVybkVycm9yKCkKCmhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+UmV0dXJuRXJyb3IoCiAgICAgICAgRXJyb3JDb2RlICAgID0+IENvbmZpZ0l0ZW0uQWNjZXNzRGVuaWVkLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnWW91IGRvbnQgaGF2ZSByaWdodHMgdG8gYWNjZXNzIHRoaXMgdGlja2V0JywKICAgICk7Cgo9Y3V0CgpzdWIgUmV0dXJuRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0RlYnVnZ2VyT2JqZWN0fS0+RXJyb3IoCiAgICAgICAgU3VtbWFyeSA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICBEYXRhICAgID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgKTsKCiAgICAjIHJldHVybiBzdHJ1Y3R1cmUKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkUGFyYW17RXJyb3JDb2RlfTogJFBhcmFte0Vycm9yTWVzc2FnZX0iLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKfQoKc3ViIF9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoKSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtfSApOwoKICAgIG15ICVDb25maWdJdGVtRGF0YSA9ICgKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIEtFWToKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtRGF0YSApIHsKCiAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRDb25maWdJdGVtRGF0YXskS2V5fTsKCiAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyguKikkLyApIHsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSAgID0gJDE7CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRSZWFkYWJsZVZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXskS2V5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFJlYWRhYmxlVmFsdWUpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRheyRLZXl9ID0gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29uZmlnSXRlbURhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemCreate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtQ3JlYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1DcmVhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUZldGNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhwYWlycyk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1GZXRjaCAtIEdlbmVyaWNJbnRlcmZhY2UgZm9yIElUU00gQ29uZmlnSXRlbXMKCj1oZWFkMSBTWU5PUFNJUwoKR2VuZXJpY0ludGVyZmFjZSBmb3IgSVRTTSBDb25maWdJdGVtcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbXMKICAgIGZvciBteSAkTmVlZGVkICgKICAgICAgICBxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgSW52b2tlcikKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH07CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSA/ICRQYXJhbXtEYXRhfSA6IHt9LAogICAgfTsKfQoKPWl0ZW0gSGFuZGxlUmVzcG9uc2UoKQoKaGFuZGxlIHJlc3BvbnNlIGRhdGEgb2YgdGhlIGNvbmZpZ3VyZWQgcmVtb3RlIHdlYiBzZXJ2aWNlLgpUaGlzIHdpbGwganVzdCByZXR1cm4gdGhlIGRhdGEgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViIHNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYiBzZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gfHwgJ1Vua25vd24gRXJyb3InLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCByZWYgJFBhcmFte0RhdGF9IG5lICdIQVNIJyAmJiByZWYgJFBhcmFte0RhdGF9IG5lICdBUlJBWScgKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSW52YWxpZCBzdHJ1Y3R1cmUgZm9yIHBhcmFtZXRlciAnRGF0YScuIiwKICAgICAgICApOwogICAgfQoKICAgICMgTm90aGluZyB0byBkby4KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSAmJiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1vdmUgdG9wbGV2ZWwgQ29uZmlnSXRlbXMgaWYgbm90IGdpdmVuIGFzIGRpcmVjdCBhcnJheQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgJiYgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1zfSApIHsKICAgICAgICAkUGFyYW17RGF0YX0gPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbXN9OwogICAgfQoKICAgICMgdHJhbnNmb3JtIHRvIGFycmF5IHJlZmVyZW5jZQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgKSB7CiAgICAgICAgJFBhcmFte0RhdGF9ID0gWyAkUGFyYW17RGF0YX0gXTsKICAgIH0KCiAgICAjIGdldCB3ZWJzZXJ2aWNlIGNvbmZpZ3VyYXRpb24KICAgIG15ICRXZWJzZXJ2aWNlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZUdldCgKICAgICAgICBJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgICMgZ2V0IGludm9rZXIgY29uZmlnCiAgICBteSAkSW52b2tlckNvbmZpZyA9ICRXZWJzZXJ2aWNlLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkU2VsZi0+e0ludm9rZXJ9IH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15ICVOYW1lTW9kdWxlT2JqZWN0czsKICAgIENJOgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX0gfSApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFJlbW90ZUNJRGF0YSkgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgcmVtb3RlIENJIHN0cnVjdHVyZSBmb3VuZC4gU2tpcHBpbmcgaXRlbS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICB9CgogICAgICAgIG15IEBSZXF1aXJlZEF0dHJpYnV0ZXMgPSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlczsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewoKICAgICAgICAgICAgICAgIG15ICROb3RpY2VJbmZvID0gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0gPyAiTnVtYmVyOiAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsiIDogJyc7CiAgICAgICAgICAgICAgICAkTm90aWNlSW5mbyAuPSAkUmVtb3RlQ0lEYXRhLT57TmFtZX0gPyAiTmFtZTogJFJlbW90ZUNJRGF0YS0+e05hbWV9OyIgOiAnJzsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzc2luZyAnJE5lZWRlZCcgcGFyYW1ldGVyIGZvciBjcmVhdGluZy91cGRhdGluZyBhIENJLiBTa2lwcGluZyBpdGVtLiAkTm90aWNlSW5mbyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXF1aXJlZEF0dHJpYnV0ZXN7JE5lZWRlZH0gPSAkUmVtb3RlQ0lEYXRhLT57JE5lZWRlZH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBJRHMgZm9yIENsYXNzLCBEZXBsLSBhbmQgSW5jaVN0YXRlCiAgICAgICAgZm9yIG15ICRDdXJyZW50Q0kgKCBzb3J0IGtleXMgJUNJQ2xhc3NNYXBwaW5nICkgewoKICAgICAgICAgICAgIyBjcmVhdGUvZ2V0IGxvb2t1cCBmb3IgZ2VuZXJhbCBjYXRhbG9nIGl0ZW1zCiAgICAgICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIGlmICggJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ICkgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSgkR2VuZXJhbENhdGFsb2dJdGVtKQogICAgICAgICAgICAgICAgICAgIHx8ICFJc1N0cmluZ1dpdGhEYXRhKCAkR2VuZXJhbENhdGFsb2dJdGVtLT57SXRlbUlEfSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3aGlsZSBsb29raW5nIHVwICRDdXJyZW50Q0kgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZCB0byBsb29rdXAKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlcXVpcmVkQXR0cmlidXRlc3sgJEN1cnJlbnRDSSAuICdJRCcgfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGF0ZXN0IGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcwogICAgICAgIG15ICRDbGFzc0lEID0gJFJlbW90ZUNJRGF0YS0+e0NsYXNzSUR9OwogICAgICAgIGlmICggISRDbGFzc0lEICkgewogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKICAgICAgICAgICAgJENsYXNzSUQgPSAkUmV2ZXJzZUNsYXNzTGlzdHsgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9OwogICAgICAgIH0KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgdmFsaWRhdGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBEQVRBOgogICAgICAgIGZvciBteSAkRGF0YSAoIHBhaXJzICRSZW1vdGVDSURhdGEtPiUqICkgewogICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gJERhdGEtPkAqOwoKICAgICAgICAgICAgbmV4dCBEQVRBIHVubGVzcyAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfLyApOwoKICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyg/PFBsYWluRmllbGROYW1lPltBLVphLXowLTktXSspLyApIHsKICAgICAgICAgICAgICAgIG15ICRQbGFpbkZpZWxkTmFtZSA9ICQre1BsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGlzIGluIGNsYXNzIGRlZmluaXRpb24KICAgICAgICAgICAgICAgIGlmICggISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRHluYW1pY0ZpZWxkLT5OYW1lIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgdmFsaWRhdGUgdmFsdWUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIHN0cnVjdHVyZXMgYXJlIHN0cmluZyBhbmQgYXJyYXksIG5vIGRhdGEgaW5zaWRlIGlzIG5lZWRlZAogICAgICAgICAgICAgICAgICAgIGlmICggIUlzU3RyaW5nKCRWYWx1ZSkgJiYgcmVmICRWYWx1ZSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQtPlZhbHVlIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSWRlbnRpZmllciA9ICRJbnZva2VyQ29uZmlnLT57ICdJZGVudGlmaWVyJyAuICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0gfTsKICAgICAgICBpZiAoICEkSWRlbnRpZmllciApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgaW1wb3J0aW5nIGl0ZW1zIGluIGNsYXNzICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9IC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhpcyBpdGVtIGV4aXN0cyAodXBkYXRlKSBvciBpcyBuZXcgKGNyZWF0ZSkKICAgICAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtID0gKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBRdWVyeUNvbmRpdGlvbiA9PiAwLAogICAgICAgICk7CiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggJElkZW50aWZpZXItPkAqICkgewogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgPX4gL15EeW4vICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFteyRBdHRyaWJ1dGV9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUmVtb3RlQ0lEYXRhLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnQ2xhc3NlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17Q2xhc3Nlc30gPSBbICRSZW1vdGVDSURhdGEtPntDbGFzc30gXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte05hbWV9ID0gJFJlbW90ZUNJRGF0YS0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnRGVwbFN0YXRlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17RGVwbFN0YXRlc30gPSBbICRSZW1vdGVDSURhdGEtPntEZXBsb3ltZW50U3RhdGV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NvbmZpZ0l0ZW1JRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm90IGltcG9ydGluZyBpdGVtcyBpbiBjbGFzcyAkUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzfSAtIHNraXBwaW5nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJlbW90ZUNJRGF0YS0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSAkQXR0cmlidXRlIGFzIElkZW50aWZpZXIgLSBza2lwcGluZy4iLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5laXRoZXIgTnVtYmVyIG5vciBJRCBhcmUgcHJvdmlkZWQgZGlyZWN0bHksIHBlcmZvcm0gYSB0aGUgc2VhcmNoCiAgICAgICAgaWYgKCRDb25maWdJdGVtTnVtYmVyKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goJVNlYXJjaFBhcmFtKTsKCiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUlEc1swXTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBDb25maWdJdGVtSURzID4gMSApIHsKICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXJzID0gam9pbiggJzsnLCBtYXAgeyIkXyA9PiAkU2VhcmNoUGFyYW17JF99In0ga2V5cyAlU2VhcmNoUGFyYW0gKTsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSBhbWJpZ3VvcyBzZWFyY2ggcmVzdWx0IC0gc2tpcHBpbmcuIFBhcmFtZXRlcnM6ICRTZWFyY2hQYXJhbWV0ZXJzOyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9LAogICAgICAgICk7CiAgICAgICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlcy0+e05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXMtPntOYW1lTW9kdWxlfVswXSA6ICcnOwogICAgICAgIGlmICgkTmFtZU1vZHVsZSkgewogICAgICAgICAgICBpZiAoICEkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSApIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JyAuICROYW1lTW9kdWxlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSA9ICRLZXJuZWw6Ok9NLT5HZXQoICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OicgLiAkTmFtZU1vZHVsZSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICAgICAgZGVsZXRlICRSZW1vdGVDSURhdGEtPntOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPntOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0c3sgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAkUmVtb3RlQ0lEYXRhLT4lKiwKICAgICAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7SW5jaWRlbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCAmJiAhJFJlbW90ZUNJRGF0YS0+e05hbWV9ICkgewogICAgICAgICAgICBteSAkTm90aWNlSW5mbyA9ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9ID8gIk51bWJlcjogJFJlbW90ZUNJRGF0YS0+e051bWJlcn07IiA6ICcnOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nICdOYW1lJyBwYXJhbWV0ZXIgZm9yIGNyZWF0aW5nIGEgQ0kuIFNraXBwaW5nIGl0ZW0uICROb3RpY2VJbmZvIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZyBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tEZXBsb3ltZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0luY2lkZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgY3JlYXRpbmcgQ0kgd2l0aCBOYW1lICckUmVxdWlyZWRBdHRyaWJ1dGVze05hbWV9JywgQ2xhc3MgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9JyAoQ2xhc3NJRDogJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0nKS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGF0YX0sCiAgICApOwp9Cgo9aXRlbSBFcnJvcigpCgpXcml0ZSBlcnJvciBtZXNzYWdlIHRvIE9UT0JPIGxvZyBhbmQgcmV0dXJuIGV4aXQgc3RydWN0dXJlLgoKICAgIG15ICRFeGl0U3RydWN0dXJlID0gJENvbW1vbk9iamVjdC0+RXJyb3IoCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgICk7CgpyZXR1cm5zCgogICAgJEV4aXRTdHJ1Y3R1cmUgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgIH07Cgo9Y3V0CgpzdWIgRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciBpbiAnIiAuICRTZWxmLT57SW52b2tlcn0KICAgICAgICAgICAgLiAiJyBJbnZva2VyIChXZWJzZXJ2aWNlSUQ6ICIgLiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0gLiAiKToiCiAgICAgICAgICAgIC4gJFBhcmFte0Vycm9yTWVzc2FnZX0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgfTsKfQoKPWl0ZW0gU3VjY2VzcygpCgpXcml0ZSBMYXN0UnVuVGltZXN0YW1wIGNhY2hlIGVudHJ5IGFuZCByZXR1cm4gZXhpdCBzdHJ1Y3R1cmUuCgogICAgbXkgJEV4aXRTdHJ1Y3R1cmUgPSAkQ29tbW9uT2JqZWN0LT5TdWNjZXNzKAogICAgICAgIERhdGEgPT4gJFJldHVybkRhdGEsCiAgICApOwoKcmV0dXJucwoKICAgICRFeGl0U3RydWN0dXJlID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+ICRSZXR1cm5EYXRhLAogICAgfTsKCj1jdXQKCnN1YiBTdWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExhc3RSdW5UaW1lc3RhbXAgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9TdHJpbmcoKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIEtleSAgID0+ICdHZW5lcmljSW50ZXJmYWNlOjpJVFNNOjpDb25maWdJdGVtOjonIC4gJFNlbGYtPntJbnZva2VyfSAuICc6Okxhc3RSdW5UaW1lc3RhbXAnLAogICAgICAgIFZhbHVlID0+ICRMYXN0UnVuVGltZXN0YW1wLAogICAgICAgIFR5cGUgID0+ICdJVFNNQ2hhbmdlSXRlbVdlYnNlcnZpY2UnIC4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDcsCiAgICApOwoKICAgICMgbG9nIGNvbXBsZXRpb24KICAgICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5EZWJ1ZygKICAgICAgICBTdW1tYXJ5ID0+ICdTdWNjZXNzZnVsbHkgY29tcGxldGVkLicsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtVXBkYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1VcGRhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/Elasticsearch/ConfigItemManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6RWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBNSU1FOjpCYXNlNjQgcXcoZW5jb2RlX2Jhc2U2NCk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zIGFuZCBzdG9yZSB0aGVtIGluICRTZWxmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlELykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgZm9yIG15ICROZWVkZWQgKHF3L0V2ZW50IENvbmZpZ0l0ZW1JRC8pIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGRvIG5vdGhpbmcgaWYgQ29uZmlnSXRlbXMgYXJlIG5vdCBjb25maWd1cmVkCiAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBhbGwgZXZlbnRzIHdoaWNoIGFyZSBuZWl0aGVyIHVwZGF0ZSBub3IgY3JlYXRpb24gZmlyc3QKCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFBhcmFte0RhdGF9e0V2ZW50fSBlcSAnQ29uZmlnSXRlbURlbGV0ZScgKSB7CiAgICAgICAgbXkgJUNvbnRlbnQgPSAoCiAgICAgICAgICAgIHF1ZXJ5ID0+IHsKICAgICAgICAgICAgICAgIHRlcm0gPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHB1dCBhIHNpbmdsZSB0ZW1wb3JhcnkgYXR0YWNobWVudCBpbnRvIGEgcXVldWUKICAgICMgbW9yZSB0aGFuIG9uZSBhdHRhY2hlbWVudCBjb3VsZCBiZSBwdXQgcGVyIGNhbGwsIGJ1dCB0aGlzIHdvdWxkIG1ha2UgZXJyb3IgaGFuZGxpbmcgaGFyZGVyCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ1B1dFRNUEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBmaWxlIGZvcm1hdCB0byBiZSBpbmdlc3RlZAogICAgICAgIG15ICRGaWxlRm9ybWF0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpJbmdlc3RBdHRhY2htZW50Rm9ybWF0Jyk7CiAgICAgICAgbXkgJUZvcm1hdEhhc2ggPSBtYXAgeyAkXyA9PiAxIH0gQHskRmlsZUZvcm1hdH07CgogICAgICAgIG15ICRNYXhGaWxlc2l6ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6SW5nZXN0TWF4RmlsZXNpemUnKTsKICAgICAgICBteSAkRmlsZW5hbWUgICAgPSAkUGFyYW17RGF0YX17RmlsZW5hbWV9OwogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICRQYXJhbXtEYXRhfXtDb250ZW50VHlwZX07CiAgICAgICAgbXkgJEZpbGVzaXplICAgID0gJFBhcmFte0RhdGF9e0ZpbGVzaXplfTsKCiAgICAgICAgIyBpbmdlc3QgYXR0YWNobWVudCBvbmx5IGlmIGZpbGVzaXplIGxlc3MgdGhhbiBkZWZpbmVkIGluIHN5c2NvbmZpZwogICAgICAgIGlmICggJEZpbGVzaXplID4gJE1heEZpbGVzaXplICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAoJFR5cGVGb3JtYXQpID0gJENvbnRlbnRUeXBlID1+IG0vXi4qP1wvKFtcZFx3XSspLzsKICAgICAgICBteSAoJE5hbWVGb3JtYXQpID0gJEZpbGVuYW1lICAgID1+IG0vXC4oW1xkXHddKykkLzsKCiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgaWYgKCAkRm9ybWF0SGFzaHskVHlwZUZvcm1hdH0gfHwgJEZvcm1hdEhhc2h7JE5hbWVGb3JtYXR9ICkgewogICAgICAgICAgICBteSAkRW5jb2RlZCA9IGVuY29kZV9iYXNlNjQoICRQYXJhbXtEYXRhfXtDb250ZW50fSApOwogICAgICAgICAgICAkRW5jb2RlZCA9fiBzL1xuLy9nOwogICAgICAgICAgICAkRGF0YXtmaWxlbmFtZX0gPSAkRmlsZW5hbWU7CiAgICAgICAgICAgICREYXRhe2RhdGF9ICAgICA9ICRFbmNvZGVkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBub3QgYSB2YWxpZCBmaWxlIHR5cGUKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIGRvY2FwaSAgICAgID0+ICdfZG9jJywKICAgICAgICAgICAgICAgIHBhdGggICAgICAgID0+ICdBdHRhY2htZW50cycsICAgICMgYWN0dWFsbHkgdGhlIHBpcGVsaW5lCiAgICAgICAgICAgICAgICBpZCAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFsgXCVEYXRhIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSB0aGUgcmVndWxhciB1cGRhdGluZyBhbmQgY3JlYXRpb24KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGF0dGFjaG1lbnQgbWFuYWdlbWVudAogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9IGVxICdBdHRhY2htZW50QWRkUG9zdCcgKSB7CiAgICAgICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CgogICAgICAgICMgY3JlYXRlIGEgdGVtcG9yYXJ5IGluZGV4IHRvICJpbmdlc3QiIHRoZSBhdHRhY2htZW50CiAgICAgICAgbXkgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtSW5nZXN0QXR0YWNobWVudCcsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnUHV0VE1QQXR0YWNobWVudCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4sIGlmIGF0dGFjaG1lbnQgd2FzIG5vdCBhZGRlZAogICAgICAgIGlmICggISRSZXN1bHQgfHwgISRSZXN1bHQtPntEYXRhfXtfaWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJVJlcXVlc3QgPSAoCiAgICAgICAgICAgIGlkID0+ICRSZXN1bHQtPntEYXRhfXtfaWR9LAogICAgICAgICk7CiAgICAgICAgbXkgJUFQSSA9ICgKICAgICAgICAgICAgZG9jYXBpID0+ICdfZG9jJywKICAgICAgICApOwogICAgICAgIG15ICVJbmRleE5hbWUgPSAoCiAgICAgICAgICAgIGluZGV4ID0+ICd0bXBhdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgcmVzdWx0IG9mIHRoZSBpbmdlc3QtcGx1Z2luCiAgICAgICAgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdVdGlsc0luZ2VzdF9HRVQnLAogICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gMCwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIEluZGV4TmFtZSA9PiBcJUluZGV4TmFtZSwKICAgICAgICAgICAgICAgIFJlcXVlc3QgICA9PiBcJVJlcXVlc3QsCiAgICAgICAgICAgICAgICBBUEkgICAgICAgPT4gXCVBUEksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmVwYXJlIHByb2Nlc3NlZCBkYXRhIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBhdHRhY2htZW50IGFycmF5IG9mIHRoZSBDSQogICAgICAgIG15IEBBdHRhY2htZW50QXJyYXk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50QXR0ciAoIEB7ICRSZXN1bHQtPntEYXRhfXtfc291cmNlfXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgbXkgJUF0dGFjaG1lbnQgPSAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkQXR0YWNobWVudEF0dHItPntmaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICA9PiAkQXR0YWNobWVudEF0dHItPnthdHRhY2htZW50fXtjb250ZW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJUF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgZG9jIGluIHRtcGF0dGFjaG1lbnQKICAgICAgICAkUmVzdWx0ID0gJFJlcXVlc3Rlck9iamVjdC0+UnVuKAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJ1V0aWxzSW5nZXN0X0RFTEVURScsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgSW5kZXhOYW1lID0+IFwlSW5kZXhOYW1lLAogICAgICAgICAgICAgICAgUmVxdWVzdCAgID0+IFwlUmVxdWVzdCwKICAgICAgICAgICAgICAgIEFQSSAgICAgICA9PiBcJUFQSSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSB0aGUgQ0kgd2l0aCB0aGUgZXh0cmFjdGVkIGRhdGEKICAgICAgICBteSAlQ29udGVudCA9ICgKICAgICAgICAgICAgc2NyaXB0ID0+IHsKICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAnY3R4Ll9zb3VyY2UuQXR0YWNobWVudHMuYWRkQWxsKHBhcmFtcy5uZXcpJywKICAgICAgICAgICAgICAgIHBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgbmV3ID0+IFxAQXR0YWNobWVudEFycmF5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0F0dGFjaG1lbnREZWxldGVQb3N0JyApIHsKICAgICAgICBteSAkUmVxdWVzdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKCiAgICAgICAgIyBzZXQgcGFyYW1ldGVycwogICAgICAgIG15ICVSZXF1ZXN0ID0gKAogICAgICAgICAgICBpZCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwogICAgICAgIG15ICVBUEkgPSAoCiAgICAgICAgICAgIGRvY2FwaSA9PiAnX2RvYycsCiAgICAgICAgKTsKICAgICAgICBteSAlSW5kZXhOYW1lID0gKAogICAgICAgICAgICBpbmRleCA9PiAnY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgY3VycmVudCBhdHRhY2htZW50cwogICAgICAgIG15ICRSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAnVXRpbHNJbmdlc3RfR0VUJywKICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+IDAsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBJbmRleE5hbWUgPT4gXCVJbmRleE5hbWUsCiAgICAgICAgICAgICAgICBSZXF1ZXN0ICAgPT4gXCVSZXF1ZXN0LAogICAgICAgICAgICAgICAgQVBJICAgICAgID0+IFwlQVBJLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJlcGFyZSBwcm9jZXNzZWQgZGF0YSB0byBiZSBhcHBlbmRlZCB0byB0aGUgYXR0YWNobWVudCBhcnJheSBvZiB0aGUgQ0kKICAgICAgICBteSBAQXR0YWNobWVudEFycmF5ID0gKCk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFJlc3VsdC0+e0RhdGF9e19zb3VyY2V9e0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBzb3J0IG91dCBkZWxldGVkIGF0dGFjaG1lbnQKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfSBuZSAkUGFyYW17RGF0YX17RmlsZW5hbWV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRBcnJheSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQoKICAgICMgaWdub3JlIGV2ZW50cyBvdGhlciB0aGFuIENvbmZpZ0l0ZW1DcmVhdGUgb3IgQ29uZmlnSXRlbVVwZGF0ZQogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9ICF+IC9Db25maWdJdGVtQ3JlYXRlfENvbmZpZ0l0ZW1VcGRhdGUvICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBleGNsdXNpb25zCiAgICBteSAkRXhjbHVkZWRDbGFzc2VzICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpFeGNsdWRlZENJQ2xhc3NlcycpOwogICAgbXkgJEV4Y2x1ZGVkRGVwbFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSURlcGxveW1lbnRTdGF0ZXMnKTsKICAgICRFeGNsdWRlZENsYXNzZXMgICAgPSAkRXhjbHVkZWRDbGFzc2VzICAgID8geyBtYXAgeyAkXyA9PiAxIH0gQHskRXhjbHVkZWRDbGFzc2VzfSB9ICAgIDogdW5kZWY7CiAgICAkRXhjbHVkZWREZXBsU3RhdGVzID0gJEV4Y2x1ZGVkRGVwbFN0YXRlcyA/IHsgbWFwIHsgJF8gPT4gMSB9IEB7JEV4Y2x1ZGVkRGVwbFN0YXRlc30gfSA6IHVuZGVmOwoKICAgICMgZGVmaW5lIHRoZSBkZWZhdWx0IEFQSQogICAgbXkgJEFQSSA9ICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1DcmVhdGUnID8gJ19kb2MnIDogJ191cGRhdGUnOwoKICAgICMgZXhjbHVkZWQgY2xhc3NlcyBhbmQgZGVwbG95bWVudCBzdGF0ZXMKICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWRDbGFzc2VzIHx8IGRlZmluZWQgJEV4Y2x1ZGVkRGVwbFN0YXRlcyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gaWYgY2xhc3MgaXMgZXhjbHVkZWQKICAgICAgICBpZiAoIGRlZmluZWQgJEV4Y2x1ZGVkQ2xhc3NlcyAmJiAkRXhjbHVkZWRDbGFzc2VzLT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgaWYgdGhlIERlcGxveW1lbnRTdGF0ZSBpcyBjaGFuZ2VkLCBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW0gaGFzIHRvIGJlIGNyZWF0ZWQgb3IgZGVsZXRlZCBpbiBFUwogICAgICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWREZXBsU3RhdGVzICkgewoKICAgICAgICAgICAgIyBhIENJIHdpdGggbm8gb2xkIHN0YXRlIGFuZCBpbiBhIGN1cnJlbnQgZXhjbHVkZWQgc3RhdGUKICAgICAgICAgICAgIyBtZWFucyB0aGF0IHRoZSBDSSBoYXMganVzdCBiZWVuIGNyZWF0ZWQgaW4gdGhhdCBpbml0aWFsIGV4Y2x1ZGVkIHN0YXRlCiAgICAgICAgICAgICMgaW4gdGhhdCBjYXNlIGRvIG5vdGhpbmcgYW5kIGRvIG5vdCBldmVuIGJvdGhlciB0byBtYWtlIGFuIEVTIGNhbGwKICAgICAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRFeGNsdWRlZERlcGxTdGF0ZXMtPnsgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFuIG9sZCBzdGF0ZSBhbHJlYWR5IGV4aXN0cwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJE9sZERlcGxTdGF0ZSA9ICRTdGF0ZUxpc3QtPnsgJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gfTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgaWYgYm90aCB0aGUgb2xkIGFuZCB0aGUgbmV3IHN0YXRlIGFyZSBleGNsdWRlZAogICAgICAgICAgICAgICAgaWYgKCAkRXhjbHVkZWREZXBsU3RhdGVzLT57JE9sZERlcGxTdGF0ZX0gJiYgJEV4Y2x1ZGVkRGVwbFN0YXRlcy0+eyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiB0aGUgQ0kgd2FzIG1vdmVkIHRvIGFuIGV4Y2x1ZGVkIHN0YXRlLCBkZWxldGUgaXQKICAgICAgICAgICAgICAgIGVsc2lmICggISRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSAmJiAkRXhjbHVkZWREZXBsU3RhdGVzLT57ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBDSSB3YXMgbW92ZWQgb3V0IG9mIGFuIGV4Y2x1ZGVkIGRlcGxveW1lbnQgc3RhdGUsIGNyZWF0ZSBpdAogICAgICAgICAgICAgICAgIyBpbiB0aGF0IGNhc2Ugb3ZlcnJpZGUgdGhlIHByZXZpb3VzICRBUEkgdmFsdWUgdG8gJ19kb2MnCiAgICAgICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtEYXRhfXtPbGREZXBsU3RhdGV9ICYmICRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQVBJID0gJ19kb2MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZWxzZSBpdCB3YXMgYSBub3JtYWwgdHJhbnNpdGlvbiBiZXR3ZWVuIG5vbiBleGNsdWRlZCBzdGF0ZXMsIHNvIG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzY29wZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGFsbCBmaWVsZHMgd2hpY2ggaGF2ZSB0byBiZSBzdG9yZWQKICAgIG15ICRTdG9yZSAgICAgICAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpOwogICAgbXkgJFNlYXJjaCAgICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVNlYXJjaEZpZWxkcycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICVEYXRhVG9TdG9yZTsKICAgIGZvciBteSAkRmllbGQgKCBAeyAkU3RvcmUtPntCYXNpY30gfSwgQHsgJFNlYXJjaC0+e0Jhc2ljfSB9ICkgewogICAgICAgICREYXRhVG9TdG9yZXskRmllbGR9ID0gMTsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBAeyAkU3RvcmUtPntEeW5hbWljRmllbGR9IH0sIEB7ICRTZWFyY2gtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gZXEgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAgICAgJERhdGFUb1N0b3JleyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSByZXF1ZXN0CiAgICBteSAlQ29udGVudDsKICAgIG15ICRHZXREeW5hbWljRmllbGRzID0gKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWFyY2gtPntEeW5hbWljRmllbGR9ICkgfHwgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RvcmUtPntEeW5hbWljRmllbGR9ICkgKSA/IDEgOiAwOwogICAgbXkgJFZlcnNpb24gICAgICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgIyBpdGVyYXRlIG92ZXIgZHluYW1pYyBmaWVsZHMgYW5kIHJlcGxhY2UgdmFsdWUgd2l0aCBEaXNwbGF5VmFsdWVSZW5kZXIgcmVzdWx0CiAgICBpZiAoJEdldER5bmFtaWNGaWVsZHMpIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERk5hbWUgKCBncmVwIHsgJERhdGFUb1N0b3JleyRffSAmJiAkXyA9fiAvXkR5bmFtaWNGaWVsZF8vIH0ga2V5cyAlRGF0YVRvU3RvcmUgKSB7CiAgICAgICAgICAgIG15ICRERk5hbWVTaG9ydCA9IHN1YnN0ciAkREZOYW1lLCBsZW5ndGgoJ0R5bmFtaWNGaWVsZF8nKTsKICAgICAgICAgICAgbXkgJERGQ29uZmlnICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRERk5hbWVTaG9ydCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG15ICRERlZhbHVlU3RydWN0dXJlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57JERGTmFtZX0sCiAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uLT57JERGTmFtZX0gPSAkREZWYWx1ZVN0cnVjdHVyZS0+e1ZhbHVlfTsKICAgICAgICB9CiAgICB9CiAgICAlQ29udGVudCA9ICgKICAgICAgICAoIG1hcCB7ICRfID0+ICRWZXJzaW9uLT57JF99IH0ga2V5cyAlRGF0YVRvU3RvcmUgKSwKICAgICk7CiAgICAkQ29udGVudHtBdHRhY2htZW50c30gPSBbXTsKCiAgICBpZiAoICRBUEkgZXEgJ191cGRhdGUnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9Cn0KCj1oZWFkMiBIYW5kbGVSZXNwb25zZSgpCgpoYW5kbGUgcmVzcG9uc2UgZGF0YSBvZiB0aGUgY29uZmlndXJlZCByZW1vdGUgd2ViIHNlcnZpY2UuClRoaXMgd2lsbCBqdXN0IHJldHVybiB0aGUgZGF0YSB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgoKICAgIG15ICRSZXN1bHQgPSAkSW52b2tlck9iamVjdC0+SGFuZGxlUmVzcG9uc2UoCiAgICAgICAgUmVzcG9uc2VTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICMgc3VjY2VzcyBzdGF0dXMgb2YgdGhlIHJlbW90ZSB3ZWIgc2VydmljZQogICAgICAgIFJlc3BvbnNlRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAjIGluIGNhc2Ugb2Ygd2ViIHNlcnZpY2UgZXJyb3IKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUgcmVzcG9uc2UsIGZvcndhcmQgaXQKICAgIGlmICggISRQYXJhbXtSZXNwb25zZVN1Y2Nlc3N9ICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgICMgUGVyIGRlZmF1bHQgdGhlcmUgaXMgbm8gcmVzY2hlZHVsaW5nIG9mIEVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50IHJlcXVlc3RzLAogICAgIyBidXQgRXJyb3JIYW5kbGluZzo6UmVxdWVzdFJldHJ5IGNvdWxkIGhhdmUgYmVlbiBjb25maWd1cmVkIG1hbnVhbGx5LCBlLmcuIHZpYSB0aGUgYWRtaW4gaW50ZXJmYWNlLgogICAgaWYgKCAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSAmJiAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSA9fiBte1JlU2NoZWR1bGU9MX0gKSB7CgogICAgICAgICMgUmVzcG9uc2VDb250ZW50IGhhcyBVUkkgbGlrZSBwYXJhbXMsIGNvbnZlcnQgdGhlbSBpbnRvIGEgaGFzaAogICAgICAgIG15ICVRdWVyeVBhcmFtcyA9IHNwbGl0IC9bJj1dLywgJFBhcmFte0RhdGF9e1Jlc3BvbnNlQ29udGVudH07CgogICAgICAgICMgdW5lc2NhcGUgVVJJIHN0cmluZ3MgaW4gcXVlcnkgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW0gKCBzb3J0IGtleXMgJVF1ZXJ5UGFyYW1zICkgewogICAgICAgICAgICAkUXVlcnlQYXJhbXN7JFBhcmFtfSA9IFVSSTo6RXNjYXBlOjp1cmlfdW5lc2NhcGUoICRRdWVyeVBhcmFtc3skUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICAjIGZpeCBFeGVjdXRpb25UaW1lIHBhcmFtCiAgICAgICAgaWYgKCAkUXVlcnlQYXJhbXN7RXhlY3V0aW9uVGltZX0gKSB7CiAgICAgICAgICAgICRRdWVyeVBhcmFtc3tFeGVjdXRpb25UaW1lfSA9fiBzeyhcZCspXCsoXGQrKX17JDEgJDJ9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUmUtU2NoZWR1bGluZy4uLicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXJ5UGFyYW1zLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiAkUGFyYW17RGF0YX0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbik7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0KCk7CnVzZSBFbmNvZGU7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uIC0gQmFzZSBjbGFzcyBmb3IgYWxsIENJIE9wZXJhdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgSW5pdCgpCgppbml0aWFsaXplIHRoZSBvcGVyYXRpb24gYnkgY2hlY2tpbmcgdGhlIHdlYiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24gYW5kIGdhdGhlciBvZiB0aGUgZHluYW1pYyBmaWVsZHMKCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gMSwKICAgICk7CgpyZXR1cm5zOgoKICAgICRSZXR1cm4gPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZSwKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIE1lc3NhZ2UnLAogICAgfQoKPWN1dAoKc3ViIEluaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte1dlYnNlcnZpY2VJRH0gKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vIFdlYnNlcnZpY2VJRCEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgd2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbgogICAgbXkgJFdlYnNlcnZpY2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZSkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgV2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbicKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uOjpuZXcoKScsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBWYWxpZGF0ZUNsYXNzKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gQ2xhc3MgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlQ2xhc3MoCiAgICAgICAgQ2xhc3MgPT4gJ3NvbWUgY2xhc3MnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVDbGFzcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDbGFzc307CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17Q2xhc3N9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVEZXBsU3RhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBEZXBsU3RhdGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlRGVwbFN0YXRlKAogICAgICAgIERlbHBTdGF0ZSA9PiAnc29tZSBEZXBsU3RhdGUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVEZXBsU3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RGVwbFN0YXRlfTsKCiAgICAjIGNoZWNrIGZvciBDbGFzcyBzZW50CiAgICBteSAkSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17RGVwbFN0YXRlfSwKICAgICk7CgogICAgIyByZXR1cm4gZmFsc2UgaWYgaXRlbSBkYXRhIGlzIGVtcHR5CiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJdGVtRGF0YVJlZik7CgogICAgIyBsb29rcyBmaW5lCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5jaVN0YXRlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gSW5jaVN0YXRlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUluY2lTdGF0ZSgKICAgICAgICBJbmNpU3RhdGUgPT4gJ3NvbWUgSW5jaVN0YXRlJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5jaVN0YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0luY2lTdGF0ZX07CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtJbmNpU3RhdGV9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dFRleHQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dFRleHQoCiAgICAgICAgVmFsdWUgICAgID0+ICdzb21lIHZhbHVlJywKICAgICAgICBNYXhMZW5ndGggPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dFRleHQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGxlbmd0aAogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICAmJiAkUGFyYW17SW5wdXR9LT57TWF4TGVuZ3RofQogICAgICAgICYmIGxlbmd0aCAkUGFyYW17VmFsdWV9ID4gJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCm9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlKAogICAgICAgIFZhbHVlID0+ICcxOTc3LTEyLTEyJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIwNS8xOC8yMDExIgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7Mn0pIC8gKFxkezJ9KSAvIChcZHs0fSkgXHp9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQzIC4gJy0nIC4gJDEgLiAnLScgLiAkMiAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjIwMTEtMDUtMTgiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHs0fSAtIFxkezJ9IC0gXGR7Mn0gXHopIH14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDEgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIENvbnZlcnQgdGhlIHJhdyBkYXRhIHRvIGEgc3lzdGVtIGRhdGV0aW1lIG9iamVjdC4KICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRWYWx1ZSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICREYXRlVGltZU9iamVjdDsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGVUaW1lKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTk3Ny0xMi0xMiAxMjowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERhdGVUaW1lT2JqZWN0OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEludGVnZXIoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEludGVnZXIoCiAgICAgICAgVmFsdWUgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEludGVnZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhSXNJbnRlZ2VyKCRWYWx1ZSk7CgogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWlufSAmJiAkVmFsdWUgPCAkUGFyYW17VmFsdWVNaW59OwogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWF4fSAmJiAkVmFsdWUgPiAkUGFyYW17VmFsdWVNYXh9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gaWYgISRJdGVtTGlzdExvb2t1cHskVmFsdWV9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRDdXN0b21lcigKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBsb2dpbicsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0Q3VzdG9tZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhJFZhbHVlOwoKICAgIG15ICVDdXN0b21lckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgVXNlciA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICAjIGlmIGN1c3RvbWVyIGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBkYXRhYmFzZQogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVDdXN0b21lckRhdGEgKTsKCiAgICAjIGlmIFZhbGlkSUQgaXMgcHJlc2VudCwgY2hlY2sgaWYgaXQgaXMgdmFsaWQhCiAgICBpZiAoIGRlZmluZWQgJEN1c3RvbWVyRGF0YXtWYWxpZElEfSApIHsKCiAgICAgICAgIyByZXR1cm4gZmFsc2UgaWYgY3VzdG9tZXIgaXMgbm90IHZhbGlkCiAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExvb2t1cCggVmFsaWRJRCA9PiAkQ3VzdG9tZXJEYXRhe1ZhbGlkSUR9ICkgbmUgJ3ZhbGlkJzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5wdXRDdXN0b21lckNvbXBhbnkoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSgKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBjb21wYW55IG5hbWUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CgogICAgbXkgJUNvbXBhbnlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlMaXN0KAogICAgICAgIExpbWl0ID0+IDAsICAgICMgRGlzcGxheSBhbGwgQ3VzdG9tZXIgQ29tcGFuaWVzCiAgICApOwoKICAgIHJldHVybiBpZiAhJENvbXBhbnlMaXN0eyAkUGFyYW17VmFsdWV9IH07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZU1pbWVUeXBlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gTWltZVR5cGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlTWltZVR5cGUoCiAgICAgICAgTWltZVR5cGVJRCA9PiAnc29tZSBNaW1lVHlwZScsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZU1pbWVUeXBlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte01pbWVUeXBlfTsKCiAgICByZXR1cm4gaWYgJFBhcmFte01pbWVUeXBlfSAhfiBte1xBXHcrXC9cdytcen07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNoYXJzZXQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBDaGFyc2V0IGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUNoYXJzZXQoCiAgICAgICAgQ2hhcnNldCA9PiAnc29tZSBjaGFyc2V0JywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlQ2hhcnNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDaGFyc2V0fTsKCiAgICBteSAkQ2hhcnNldExpc3QgPSAkU2VsZi0+X0NoYXJzZXRMaXN0OwoKICAgIHJldHVybiB1bmxlc3MgJENoYXJzZXRMaXN0LT57ICRQYXJhbXtDaGFyc2V0fSB9OwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNvbnRlbnRUeXBlKCkKCmNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvbnRlbnQgdHlwZS4KClZhbGlkIHZhbHVlcyBmb3IgdGhlIE1JTUUgaGVhZGVyIEk8Q29udGVudC1UeXBlPiBhcmUgc3BlY2lmaWVkIGluIEw8UkZDIDIwNDV8aHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzIwNDUjc2VjdGlvbi01LjE+LgpUaGlzIHNwZWMgYWxsb3dzIGUuZy4gYmFyZSBjYXJyaWFnZSByZXR1cm4gYW5kIGJhY2tzbGFzaCBxdW90ZWQgbGluZSBmZWVkIGNoYXJhY3RlcnMgaW4gdGhlIHZhbHVlLiBCdXQgaW4gT1RPQk8gd2UKY2FuIGJlIG1vcmUgc3RyaWN0LiBUaGlzIGlzIGJlY2F1c2UgdXN1YWxseSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBtZWRpYSB0eXBlIGFuZCBpbiB0aGUgY2hhcnNldC4KVGh1cyB0aGUgZm9sbG93aW5nLCBzb21ld2hhdCBhcmJpdHJhcnksIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBUaGUgY2hhcmFjdGVyIGNhcnJpYWdlIHJldHVybiBpcyBub3QgYWxsb3dlZAoKPWl0ZW0gVGhlIGNoYXJhY3RlciBsaW5lIGZlZWQgaXMgbm90IGFsbG93ZWQKCj1pdGVtIFRoZSBNSU1FIHR5cGUsIGFrYSBtZWRpYSB0eXBlLCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHZhbHVlIGFuZCBtYXRjaGVzIEM8cXJ7XHcvXHd9aT4KCj1pdGVtIFRoZSBjaGFyYWN0ZXIgc2V0IGlzIGV4dHJhY3RlZCBieSBzb21lIHJlZ2V4ZXMgYW5kIGlzIHJlY29nbml6ZWQgYnkgdGhlIEM8RW5jb2RlPiBtb2R1bGUKCj1iYWNrCgo9Y3V0CgpzdWIgVmFsaWRhdGVDb250ZW50VHlwZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb250ZW50VHlwZX07CgogICAgbXkgJENvbnRlbnRUeXBlID0gJFBhcmFte0NvbnRlbnRUeXBlfTsKCiAgICAjIHByb2hpYml0IGNhcnJpYWdlIHJldHVybiBhbmQgbGluZSBmZWVkCiAgICByZXR1cm4gaWYgJENvbnRlbnRUeXBlID1+IG0vW1xyXG5dLzsKCiAgICAjIGNoZWNrIHRoZSBvcHRpb25hbCBDaGFyc2V0IHBhcnQKICAgIG15ICRDaGFyc2V0ID0gJyc7CiAgICBpZiAoICRDb250ZW50VHlwZSA9fiBtL2NoYXJzZXQ9L2kgKSB7CiAgICAgICAgJENoYXJzZXQgPSAkQ29udGVudFR5cGU7CiAgICAgICAgJENoYXJzZXQgPX4gcy8uKz9jaGFyc2V0PSgifCd8KShcdyspLyQyL2dpOwogICAgICAgICRDaGFyc2V0ID1+IHMvInwnLy9nOwogICAgICAgICRDaGFyc2V0ID1+IHMvKC4rPyk7LiovJDEvZzsKICAgIH0KCiAgICBpZiAoICRDaGFyc2V0ICYmICEkU2VsZi0+VmFsaWRhdGVDaGFyc2V0KCBDaGFyc2V0ID0+ICRDaGFyc2V0ICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhlIHJlcXVpcmVkIE1pbWVUeXBlIHBhcnQKICAgIG15ICRNaW1lVHlwZSA9ICcnOwogICAgaWYgKCAkQ29udGVudFR5cGUgPX4gbS9eKFx3K1wvXHcrKS9pICkgewogICAgICAgICRNaW1lVHlwZSA9ICQxOwogICAgICAgICRNaW1lVHlwZSA9fiBzLyJ8Jy8vZzsKICAgIH0KCiAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVNaW1lVHlwZSggTWltZVR5cGUgPT4gJE1pbWVUeXBlICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9va3MgdmFsaWQKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZSgpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCiAgICBvcgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTInLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMicsCgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMDUvMTgvMjAxMSIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezJ9KSAvIChcZHsyfSkgLyAoXGR7NH0pIFx6fXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMyAuICctJyAuICQxIC4gJy0nIC4gJDIgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIyMDExLTA1LTE4IgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9IFx6KSB9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQxIC4gJyAwMDowMDowMCc7CiAgICB9CgogICAgIyBDb252ZXJ0IHRoZSByYXcgZGF0YSB0byBhIHN5c3RlbSBkYXRldGltZSBvYmplY3QuCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFN0cmluZyA9PiAkVmFsdWUsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVGJyApOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZVRpbWUoKQoKcmVwbGFjZXMgdGhlIHVzZXIgdmFsdWUgd2l0aCBhIHN5c3RlbSB2YWxpZCB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+UmVwbGFjZUlucHV0RGF0ZVRpbWUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTIgMTI6MDA6MDAnLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMiAxMjowMDowMCc7Cgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7Cn0KCj1oZWFkMiBSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nKAogICAgICAgIFZhbHVlID0+ICdzb21lIHZhbHVlJywKICAgICAgICBDbGFzcyA9PiAnU29tZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MnCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9IDEyMwoKPWN1dAoKc3ViIFJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gJEl0ZW1MaXN0TG9va3VweyRWYWx1ZX07Cn0KCj1oZWFkMiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlKCkKCnJlcGxhY2VzIHRoZSBzeXN0ZW0gdmFsdWUgd2l0aCBhIHVzZXIgdmFsdWUuCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+SW52ZXJ0UmVwbGFjZUlucHV0RGF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMTItMTItMTk3NyAwMDowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9ICcxOTc3LTEyLTEyJywKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAkVmFsdWUgPX4gc3tcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9KSBbIF0gMDA6MDA6MDAgXHp9eyQxfXhtczsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgSW52ZXJ0UmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2coKQoKcmVwbGFjZXMgdGhlIHN5c3RlbSB2YWx1ZSB3aXRoIGEgdXNlciB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnc29tZSB2YWx1ZScKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgdGhlIHZhbHVlcyBmb3IgdGhlIEdlbmVyYWwgY2F0YWxvZyBjbGFzcwogICAgbXkgJEl0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJbnB1dH0tPntDbGFzc30sCiAgICApOwoKICAgICMgY3JlYXRlIGEgbG9rdXAgbGlzdAogICAgcmV0dXJuICRJdGVtTGlzdC0+eyRWYWx1ZX07Cn0KCj1oZWFkMiBDcmVhdGVBdHRhY2htZW50KCkKCmNyZWF0ZXMgYSBuZXcgYXR0YWNobWVudCBmb3IgdGhlIGdpdmVuIENvbmZpZ0l0ZW0uCgogICAgbXkgJFJlc3VsdCA9ICRDb21tb25PYmplY3QtPkNyZWF0ZUF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudCAgICAgID0+ICREYXRhLCAgICAgICAgICAgICAgICAgICAjIGZpbGUgY29udGVudCAoQmFzZTY0IGVuY29kZWQpCiAgICAgICAgQ29udGVudFR5cGUgID0+ICdzb21lIGNvbnRlbnQgdHlwZScsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICdzb21lIGZpbGVuYW1lJywKICAgICAgICBDb25maWdJdGVtSUQgPT4gNDU2LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBvawogICAgfQoKb3IKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nCiAgICB9Cgo9Y3V0CgpzdWIgQ3JlYXRlQXR0YWNobWVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudCBDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDcmVhdGVBdHRhY2htZW50KCkgR290IG5vICROZWVkZWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAleyAkUGFyYW17QXR0YWNobWVudH0gfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgQ29udGVudCAgICAgID0+IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudH0gKSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcywKICAgIH07Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfQ2hhcnNldExpc3QoKQoKcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBjaGFyc2V0cy4KCiAgICBteSAkQ2hhcnNldExpc3QgPSAkQ29tbW9uT2JqZWN0LT5fQ2hhcnNldExpc3QoCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgJENoYXJzZXRMaXN0ID0gewogICAgICAgICMuLi4KICAgICAgICBpc28tODg1OS0xICA9PiAxLAogICAgICAgIGlzby04ODU5LTE1ID0+IDEsCiAgICAgICAgTWFjUm9tYW4gICAgPT4gMSwKICAgICAgICB1dGY4ICAgICAgICA9PiAxLAogICAgICAgICMuLi4KICAgIH0KCj1jdXQKCnN1YiBfQ2hhcnNldExpc3QgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15ICVDaGFyc2V0SGFzaCA9IG1hcAogICAgICAgIHsgJF8gPT4gMSB9CiAgICAgICAgRW5jb2RlLT5lbmNvZGluZ3MoJzphbGwnKTsKCiAgICByZXR1cm4gXCVDaGFyc2V0SGFzaDsKfQoKPWhlYWQyIF9DaGVja0F0dGFjaG1lbnQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBhdHRhY2htZW50IHBhcmFtZXRlciBpcyB2YWxpZC4KCiAgICBteSAkQXR0YWNobWVudENoZWNrID0gJE9wZXJhdGlvbk9iamVjdC0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LCAgICAgICAgICAgICAgICAgICMgYWxsIGF0dGFjaG1lbnQgcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRBdHRhY2htZW50Q2hlY2sgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIH0KCiAgICAkQXR0YWNobWVudENoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja0F0dGFjaG1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0YWNobWVudCA9ICRQYXJhbXtBdHRhY2htZW50fTsKCiAgICAjIGNoZWNrIGF0dGFjaG1lbnQgaXRlbSBpbnRlcm5hbGx5CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29udGVudCBDb250ZW50VHlwZSBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPiROZWVkZWQgIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgQXR0YWNobWVudC0+Q29udGVudFR5cGUKICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gKSB7CgogICAgICAgICMgVGhlIE1JTUUgaGVhZGVyIGZpZWxkIENvbnRlbnQtVHlwZSBpcyBvbmx5IGluIHNvbWUgcGFydHMgY2FzZSBpbnNlbnNpdGl2ZSwKICAgICAgICAjIGJ1dCBsb3dlcmNhc2luZyB0aGUgd2hvbGUgc3RyaW5nIHNpbXBsaWZpZXMgdGhlIGhhbmRsaW5nIGluIE9UT0JPLgogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID0gbGMgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUNvbnRlbnRUeXBlKCBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSApICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBBdHRhY2htZW50LT5Db250ZW50VHlwZSBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSyB0aGVuIHJldHVybiBTdWNjZXNzCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBfQ2hlY2tWYWx1ZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRWYWx1ZUNoZWNrID0gJENvbW1vbk9iamVjdC0+X0NoZWNrVmFsdWUoCiAgICAgICAgVmFsdWUgICA9PiAkVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAjICRWYWx1ZSBjb3VsZCBiZSBhIHN0cmluZywgYSB0aW1lIHN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBuYW1lLCBvciBhIGludGVnZXIKICAgICAgICBJbnB1dCAgID0+ICRJbnB1dERlZmluaXRpb25IYXNoUmVmLCAgICAgICMgVGhlIGRlZmluaXRpb24gb2YgdGhlIGVsZW1lbnQgaW5wdXQgZXh0cmFjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGRlZmluaXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIGVhY2ggdmFsdWUKICAgICAgICBJdGVtS2V5ID0+ICdzb21lIGtleScsICAgICAgICAgICAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHZhbHVlIGFzIHNlbnQgaW4gdGhlIFNPQVAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1ZXN0CiAgICAgICAgUGFyZW50ICA9PiAnc29lbSBwYXJlbnQga2V5LT4nLCAgICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgZm9sbG93ZWQgYnkgLT4gb3IgZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igcm9vdCBrZXkgaXRlbXMKICAgICk7CgpyZXR1cm5zOgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LCiAgICB9CgpvcgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja1ZhbHVlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmVudCAgPSAkUGFyYW17UGFyZW50fTsKICAgIG15ICRJdGVtS2V5ID0gJFBhcmFte0l0ZW1LZXl9OwoKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRQYXJhbXtJbnB1dH0tPntSZXF1aXJlZH0gJiYgJFBhcmFte0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJFBhcmFte1ZhbHVlfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgIC4gIiBpcyByZXF1aXJlZCBhbmQgaXMgbWlzc2luZyEiLAogICAgICAgIH07CiAgICB9CgogICAgaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ1RleHQnIHx8ICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnVGV4dEFyZWEnICkgewoKICAgICAgICAjIHJ1biBUZXh0IHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXRUZXh0KCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBleGNlZGVzIHRoZSBtYXhpdW0gbGVuZ3RoISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGUnICkgewoKICAgICAgICAjIHJ1biBEYXRlIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdEYXRlVGltZScgKSB7CgogICAgICAgICMgcnVuIERhdGVUaW1lIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlVGltZSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgRGF0ZVRpbWUgZm9ybWF0ISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgIyBydW4gQ3VzdG9tZXIgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBjdXN0b21lciEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdDdXN0b21lckNvbXBhbnknICkgewoKICAgICAgICAjIHJ1biBDdXN0b21lckNvbXBhbnkgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIgY29tcGFueSEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdJbnRlZ2VyJyApIHsKCiAgICAgICAgIyBydW4gSW50ZWdlciB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0SW50ZWdlciglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgSW50ZWdlciBvciBvdXQgb2YgcmFuZ2UhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnR2VuZXJhbENhdGFsb2cnICkgewoKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nICckUGFyYW17SW5wdXR9LT57Q2xhc3N9JyEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIFRoZSB0eXBlIGlzIGR1bW15LCBkbyBub3RoaW5nCiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgX1JlcGxhY2VWYWx1ZSgpCgpyZXBsYWNlIHVzZXIgdmFsdWVzIHdpdGggc3lzdGVtIHJlYWR5IHZhbHVlcy4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5fUmVwbGFjZVZhbHVlKAogICAgICAgIFZhbHVlICAgPT4gJFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgIyAkVmFsdWUgY291bGQgYmUgYSBzdHJpbmcsIGEgdGltZSBzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgbmFtZSwgb3IgYSBpbnRlZ2VyCiAgICAgICAgSW5wdXQgICA9PiAkSW5wdXREZWZpbml0aW9uSGFzaFJlZiwgICAgICAjIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBlbGVtZW50IGlucHV0IGV4dHJhY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZyb20gdGhlIENvbmZpZ3VyYXRpb24gSXRlbSBkZWZpbml0aW9uIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIHJvb3Qga2V5IGl0ZW1zCiAgICApOwoKcmV0dXJuczoKCiAgICAkTmV3VmFsdWUgPSAkQU5ld1ZhbHVlCgo9Y3V0CgpzdWIgX1JlcGxhY2VWYWx1ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IHRoZSBsaXN0IG9mIGlucHV0IHR5cGVzIHRoYXQgbmVlZHMgdG8gYmUgcmVwbGFjZWQKICAgIG15ICVSZXBsYWNlSW5wdXRUeXBlcyA9ICgKICAgICAgICBEYXRlICAgICAgICAgICA9PiAxLAogICAgICAgIERhdGVUaW1lICAgICAgID0+IDEsCiAgICAgICAgR2VuZXJhbENhdGFsb2cgPT4gMSwKICAgICk7CiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewoKICAgICAgICAjIHJ1biBEYXRlVGltZSByZXBsYWNlCiAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPlJlcGxhY2VJbnB1dERhdGVUaW1lKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCj1oZWFkMiBfSW52ZXJ0UmVwbGFjZVZhbHVlKCkKCnJlcGxhY2UgaW50ZXJuYWwgdmFsdWVzIHdpdGggdXNlciB2YWx1ZXMuCgogICAgbXkgJE5ld1ZhbHVlID0gJE9wZXJhdGlvbk9iamVjdC0+X0ludmVydFJlcGxhY2VWYWx1ZSgKICAgICAgICBWYWx1ZSAgID0+ICRWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICMgJFZhbHVlIGNvdWxkIGJlIGEgc3RyaW5nLCBhIHRpbWUgc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzIG5hbWUsIG9yIGEgaW50ZWdlcgogICAgICAgIElucHV0ICAgPT4gJElucHV0RGVmaW5pdGlvbkhhc2hSZWYsICAgICAgIyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZWxlbWVudCBpbnB1dCBleHRyYWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmcm9tIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gZGVmaW5pdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3IgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciByb290IGtleSBpdGVtcwogICAgKTsKCnJldHVybnM6CgogICAgJE5ld1ZhbHVlID0gJEFOZXdWYWx1ZQoKPWN1dAoKc3ViIF9JbnZlcnRSZXBsYWNlVmFsdWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCB0aGUgbGlzdCBvZiBpbnB1dCB0eXBlcyB0aGF0IG5lZWRzIHRvIGJlIHJlcGxhY2VkCiAgICBteSAlUmVwbGFjZUlucHV0VHlwZXMgPSAoCiAgICAgICAgRGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICBHZW5lcmFsQ2F0YWxvZyA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gRGVsZXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1EZWxldGUnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbURlbGV0ZSBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byByZXR1cm4Kb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgICAgID0+ICdzb21lIGFnZW50IGxvZ2luJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgQ3VzdG9tZXJVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHJlcXVpcmVkCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICdzb21lIGN1c3RvbWVyIGxvZ2luJywKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLAoKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBvciBjdXN0b21lclVzZXJMb2dpbiBpcyBzZW50IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWzEyMywgNDU2XSwgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSBJRHMgbnVtYmVyIGluIE9UT0JPOjpJVFNNIChTZXJ2aWNlIGRlc2sgc3lzdGVtKQogICAgICAgICAgICBFcnJvciA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgbm90IHJldHVybiBlcnJvcnMKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuRXJyb3JDb2RlJwogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgRGVzY3JpcHRpb24nCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIG15ICRFcnJvck1lc3NhZ2UgPSAnJzsKCiAgICAjIGFsbCBuZWVkZWQgdmFyaWFibGVzCiAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSApICkgewogICAgICAgIEBDb25maWdJdGVtSURzID0gc3BsaXQgL1xzKixccyovLCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9OwogICAgfQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IEB7ICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogU3RydWN0dXJlIGZvciBDb25maWdJdGVtSUQgaXMgbm90IGNvcnJlY3QhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQERlbGV0ZWRDb25maWdJdGVtSURzOwoKICAgICMgc3RhcnQgQ29uZmlnSXRlbSBsb29wCiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgY2hlY2sgY3JlYXRlIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCBkZWxldGUgY29uZmlndXJhdGlvbiBpdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgY29uZmlnaXRlbQogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtIElEICcgLiAkQ29uZmlnSXRlbUlECiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uRGVsZXRlRXJyb3IiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQERlbGV0ZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCBcQERlbGV0ZWRDb25maWdJdGVtSURzICkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtcyEnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQERlbGV0ZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemGet.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0IC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gR2V0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICRTZWxmLT57T3BlcmF0aW9uTmFtZX0gPSAnQ29uZmlnSXRlbUdldCc7CgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1HZXQnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBDb25maWdJdGVtR2V0IE9wZXJhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBhYmxlIHRvIHJldHVybgpvbmUgb3IgbW9yZSBDb25maWdJdGVtIGVudHJpZXMgaW4gb25lIGNhbGwuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luICAgICAgICAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgcmVxdWlyZWQKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBpcyBzZW50IHRoZW4gUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCAxIGFzIGRlZmF1bHQuIElmIGl0J3Mgc2V0IHdpdGggdGhlIHZhbHVlIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRhY2htZW50cyBmb3IgYXJ0aWNsZXMgd2lsbCBiZSBpbmNsdWRlZCBvbiBDb25maWdJdGVtIGRhdGEKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgPT4gJzIwMTAxMDI3MDAwMDAxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICA9PiAnc29tZSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ3NvbWUgY2xhc3MnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgTGFzdFZlcnNpb25JRCAgICAgID0+IDEyMywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICAgID0+ICdzb21lIGluY2lkZW50IHN0YXRlIHR5cGUnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICA9PiAnc29tZSBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgPT4gJ3NvbWUgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgID0+ICdzb21lIGRlcGxveW1lbnQgc3RhdGUgdHlwZScsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgICAgID0+ICcyMDEwLTEwLTI3IDIwOjE1OjAwJwogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWUgID0+ICRWYWx1ZSwKCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICA9PiAieHh4eCIsICAgICAjIGFjdHVhbCBhdHRhY2htZW50IGNvbnRlbnRzLCBiYXNlNjQgZW5jb25kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICAgICAgICA9PiAiU3RkQXR0YWNobWVudC1UZXN0MS5wZGYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgICAgICAgID0+ICI0LjYgS0J5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZlcmVuY2VzICAgICAgICA9PiAkUHJlZmVyZW5jZXNIYXNoUmVmLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIC4gLiAuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1dlYnNlcnZpY2UuSW52YWxpZENvbmZpZ3VyYXRpb24nLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAoJFVzZXJJRCkgPSAkU2VsZi0+QXV0aCgKICAgICAgICAlUGFyYW0KICAgICk7CgogICAgaWYgKCAhJFVzZXJJRCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQXV0aEZhaWwiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF1dGhvcml6YXRpb24gZmFpbGluZyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBteSAkRXJyb3JNZXNzYWdlID0gJyc7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IHNwbGl0KCAvLC8sICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKTsKICAgIH0KICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9ICkgKSB7CiAgICAgICAgQENvbmZpZ0l0ZW1JRHMgPSBAeyAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uV3JvbmdTdHJ1Y3R1cmUiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbUlEIGlzIG5vdCBjb3JyZWN0ISIsCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRBdHRhY2htZW50cyA9ICRQYXJhbXtEYXRhfS0+e0F0dGFjaG1lbnRzfSB8fCAwOwogICAgbXkgJFJldHVybkRhdGEgID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgbXkgQEl0ZW07CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHN0YXJ0IENvbmZpZ0l0ZW0gbG9vcAogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGNoZWNrIGNyZWF0ZSBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkFjY2Vzc0RlbmllZCIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENhbiBub3QgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW0gZW50cnkKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgdW5uZWVkZWQgaXRlbXMKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9OwogICAgICAgIGRlbGV0ZSAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1CdW5kbGUgPSAkQ29uZmlnSXRlbTsKCiAgICAgICAgaWYgKCRBdHRhY2htZW50cykgewoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRGaWxlbmFtZTsKCiAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIG5leHQgaWYgbm90IGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnQpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50fSA9IGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57Q29udGVudH0gKTsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnREZXRhaWxzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSAnJzsKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERldGFpbHMgKSApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSBcQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZAogICAgICAgIHB1c2ggQEl0ZW0sICRDb25maWdJdGVtQnVuZGxlOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhc2NhbGFyIEBJdGVtICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTm9Db25maWdJdGVtRGF0YSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBDb25maWdJdGVtIGRhdGEgaW50byByZXR1cm4gc3RydWN0dXJlCiAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSAnJzsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCBcQEl0ZW0gKSApIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSBcQEl0ZW07CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gJFJldHVybkRhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemUpsert.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgICBxdyhwYWlycyk7CnVzZSBTY2FsYXI6OlV0aWwgcXcocmVmdHlwZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwc2VydCAtIEdlbmVyaWNJbnRlcmZhY2UgQ29uZmlndXJhdGlvbiBJdGVtIEFkZCBhbmQgVXBkYXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIE9wZXJhdGlvbiBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1VcHNlcnQnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjokU2VsZi0+e09wZXJhdGlvbk5hbWV9Iik7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVVwc2VydCBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byBhY2NlcHQKb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1aXJlZAogICAgICAgICAgICBQYXNzd29yZCAgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBVc2VyTG9naW4gaXMgc2VudCB0aGVuIFBhc3N3b3JkIGlzIHJlcXVpcmVkCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkCiAgICAgICAgICAgICAgICB7IC4uLiB9LAogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICA9PiAnMjAxMDEwMjcwMDAwMDEnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBvcHRpb25hbCBhcnJheS9oYXNoZXMKICAgIGZvciBteSAkT3B0aW9uYWwgKHF3KER5bmFtaWNGaWVsZCBBdHRhY2htZW50KSkgewogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkUGFyYW17RGF0YX0tPnskT3B0aW9uYWx9CiAgICAgICAgICAgICYmICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57JE9wdGlvbmFsfSApCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+eyRPcHRpb25hbH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkT3B0aW9uYWwgcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3Igbm90IHZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJhbnNmb3JtIHNpbmdsZSBDSXMgdG8gYW4gYXJyYXkgcmVmZXJlbmNlCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSApICkgewogICAgICAgICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSA9IFsgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW19IF07CiAgICB9CgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX17Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbSBpcyBub3QgY29ycmVjdCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFJlcXVpcmVkQXR0cmlidXRlcyA9IHF3KENsYXNzIERlcGxveW1lbnRTdGF0ZSBJbmNpZGVudFN0YXRlKTsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBOZWVkICROZWVkZWQgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgd2Vic2VydmljZSBjb25maWd1cmF0aW9uCiAgICBteSAkV2Vic2VydmljZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICAjIGdldCBvcGVyYXRpb24gY29uZmlnCiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2UtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkU2VsZi0+e09wZXJhdGlvbn0gfTsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBidWlsZCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyBsb29rdXAKICAgIG15ICVERlJlZkxvb2t1cDsKICAgIG15ICVERkxlbnNMb29rdXA7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGRMaXN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICkgfHwgW107CgogICAgREZDT05GSUc6CiAgICBmb3IgbXkgJERGQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewoKICAgICAgICBuZXh0IERGQ09ORklHIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwoKICAgICAgICBpZiAoICRERkNvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0xlbnMnICkgewogICAgICAgICAgICAkREZMZW5zTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkREZDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJERGUmVmTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIGR5bmFtaWMgZmllbGQgcmVmZXJlbmNlIGFuZCBsZW5zIHZhbHVlcyB0byBzZXQgdGhlbSBhZnRlciBjb25maWcgaXRlbSBhZGQgLyB1cGRhdGUKICAgIG15ICVBbGxERlNoaWZ0ZWRWYWx1ZXM7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15IEBDSXNIYW5kbGVkOwogICAgQ0k6CiAgICBmb3IgbXkgJFJlbW90ZUNJRGF0YSAoIEB7ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSB9ICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCByZW1vdGUgQ0kgc3RydWN0dXJlIGZvdW5kLiBTa2lwcGluZyBpdGVtLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlcyA9IG1hcCB7ICRfID0+ICRSZW1vdGVDSURhdGEtPnskX30gfSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CgogICAgICAgICMgZ2V0IElEcyBmb3IgQ2xhc3MsIERlcGwtIGFuZCBJbmNpU3RhdGUKICAgICAgICBmb3IgbXkgJEN1cnJlbnRDSSAoIHNvcnQga2V5cyAlQ0lDbGFzc01hcHBpbmcgKSB7CgogICAgICAgICAgICAjIGNyZWF0ZS9nZXQgbG9va3VwIGZvciBnZW5lcmFsIGNhdGFsb2cgaXRlbXMKICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgaWYgKCAkR2VuZXJhbENhdGFsb2dJdGVtTG9va3VweyAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0gfS0+eyAkUmVxdWlyZWRBdHRyaWJ1dGVzeyRDdXJyZW50Q0l9IH0gKSB7CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dJdGVtID0gJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgIUlzSGFzaFJlZldpdGhEYXRhKCRHZW5lcmFsQ2F0YWxvZ0l0ZW0pCiAgICAgICAgICAgICAgICAgICAgfHwgIUlzU3RyaW5nV2l0aERhdGEoICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGxvb2tpbmcgdXAgJEN1cnJlbnRDSSAnJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfScuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRvIGxvb2t1cAogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVxdWlyZWRBdHRyaWJ1dGVzeyAkQ3VycmVudENJIC4gJ0lEJyB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbS0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUmVtb3RlQ0lEYXRhLT57Q2xhc3NJRH07CiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICAkQ2xhc3NJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9IH07CiAgICAgICAgfQogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyB2YWxpZGF0ZSBkeW5hbWljIGZpZWxkcwogICAgICAgIERBVEE6CiAgICAgICAgZm9yIG15ICREYXRhICggcGFpcnMgJFJlbW90ZUNJRGF0YS0+JSogKSB7CiAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSAkRGF0YS0+QCo7CgogICAgICAgICAgICBuZXh0IERBVEEgdW5sZXNzICggJEtleSA9fiAvXkR5bmFtaWNGaWVsZF8vICk7CgogICAgICAgICAgICBpZiAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfKD88UGxhaW5GaWVsZE5hbWU+W0EtWmEtejAtOS1dKykvICkgewogICAgICAgICAgICAgICAgbXkgJFBsYWluRmllbGROYW1lID0gJCt7UGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaXMgaW4gY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRQbGFpbkZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IER5bmFtaWNGaWVsZC0+TmFtZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JFBsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIHZhbHVlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBzdHJ1Y3R1cmVzIGFyZSBzdHJpbmcgYW5kIGFycmF5LCBubyBkYXRhIGluc2lkZSBpcyBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICFJc1N0cmluZygkVmFsdWUpICYmIHJlZiAkVmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkZpZWxkVmFsdWVWYWxpZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVmFsaWRhdGVWYWx1ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogRHluYW1pY0ZpZWxkLT5WYWx1ZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJElkZW50aWZpZXIgPSAkT3BlcmF0aW9uQ29uZmlnLT57ICdJZGVudGlmaWVyJyAuICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0gfTsKICAgICAgICBpZiAoICEkSWRlbnRpZmllciApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgaW1wb3J0aW5nIGl0ZW1zIGluIGNsYXNzICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9IC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ0lzSGFuZGxlZCwge307CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoaXMgaXRlbSBleGlzdHMgKHVwZGF0ZSkgb3IgaXMgbmV3IChjcmVhdGUpCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgIyBwcmVwYXJlIHNlYXJjaAogICAgICAgIG15ICVTZWFyY2hQYXJhbSA9ICgKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgUXVlcnlDb25kaXRpb24gPT4gMCwKICAgICAgICApOwogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoICRJZGVudGlmaWVyLT5AKiApIHsKCiAgICAgICAgICAgICMgaWYgbnVtYmVyIG9yIGNvbmZpZyBpdGVtIGlkIGFyZSBkZWZpbmVkIGFzIGlkZW50aWZpZXJzLCB1c2Ugb25seSB0aGlzCiAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgIGlmICggJFJlbW90ZUNJRGF0YS0+e051bWJlcn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdDb25maWdJdGVtSUQnICkgewogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJlbW90ZUNJRGF0YS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW0pICkgewogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAnJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NsYXNzZXMnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte0NsYXNzZXN9ID0gWyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtOYW1lfSA9ICRSZW1vdGVDSURhdGEtPntOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0RlcGxTdGF0ZXMnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte0RlcGxTdGF0ZXN9ID0gWyAkUmVtb3RlQ0lEYXRhLT57RGVwbG95bWVudFN0YXRlfSBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSA9fiAvXkR5bi8gKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17JEF0dHJpYnV0ZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRSZW1vdGVDSURhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCB1c2UgJEF0dHJpYnV0ZSBhcyBJZGVudGlmaWVyIC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7fTsKCiAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICAgICAjIGF2b2lkIGV4ZWN1dGluZyBhIHNlYXJjaCB3aXRoIGVtcHR5IHNlYXJjaCBwYXJhbXMgKGV4Y2x1ZGluZyAnUmVzdWx0ID0+ICJBUlJBWSInIGZyb20gbWVhbmluZ2Z1bCBwYXJhbXMpCiAgICAgICAgICAgIG15ICRQZXJmb3JtU2VhcmNoID0gMDsKICAgICAgICAgICAgU0VBUkNIUEFSQU1LRVk6CiAgICAgICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW1LZXkgKCBrZXlzICVTZWFyY2hQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlYXJjaFBhcmFtS2V5IG5lICdSZXN1bHQnICYmICRTZWFyY2hQYXJhbXskU2VhcmNoUGFyYW1LZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRQZXJmb3JtU2VhcmNoID0gMTsKCiAgICAgICAgICAgICAgICAgICAgbGFzdCBTRUFSQ0hQQVJBTUtFWTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRQZXJmb3JtU2VhcmNoKSB7CgogICAgICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCglU2VhcmNoUGFyYW0pOwoKICAgICAgICAgICAgICAgIGlmICggc2NhbGFyIEBDb25maWdJdGVtSURzID4gMSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVycyA9IGpvaW4oICc7JywgbWFwIHsiJF8gPT4gJFNlYXJjaFBhcmFteyRffSJ9IGtleXMgJVNlYXJjaFBhcmFtICk7CgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCB1c2UgYW1iaWd1b3VzIHNlYXJjaCByZXN1bHQgLSBza2lwcGluZy4gUGFyYW1ldGVyczogJFNlYXJjaFBhcmFtZXRlcnM7IiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUlEc1swXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uOwogICAgICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgICAgICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCB3cml0ZSBjb25maWd1cmF0aW9uIGl0ZW0hIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRDb25maWdJdGVtSUQgJiYgISRSZW1vdGVDSURhdGEtPntOYW1lfSApIHsKICAgICAgICAgICAgbXkgJE5vdGljZUluZm8gPSAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfSA/ICJOdW1iZXI6ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9OyIgOiAnJzsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzc2luZyAnTmFtZScgcGFyYW1ldGVyIGZvciBjcmVhdGluZyBhIENJLiBTa2lwcGluZyBpdGVtLiAkTm90aWNlSW5mbyIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2htZW50TGlzdDsKICAgICAgICBpZiAoIGRlZmluZWQgJFJlbW90ZUNJRGF0YS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAgICAgIyBpc29sYXRlIEF0dGFjaG1lbnQgcGFyYW1ldGVyCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJFJlbW90ZUNJRGF0YS0+e0F0dGFjaG1lbnR9OwoKICAgICAgICAgICAgIyBob21vZ2VuYXRlIGlucHV0IHRvIGFycmF5CiAgICAgICAgICAgIGlmICggcmVmICRBdHRhY2htZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRMaXN0LCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBBdHRhY2htZW50TGlzdCA9IEB7JEF0dGFjaG1lbnR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIEF0dGFjaG1lbnQgaW50ZXJuYWwgc3RydWN0dXJlCiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudEl0ZW0gKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnRJdGVtKSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgcGFyYW1ldGVyIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJEF0dGFjaG1lbnRJdGVtLT4lKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFyZWZ0eXBlICRBdHRhY2htZW50SXRlbS0+eyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSBsZWFkaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudEl0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xBXHMrfXt9OwoKICAgICAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRJdGVtLT57JEF0dHJpYnV0ZX0gPX4gc3tccytcen17fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBBdHRhY2htZW50IGF0dHJpYnV0ZSB2YWx1ZXMKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50Q2hlY2sgPSAkU2VsZi0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50SXRlbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJEF0dGFjaG1lbnRDaGVjay0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoICV7JEF0dGFjaG1lbnRDaGVja30gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzaGlmdCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyB2YWx1ZXMgZnJvbSBjb25maWdpdGVtIGRhdGEgdG8gc2V0IHRoZW0gYWZ0ZXJ3YXJkcwogICAgICAgIG15ICVERlNoaWZ0ZWRWYWx1ZXM7CiAgICAgICAgREZOQU1FOgogICAgICAgIGZvciBteSAkREZOYW1lICgga2V5cyAlREZSZWZMb29rdXAsIGtleXMgJURGTGVuc0xvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZOQU1FIHVubGVzcyBkZWZpbmVkICRSZW1vdGVDSURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKCiAgICAgICAgICAgICRERlNoaWZ0ZWRWYWx1ZXN7JERGTmFtZX0gPSBkZWxldGUgJFJlbW90ZUNJRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPiUqLAogICAgICAgICAgICAgICAgJVJlcXVpcmVkQXR0cmlidXRlcywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0RlcGxveW1lbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7SW5jaWRlbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBFeHRlcm5hbFNvdXJjZSA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRXJyb3Igd2hpbGUgdXBkYXRpbmcgQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPiUqLAogICAgICAgICAgICAgICAgJVJlcXVpcmVkQXR0cmlidXRlcywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGNyZWF0aW5nIENJIHdpdGggTmFtZSAnJFJlcXVpcmVkQXR0cmlidXRlc3tOYW1lfScsIENsYXNzICckUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzfScgKENsYXNzSUQ6ICckUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzSUR9JykuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRBbGxERlNoaWZ0ZWRWYWx1ZXN7JENvbmZpZ0l0ZW1JRH0gPSBcJURGU2hpZnRlZFZhbHVlczsKCiAgICAgICAgIyBoYW5kbGUgY29uZmlnIGl0ZW0gYXR0YWNobWVudHMKICAgICAgICBpZiAoQEF0dGFjaG1lbnRMaXN0KSB7CgogICAgICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3aGlsZSBkZWxldGluZyBleGlzdGluZyBhdHRhY2htZW50IHdpdGggTmFtZSAnJEZpbGVuYW1lJyBmb3IgQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUlELiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudExpc3QpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gYXR0YWNobWVudHMKCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+JSosCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGFkZGluZyBhdHRhY2htZW50IHdpdGggTmFtZSAnJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0nIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFJlbW90ZUNJRGF0YS0+e05hbWV9LAogICAgICAgIH07CiAgICB9CgogICAgIyBzZXQgZHluYW1pYyBmaWVsZCByZWZlcmVuY2UgYW5kIGxlbnMgdmFsdWVzIGFmdGVyIGFkZGluZyAvIHVwZGF0aW5nIGFsbCBjb25maWcgaXRlbXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ0lERlBhaXIgKCBwYWlycyAlQWxsREZTaGlmdGVkVmFsdWVzICkgewoKICAgICAgICBteSAoICRDb25maWdJdGVtSUQsICRERlZhbHVlcyApID0gJENJREZQYWlyLT5AKjsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRERlZhbHVlcyk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEgZm9yIHZlcnNpb24gaWQKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGZpcnN0LCBzZXQgZHluYW1pYyBmaWVsZCByZWZlcmVuY2UgdmFsdWVzCiAgICAgICAgREZSRUY6CiAgICAgICAgZm9yIG15ICRERlJlZk5hbWUgKCBrZXlzICVERlJlZkxvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZSRUYgdW5sZXNzIGV4aXN0cyAkREZWYWx1ZXMtPnskREZSZWZOYW1lfTsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRERlJlZkxvb2t1cHskREZSZWZOYW1lfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJERGVmFsdWVzLT57JERGUmVmTmFtZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZWNvbmQsIHNldCBkeW5hbWljIGZpZWxkIGxlbnMgdmFsdWVzCiAgICAgICAgREZMRU5TOgogICAgICAgIGZvciBteSAkREZMZW5zTmFtZSAoIGtleXMgJURGTGVuc0xvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZMRU5TIHVubGVzcyBleGlzdHMgJERGVmFsdWVzLT57JERGTGVuc05hbWV9OwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGTGVuc0xvb2t1cHskREZMZW5zTmFtZX0sCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRERlZhbHVlcy0+eyRERkxlbnNOYW1lfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4geyBDb25maWdJdGVtID0+IFxAQ0lzSGFuZGxlZCB9LAogICAgfTsKfQoKMTsK</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtIENvbmZpZ0l0ZW1TZWFyY2ggT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVNlYXJjaCBPcGVyYXRpb24uIFRoaXMgd2lsbCByZXR1cm4gYSBDb25maWdJdGVtIElEIGxpc3QuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBVc2VyTG9naW4gPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgUGFzc3dvcmQgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgVXNlckxvZ2luIGlzIHNlbnQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgc2V0IHRvIDAgdG8gc2VhcmNoIGZpZWxkcyB3aXRoIGEgdmFsdWUgcHJlc2VudC4KICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBMaWtlICAgICAgICAgICAgICA9PiAndmFsdWUqJywgICAgICAgICAgICAgICAgIyAiZXF1YWxzIiBvcGVyYXRvciB3aXRoIHdpbGRjYXJkIHN1cHBvcnQKICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAwMS0wMS0wMSAwMTowMTowMScsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMDItMDItMDIgMDI6MDI6MDInLAogICAgICAgIH0sCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgYW5kIFNvcnRCeSAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiAnRG93bicsICAgIyBEb3dufFVwCiAgICAgICAgU29ydEJ5ICA9PiAnTnVtYmVyJywgIyBDb25maWdJdGVtfE51bWJlcnxOYW1lfERlcGxTdGF0ZXxJbmNpU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHxDdXJEZXBsU3RhdGV8Q3VySW5jaVN0YXRlfEFnZXxDcmVhdGVkfENoYW5nZWQKCiAgICAgICAgIyBPcmRlckJ5IGFuZCBTb3J0QnkgYXMgQVJSQVkgZm9yIHN1YiBzb3J0aW5nIChvcHRpb25hbCkKICAgICAgICBPcmRlckJ5ID0+IFsnRG93bicsICdVcCddLAogICAgICAgIFNvcnRCeSAgPT4gWydDb25maWdJdGVtJywgJ051bWJlciddLAogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkluaXQoCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdXZWJzZXJ2aWNlLkludmFsaWRDb25maWd1cmF0aW9uJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhdXRoZW50aWNhdGUgdXNlcgogICAgbXkgKCRVc2VySUQpID0gJFNlbGYtPkF1dGgoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaC5BdXRoRmFpbCcsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb25maWdJdGVtU2VhcmNoOiBBdXRob3JpemF0aW9uIGZhaWxpbmchIiwKICAgICkgaWYgISRVc2VySUQ7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gPSAkUGFyYW17RGF0YX0tPntMaW1pdH0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0KICAgICAgICB8fCA1MDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkUGFyYW17RGF0YX0tPntTb3J0Qnl9CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFte0RhdGF9LT57T3JkZXJCeX0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBwYXJhbWV0ZXIgZnJvbSBkYXRhCiAgICBteSAlR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcyggJXsgJFBhcmFte0RhdGF9IH0gKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkcwogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSAkU2VsZi0+X0dldER5bmFtaWNGaWVsZHMoICV7ICRQYXJhbXtEYXRhfSB9ICk7CgogICAgIyBwZXJmb3JtIGNvbmZpZ2l0ZW0gc2VhcmNoCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgU29ydEJ5ICAgICA9PiAkU2VsZi0+e1NvcnRCeX0sCiAgICAgICAgT3JkZXJCeSAgICA9PiAkU2VsZi0+e09yZGVyQnl9LAogICAgICAgIExpbWl0ICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4ge30sCiAgICB9OwoKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9HZXRQYXJhbXMoKQoKZ2V0IHNlYXJjaCBwYXJhbWV0ZXJzLgoKICAgIG15ICVHZXRQYXJhbSA9IF9HZXRQYXJhbXMoCiAgICAgICAgJVBhcmFtcywgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIGNvbmZpZ2l0ZW0gcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICVHZXRQYXJhbSA9IHsKICAgICAgICBBbGxvd2VkUGFyYW1zID0+ICdXaXRoQ29udGVudCcsICMgcmV0dXJuIG5vdCBlbXB0eSBwYXJhbWV0ZXJzIGZvciBzZWFyY2gKICAgIH0KCj1jdXQKCnN1YiBfR2V0UGFyYW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgZm9yIG15ICRJdGVtICgKICAgICAgICBxdyhDb25maWdJdGVtSUQgTnVtYmVyIE5hbWUgQ2xhc3NlcyBDbGFzc0lEcyBEZXBsU3RhdGVzIERlcGxTdGF0ZUlEcwogICAgICAgIEN1ckRlcGxTdGF0ZXMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZXMgSW5jaVN0YXRlSURzIEN1ckluY2lTdGF0ZXMKICAgICAgICBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkgT3JkZXJCeSBTb3J0QnkpCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGdldCBzZWFyY2ggYXJyYXkgcGFyYW1zCiAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICBAVmFsdWVzID0gQHsgJFBhcmFteyRJdGVtfSB9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSApIHsKICAgICAgICAgICAgQFZhbHVlcyA9ICggJFBhcmFteyRJdGVtfSApOwogICAgICAgIH0KICAgICAgICAkR2V0UGFyYW17JEl0ZW19ID0gXEBWYWx1ZXMgaWYgc2NhbGFyIEBWYWx1ZXM7CiAgICB9CgogICAgbXkgQFByZWZpeGVzID0gKAogICAgICAgICdDb25maWdJdGVtQ3JlYXRlVGltZScsCiAgICAgICAgJ0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZScsCiAgICApOwoKICAgIG15IEBQb3N0Zml4ZXMgPSAoCiAgICAgICAgJ09sZGVyTWludXRlcycsCiAgICAgICAgJ05ld2VyTWludXRlcycsCiAgICAgICAgJ09sZGVyRGF0ZScsCiAgICAgICAgJ05ld2VyRGF0ZScsCiAgICApOwoKICAgIGZvciBteSAkUHJlZml4IChAUHJlZml4ZXMpIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRQcmVmaXh9ICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9ICRQYXJhbXskUHJlZml4fTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL15ccysvL2c7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFBvc3RmaXggKEBQb3N0Zml4ZXMpIHsKICAgICAgICAgICAgbXkgJEl0ZW0gPSAkUHJlZml4IC4gJFBvc3RmaXg7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9ICRQYXJhbXskSXRlbX07CgogICAgICAgICAgICAgICAgIyByZW1vdmUgd2hpdGUgc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskSXRlbX0gPX4gcy9ccyskLy9nOwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9fiBzL15ccysvL2c7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVHZXRQYXJhbTsKCn0KCj1oZWFkMiBfR2V0RHluYW1pY0ZpZWxkcygpCgpnZXQgc2VhcmNoIHBhcmFtZXRlcnMuCgogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSBfR2V0RHluYW1pY0ZpZWxkcygKICAgICAgICAlUGFyYW1zLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgY29uZmlnaXRlbSBwYXJhbWV0ZXJzCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSB7CiAgICAgICAgJ0FsbEFsbG93ZWRERicgPT4gJ1dpdGhEYXRhJywgICAjIHJldHVybiBub3QgZW1wdHkgcGFyYW1ldGVycyBmb3Igc2VhcmNoCiAgICB9Cgo9Y3V0CgpzdWIgX0dldER5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBjb25maWdpdGVtIHNlYXJjaAogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBjb25maWdpdGVtIG9iamVjdAogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgbXkgJUR5bmFtaWNGaWVsZHNSYXc7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgewogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRzUmF3eyAkUGFyYW17RHluYW1pY0ZpZWxkfS0+e05hbWV9IH0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICVEeW5hbWljRmllbGRzUmF3ID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGR9IH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIENvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgd2ViIHNlcnZpY2UuCiAgICAgICAgZm9yIG15ICRQYXJhbWV0ZXJOYW1lICggc29ydCBrZXlzICVQYXJhbSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW1ldGVyTmFtZSA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRcLV0rICkgXHp9eG1zICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNSYXd7JDF9ID0gJFBhcmFteyRQYXJhbWV0ZXJOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZAogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZQogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZHNSYXd7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICk7CgogICAgICAgIG15ICVTZWFyY2hPcGVyYXRvcnMgPSAleyAkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gfTsKCiAgICAgICAgZGVsZXRlICRTZWFyY2hPcGVyYXRvcnN7TmFtZX07CgogICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSBcJVNlYXJjaE9wZXJhdG9yczsKICAgIH0KCiAgICAjIGFsbG93IGZyZWUgZmllbGRzCgogICAgcmV0dXJuICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ar_SA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmFyX1NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfYqNmK2KfZhtin2Kog2KfZhNiq2LTYutmK2YQg2KfZhNi52KfZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNi32YTYqNin2Kog2KfZhNmI2KfYsdiv2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNin2LPYqtis2KfYqNipINin2YTYtdin2K/YsdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn2KXYr9in2LHYqSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn2KrYutmK2YrYsSDYqti52LHZitmBINin2YTZgdim2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrZitmK2LEg2KrYudix2YrZgSDYp9mE2K/ZiNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn2YfZhtinINmK2YXZg9mG2YMg2KfYs9iq2YrYsdin2K8g2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCDYp9mE2KrZiiDYqti52LHYtiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYo9mD2KvYsSDYtNmK2YjYudmL2Kcg2YTYr9mK2YbYpy4g2YrYsdis2Ykg2YXZhNin2K3YuNipINij2YYg2KjYudi2INin2YTYqtmH2YrYptipINin2YTYpdi22KfZgdmK2Kkg2YLYryDYqtmD2YjZhiDZhdi32YTZiNio2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ9iq2K3Yr9mK2Ksg2KfZhNmD2YrYp9mG2KfYqiDYp9mE2K3Yp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ9in2LPYqtmK2LHYp9ivINit2LLZhSDZgdim2KfYqiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9mB2KbYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn2K/ZiNixINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9iq2LXZgdmK2Kkg2YTZhNmB2KbYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9it2K/YryDZgdim2Kkg2YXZhiDYp9mE2YLYp9im2YXYqSDZhNil2YbYtNin2KEg2LnZhti12LEg2KrZg9mI2YrZhiDYrNiv2YrYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfYp9mE2YHYptipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn2KfZhNil2KzYsdin2KEg2KfZhNis2YXYp9i52Yog2YTYudmG2LXYsSDYp9mE2KrZh9mK2KbYqSBJVFNNSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNmG2LTYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9it2KfZhNipINin2YTYrdin2K/Yqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfYsdin2KjYtyDYpdmE2Ykg2KLYrtixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2LrZitixINi12KfZhNitISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNii2K7YsSDYp9mE2YXYsdin2K8g2KfZhNix2KjYtyDYqNmHLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9mH2YQg2KrYsdmK2K8g2K3Zgtin2Ysg2K3YsNmBINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYp9ifJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9in2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9in2YTYp9iz2YUg2YLZitivINin2YTYp9iz2KrYrtiv2KfZhSDYqNin2YTZgdi52YQg2YXZhiDZgtio2YQg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYqNin2YTYsdmC2YUgKNin2YTYo9ix2YLYp9mFKSDYp9mE2KrYp9mE2YrYqTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfYsdmC2YUg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9ix2YLZhSDYpdi12K/Yp9ixINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9ix2YLZhSDYp9mE2KXYtdiv2KfYsSDZhdiz2KrYrtiv2YUg2KjYp9mE2YHYudmEINmF2YYg2YLYqNmEINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KjYp9mE2LHZgtmFICjYp9mE2KPYsdmC2KfZhSkg2KfZhNiq2KfZhNmK2Kk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNit2KfYr9irJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICfYqtin2LHZitiuINi52YbYtdixINin2YTYqtmD2YjZitmGOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfYp9mE2YXYrdiq2YjZiSDYp9mE2KrYp9ix2YrYrtmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfYpdmG2LTYp9ihINin2YTZiNmC2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn2LnYsdi2INin2YTYqtmD2KjZitixJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9i52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YTZg9mEINi12YHYrdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINio2YrYp9mG2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfYrdiv2K8g2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNinJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn2KjYr9ihINin2YTYqNit2KsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn2KfZhNio2K3YqyDYo9mK2LbYp9mLINmB2Yog2KfZhNil2LXYr9in2LHYp9iqINin2YTYs9in2KjZgtip2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfYt9ix2YrZgtipINi52LHYtiDYp9mE2LTYrNix2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9mF2LPYqtmI2Ykg2KfZhNi52YXZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9in2YTYqtmD2KjZitixL9in2YTYqti12LrZitixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ9iq2YUg2KfZhNmI2LXZiNmEINil2YTZiSDYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTZhdiz2KrZiNmJINin2YTYsdmI2KfYqNi3INmE2YAgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfZhdi52YTZiNmF2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixINin2YTYrdin2YTZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9ii2K7YsSDYqti52K/ZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9ii2K7YsSDYqti62YrZitixINmF2YYg2YLYqNmEJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZh9mK2KbYqSDYp9mE2K7Yp9i12Kkg2KjZgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn2YbZiNi5INin2YTZg9in2KbZhic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ9iq2LXZgdmK2Kkg2K3Ys9ioINin2YTZhtmI2LknOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfYs9mK2KrZhSDYp9iz2KrZitix2KfYryDYp9mE2YHYptin2Kog2KfZhNiq2KfZhNmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn2LPZitiq2YUg2KfYs9iq2YrYsdin2K8g2KfZhNij2K/ZiNin2LEg2KfZhNiq2KfZhNmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn2YTYp9it2Lgg2KPZhtmHINiz2YrYqtmFINij2YrYttmL2Kcg2KXZhti02KfYoSDYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDYp9mE2YXZgtin2KjZhNipINmI2YHYptin2KogR2VuZXJhbENhdGFsb2cg2KfZhNi52KfZhdipINmI2YTZhiDZitmD2YjZhiDZh9mG2KfZgyDYpdiy2KfZhNipINiq2YTZgtin2KbZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9mH2YQg2KrYsdmK2K8g2KfZhNmF2KrYp9io2LnYqdifJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9iq2K3Yqtin2Kwg2KXZhNmJINij2YXYq9mE2KkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ9in2YTYqti52LHZitmBINmE2Kcg2YrZiNis2K8g2KrYrNiy2KbYqSBZQU1MINi12KfZhNit2KkuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn2YbYuNix2Kkg2LnYp9mF2Kk6INi52YbYtdixINiq2YPZiNmK2YYgSVRTTUl0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAoQ29uZmlnSXRlbUlEKSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfYqtit2KrYp9isINil2YTZiSDYudmG2LXYsSDYqtmD2YjZitmGINmF2K3Yr9ivINmI2KfYrdivINi52YTZiSDYp9mE2KPZgtmEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ9mE2YrYsyDZhNiv2YrZgyDYrdmCINin2YTZiNi12YjZhCDZhNmE2YPYqtin2KjYqSDYpdmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNinOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn2YTZhSDZitiq2YUg2KrYudix2YrZgSDYo9mKINiq2LnYsdmK2YEg2YTZhNmB2KbYqSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGICIlcyIg2LrZitixINmF2YjYrNmI2K8g2YHZiiDZgtin2LnYr9ipINin2YTYqNmK2KfZhtin2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn2KrYudiw2LEg2K3YsNmBINmF2LnYsdmBINi52YbYtdixINin2YTYqtmD2YjZitmGICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYpdi12K/Yp9ixINmEIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYp9mE2KrZg9mI2YrZhiDYo9mIINmF2LnYsdmBINin2YTYqtmD2LHYp9ixINij2Ygg2YXYudix2YEg2KfZhNmB2KbYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9mE2YUg2YrYqtmFINmF2YbYrSDYo9mKINiq2LXYsdmK2K0g2K/YrtmI2YQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9mE2Kcg2YrZhdmD2YYg2KXYuNmH2KfYsSDYp9mE2LPYrNmE2Iwg2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYp9mE2KrZg9mI2YrZhiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfZhNinINmK2YXZg9mGINi52LHYtiDYp9mE2LPYrNmE2Iwg2YTZhSDZitiq2YUg2YXZhtitINit2YLZiNmCINin2YTZiNi12YjZhCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYrNiv2YrYryAo2KfZhNmF2LnYsdmBPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn2KfZhNil2LXYr9in2LEg2KfZhNis2K/ZitivICjYp9mE2YXYudix2YE9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn2KrZhSDYqtit2K/ZitirINit2KfZhNipINin2YTZhti02LEgKNis2K/ZitivPSVz2Iwg2YLYr9mK2YU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9iq2YUg2KrYrdiv2YrYqyDYrdin2YTYqSDYp9mE2K3Yp9iv2KsgKNis2K/ZitivPSVz2Iwg2YLYr9mK2YU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn2KrZhSDYrdiw2YEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgKNin2YTZhdi52LHZgT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfYqtmF2Kog2KXYttin2YHYqSDYp9mE2KfYsdiq2KjYp9i3INil2YTZiSAlcyAo2KfZhNmG2YjYuT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9iq2YUg2K3YsNmBINin2YTYp9ix2KrYqNin2Lcg2KXZhNmJICVzICjYp9mE2YbZiNi5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn2KrZhSDYqtit2K/ZitirINiq2LnYsdmK2YEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgKNin2YTZhdi52LHZgT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2KfZhNin2LPZhSAo2KzYr9mK2K89JXPYjCDZgtiv2YrZhT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2KfZhNiz2YXYqSAlcyDZhdmGICIlcyIg2KXZhNmJICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn2KrZhSDYrdiw2YEg2KfZhNil2LXYr9in2LEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYp9mE2KrZg9mI2YrZhiDYo9mIINmF2LnYsdmBINin2YTYpdi12K/Yp9ixISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfZhNinINmK2YXZg9mGINil2LjZh9in2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YbYjCDZhNmFINmK2KrZhSDZhdmG2K0g2K3ZgtmI2YIg2YjYtdmI2YQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn2YXYudix2ZHZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAlcyDYutmK2LEg2YXZiNis2YjYryDZgdmKINmC2KfYudiv2Kkg2KfZhNio2YrYp9mG2KfYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfYqtmF2Kog2LfYqNin2LnYqtmH2Kcg2KjZiNin2LPYt9ipICVzINmB2YogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9mF2Y7Ysdis2ZDYuSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ9mF2LnYsdmR2YEg2KfZhNmB2KbYqSDYutmK2LEg2LXYp9mE2K0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDYo9mKINmF2LnYsdmR2YEg2YTZhNmB2KbYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfZhNinINiq2YjYrNivINit2YLZiNmCINmI2LXZiNmEINmE2YfYsNmHINin2YTZgdim2Kkg2YXYudi32KfYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9mE2Kcg2KrZiNis2K8g2YbYqtmK2KzYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfZhtiq2KfYptisINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn2YTYpyDZitmF2YPZhiDYpdi42YfYp9ixINin2YTYudmG2LXYsdiMINmE2Kcg2KrZiNis2K8g2K3ZgtmI2YIg2YjYtdmI2YQg2YTZgCBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ9mE2YUg2YrYqtmFINin2YTYudir2YjYsSDYudmE2Ykg2KPZiiDYpdi12K/Yp9ix2KfYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfYp9mE2KrYtNi62YrZhNmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9iq2K3YsNmK2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfYp9mE2K3Yp9iv2KsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9it2KfZhNipINin2YTZhti02LEg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfYp9mE2K3Yp9mE2Kkg2KfZhNi52KfYsdi22Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfZhNinINiq2YjYrNivINi12YTYp9it2YrYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ9in2YTZgdmE2KrYsSDYutmK2LEg2LXYp9mE2K0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfYqNin2LHYp9mF2LIg2KfZhNio2K3YqyDYutmK2LEg2LXYp9mE2K0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YXYudix2YjYttipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9io2YrZhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn2YLZitmI2K8g2KfZhNmB2KbYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfYrdiv2K8g2YHYptipINmI2KfYrdiv2Kkg2KPZiCDYo9mD2KvYsSDZhNiq2YLZitmK2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YLYp9io2YTYqSDZhNmE2KrYrdiv2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn2YLZitmI2K8g2KfZhNmB2KbYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn2K3Yr9ivINmB2KbYqSDZiNin2K3Yr9ipINij2Ygg2KPZg9ir2LEg2YTYqtmC2YrZitivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmC2KfYqNmE2Kkg2YTZhNiq2K3Yr9mK2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfYr9mK2YbYp9mF2YrZg9mKICjYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ9ir2KfYqNiqICjYpdi12K/Yp9ixKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNil2K3Yp9mE2Kkg2KfZhNmF2LHYrNi52YrYqSDZhNmE2LHYp9io2LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn2YXYpyDYpdiw2Kcg2YPYp9mGINmH2LDYpyDYp9mE2KfYsdiq2KjYp9i3INmK2YbYt9io2YIg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINij2Ygg2KfZhNmG2LPYrtipINin2YTYq9in2KjYqtipINmF2YYg2KfZhNmD2KfYptmGINin2YTZhdix2KzYudmKLiDZitiq2YUg2KXYrNix2KfYoSDYrdiz2KfYqCDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKINmB2YLYtyDYudmE2Ykg2KfZhNix2YjYp9io2Lcg2KfZhNiv2YrZhtin2YXZitmD2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfYrdiv2K8g2KfZhNiz2YXYqSDYp9mE2KrZiiDYs9mK2KrZhSDYp9mE2KjYrdirINi52YYg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdmGINiu2YTYp9mE2YfYpyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfYp9mE2KjZhtmK2Kkg2KfZhNij2LPYp9iz2YrYqSDYutmK2LEg2LXYp9mE2K3YqS4g2YrYsdis2Ykg2KrZgtiv2YrZhSDYqtis2LLYptipINmF2Lkg2KfZhNio2YrYp9mG2KfYqiDYqNiq2YbYs9mK2YIgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfZitmE2LLZhSDYqNiv2KEg2LPZhNiz2YTYqSBZQU1MINio2YAgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9iq2LnYsNixINmF2LPYrSDYp9mE2KzYr9mI2YQgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYo9mKINit2YLZiNmEINiv2YrZhtin2YXZitmD2YrYqSDYsNin2Kog2LXZhNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn2KrYudiw2ZHYsSDYp9mE2KXYr9ix2KfYrCDZgdmKINin2YTYrNiv2YjZhCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9iq2YUg2KXYr9ix2KfYrCAwINi12YHZiNmBINmB2Yog2KfZhNis2K/ZiNmEIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTYudiv2K8g2LnZhti12LEg2YjYp9it2K8g2YPYrdivINij2YLYtdmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ9in2LPYqtmK2LHYp9ivL9iq2LXYr9mK2LEg2KfZhNmF2LHZgdmC2KfYqiAo2YPYotiu2LEg2KXYr9iu2KfZhNin2Kog2YHZiiDZg9mEINiz2LfYsSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ9it2K/YqyDYrti32KMg2YHZiiDZhdiy2KfZhdmG2Kkg2KfZhNiq2LnYsdmK2YHYp9iqLiDZitix2KzZiSDYp9mE2KrYrdmC2YIg2YXZhiDYp9mE2LPYrNmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ9mE2K/ZitmDINiq2LnYsdmK2YHYp9iqIElUU01Db25maWdJdGVtINi62YrYsSDZhdiq2LLYp9mF2YbYqS4g2YrYsdis2Ykg2YbYtNixINiq2LrZitmK2LHYp9iqINin2YTYrdmC2YQg2KfZhNiv2YrZhtin2YXZitmD2Yog2YTZgCBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9mF2YbYqtmH2YrYqSDYp9mE2LXZhNin2K3ZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn2KfZhNi12YrYp9mG2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfYt9mK2ZHYp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfZhdiu2LfYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfYp9mE2KXYtdmE2KfYrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn2YXYqtmC2KfYudivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9in2YTZhdix2KfYrNi52KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9in2YTYp9iu2KrYqNin2LEv2LbZhdin2YYg2KfZhNis2YjYr9ipJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfZhti42LHYqSDYudin2YXYqSDZiNiq2KPZg9mK2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn2KfYs9iq2YrYsdin2K8g2KfZhNmB2KbYp9iqL9in2YTYo9iv2YjYp9ixINmI2KfZhNit2YLZiNmEINin2YTZhdix2KrYqNi32Kkg2KjZh9inJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn2K3Yr9irINiu2LfYoyDYo9ir2YbYp9ihINin2LPYqtmK2LHYp9ivINin2YTZgdim2KkuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDZhdiu2YHZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g2YXYudix2YjYtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn2YrYs9mF2K0g2KjYtNix2YjYtyDYqNit2Ksg2YXZiNiz2LnYqSDZgdmKINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELiDYqNin2LPYqtiu2K/Yp9mFINmH2LDZhyDYp9mE2YXZitiy2Kkg2YrZhdmD2YbZgyDYp9mE2KjYrdirINmF2KvZhNin2Ysg2LnZhiDYp9iz2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YXYuSDZh9iw2Kcg2KfZhNmG2YjYuSDZhdmGINin2YTYtNix2YjYtyDZhdir2YQgIigq2YXZgdiq2KfYrSAxKiYq2YXZgdiq2KfYrSAyKikiINij2YggIigq2YXZgdiq2KfYrSAxKnx82YXZgdiq2KfYrSAyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfZitiz2YXYrSDYqNi02LHZiNi3INio2K3YqyDZhdmI2LPYudipINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuINio2KfYs9iq2K7Yr9in2YUg2YfYsNmHINin2YTZhdmK2LLYqSDZitmF2YPZhtmDINin2YTYqNit2Ksg2LnZhNmJINiz2KjZitmEINin2YTZhdir2KfZhCDYudmGINin2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdi5INmH2LDYpyDYp9mE2YbZiNi5INmF2YYg2KfZhNi02LHZiNi3INmF2KvZhCAiKCrZhdmB2KrYp9itIDEqJirZhdmB2KrYp9itIDIqKSIg2KPZiCAiKCrZhdmB2KrYp9itIDEqfHzZhdmB2KrYp9itIDIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9in2YTZhdiu2KjYsdmK2YYg2KfZhNiz2LHZitmK2YYg2KfZhNmF2LnZitmG2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ9in2YTZhdiu2KjYsdmK2YYg2KfZhNiz2LHZitmK2YYg2KfZhNmF2LnZitmG2YrZhiDZhNi02LHZg9ipINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9in2YTZhdiu2KjYsdmI2YYg2KfZhNiz2LHZitmI2YYg2KfZhNmF2K7Ytdi12YjZhiDZhNmE2YXYs9iq2K7Yr9mFINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAn2KXYudiv2KfYr9in2KogQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn2KrYrdmC2YIg2YXZhiDZiNis2YjYryDYp9iz2YUg2YHYsdmK2K8g2YHZgti3INiv2KfYrtmEINmG2YHYsyDZgdim2KkgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSDYo9mIINi52KfZhNmF2YrZi9inIChcJ9i52KfZhVwnKdiMINmF2YXYpyDZiti52YbZiiDYo9mGINmD2YQg2LnZhti12LEg2KrZg9mI2YrZhiDZhdmI2KzZiNivINmK2KTYrtiwINmB2Yog2KfZhNin2LnYqtio2KfYsSDYudmG2K8g2KfZhNio2K3YqyDYudmGINin2YTYqtmD2LHYp9ix2KfYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ9in2K7YqtixINmI2K3Yr9ipINmG2YXYt9mK2Kkg2YTZgdix2LYg2YbYuNin2YUg2KfZhNiq2LPZhdmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfYp9iu2KrYsSDZiNit2K/YqSDZhtmF2LfZitipINmE2YHYsdi2INmF2K7Yt9i3INij2LHZgtin2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ9in2K7YqtixINmI2K3Yr9ipINmG2YXYt9mK2Kkg2YTZgdix2LYg2YXYrti32Lcg2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfYp9iu2KrYsSDYp9mE2LPZhdin2Kog2YTYqti02LrZitmEINil2YbYtNin2KEg2KXYtdiv2KfYsSDYrNiv2YrYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn2KfYrtiq2LEg2KfZhNmB2KbYp9iqINin2YTZhdix2KfYryDYqti52YrZitmG2YfYpyDZhNmB2KbYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ9mF2LHYtNit2KfYqiDYudmG2LXYsSDYqtmD2YjZitmGINin2YTYudmF2YjYryDZhNmAINmG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2LnZhdmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfYp9mE2KPYudmF2K/YqSDYp9mE2KrZiiDZitmF2YPZhiDYqti12YHZitiq2YfYpyDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELiDZhdmE2KfYrdi42Kk6INmK2Y/Ys9mF2K0g2YHZgti3INio2LPZhdin2Kog2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YjYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn2KXYttin2YHYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfYqti52K/ZitmEINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mI2K3Yr9ipINit2K/YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YbZhdi32YrYqSDYp9mE2KrZiiDYqtiq2YrYrSDYp9mE2KrYs9is2YrZhCDZgdmKINin2YTYs9is2YQg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn2YjYrdiv2Kkg2K3Yr9irINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTZhtmF2LfZitipINin2YTYqtmKINiq2YLZiNmFINio2KrYrdiv2YrYqyDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINil2YTZiSDYqti52LHZitmB2YfYpyDYp9mE2K3Yp9mE2YouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn2KrYp9ix2YrYriDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn2LfYqNin2LnYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfYqtmD2KjZitixINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ9i52LHYtiDYtNis2LHYqSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ9il2LXYr9in2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn2YTZhiDZitiq2YUg2KrYrtiy2YrZhiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmF2YYg2KfZhNmB2KbYp9iqINin2YTYqtin2YTZitipINi52YTZiSDYrtin2K/ZhSBFbGFzdGljc2VhcmNoLiDZhNiq2LfYqNmK2YIg2LDZhNmDINi52YTZiSBDSXMg2KfZhNit2KfZhNmK2KnYjCDZitis2Kgg2KrYtNi62YrZhCDYqtix2K3ZitmEIENJINi52KjYsSDZiNit2K/YqSDYp9mE2KrYrdmD2YXYjCDYqNi52K8g2KrYutmK2YrYsSDZh9iw2Kcg2KfZhNiu2YrYp9ixLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfZhNmGINmK2KrZhSDYqtiu2LLZitmGINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2LDYp9iqINit2KfZhNin2Kog2KfZhNmG2LTYsSDYp9mE2KrYp9mE2YrYqSDYudmE2Ykg2K7Yp9iv2YUgRWxhc3RpY3NlYXJjaC4g2YTYqti32KjZitmCINiw2YTZgyDYudmE2YkgQ0lzINin2YTYrdin2YTZitip2Iwg2YrYrNioINiq2LTYutmK2YQg2KrYsdit2YrZhCBDSSDYudio2LEg2YjYrdiv2Kkg2KfZhNiq2K3Zg9mF2Iwg2KjYudivINiq2LrZitmK2LEg2YfYsNinINin2YTYrtmK2KfYsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn2K3YryDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn2K3YryDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmD2YQg2LXZgdit2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfZgtin2LnYr9ipINio2YrYp9mG2KfYqiDYpdiv2KfYsdipINin2YTYqtmH2YrYptipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn2YjYrdiv2Kkg2KrZh9mK2KbYqSDYp9mE2LnZhti12LEg2KfZhNmF2KzZhdmR2Lkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTZhdmI2KzZhyDYp9mE2K7ZhNmB2Yog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn2KXZhti02KfYoSDYqti52LHZitmB2KfYqiDZhNi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YjYpdiv2KfYsdiq2YfYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfYpdmG2LTYp9ihINiq2LDYp9mD2LEg2YTYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbZgtin2Lcg2LLZhdmG2YrYqSDZhdit2K/Yr9ipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KfYt9mE2KfYuSDYudmE2Ykg2KXYtdiv2KfYsdin2KogQ0kg2KfZhNiq2KfYsdmK2K7ZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KrYqNiv2YrZhCDZitiv2YjZitin2Ysg2KjZitmGINil2LXYr9in2LHYp9iqIENJINin2YTYqtin2LHZitiu2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4g2YXYq9in2YQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD3Ys9mG2KnYmyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0Pdii2K7YsdibIElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTLYmyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2KfZhNi52YXZhNmK2KfYqiDYp9mE2KrZiiDZitis2Kgg2KPZhiDZitiq2YjZgdixINio2YfYpyDYstixINin2YTYpdi52K/Yp9iv2KfYqiDZgdmKINmI2K/YrNipINmD2KfYptmGINin2YTYsdin2KjYtyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDYp9mE2LHYrNin2KEg2YXZhNin2K3YuNipINij2YbZhyDZitis2Kgg2KrYs9is2YrZhCDZhdmE2YHYp9iqIEpTINmIIENTUyDYp9mE2KrYp9mE2YrYqSDZhNmH2LDZhyDYp9mE2KXYrNix2KfYodin2Ko6IENvcmUuQ3VzdG9tTGlzdC5jc3PYjCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz2IwgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz2IwgQ29yZS5BZ2VudC5UYWJsZUZpbHRlci5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2YXYrti32Lcg2YLYp9mE2Kg6OjrZhdis2YXZiNi52Kkg2KPYr9mI2KfYqiDZhNiz2YTYp9iz2YQg2KfZhNil2LXYr9in2LEuINmK2Y/Ys9iq2K7Yr9mFINmB2YLYtyDYpdiw2Kcg2KrZhSDYqti52YrZitmGINmI2K3Yr9ipINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2KXZhNmJIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfYqtit2K/ZitivINmF2KzZhdmI2LnYqSDZhdmGINin2YTYtNix2YjYtyDYp9mE2KrZiiDZitmP2LPZhditINio2YXZiNis2KjZh9inINmE2YTYudmF2YrZhCDYqNix2KTZitipINi52YbYtdixINiq2YPZiNmK2YYuINmK2YXZg9mGINiq2YLZitmK2K8g2KfZhNi02LHZiNi3INin2K7YqtmK2KfYsdmK2YvYpyDYudmE2Ykg2YXYrNmF2YjYudin2Kog2YXYudmK2YbYqSDZhdmGINin2YTYudmF2YTYp9ihLiDYp9mE2KfYs9mFINmH2Ygg2KfZhNiz2YXYqSDYp9mE2KXZhNiy2KfZhdmK2Kkg2KfZhNmI2K3Zitiv2KkuINil2LDYpyDZhNmFINmK2KrZhSDYpdi52LfYp9ihINij2Yog2K7Zitin2LHYp9iqINij2K7YsdmJ2Iwg2LPYqtmD2YjZhiDYrNmF2YrYuSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmF2LHYptmK2Kkg2KrYrdiqINiq2YTZgyDYp9mE2YHYptipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2K3YsNmBINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINio2KfYs9iq2K7Yr9in2YUg2KfZhNmI2KfYrNmH2Kkg2KfZhNi52KfZhdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2YTYrdi12YjZhCDYudmE2Ykg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KjYp9iz2KrYrtiv2KfZhSDYp9mE2YjYp9is2YfYqSDYp9mE2LnYp9mF2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTZhNio2K3YqyDZgdmKINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINio2KfYs9iq2K7Yr9in2YUg2KfZhNmI2KfYrNmH2Kkg2KfZhNi52KfZhdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KrYudmK2YrZhiDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYqNin2LPYqtiu2K/Yp9mFINin2YTZiNin2KzZh9ipINin2YTYudin2YXYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn2YrYrdiv2K8g2YjYrdiv2Kkg2YbYuNix2Kkg2LnYp9mF2Kkg2YTYpdi42YfYp9ixINin2YTYudix2LYg2KfZhNi12LrZitixINmE2YLYp9im2YXYqSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfZitit2K/YryDZhdinINil2LDYpyDZg9in2YYg2YrYrNioINil2LjZh9in2LEg2KrYs9mF2YrYp9iqINmG2YjYuSDYp9mE2KfYsdiq2KjYp9i3INmB2Yog2KfYqti12KfZhNin2Kog2KfZhNi52YLYr9ipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNiq2LnYqNmK2LHYp9iqINin2YTYudin2K/ZitipINio2LTZg9mEINmB2LHYr9mKINmE2YPZhCDZgdim2Kkg2YXZhiDZgdim2KfYqiBDb25maWdJdGVtINmE2YTYqtit2YLZgiDZhdmGINin2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZiNil2LjZh9in2LEg2LHYs9in2KbZhCDYp9mE2K7Yt9ijINin2YTZhdmC2KfYqNmE2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNmF2KrYp9it2Kkg2YXZhiBDSSDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9i52KrZhdin2K/Zi9inINi52YTZiSDZgdim2KkgQ0kuINmK2KzYqCDYo9mGINmK2KrZg9mI2YYg2YPZhCDYpdiv2K7Yp9mEINmF2YYg2KfYs9mFINin2YTZgdim2Kkg2YjZhdi12YHZiNmB2Kkg2YXZhiDYp9mE2K3ZgtmI2YQg2KfZhNmF2KrYp9it2Kkg2YTZhNmB2KbYqSDYp9mE2YXZgtin2KjZhNipLiDZitis2Kgg2KPZhiDYqtit2KrYsdmFINil2K/Yrtin2YTYp9iqINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdiu2LfYtyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LPZhdipINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZitipINmE2YHYsdiyINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YbYqtmK2KzYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNmB2LHYsiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmG2KrZitis2Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LPZhdipINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZitipINmE2YHYsdiyINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YbYqtmK2KzYqSDYqNit2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZh9iw2Ycg2KfZhNi52YXZhNmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KrYsdiq2YrYqCDYp9mE2KfZgdiq2LHYp9i22Yog2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmG2KrZitis2Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuINmE2KPYudmE2Yk6INin2YTYo9mC2K/ZhSDZgdmKINin2YTYo9i52YTZiS4g2YTYo9iz2YHZhDog2KfZhNij2K3Yr9irINmB2Yog2KfZhNij2LnZhNmJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KrYsdiq2YrYqCDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KfZgdiq2LHYp9i22Yog2YHZiiDZhtiq2YrYrNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELiDZhNij2LnZhNmJOiDYp9mE2KPZgtiv2YUg2YHZiiDYp9mE2KPYudmE2YkuINmE2KPYs9mB2YQ6INin2YTYo9it2K/YqyDZgdmKINin2YTYo9i52YTZiS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KrYsdiq2YrYqCDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KfZgdiq2LHYp9i22Yog2YHZiiDZhtiq2YrYrNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmH2LDZhyDYp9mE2LnZhdmE2YrYqS4g2YTYo9i52YTZiTog2KfZhNij2YLYr9mFINmB2Yog2KfZhNij2LnZhNmJLiDZhNij2LPZgdmEOiDYp9mE2KPYrdiv2Ksg2YHZiiDYp9mE2KPYudmE2YkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2KfZgdiq2LHYp9i22YrYqSDYp9mE2YXYudix2YjYttipINmF2YYgQ0lzINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2LnYqtmF2KfYr9mL2Kcg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrYqtmD2YjZhiDZg9mEINil2K/Yrtin2YQg2YXZhiDYp9iz2YUg2KfZhNmB2KbYqSDZiNmF2LXZgdmI2YHYqSDZhdmGINin2YTYrdmC2YjZhCDYp9mE2YXYqtin2K3YqSDZhNmE2YHYptipINin2YTZhdmC2KfYqNmE2KkuINmK2KzYqCDYo9mGINiq2K3Yqtix2YUg2KXYr9iu2KfZhNin2Kog2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2K7Yt9i3IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ9mK2K3Yr9ivINi52YXZgiDYp9mE2LnZhNin2YLYp9iqINin2YTYp9mB2KrYsdin2LbZiiDYp9mE2LDZiiDYs9mK2KrZhSDYudix2LbZhy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LPZhdipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YXYudix2YjYttipINin2YTYp9mB2KrYsdin2LbZitipINmE2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn2YrYrdiv2K8g2LPZhdipINio2K3YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KfZgdiq2LHYp9i22YrYqSDYp9mE2YXYudix2YjYttipINmE2LTYp9i02Kkg2KjYrdirINi52YbYtdixINin2YTYqtmD2YjZitmGLiDZhdir2KfZhDogItin2YTZhdmB2KrYp9itIiDZitis2Kgg2KPZhiDZitit2KrZiNmKINi52YTZiSDYp9iz2YUg2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDZgdmKINmH2LDZhyDYp9mE2K3Yp9mE2KkgXCdYXCfYjCAi2KfZhNmF2K3YqtmI2YkiINmK2KzYqCDYo9mGINmK2K3YqtmI2Yog2LnZhNmJINmC2YrZhdipINin2YTYrdmC2YQg2KfZhNiv2YrZhtin2YXZitmD2Yog2K3Ys9ioINmG2YjYuSDYp9mE2K3ZgtmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Iwg2KfZhNmG2LU6IFwn2YbYtVwn2Iwg2KfZhNmC2KfYptmF2Kkg2KfZhNmF2YbYs9iv2YTYqTogXCcxXCfYjCDYp9mE2KrYp9ix2YrYri/Yp9mE2YjZgtiqOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWER5bmFtaWNGaWVsZF9YVCBUaW1lU2xvdFN0bG90U3RhcnRNaW51dGU9MDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1ggVGltZVNsb3RTdGFydFNlY29uZD0wMNibIFNlYXJjaF9EeW5hbWljRmllbGRfWCBUaW1lU2xvdFN0b3BZZWFyPTIwMTPYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1ggVGltZVNsb3RTdG9wTW9udGg9MDEgU2VhcmNoX0R5bmFtaWNGaWVsZF9YRHluYW1pY0ZpZWxkX1hUIFRpbWVTbG90U3RvcERheT0yNtibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjPYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTnYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7IiDZiCBcJ9ij2YggXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUX1RpbWVQb2ludEZvcm1hdD13ZWVr2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVF9UaW1lUG9pbnRTdGFydD3Zgtio2YTYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUIFRpbWVQb2ludFZhbHVlPTdcJ9ibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2YPYp9im2YYg2KfZhNmB2LHYudmKINin2YTYp9mB2KrYsdin2LbZiiDZhNmE2YHYptipIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9i52YXYr9ipINin2YTZhdiq2KfYrdipINmF2YYgQ0kg2YHZiiDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfYudiq2YXYp9iv2YvYpyDYudmE2Ykg2YHYptipIENJLiDZitis2Kgg2KPZhiDZitiq2YPZiNmGINmD2YQg2KXYr9iu2KfZhCDZhdmGINin2LPZhSDYp9mE2YHYptipINmI2YXYtdmB2YjZgdipINmF2YYg2KfZhNit2YLZiNmEINin2YTZhdiq2KfYrdipINmE2YTZgdim2Kkg2KfZhNmF2YLYp9io2YTYqS4g2YrYrNioINij2YYg2KrYrdiq2LHZhSDYpdiv2K7Yp9mE2KfYqiDYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDYp9mE2YXYrti32LcgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfYsdiq2YHYp9i5INmF2YPZiNmGINmF2K3YsdixINin2YTZhti1INin2YTZhdmG2LPZgi4g2K3Yr9ivINmC2YrZhdipINix2YLZhdmK2KkgKNio2YPYs9mEKSDYo9mIINmG2LPYqNipINmF2KbZiNmK2KkgKNmG2LPYqNmK2KkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYudiv2K8g2KfZhNi12YHZiNmBINmE2YXYrdix2LEg2KrYudix2YrZgSBDSSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmF2LPYpNmI2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9mK2Y/Yrdiv2K8g2KrYsdiq2YrYqCDYp9mE2K3Yp9mE2KfYqiDYp9mE2LnYp9ix2LbYqSDZhdmGINin2YTYo9i52YTZiSAo2YXYq9mEINin2YTYrdmE2YLZitipKSDYpdmE2Ykg2KfZhNij2K/ZhtmJICjZhdir2YQg2KfZhNmI2LjZitmB2YrYqSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn2YrYrdiv2K8g2K3Yp9mE2KfYqiDYp9mE2YbYtNixINiw2KfYqiDYp9mE2LXZhNipINin2YTYqtmKINmK2YXZg9mGINij2YYg2KrYpNir2LEg2YHZitmH2Kcg2KfZhNiq2LDYp9mD2LEg2KfZhNmF2LHYqtio2LfYqSDYudmE2Ykg2K3Yp9mE2Kkg2KfZhNmF2K7YqNixINin2YTYs9ix2YouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn2YrYrdiv2K8g2K3YryDYp9mE2KjYrdirINmE2LTYp9i02KkgQWdlbnRJVFNNQ29uZmlnaWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn2YrYrdiv2K8g2K3YryDYp9mE2KjYrdirINmE2LTYp9i02KkgQ3VzdG9tZXJJVFNNQ29uZmlnaWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNi42KfZh9ix2Kkg2YXZhiBDSXMg2YHZiiDYt9ix2YrZgtipINin2YTYudix2LYg2KfZhNmF2LnZgtiv2Kkg2YTYrNiv2YjZhCDYp9mE2KfYsdiq2KjYp9i3INmE2KzZhdmK2Lkg2YHYptin2KogQ0kuINil2LDYpyDZhNmFINmK2YPZhiDZh9mG2KfZgyDYpdiv2K7Yp9mE2Iwg2YrYqtmFINi52LHYtiDYp9mE2KPYudmF2K/YqSDYp9mE2KfZgdiq2LHYp9i22YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9i52YXYr9ipINin2YTZhdi52LHZiNi22Kkg2YXZhiBDSSDZgdmKINi32LHZitmC2Kkg2KfZhNi52LHYtiDYp9mE2YXYudmC2K/YqSDZhNis2K/ZiNmEINin2YTYp9ix2KrYqNin2LfYjCDYp9i52KrZhdin2K/Yp9mLINi52YTZiSDZgdim2KkgQ0kuINmK2KzYqCDYo9mGINmK2YPZiNmGINmD2YQg2KXYr9iu2KfZhCDZhdiz2KjZiNmC2YvYpyDYqNin2LPZhSDYp9mE2YHYptipINmI2YbZgti32KrZitmGICjYo9mKINin2YTZg9mF2KjZitmI2KrYsTo6Ojo6KS4g2YfZhtin2YMg2LnYr9ivINmC2YTZitmEINmF2YYg2LPZhdin2KogQ0ktQXR0cmlidXRlcyDYp9mE2YXYtNiq2LHZg9ipINio2YrZhiDYrNmF2YrYuSBDSSAo2YXYq9in2YQg2YTZgdim2Kkg2KfZhNmD2YXYqNmK2YjYqtixOiDYp9mE2K3Yp9iz2YjYqDo62KfZhNin2LPZhdiMINin2YTYrdin2LPZiNioOjpDdXJEZXBsU3RhdGXYjCDYp9mE2K3Yp9iz2YjYqDo6Q3JlYXRlVGltZSkuINmE2KXYuNmH2KfYsSDYs9mF2KfYqiBDSS1BdHRyaWJ1dGVzINin2YTZgdix2K/ZitipINmD2YXYpyDZh9mKINmF2LnYsdmB2Kkg2YHZiiDYqti52LHZitmBIENJLURlZmluaXRpb27YjCDZitis2Kgg2KfYs9iq2K7Yr9in2YUg2KfZhNmF2K7Yt9i3INin2YTYqtin2YTZiiAo2YXYq9in2YQg2YTZgdim2Kkg2KfZhNmD2YXYqNmK2YjYqtixKTog2KfZhNmD2YXYqNmK2YjYqtixOjrYp9mE2YLYsdi1INin2YTYtdmE2Kg6OjHYjCDYp9mE2YPZhdio2YrZiNiq2LE6Otin2YTZgtix2LUg2KfZhNi12YTYqDo6MTo62KfZhNiz2LnYqTo6MdiMINin2YTZg9mF2KjZitmI2KrYsTog2KfZhNmC2LHYtSDYp9mE2LXZhNioOjoy2Iwg2KfZhNmD2YXYqNmK2YjYqtixOiDYp9mE2YLYsdi1INin2YTYtdmE2Kg6OjI6INin2YTYs9i52Kk6OjEuINmB2Yog2K3Yp9mE2Kkg2LnYr9mFINmI2KzZiNivINil2K/Yrtin2YQg2YTZgdim2KkgQ0nYjCDZitiq2YUg2LnYsdi2INin2YTYo9i52YXYr9ipINin2YTYp9mB2KrYsdin2LbZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYudmG2KfYtdixINin2YTZhdiq2KfYrdipICLZhNmE2KXYrNix2KfYoSIg2YHZiiDYp9mE2YXYs9iq2YjZiSDYp9mE2KvYp9mE2Ksg2YXZhiDYqNmG2YrYqSBBQ0wg2YTYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNi52YbYp9i12LEg2KfZhNmF2KrZiNmB2LHYqSDZgdmKINin2YTZhdiz2KrZiNmJINin2YTYo9mI2YQg2YXZhiDYqNmG2YrYqSBBQ0wg2YTYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYudmG2KfYtdixINin2YTZhdiq2YjZgdix2Kkg2YHZiiDYp9mE2YXYs9iq2YjZiSDYp9mE2KvYp9mG2Yog2YXZhiDYqNmG2YrYqSBBQ0wg2YTYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINmG2YjYuSDYp9mE2KfYsdiq2KjYp9i3ICjYp9mE2YXYs9mF2Ykg2YXZhiDZhdmG2LjZiNixINin2YTYqtiw2YPYsdipKSDYp9mE2LDZiiDZitmF2YPZhiDYo9mGINmK2KTYq9ixINi52YTZiSDYrdin2YTYqSBDSSDYp9mE2YXYsdiq2KjYty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfZitit2K/YryDZhtmI2Lkg2KfZhNiq2LDZg9ix2Kkg2KfZhNiq2Yog2YrZhdmD2YYg2KPZhiDYqtik2KvYsSDYudmE2Ykg2K3Yp9mE2Kkg2KfZhNmF2K7YqNixINin2YTZhdiz2KrZgtmEINin2YTZhdix2KrYqNi3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ9iq2K3Yr9mK2Ksg2KfZhNiq2LnYsdmK2YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9it2LDZgSDYudmG2LXYsSDYp9mE2KrZh9mK2KbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICfYr9mK2KjZhNiz2KrZitiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfZhNmI2YYg2K3Yp9mE2Kkg2KfZhNmG2LTYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9mF2YPYsdix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTYrdiv2Ksg2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDYp9mE2KrZiiDYqtit2K/YryDYqti52LHZitmB2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINi52YTZiSDYo9mG2YfYpyDYutmK2LEg2YXYqtiy2KfZhdmG2KnYjCDYpdiw2Kcg2YPYp9mG2Kog2KrYrdiq2YjZiiDYudmE2Ykg2K3ZgtmI2YQg2K/ZitmG2KfZhdmK2YPZitipINmF2KrYutmK2LHYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdi52LHZiNi22Kkg2YHZiiDYtNin2LTYqSDYrdmC2YQg2KXYr9in2LHYqSDYrtiv2YXYp9iqINiq2YPZhtmI2YTZiNis2YrYpyDYp9mE2YXYudmE2YjZhdin2Kog2YjYp9mE2KfYqti12KfZhNin2Kog2KfZhNil2LbYp9mB2Yog2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYuNmH2LEg2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2YHZiiDYtNin2LTYqSDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNiq2Yog2KrYuNmH2LEg2YHZiiDYtNin2LTYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn2KrZhdmD2YrZhiDZhdmK2LLYqSDYp9mE2KXYrNix2KfYodin2Kog2KfZhNmF2KzZhdi52Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmE2YjYp9is2YfYqSDYp9mE2KPZhdin2YXZitipINmE2YTZiNmD2YrZhCDZhNmE2LnZhdmEINi52YTZiSDYo9mD2KvYsSDZhdmGINi52YbYtdixINiq2YPZiNmK2YYg2YjYp9it2K8g2YHZiiDZg9mEINmF2LHYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9iq2YXZg9mK2YYg2YXZitiy2Kkg2KfZhNil2KzYsdin2KEg2KfZhNmF2KzZhdi5INmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZgti3INmE2YTZhdis2YXZiNi52KfYqiDYp9mE2YXYr9ix2KzYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn2KrZhdmD2YrZhi/Yqti52LfZitmEINmI2LjZitmB2Kkg2KfZhNiq2K3ZgtmCINmF2YYg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KjYrdir2KfZiyDYudmGINij2LPZhdin2KEg2YHYsdmK2K/YqS4g2YLYqNmEINiq2YXZg9mK2YYg2YfYsNinINin2YTYrtmK2KfYsdiMINmK2KzYqCDYudmE2YrZgyDYp9mE2KrYrdmC2YIg2YXZhiDYp9mE2YbYuNin2YUg2KfZhNiu2KfYtSDYqNmDINio2K3Yq9mL2Kcg2LnZhiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTZhdmI2KzZiNiv2Kkg2KjYp9mE2YHYudmEINiw2KfYqiDYp9mE2KPYs9mF2KfYoSDYp9mE2YXZg9ix2LHYqS4g2YrZhdmD2YbZgyDYp9mE2YLZitin2YUg2KjYsNmE2YMg2KjYp9iz2KrYrtiv2KfZhSDYo9mF2LEg2YjYrdiv2Kkg2KfZhNiq2K3Zg9mFIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn2YjYrdiv2Kkg2KfZhNit2K/YqyDYp9mE2YbZhdi32YrYqSDZhNiq2LnZitmK2YYg2K3Yp9mE2Kkg2KfZhNi52YbYtdixINin2YTYqtmD2YjZitmG2Yog2LnZhNmJINix2KfYqNi3INiq2LDZg9ix2Kkt2KrZg9mI2YrZhi3YudmG2LXYsS3YqtmD2YjZitmGLdix2KfYqNi3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfYrdmC2YjZhCDZgdmH2LHYsyDYudmG2KfYtdixINin2YTYqtmD2YjZitmG2Iwg2KfZhNmF2LPYqtiu2K/ZhdipINmE2YTYqNit2Ksg2LnZhiDYp9mE2YbYtSDYp9mE2YPYp9mF2YQuINmK2KrZhSDYqtiu2LLZitmGINin2YTYrdmC2YjZhCDYo9mK2LbZi9in2Iwg2YjZhNmD2YbZh9inINmE2YrYs9iqINil2YTYstin2YXZitipINmE2YTZiNi42YrZgdipINin2YTYudin2YXYqS4g2YrZhdmD2YYg2KrYudi32YrZhCDYpdiv2LHYp9isINin2YTZhdix2YHZgtin2Kog2LnZhiDYt9ix2YrZgiDYqti52YrZitmGINin2YTYpdiv2K7Yp9mEINil2YTZiSAwINij2Ygg2K3YsNmB2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfYp9mE2K3ZgtmI2YQg2KfZhNmF2K7YstmG2Kkg2YHZiiDZgdmH2LHYsyDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYqtmKINiq2Y/Ys9iq2K7Yr9mFINmE2KPYtNmK2KfYoSDYo9iu2LHZiSDYpdmE2Ykg2KzYp9mG2Kgg2LnZhdmE2YrYp9iqINin2YTYqNit2Ksg2LnZhiDYp9mE2YbYtSDYp9mE2YPYp9mF2YQuINmE2YTZiNi42KfYptmBINin2YTZg9in2YXZhNipINis2YXZiti5INin2YTYrdmC2YjZhCDYpdmE2LLYp9mF2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICfZhNmD2YQg2K7Yr9mF2Kkg2YjZitioICjZhdmB2KrYp9itKSDZitmF2YPZhiDYqtit2K/ZitivINmF2LXZgdmI2YHYqSDZhdmGINin2YTZgdim2KfYqiAo2KfZhNmC2YrZhdipKSDYp9mE2KrZiiDZitiq2YUg2KrZgtmK2YrYryDYp9mE2KfYs9iq2YrYsdin2K8g2LnZhNmK2YfYpy4g2KjYp9mE2YbYs9io2Kkg2YTYrNmF2YrYuSDYp9mE2YHYptin2Kog2KfZhNmF2K7Yqtin2LHYqdiMINij2Ygg2KzZhdmK2Lkg2KfZhNmB2KbYp9iqINin2YTZhdmI2KzZiNiv2Kkg2YrYrNioINin2K7YqtmK2KfYsSDYs9mF2KfYqiDYp9mE2KrYudix2YrZgSDZgdmKINiq2YPZiNmK2YYg2KfZhNmF2LPYqtiv2LnZii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn2KrYs9is2YrZhCDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2KkgR2VuZXJpY0ludGVyZmFjZSDZhNi32KjZgtipINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn2KrYs9is2YrZhCDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2KkgR2VuZXJpY0ludGVyZmFjZSDZhNi32KjZgtipINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9iq2LPYrNmK2YQg2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipIEdlbmVyaWNJbnRlcmZhY2Ug2YTYt9io2YLYqSDZhdiz2KrYr9i52YogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiBJVFNNSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9mG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNit2KfYr9irJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2KrYttmF2YYg2K3Yp9mE2KfYqiDYp9mE2YbYtNixINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitiq2LbZhdmGINit2KfZhNin2Kog2KfZhNit2YjYp9iv2Ksg2YHZiiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9in2YTYrdivINin2YTYo9mC2LXZiSDZhNi52K/YryDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYqtmKINiz2YrYqtmFINi52LHYttmH2Kcg2YHZiiDZhtiq2YrYrNipINmH2LDZhyDYp9mE2LnZhdmE2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTZhNiq2K3ZgtmCINmF2YYg2KfZhNmF2KzZhdmI2LnYqSDYp9mE2YXYs9ik2YjZhNipINi52YYg2YHYptipINmF2KcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2YTYqtit2YLZgiDZhdmGINin2YTZhdis2YXZiNi52Kkg2KfZhNmF2LPYpNmI2YTYqSDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ9in2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNil2YbYtNin2KEg2KXYrdi12KfYptmK2KfYqiDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfZiNit2K/YqSDYp9mE2KfYs9mFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfZiNit2K/YqSDYp9mE2KPYsdmC2KfZhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYudiv2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KrZiiDYs9mK2KrZhSDYudix2LbZh9inINmB2Yog2YPZhCDYtdmB2K3YqSDZhdmGINmG2KrYp9im2Kwg2KfZhNio2K3YqyDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYudiv2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KrZiiDYs9mK2KrZhSDYudix2LbZh9inINmB2Yog2YPZhCDYtdmB2K3YqSDZhdmGINmG2KrYp9im2Kwg2KfZhNio2K3YqyDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9in2YTZg9in2KbZhtin2Kog2KfZhNiq2Yog2YrYrNioINin2YTYqNit2Ksg2LnZhtmH2KfYjCDZiNi52K/YryDYp9mE2KXYr9iu2KfZhNin2Kog2YjYp9mE2LPZhdin2Kog2KfZhNiq2Yog2YrYrNioINil2LjZh9in2LHZh9inLiDZitis2Kgg2KrYrtiy2YrZhiDYs9mF2KfYqiBDb25maWdJdGVtINio2LTZg9mEINi12LHZititINi52KjYsSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfZhti42LHYqSDYudin2YXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNmF2LnZhNmF2KfYqiDYp9mE2K7Yp9i12Kkg2KjZgdim2KfYqiDZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZhdix2LTYrdin2Kog2KfZhNij2LnZhdiv2Kkg2YHZiiDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNi12LrZitixLiDZitix2KzZiSDZhdmE2KfYrdi42Kk6INiq2LnZitmK2YYgXCfZhti02LdcJyDYpdmE2YkgMCDYs9mK2YXZhti5INin2YTZiNmD2YTYp9ihINmB2YLYtyDZhdmGINiq2K3YsdmK2LEg2KXYudiv2KfYr9in2Kog2YfYsNmHINin2YTZhdis2YXZiNi52Kkg2YHZiiDYqtmB2LbZitmE2KfYqtmH2YUg2KfZhNi02K7YtdmK2KnYjCDZiNmE2YPZhtmHINiz2YrYs9mF2K0g2YTZhNmF2LPYpNmI2YTZitmGINio2KrYrdix2YrYsSDYpdi52K/Yp9iv2KfYqiDZhdiz2KrYrtiv2YUg2KLYrtixINmG2YrYp9io2KnZiyDYudmGINmF2LPYqtiu2K/ZhSDYotiu2LEuINin2LPYqtiu2K/ZhSBcJ1ByZWZlcmVuY2VHcm91cFwnINmE2YTYqtit2YPZhSDZgdmKINin2YTZhdmG2LfZgtipINin2YTYqtmKINmK2KzYqCDYo9mGINiq2LjZh9ixINmB2YrZh9inINmH2LDZhyDYp9mE2KXYudiv2KfYr9in2Kog2YHZiiDZiNin2KzZh9ipINin2YTZhdiz2KrYrtiv2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ9mF2LnYp9mF2YTYp9iqINmI2KfYrNmH2Kkg2KfZhNiu2YTZgdmK2Kkg2YTZiNit2Kkg2KfZhNmF2LnZhNmI2YXYp9iqINmE2LnZhti12LEg2LnYsdi2INmC2KfYptmF2Kkg2KfZhNi52YXZhNin2KEg2YHZiiDZhdmG2LfZgtipINin2YTZiNmD2YTYp9ihLiAiTGltaXQiINmK2K3Yr9ivINi52K/YryDYp9mE2LnZhtin2LXYsSDYp9mE2YXYudix2YjYttipINin2YHYqtix2KfYttmK2YvYpy4g2YrZhdmD2YYg2KfYs9iq2K7Yr9in2YUgIkdyb3VwIiDZhNiq2YLZitmK2K8g2KfZhNmI2LXZiNmEINil2YTZiSDYp9mE2YXZg9mI2YYg2KfZhNil2LbYp9mB2YogKNi52YTZiSDYs9io2YrZhCDYp9mE2YXYq9in2YQ6IEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiDZitit2K/YryDZhdinINil2LDYpyDZg9in2YYg2KfZhNmF2YPZiNmGINin2YTYpdi22KfZgdmKINmK2KzYqCDYqtmF2YPZitmG2Ycg2KrZhNmC2KfYptmK2YvYpyDYo9mFINmK2KzYqCDYudmE2Ykg2KfZhNmF2LPYqtiu2K/ZhSDYqtmF2YPZitmG2Ycg2YrYr9mI2YrZi9inLiAiQ2FjaGVUVExMb2NhbCIg2YrYrdiv2K8g2YXYr9ipINiq2LTYutmK2YQg2LDYp9mD2LHYqSDYp9mE2KrYrtiy2YrZhiDYp9mE2YXYpNmC2Kog2YTZhNmF2YPZiNmGINin2YTYpdi22KfZgdmKINio2KfZhNiv2YLYp9im2YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAn2YXYudin2YXZhNin2Kog2YjYp9is2YfYqSDYp9mE2K7ZhNmB2YrYqSDZhNmI2K3YqSDYp9mE2YXYudmE2YjZhdin2Kog2YTYudmG2LXYsSDYudix2LYg2YLYp9im2YXYqSDYp9mE2LnZhdmE2KfYoSDZgdmKINmF2YbYt9mC2Kkg2KfZhNmI2YPZhNin2KEuICJMaW1pdCIg2YrYrdiv2K8g2LnYr9ivINin2YTYudmG2KfYtdixINin2YTZhdi52LHZiNi22Kkg2KfZgdiq2LHYp9i22YrZi9inLiDZitmF2YPZhiDYp9iz2KrYrtiv2KfZhSAiR3JvdXAiINmE2KrZgtmK2YrYryDYp9mE2YjYtdmI2YQg2KXZhNmJINin2YTZhdmD2YjZhiDYp9mE2KXYttin2YHZiiAo2LnZhNmJINiz2KjZitmEINin2YTZhdir2KfZhDogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiINmK2K3Yr9ivINmF2Kcg2KXYsNinINmD2KfZhiDYp9mE2YXZg9mI2YYg2KfZhNil2LbYp9mB2Yog2YrYrNioINiq2YXZg9mK2YbZhyDYqtmE2YLYp9im2YrZi9inINij2YUg2YrYrNioINi52YTZiSDYp9mE2YXYs9iq2K7Yr9mFINiq2YXZg9mK2YbZhyDZitiv2YjZitmL2KcuICJDYWNoZVRUTExvY2FsIiDZitit2K/YryDZhdiv2Kkg2KrYtNi62YrZhCDYsNin2YPYsdipINin2YTYqtiu2LLZitmGINin2YTZhdik2YLYqiDZhNmE2YXZg9mI2YYg2KfZhNil2LbYp9mB2Yog2KjYp9mE2K/Zgtin2KbZgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YTZiNmGINit2KfZhNin2Kog2KfZhNmG2LTYsSDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YTYrdin2YTYp9iqINin2YTZhti02LEg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9in2YTZhdi52YTZhdin2Kog2KfZhNiu2KfYtdipINio2KPZhdir2YTYqSDZhdis2YXZiNi52KfYqiDYp9mE2KPYsNmI2YbYp9iqINin2YTYrtin2LXYqSDYqNiz2YXYp9iqINin2YTZg9iq2KfZhNmI2Kwg2KfZhNi52KfZhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YjYrdiv2Kkg2KfZhNin2LPZhSDYp9mE2YbZhdi32YrYqSDZhNmB2KbYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2YTYsdmC2YUg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2KfZhNi12YHYrdin2KogKNin2YTYqtmKINiq2LjZh9ixINmB2YrZh9inINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsSDZhNmB2KbYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYt9ix2YrZgtipINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YTZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2YXYrNmF2YjYudipINij2K/ZiNin2Kog2YLYp9mE2Kgg2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsSDZhNmB2KbYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZhdi02LrZhCDYp9mE2KXYtdiv2KfYsSDZhNmB2KbYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn2YrZgtmI2YUg2KjYqtmG2YHZitiwINin2YTYpdis2LHYp9ihINin2YTZhdmD2YjZkdmGINmE2YPZhCDYrdiv2KsgKNmD2YXYs9iq2K/YudmKKSDZhNmD2YQg2K7Yr9mF2Kkg2YjZitioINmF2YPZiNmR2YbYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9mF2KzZhdmI2LnYqSDYp9mE2KXYsNmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINil2KzYsdin2KEg2KXYsdmB2KfZgiDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2LnYsdi2INi02KzYsdipINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINiq2YPYqNmK2LEg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KXYttin2YHYqSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KfZhNmF2KzZhdi52Kkg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KrYrdix2YrYsSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2LnZhti12LEg2KrZg9mI2YrZhiDZhdit2YHZiNi42KfYqiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YTZhNi32KjYp9i52Kkg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9in2YTYp9mF2KrZitin2LLYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYrdiw2YEg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfYudmG2KfYtdixINiq2YPZiNmK2YYg2KfZhNio2K3Yqy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9mC2YUg2KjYqti52YrZitmGINit2KfZhNipINin2YTYrdin2K/YqyDZhNmF2K7YqNixINis2YbYp9im2Yog2KrZhNmC2KfYptmK2KfZiyDYudmG2K8g2LHYqNi3INiq2LDZg9ix2Kkg2KjZhdiu2KjYsSDYrNmG2KfYptmKLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2YLZiNmFINio2KrYudmK2YrZhiDYrdin2YTYqSDYp9mE2YbYtNixINmB2Yog2KfZhNi02KfYtNipINin2YTZhdis2YXYudipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrZgtmI2YUg2KjYqti52YrZitmGINit2KfZhNipINin2YTYrdin2K/YqyDZgdmKINin2YTYtNin2LTYqSDYp9mE2YXYrNmF2LnYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYrtin2LUg2KjZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9mL2Kcg2YHZiiDYp9mE2YLYp9im2YXYqSDZitiz2YXYrSDYqNix2KjYtyDYudmG2LXYsSDYqtmD2YjZitmGINmF2Lkg2YPYp9im2YYg2KLYrtixINmB2Yog2LnYsdi2INiq2YPYqNmK2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYpdi42YfYp9ixINix2KfYqNi3INmB2Yog2KfZhNmC2KfYptmF2Kkg2YTZhNmI2LXZiNmEINil2YTZiSDZhdit2YHZiNi42KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9mL2Kcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNmE2YjYtdmI2YQg2KXZhNmJINmF2K3ZgdmI2LjYp9iqINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixINin2YTYrtin2LUg2KjZhyDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32KfZiyDZgdmKINin2YTZgtin2KbZhdipINmE2K3YsNmBINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEv2KfZhNiq2LXYutmK2LEg2KfZhNiu2KfYtSDYqNmHINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfYpdi42YfYp9ixINix2KfYqNi3INmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYudix2LYg2LHZiNin2KjYtyDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmD2LfYsdmK2YLYqSDYudix2LYg2KfZhNi02KzYsdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9il2LjZh9in2LEg2KfYsdiq2KjYp9i3INmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYqtmD2LHYp9ixINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDZhti42LHYqSDYudin2YXYqSDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNiq2YPYsdin2LEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsSDYp9mE2K7Yp9i1INio2Ycg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32KfZiyDZgdmKINin2YTZgtin2KbZhdipINmE2KrYrdix2YrYsSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixL9in2YTYqti12LrZitixINin2YTYrtin2LUg2KjZhyDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KXYuNmH2KfYsSDYsdin2KjYtyDZgdmKINin2YTZgtin2KbZhdipINmE2YTYsdis2YjYuSDZgdmKINi52LHYtiDYqtmD2KjZitixINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfZi9inINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYt9io2KfYudipINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEv2KfZhNiq2LXYutmK2LEg2KfZhNiu2KfYtSDYqNmHINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfYp9mLINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYqtmD2KjZitixINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDZhti42LHYqSDYudin2YXYqSDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INmF2K3ZgdmI2LjYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYgKNiq2LHYqtmK2Kgg2LnZg9iz2YopINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9in2YTZgdim2Kkg2KfZhNin2YHYqtix2KfYttmK2Kkg2KfZhNiq2Yog2KrYuNmH2LHYjCDYpdiw2Kcg2YTZhSDZitiq2YUg2KrYrdiv2YrYryDYo9mKINmB2KbYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9mF2LnYsdmR2YEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YbYjCDYudmE2Ykg2LPYqNmK2YQg2KfZhNmF2KvYp9mEIENvbmZpZ0l0ZW0j2IwgTXlDb25maWdJdGVtIy4g2KfZhNin2YHYqtix2KfYttmKINmH2YggQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn2YrZgtmI2YUg2KjYqti02LrZitmEINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2gg2KrZhNmC2KfYptmK2YvYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9iq2LnYqNmK2LEg2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfZiNit2K/YqSDYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9mF2LTYutmEINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfZhdinINil2LDYpyDZg9in2YYg2YrZhdmD2YYg2KrYrNmG2Kgg2KrZhtmB2YrYsCBDb25maWdJdGVtQUNMINi52YYg2LfYsdmK2YIg2KfZhNiq2K3ZgtmCINmF2YYg2KrYqNi52YrYp9iqINin2YTYrdmC2YjZhCDYp9mE2YXYrtiy2YbYqSDZhdik2YLYqtmL2KcuINmK2YXZg9mGINij2YYg2YrYpNiv2Yog2LDZhNmDINil2YTZiSDYqtit2LPZitmGINij2YjZgtin2Kog2KrYrdmF2YrZhCDYp9mE2YbZhdin2LDYrNiMINmI2YTZg9mGINmK2KzYqCDYqti52LfZitmE2YfYjCDYpdiw2Kcg2YPYp9mGINiz2YrYqtmFINin2LPYqtiu2K/Yp9mFINmI2K3Yr9in2KogQUNMTW9kdWxlcyDZhNmAIElUU01Db25maWdvbmZpZ0l0ZW0tINmIIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfZhdinINmH2Yog2KfZhNmF2LnZhNmI2YXYp9iqINin2YTYudin2YXYqSDYp9mE2KrZiiDYqti42YfYsSDZgdmKINin2YTYudmG2YjYp9mGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9in2YTZgdim2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn2LnYp9mE2YXZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9mF2Kcg2KjYudivINin2YTYpdmG2KrYp9is2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn2YXYpyDZgtio2YQg2KfZhNil2YbYrNin2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9mF2YbYqtis2KknOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LjUg2KjZiNi12KkgKDQ0LjQ1INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxINio2YjYtdipICg1My4zNCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNi4yNSDYqNmI2LXYqSAoNjYuNjgg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMS41INio2YjYtdipICg4MC4wMSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICfYrdin2YXZhCAxOSDYqNmI2LXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEuNzUg2KjZiNi12KkgKDQuNDUg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDYqNmI2LXYqSAoODguOSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICfYsdmBIDIxINio2YjYtdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzguNSDYqNmI2LXYqSAoOTcuNzkg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAn2LHZgSAyMyDYqNmI2LXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYg2KjZiNi12KkgKDYwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg2KjZiNi12KkgKDEwNi42OCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcuMjUg2KjZiNi12KkgKDEyMC4wMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMy41INio2YjYtdipICg4Ljg5INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLjUg2KjZiNi12KkgKDEzMy4zNSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg2KjZiNi12KkgKDgwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcuNzUg2KjZiNi12KkgKDE0Ni42OCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjQg2KjZiNi12KkgKDkwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMg2KjZiNi12KkgKDE2MC4wMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40INio2YjYtdipICgxMDAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OC4yNSDYqNmI2LXYqSAoMTczLjM1INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUuMjUg2KjZiNi12KkgKDEzLjM0INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLjUg2KjZiNi12KkgKDE4Ni42OSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuMyDYqNmI2LXYqSAoMTEwMCDZhdmFKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4Ljc1INio2YjYtdipICgyMDAuMDIg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiDYqNmI2LXYqSAoMTIwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg2KjZiNi12KkgKDIxMy4zNiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INio2YjYtdin2KogKDE3Ljc4INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDguNzUg2KjZiNi12KkgKDIyLjIzINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLjUg2KjZiNi12KkgKDI2LjY3INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMi4yNSDYqNmI2LXYqSAoMzEuMTIg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0INio2YjYtdipICgzNS41NiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUuNzUg2KjZiNi12KkgKDQwLjAxINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn2KfZhNmF2K3Yp9iz2KjYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9iq2K7YtdmK2LUg2KfZhNi52YbZiNin2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ9in2YTZhdiv2YrYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfZh9in2KrZgSDYqtmG2KfYuNix2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KzZh9in2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9iz2LnYqSDYp9mE2KjYt9in2LHZitipICjYotmHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNio2LfYp9ix2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9in2YTYqNmG2KfYoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn2YjYp9is2YfYqSDYp9mE2K3Yp9mB2YTYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn2YjYrdiv2Kkg2KfZhNmF2LnYp9mE2KzYqSDYp9mE2YXYsdmD2LLZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9mB2KbYqSDZiNit2K/YqSDYp9mE2YXYudin2YTYrNipINin2YTZhdix2YPYstmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ9in2YTYs9i52KkgKNi62YrYutin2KjYp9mK2KopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn2KfZhNiz2LnYqSDZhNmD2YQg2KjYt9in2YLYqSDYsdiz2YjZhdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfYsdmC2YUg2KfZhNio2LfYp9mC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfZgtin2LHYpiDYp9mE2KjYt9in2YLYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KjYt9in2YLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfYqNix2YbYp9mF2Kwg2KfZhNi52YXZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9mB2KbYqSDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn2LnZgtin2LHYqCDYp9mE2LPYp9i52KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ9iz2LHYudipINin2YTYs9in2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqINiq2YjZgtmK2Lkg2KfZhNix2YXZiNiyINin2YTZhdi02YHYsdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfZh9in2KrZgSDYp9mE2YXYpNiq2YXYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9in2YTYp9iq2YHYp9mC2YrYqSDYp9mE2KfYs9iq2LTYp9ix2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn2KfYqti12YQg2KjZhtinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfYp9iq2LXZhCDYqNin2YTZhdmI2LLYuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9il2K/Yp9ix2Kkg2KfZhNit2KfZiNmK2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9in2YTYudmC2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2LnZgtivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn2YHYqtix2Kkg2KfZhNi52YLYryDZhdmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ9mB2KrYsdipINin2YTYudmC2K8g2K3YqtmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9mH2KfYqtmBINmE2KfYs9mE2YPZiiAo2YfYp9iq2YEgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn2YjYrdiv2Kkg2KfZhNiq2YPZhNmB2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfYudiv2K8g2KfZhNiq2LHYp9iu2YrYtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn2KrYp9ix2YrYriDYp9mE2KXZhti02KfYoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn2LHZgSDZhdiu2LXYtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDZhdit2KzZiNiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICfYrtin2K/ZhSDYrtmI2KfYr9mFIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn2KrYp9ix2YrYriDYp9mE2YHYp9iq2YjYsdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfYqtin2LHZitiuINin2YTYt9mE2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNi22YXYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9iz2LfYrSDYp9mE2YXZg9iq2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICfZhdmG2YHYsCDYp9mE2LnYsdi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqINiq2YjZgtmK2Lkg2KfZhNmF2LPYqtmG2K/Yp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAn2LHZgSBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfYtNmH2KfYr9in2Kog2KfZhNio2LHZitivINin2YTYpdmE2YPYqtix2YjZhtmKICjYtNmH2KfYr9in2KogUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfYudmC2K8g2KfZhNi52YXZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9i52YbZiNin2YYgSVAg2KfZhNmG2YfYp9im2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfZhtmH2KfZitipINin2YTYr9i52YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfYqtin2LHZitiuINin2YbYqtmH2KfYoSDYp9mE2LXZhNin2K3ZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfZhdit2LHZgyDYo9mC2LHYp9i1INi12YTYqNipINiu2KfYsdis2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfYrNiv2KfYsSDYp9mE2K3Zhdin2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ9in2YTYqNix2KfZhdisINin2YTYq9in2KjYqtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn2KrYrtiy2YrZhiDYp9mE2LfYp9mC2Kkg2YHZiiDYr9mI2YTYp9ioINin2YTZhdmI2KfYstmG2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfYudin2YXZhCDYp9mE2LTZg9mEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfYp9iq2YHYp9mC2YrYqSDYp9mE2KfZhdiq2YrYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn2KjYsdmG2KfZhdisINmF2KzYp9mG2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn2YXYudmE2YjZhdin2Kog2LnYp9mF2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfYqNi32KfZgtin2Kog2KfZhNix2LPZiNmF2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn2KjYt9in2YLYqSDYp9mE2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn2KfZhNij2KzZh9iy2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfZhtmF2YjYsNisINin2YTYo9is2YfYstipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9mI2LLZhiDYp9mE2KPYrNmH2LLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn2LPZhdin2LnYqSDYp9mE2LHYo9izJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAn2KjYsdmI2KrZiNmD2YjZhCBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfYpdiv2KfYsdipINin2YTZh9mI2YrYqSDZiNin2YTZiNi12YjZhCAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZhdiu2LLZiNmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn2KrZg9in2YTZitmBINin2YTYudin2YPYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2YHYp9iq2YjYsdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn2YTZiNit2Kkg2KfZhNmF2YHYp9iq2YrYrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICfYtNin2LTYqSBMQ0QgKNi02KfYtNipINin2YTYudix2LYg2KfZhNio2YTZiNix2YrYqSDYp9mE2LPYp9im2YTYqSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ9i02KfYtNipIExFRCAo2KfZhNi12YXYp9mFINin2YTYq9mG2KfYptmKINin2YTYqNin2LnYqyDZhNmE2LbZiNihKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfYp9mE2YfYp9iq2YEg2KfZhNij2LHYttmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9mD2YXYqNmK2YjYqtixINmF2K3ZhdmI2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfYrti3INin2YTYudix2LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfYp9mE2LfYqNmC2KkgMTog2KfZhNi32KjZgtipINin2YTZgdmK2LLZitin2KbZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9in2YTYt9io2YLYqSAyOiDYt9io2YLYqSDYp9ix2KrYqNin2Lcg2KfZhNio2YrYp9mG2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDM6INi32KjZgtipINin2YTYtNio2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfYp9mE2LfYqNmC2KkgMzog2LfYqNmC2Kkg2KfZhNi02KjZg9ipICjYp9mE2LTYqNmD2Kkg2KfZhNmB2KfYptmC2KkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA0OiDYt9io2YLYqSDYp9mE2YbZgtmEIDQ6INi32KjZgtipINin2YTZhtmC2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA1OiDYt9io2YLYqSDYp9mE2KzZhNiz2KkgNTog2LfYqNmC2Kkg2KfZhNis2YTYs9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA2OiDYt9io2YLYqSDYp9mE2LnYsdi2INin2YTYqtmC2K/ZitmF2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfYp9mE2LfYqNmC2KkgNzog2LfYqNmC2Kkg2KfZhNiq2LfYqNmK2YLYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9i52YLYryDYp9mE2KXZitis2KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTYqtix2K7Ziti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfZhdmB2KrYp9itINin2YTYqtix2K7Ziti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KrYsdiu2YrYtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn2YHYqtix2Kkg2KfZhNiq2LHYrtmK2LUg2YXZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9mB2KrYsdipINin2YTYqtix2K7Ziti1INit2KrZiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINmE2YrYq9mK2YjZhSDZgdmI2LPZgdin2Kog2KfZhNit2K/ZitivIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINmE2YrYq9mK2YjZhSDYo9mK2YjZhiAo2YTZitir2YrZiNmFINij2YrZiNmGKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTZgtix2LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9iq2YLYuSDZgdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9iu2Lcg2KfZhNi32YjZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn2KfZhNi02LHZg9ipINin2YTZhdi12YbYudipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfYs9i52Kkg2KfZhNiq2K3ZhdmK2YQg2KfZhNmC2LXZiNmJIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfYp9mE2LDYp9mD2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2LDYp9mD2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn2LHZgSDYtdi62YrYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZh9in2KrZgSDYp9mE2YXYrdmF2YjZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfZhdmI2KjYp9mK2YQv2YXYttmF2ZHZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9in2YTYt9ix2KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9mI2LXZgSDYp9mE2LfYsdin2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn2K/ZgtipINin2YTYtNin2LTYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfYrdis2YUg2KfZhNi02KfYtNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn2KfZhNmB2KPYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9mF2LnZhNmI2YXYp9iqINin2YTYtNio2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn2YXYudmE2YjZhdin2Kog2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfYt9io2YLYqSDYp9mE2LTYqNmD2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2KfZhNmG2YrZg9mEINmI2KfZhNmD2KfYr9mF2YrZiNmFIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9io2LfYp9ix2YrYqSDZh9mK2K/YsdmK2K8g2KfZhNmG2YrZg9mELdin2YTZhdi52K/ZhiAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn2KfYqtmB2KfZgtmK2Kkg2LnYr9mFINin2YTYpdmB2LXYp9itIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn2K/Zgdiq2LEg2KfZhNmF2YTYp9it2LjYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAn2LnYr9ivINmI2K3Yr9in2Kog2KfZhNmF2LnYp9mE2KzYqSDYp9mE2YXYsdmD2LLZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9i52K/YryDZiNit2K/Yp9iqINiw2KfZg9ix2Kkg2KfZhNmI2LXZiNmEINin2YTYudi02YjYp9im2YogKFJBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn2LnYr9ivINio2LfYp9mC2KfYqiDYp9mE2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfYtNin2LTYqSBPTEVEICjYp9mE2LXZhdin2YUg2KfZhNir2YbYp9im2Yog2KfZhNio2KfYudirINmE2YTYttmI2KEg2KfZhNi52LbZiNmKKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfYqtmD2KfZhNmK2YEg2KfZhNiq2LTYutmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTYt9mE2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfYo9iu2LHZiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn2KfZhNmF2K7Ysdis2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICfYsdmC2YUg2KfZhNiq2LnYsdmK2YEg2KfZhNi02K7YtdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn2LHZgtmFINin2YTYqti52LHZitmBINin2YTYtNiu2LXZiiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTYtNix2KfZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZh9in2KrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn2YbZiNi5INin2YTZh9in2KrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9in2YTZhtmI2Ykg2KfZhNmF2KfYr9mK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfYqtmI2LXZitmEINin2YTYt9in2YLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9iq2YUg2LTYsdin2KTZh9inINmF2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9i52YXZgiDYp9mE2K3Yp9mF2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfZiNit2K/Yp9iqINin2YTYrdin2YXZhCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9in2YTYutix2YHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ9io2LfYp9mC2KkgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfYudmC2K8g2KfZhNio2YrYuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfZh9in2KrZgSDZiti52YXZhCDYqNin2YTYo9mC2YXYp9ixINin2YTYtdmG2KfYudmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINit2YXYtiDYp9mE2LHYtdin2LUg2KfZhNmF2K7YqtmI2YXYqSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9in2YTYsdmC2YUg2KfZhNiq2LPZhNiz2YTZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfYqNix2YXYrNmK2KfYqiDYp9mE2K7Yp9iv2YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfYp9iq2YHYp9mC2YrYqSDYp9mE2K7Yr9mF2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfYqNi32KfZgtipINin2YTYrtiv2YXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNmF2YLYqNizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn2KfZhNio2LHZhdis2YrYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn2YXZg9io2LHYp9iqINin2YTYtdmI2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn2YLZitin2LPZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn2KjYr9ihINi52YbZiNin2YYgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9in2YTYqtiu2LLZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn2YLYs9mFINin2YTYqtiu2LLZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn2LTYsdmD2Kkg2YHYsdi52YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn2KfZhNmF2YTYrti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn2KfZhNi52YXZitmEINin2YTYsdmC2YrZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn2KfZhNiu2YrZiNi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn2KfZhNi12KfYudmC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ9il2KzZhdin2YTZiiDYsNin2YPYsdipINin2YTZiNi12YjZhCDYp9mE2LnYtNmI2KfYptmKINmE2KjYt9in2YLYqSDYp9mE2LHYs9mI2YXYp9iqIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfYpdis2YXYp9mE2Yog2LDYp9mD2LHYqSDYp9mE2YjYtdmI2YQg2KfZhNi52LTZiNin2KbZiiAo2KzZitis2KfYqNin2YrYqiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9i02KfYtNipINiq2LnZhdmEINio2KfZhNmE2YXYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ9in2YTYqNix2KwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ9mF2YjYsti5IFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9iz2YXYp9i52Kkg2LHYo9izINin2YTZiNin2YLYuSDYp9mE2KfZgdiq2LHYp9i22YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfZgdmK2LHYqti02YjYp9mE2YTZitmG2YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ9mH2KfYqtmBINi12YjYqtmKINi52KjYsSDYqNix2YjYqtmI2YPZiNmEINin2YTYpdmG2KrYsdmG2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ9mD2KfZhdmK2LHYpyDYp9mE2YjZitioJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/bg_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmJnX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuCDQtNCw0L3QvdC4INC30LAg0YDQsNCx0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LfQsCDQstGF0L7QtNGP0YnQuCDQtNCw0L3QvdC4INC30LAg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC30LAg0LjQt9GF0L7QtNGP0YnQuNGC0LUg0LTQsNC90L3QuCDQt9CwINC+0YLQs9C+0LLQvtGAJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRgtC1INC10LTQuNC90LjRhtC4IENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0YDQvtC70Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9C6INC80L7QttC10YLQtSDQtNCwINC40LzQv9C+0YDRgtC40YDQsNGC0LUg0L/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0LCDQutC+0LjRgtC+INC/0L7QutCw0LfQstCw0YIg0L3QsNC5LdC+0LHQuNGH0LDQudC90LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQnNC+0LvRjywg0L7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INC80L7QttC1INC00LAg0YHQtSDQvdCw0LvQvtC20Lgg0LTQvtC/0YrQu9C90LjRgtC10LvQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0JDQutGC0YPQsNC70LjQt9C40YDQsNC90LUg0L3QsCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJ0Lgg0YHRgtGA0YPQutGC0YPRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNCw0L3QtSDQvdCwINC/0LDQutC10YLQuCDQvtGCINC60LvQsNGB0L7QstC1IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn0JrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GPINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0LjQu9GC0YrRgCDQt9CwINC60LvQsNGB0L7QstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LrQu9Cw0YEg0L7RgiDRgdC/0LjRgdGK0LrQsCwg0LfQsCDQtNCwINGB0YrQt9C00LDQtNC10YLQtSDQvdC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn0JPRgNGD0L/QvtCy0L4g0LTQtdC50YHRgtCy0LjQtSDQvdCwIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ9Cb0LjQvdC6INC60YrQvCDQtNGA0YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn0J3QtdCy0LDQu9C40LTQtdC9INC90L7QvNC10YAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ9Cd0L7QvNC10YDRitGCINC90LAg0LTRgNGD0LMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLCDRgSDQutC+0LnRgtC+INC00LAg0YHQtSDRgdCy0YrRgNC20LXRgtC1Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9Cd0LDQuNGB0YLQuNC90LAg0LvQuCDQuNGB0LrQsNGC0LUg0LTQsCDQuNC30YLRgNC40LXRgtC1INGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNC10YLQviDQvdCwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0JjQvNC10YLQviDQstC10YfQtSDRgdC1INC40LfQv9C+0LvQt9Cy0LAg0L7RgiDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0J3QvtC80LXRgCjQsCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINCy0LXRgNGB0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQstC10YDRgdC40Y/RgtCwINC90LAg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0J3QvtC80LXRgNGK0YIg0L3QsCDQstC10YDRgdC40Y/RgtCwINCy0LXRh9C1INGB0LUg0LjQt9C/0L7Qu9C30LLQsCDQvtGCINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0L3QvtC80LXRgCjQuCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0L3QsCDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0YrQtNGK0YDQttCw0L3QuNC1INC90LAg0LjRgdGC0L7RgNC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNC1INC90LAg0YHRitC30LTQsNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9Cj0LLQtdC70LjRh9C10L0g0LjQt9Cz0LvQtdC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4INC90LAg0YHRgtGA0LDQvdC40YbQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDRgdCwINC90LDQvNC10YDQtdC90Lgg0LTQsNC90L3QuCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0KHRgtCw0YDRgtC40YDQsNC50YLQtSDQotGK0YDRgdC10L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQlNCwINGC0YrRgNGB0Lgg0Lgg0LIg0L/RgNC10LTQuNGI0L3QuNGC0LUg0LLQtdGA0YHQuNC4Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ9CU0YrRgNCy0L7QstC40LTQtdC9INC40LfQs9C70LXQtCDQt9CwIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfQndC40LLQviDQvdCwINC00YrQu9Cx0L7Rh9C40L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9Cj0LLQtdC70LjRh9Cw0LLQsNC90LUv0LjQt9C60LvRjtGH0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JzQsNC60YHQuNC80LDQu9C90L7RgtC+INC90LjQstC+INC90LAg0LLRgNGK0LfQutC40YLQtSDQtSDQtNC+0YHRgtC40LPQvdCw0YLQviDQt9CwIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQviDRgdGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC+INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQn9C+0YHQu9C10LTQvdCwINC/0YDQvtC80Y/QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0L7RgdC70LXQtNC90L4g0L/RgNC+0LzQtdC90LXQvSDQvtGCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn0JLQsNGI0LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Ci0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINC+0LHQtdC60YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ9Ck0LjQu9GC0YrRgCDQv9C+INGC0LjQvyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9Cp0LUg0LHRitC00LDRgiDQuNC80L/QvtGA0YLQuNGA0LDQvdC4INGB0LvQtdC00L3QuNGC0LUg0LrQu9Cw0YHQvtCy0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0KnQtSDQsdGK0LTQsNGCINC40LzQv9C+0YDRgtC40YDQsNC90Lgg0YHQu9C10LTQvdC40YLQtSDRgNC+0LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfQntCx0YrRgNC90LXRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0LUg0YnQtSDQsdGK0LTQsNGCINGB0YrQt9C00LDQtNC10L3QuCDQuCDRgdGK0L7RgtCy0LXRgtC90LjRgtC1INC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0Lgg0LrQu9Cw0YHQvtCy0LUgR2VuZXJhbENhdGFsb2cg0Lgg0L3Rj9C80LAg0LTQsCDQuNC80LAg0LDQstGC0L7QvNCw0YLQuNGH0L3QviDQv9GA0LXQvNCw0YXQstCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQmNGB0LrQsNGC0LUg0LvQuCDQtNCwINC/0YDQvtC00YrQu9C20LjRgtC1Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfQndGD0LbQtNCw0LXRgtC1INGB0LUg0L7RgiDQv9GA0LjQvNC10YDQvdC4INC60LvQsNGB0L7QstC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICfQlNC10YTQuNC90LjRhtC40Y/RgtCwINC90LUg0LUg0LLQsNC70LjQtNC10L0g0YXQtdGIINC90LAgWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQn9GA0LXQs9C70LXQtDogSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQtSDQtNCw0LTQtdC9IElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ9CY0LzQsNGC0LUg0L3Rg9C20LTQsCDQvtGCINC/0L7QvdC1INC10LTQuNC9INC40LfQsdGA0LDQvSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0J3Rj9C80LDRgtC1INC00L7RgdGC0YrQvyDQt9CwINC30LDQv9C40YEg0LTQviDRgtC+0LfQuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YI6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfQndC1INC1INC00LXRhNC40L3QuNGA0LDQvdCwINC00LXRhNC40L3QuNGG0LjRjyDQt9CwINC60LvQsNGBICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y/RgiDQtdC70LXQvNC10L3RgiAiJXMiINC90LUg0LUg0L3QsNC80LXRgNC10L0g0LIg0LHQsNC30LDRgtCwINC00LDQvdC90LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QtSDQvNC+0LbQsNGFINC00LAg0LjQt9GC0YDQuNGPIElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfQndC1INC1INC90LDQvNC10YDQtdC90LAg0LLQtdGA0YHQuNGPINC30LAgSUQg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0LTRg9Cx0LvQuNGA0LDQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lgg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC70LDRgSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9Cd0Y/QvNCwINC00L7RgdGC0YrQvyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtC60LDQttC1INGF0YDQvtC90L7Qu9C+0LPQuNGPLCDQvdC1INC1INC00LDQtNC10L0gSUQg0L3QsCDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtC60LDQttC1INC40YHRgtC+0YDQuNGPLCDQvdC1INGB0LAg0LTQsNC00LXQvdC4INC/0YDQsNCy0LAg0LfQsCDQtNC+0YHRgtGK0L8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfQndC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCwINCy0LXRgNGB0LjRjyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvdC+ICjQvdC+0LLQvj0lcywg0YHRgtCw0YDQvj0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40L3RhtC40LTQtdC90YLQsCDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QviAo0L3QvtCy0L49JXMsINGB0YLQsNGA0L49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCIChJRD0lcykg0LUg0LjQt9GC0YDQuNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn0JTQvtCx0LDQstC10L3QsCDQtSDQstGA0YrQt9C60LAg0LrRitC8ICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0JLRgNGK0LfQutCw0YLQsCDQutGK0LwgJXMgKHR5cGU9JXMpINC1INC40LfRgtGA0LjRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfQlNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvdCwIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQmNC80LXRgtC+INC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvdC+ICjQvdC+0LLQvj0lcywg0YHRgtCw0YDQvj0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfQkNGC0YDQuNCx0YPRgtGK0YIgJXMg0LUg0LDQutGC0YPQsNC70LjQt9C40YDQsNC9INC+0YIg4oCeJXPigJwg0L3QsCDigJ4lc+KAnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfQktC10YDRgdC40Y8gJXMg0LUg0LjQt9GC0YDQuNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQtSDQtNCw0LTQtdC9IElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC40LvQuCBJRCDQvdCwINCy0LXRgNGB0LjRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtC60LDQttC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0L3QtSDRgdCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0lEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCICVzINC90LUg0LUg0L3QsNC80LXRgNC10L0g0LIg0LHQsNC30LDRgtCwINC00LDQvdC90LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9C+0YLQv9C10YfQsNGC0LDQvdC+INC+0YIgJXMg0LIgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cf0YDQtdC/0YDQsNGC0LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ9Cd0LXQstCw0LvQuNC00LXQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCwINC60LvQsNGBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCwINC60LvQsNGBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9Cd0Y/QvNCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/INC30LAg0YLQvtC30Lgg0LrQu9Cw0YEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQkdC10Lcg0YDQtdC30YPQu9GC0LDRgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfQoNC10LfRg9C70YLQsNGC0Lgg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDQtdC70LXQvNC10L3Rgiwg0L3QtSDRgdCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfQndC1INC1INC90LDQvNC10YDQtdC9INC10LvQtdC80LXQvdGCINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn0J3QtSDRgdCwINC90LDQvNC10YDQtdC90Lgg0LLQtdGA0YHQuNC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9C+0L/QtdGA0LDRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQstC90LjQvNCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn0LjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0YLQvtC30Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQvdGG0LjQtNC10L3RgtCwINC30LAg0YLQvtC30Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn0J3Rj9C80LAg0YDQsNC30YDQtdGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn0KTQuNC70YLRitGA0YrRgiDQtSDQvdC10LLQsNC70LjQtNC10L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfQndC10LLQsNC70LjQtNC90Lgg0L/QsNGA0LDQvNC10YLRgNC4INC30LAg0YLRitGA0YHQtdC90LUhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn0J/QvtC60LDQt9Cw0L3QuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQtdC60YPRiSDRgtC40L8g0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQvdGG0LjQtNC10L3Rgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfQnNC10LbQtNGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC90LAg0LrQu9Cw0YHQsCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfQmNC30LHQtdGA0LXRgtC1INC10LTQuNC9INC40LvQuCDQv9C+0LLQtdGH0LUg0LrQu9Cw0YHQvtCy0LUsINC30LAg0LTQsCDQvtCz0YDQsNC90LjRh9C40YLQtSDQuNC30LHQuNGA0LDQtdC80LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC90LAg0LrQu9Cw0YHQsCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JjQt9Cx0LXRgNC10YLQtSDQtdC00LjQvSDQuNC70Lgg0L/QvtCy0LXRh9C1INC60LvQsNGB0L7QstC1LCDQt9CwINC00LAg0L7Qs9GA0LDQvdC40YfQuNGC0LUg0LjQt9Cx0LjRgNCw0LXQvNC40YLQtSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9CU0LjQvdCw0LzQuNGH0LXQvSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ9Ch0YLQsNGC0LjRh9C10L0gKNCy0LXRgNGB0LjRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn0KLQuNC/INC/0YDQtdC/0YDQsNGC0LrQsCDQutGK0Lwg0LLRgNGK0LfQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfQlNCw0LvQuCDRgtCw0LfQuCDQstGA0YrQt9C60LAg0YHQtSDQvtGC0L3QsNGB0Y8g0LfQsCBDb25maWdJdGVtINC40LvQuCDQt9CwINGB0YLQsNGC0LjRh9C90LDRgtCwINCy0LXRgNGB0LjRjyDQvdCwINC+0LHQtdC60YLQsCwg0LrRitC8INC60L7QudGC0L4g0YHQtSDQv9GA0LXQv9GA0LDRidCwLiDQmNC30YfQuNGB0LvRj9Cy0LDQvdC10YLQviDQvdCwINGC0LXQutGD0YnQvtGC0L4g0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQvdGG0LjQtNC10L3RgtCwINGB0LUg0LjQt9Cy0YrRgNGI0LLQsCDRgdCw0LzQviDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQstGA0YrQt9C60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQsNGC0YDQuNCx0YPRgtCwLCDQv9C+INC60L7QudGC0L4g0YnQtSDRgdC1INGC0YrRgNGB0Y/RgiDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn0JHQsNC30L7QstCw0YLQsCDRgdGC0YDRg9C60YLRg9GA0LAg0L3QtSDQtSDQstCw0LvQuNC00L3QsC4g0JzQvtC70Y8sINC/0YDQtdC00L7RgdGC0LDQstC10YLQtSDRhdC10Ygg0YEg0LTQsNC90L3QuCDQstGK0LIg0YTQvtGA0LzQsNGCIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAn0JjQt9C40YHQutCy0LAg0YHQtSDQvdC40LfRitGCIFlBTUwg0LTQsCDQt9Cw0L/QvtGH0LLQsCDRgSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfQndC1INC80L7QttC1INC00LAg0YHQtSDQuNC30YfQuNGB0YLQuCDRgtCw0LHQu9C40YbQsNGC0LAgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn0J3QtSDQsdGP0YXQsCDQvtGC0LrRgNC40YLQuCDQv9C+0LTRhdC+0LTRj9GJ0Lgg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INCy0LzRitC60L3QtSDQsiDRgtCw0LHQu9C40YbQsNGC0LAgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfQktC80YrQutC90LDRgtC4IDAg0YDQtdC00LAg0LIg0YLQsNCx0LvQuNGG0LDRgtCwIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfQnNCw0LrRgdC40LzQsNC70LXQvSDQsdGA0L7QuSDQvdCwINC10LTQuNC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ9CY0LzQv9C+0YDRgtC40YDQsNC90LUv0LXQutGB0L/QvtGA0YLQuNGA0LDQvdC1INC90LAg0L/RgNC40LrQsNGH0LXQvdC4INGE0LDQudC70L7QstC1ICjQutCw0YLQviDQv9C+0YHQu9C10LTQvdC4INC30LDQv9C40YHQuCDQvdCwINGA0LXQtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfQktC10YDRgdC40Y8g0KDQtdC00LjRhtCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ9CT0YDQtdGI0LrQsCDQv9GA0Lgg0YHQuNC90YXRgNC+0L3QuNC30LjRgNCw0L3QtdGC0L4g0L3QsCDQtNC10YTQuNC90LjRhtC40LjRgtC1LiDQnNC+0LvRjywg0L/RgNC+0LLQtdGA0LXRgtC1INC00L3QtdCy0L3QuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn0JjQvNCw0YLQtSDQtNC10YTQuNC90LjRhtC40Lgg0L3QsCBJVFNNQ29uZmlnSXRlbSwg0LrQvtC40YLQviDQvdC1INGB0LAg0YHQuNC90YXRgNC+0L3QuNC30LjRgNCw0L3QuC4g0JzQvtC70Y8sINCy0L3QtdC00YDQtdGC0LUg0L/RgNC+0LzQtdC90LjRgtC1INCyINC00LjQvdCw0LzQuNGH0L3QuNGC0LUg0L/QvtC70LXRgtCwINC90LAg0LLQsNGI0LjRjyBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9CY0LfRgtC10LrQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn0J/QvtC00LTRgNGK0LbQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn0J/QuNC70L7Rgi3QstC+0LTQsNGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfQn9C70LDQvdC40YDQsNC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9Cg0LXQvNC+0L3Rgi/QktGK0LfRgdGC0LDQvdC+0LLRj9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfQmNC30LvRj9C30YrQuyDQvtGCINGD0L/QvtGC0YDQtdCx0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn0J/RgNC10LPQu9C10LbQtNCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9Ci0LXRgdGCL9Ca0LDRh9C10YHRgtCy0LXQvSDQutC+0L3RgtGA0L7Quyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn0J/RgNC10LPQu9C10LQg0Lgg0L/QvtGC0LLRitGA0LbQtNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ9CY0LzQv9C+0YDRgtC40YDQsNC90LUg0L3QsCDQutC70LDRgdC+0LLQtS/RgNC+0LvQuCDQuCDRgdCy0YrRgNC30LDQvdC40YLQtSDRgSDRgtGP0YUg0L/QvtC70LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn0J/QviDQstGA0LXQvNC1INC90LAg0LjQvNC/0L7RgNGC0LjRgNCw0L3QtdGC0L4g0L3QsCDQutC70LDRgdCwINC1INCy0YrQt9C90LjQutC90LDQu9CwINCz0YDQtdGI0LrQsC4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINCh0LrRgNC40YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g0L/QvtC60LDQt9Cw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J/QvtC30LLQvtC70Y/QstCwINGA0LDQt9GI0LjRgNC10L3QuCDRg9GB0LvQvtCy0LjRjyDQt9CwINGC0YrRgNGB0LXQvdC1INC/0YDQuCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLiDQoSDRgtCw0LfQuCDRhNGD0L3QutGG0LjRjyDQvNC+0LbQtdGC0LUg0LTQsCDRgtGK0YDRgdC40YLQtSDQvdCw0L/RgNC40LzQtdGAINC40LzQtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtCwINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgSDRgtCw0LrQuNCy0LAg0YPRgdC70L7QstC40Y8g0LrQsNGC0L4gIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LLQsCDRgNCw0LfRiNC40YDQtdC90Lgg0YPRgdC70L7QstC40Y8g0LfQsCDRgtGK0YDRgdC10L3QtSDQsiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINC60LvQuNC10L3RgtCwLiDQoSDRgtCw0LfQuCDRhNGD0L3QutGG0LjRjyDQvNC+0LbQtdGC0LUg0LTQsCDRgtGK0YDRgdC40YLQtSDQvdCw0L/RgNC40LzQtdGAINC40LzQtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtCwINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgSDRgtCw0LrQuNCy0LAg0YPRgdC70L7QstC40Y8g0LrQsNGC0L4gIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9CX0LDRh9C40YHQu9C10L3QuCBLRSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tFINC30LDRh9C40YHQu9C10L3QuCDQvdCwINC60L7QvNC/0LDQvdC40Y/RgtCwINC60LvQuNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9Ca0JUsINC30LDRh9C40YHQu9C10L3QuCDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60LAg0L3QsCBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQn9GA0L7QstC10YDRj9Cy0LDQudGC0LUg0LfQsCDRg9C90LjQutCw0LvQvdC+INC40LzQtSDRgdCw0LzQviDQsiDRgNCw0LzQutC40YLQtSDQvdCwINC10LTQuNC9INC4INGB0YrRiSDQutC70LDRgSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAo4oCe0LrQu9Cw0YHigJwpINC40LvQuCDQs9C70L7QsdCw0LvQvdC+ICjigJ7Qs9C70L7QsdCw0LvQtdC94oCcKSwg0LrQvtC10YLQviDQvtC30L3QsNGH0LDQstCwLCDRh9C1INCy0YHQtdC60Lgg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRiSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0YHQtSDQstC30LXQvNCwINC/0YDQtdC00LLQuNC0LCDQutC+0LPQsNGC0L4g0YHQtSDRgtGK0YDRgdGP0YIg0LTRg9Cx0LvQuNC60LDRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQvNC+0LTRg9C7INC30LAg0L3QsNC70LDQs9Cw0L3QtSDQvdCwINGB0YXQtdC80LAg0LfQsCDQuNC80LXQvdGD0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INC80L7QtNGD0Lsg0LfQsCDQvdCw0LvQsNCz0LDQvdC1INC90LAg0YHRhdC10LzQsCDQvdCwINC90L7QvNC10YDQsNGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LzQvtC00YPQuywg0LrQvtC50YLQviDQtNCwINC90LDQu9Cw0LPQsCDRgdGF0LXQvNCwINGBINC90LjQtyDQvtGCINCy0LXRgNGB0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INCw0YLRgNC40LHRg9GC0LgsINC60L7QuNGC0L4g0LTQsCDQt9Cw0LTQtdC50YHRgtCy0LDRgiDRgdGK0LfQtNCw0LLQsNC90LXRgtC+INC90LAg0L3QvtCy0LAg0LLQtdGA0YHQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INC60LDRgtC10LPQvtGA0LjQuCwg0LrQvtC40YLQviDQtNCwINC/0YDQuNGB0LLQvtC40YLQtSDQvdCwINGC0L7Qt9C4INC60LvQsNGBINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfQpNC40LvRgtGA0Lgg0LfQsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC70L7QvdCw0YLQsCDQt9CwIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfQmtC+0LvQvtC90LgsINC60L7QuNGC0L4g0LzQvtCz0LDRgiDQtNCwINGB0LUg0YTQuNC70YLRgNC40YDQsNGCINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuINCX0LDQsdC10LvQtdC20LrQsDog0KDQsNC30YDQtdGI0LXQvdC4INGB0LAg0YHQsNC80L4g0LDRgtGA0LjQsdGD0YLQuCDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC4INC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfQlNC+0LHQsNCy0Y/QvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGB0YrQsdC40YLQuNC1INC30LAg0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3Rgiwg0LrQvtC50YLQviDQv9C+0LfQstC+0LvRj9Cy0LAg0LfQsNC/0LjRgdCy0LDQvdC1INCyINGF0YDQvtC90L7Qu9C+0LPQuNGPINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0YHRitCx0LjRgtC40Y8g0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QudGC0L4g0LDQutGC0YPQsNC70LjQt9C40YDQsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LTQviDRgtC10LrRg9GJ0LDRgtCwINC40Lwg0LTQtdGE0LjQvdC40YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQuNGA0LDQudGC0LUg0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9Cf0LXRh9Cw0YIg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0JrQvtC90YTQuNCz0YPRgNC40YDQsNC90LUg0L3QsCDQvNCw0YnQsNCx0LAg0L3QsCDQtdC70LXQvNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ9CY0LfQs9C70LXQtCDQvdCwINC00YrRgNCy0L7RgtC+INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQvdCwINC10LvQtdC80LXQvdGC0LAgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyDQvtGCINGB0LvQtdC00L3QuNGC0LUg0LrQu9Cw0YHQvtCy0LUg0L3Rj9C80LAg0LTQsCDRgdC1INGB0YrRhdGA0LDQvdGP0LLQsNGCINC90LAg0YHRitGA0LLRitGA0LAgRWxhc3RpY3NlYXJjaC4g0JfQsCDQtNCwINC/0YDQuNC70L7QttC40YLQtSDRgtC+0LLQsCDQutGK0Lwg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRidC4IENJLCDQvNC40LPRgNCw0YbQuNGP0YLQsCDQvdCwIENJINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHRgtCw0YDRgtC40YDQsCDRh9GA0LXQtyDQutC+0L3Qt9C+0LvQsNGC0LAsINGB0LvQtdC0INC60LDRgtC+INC/0YDQvtC80LXQvdC40YLQtSDRgtCw0LfQuCDQvtC/0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyDRgdGK0YEg0YHQu9C10LTQvdC40YLQtSDRgdGK0YHRgtC+0Y/QvdC40Y8g0L3QsCDQstC90LXQtNGA0Y/QstCw0L3QtSDQvdGP0LzQsCDQtNCwINGB0LUg0YHRitGF0YDQsNC90Y/QstCw0YIg0L3QsCDRgdGK0YDQstGK0YDQsCBFbGFzdGljc2VhcmNoLiDQl9CwINC00LAg0L/RgNC40LvQvtC20LjRgtC1INGC0L7QstCwINC60YrQvCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJ0LggQ0ksINC80LjQs9GA0LDRhtC40Y/RgtCwINC90LAgQ0kg0YLRgNGP0LHQstCwINC00LAg0YHQtSDRgdGC0LDRgNGC0LjRgNCwINGH0YDQtdC3INC60L7QvdC30L7Qu9Cw0YLQsCwg0YHQu9C10LQg0LrQsNGC0L4g0L/RgNC+0LzQtdC90LjRgtC1INGC0LDQt9C4INC+0L/RhtC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ9Cb0LjQvNC40YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Cb0LjQvNC40YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L3QsCDRgdGC0YDQsNC90LjRhtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn0JHQsNC30LAg0LTQsNC90L3QuCDQt9CwINGD0L/RgNCw0LLQu9C10L3QuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ9CT0YDRg9C/0L7QsiDQvNC+0LTRg9C7INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn0KHRitC30LTQsNCy0LDQudGC0LUg0Lgg0YPQv9GA0LDQstC70Y/QstCw0LnRgtC1INC00LXRhNC40L3QuNGG0LjQuNGC0LUg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfQodGK0LfQtNCw0LLQsCDQsdC40LvQtdGC0Lgg0LfQsCBDb25maWdJdGVtcyDQsiDQvtC/0YDQtdC00LXQu9C10L3QuCDQvNC+0LzQtdC90YLQuCDQvtGCINCy0YDQtdC80LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ9Ca0LvQuNC10L3RgtC40YLQtSDQvNC+0LPQsNGCINC00LAg0LLQuNC20LTQsNGCINC40YHRgtC+0YDQuNGH0LXRgdC60Lgg0LLQtdGA0YHQuNC4INC90LAgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ9Ca0LvQuNC10L3RgtC40YLQtSDQuNC80LDRgiDQstGK0LfQvNC+0LbQvdC+0YHRgiDRgNGK0YfQvdC+INC00LAg0L/RgNC10LLQutC70Y7Rh9Cy0LDRgiDQvNC10LbQtNGDINC40YHRgtC+0YDQuNGH0LXRgdC60LjRgtC1INCy0LXRgNGB0LjQuCDQvdCwIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdC90Lgg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUsINC60L7QuNGC0L4g0LTQsCDRgdC1INC40LfQv9C+0LvQt9Cy0LDRgiDQsiDQsNGC0YDQuNCx0YPRgtCwINC30LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0J/RgNC40LzQtdGAOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdC90Lgg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUsINC60L7QuNGC0L4g0LTQsCDRgdC1INC40LfQv9C+0LvQt9Cy0LDRgiDQsiDQsNGC0YDQuNCx0YPRgtCwINC30LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0J/RgNC40LzQtdGAOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsNC50YLQtSDQtNC10LnRgdGC0LLQuNGPLCDQv9GA0Lgg0LrQvtC40YLQviDQtSDQvdCw0LvQuNGH0LXQvSDQsdGD0YLQvtC9INC30LAg0L3QsNGB0YLRgNC+0LnQutC4INCyINC/0YDQuNGB0L/QvtGB0L7QsdC70LXQvdC40LXRgtC+INC30LAg0YHQstGK0YDQt9Cw0L3QuCDQvtCx0LXQutGC0LggKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0JzQvtC70Y8sINC+0LHRitGA0L3QtdGC0LUg0LLQvdC40LzQsNC90LjQtSwg0YfQtSDRgtC10LfQuCDQtNC10LnRgdGC0LLQuNGPINGC0YDRj9Cx0LLQsCDQtNCwINGB0LAg0YDQtdCz0LjRgdGC0YDQuNGA0LDQu9C4INGB0LvQtdC00L3QuNGC0LUgSlMg0LggQ1NTINGE0LDQudC70L7QstC1OiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50IC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsNC90LUg0L3QsCDRgdGF0LXQvNCwINC90LAgVGVtcGxhdGU6OlRvb2xraXQg0LfQsCDQvdC40LfQvtCy0LUg0L3QsCDQstC10YDRgdC40LguINCY0LfQv9C+0LvQt9Cy0LAg0YHQtSDRgdCw0LzQviDQsNC60L4g0LzQvtC00YPQu9GK0YIgVmVyc2lvbiBTdHJpbmcgTW9kdWxlINC1INC30LDQtNCw0LTQtdC9INC90LAgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LDQudGC0LUg0L3QsNCx0L7RgCDQvtGCINGD0YHQu9C+0LLQuNGPLCDQv9GA0Lgg0LrQvtC40YLQviDQvdCwINC60LvQuNC10L3RgtCwINGB0LUg0YDQsNC30YDQtdGI0LDQstCwINC00LAg0LLQuNC20LTQsCDQtNCw0LTQtdC9INC10LvQtdC80LXQvdGCINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0KPRgdC70L7QstC40Y/RgtCwINC80L7Qs9Cw0YIg0L/QviDQttC10LvQsNC90LjQtSDQtNCwINCx0YrQtNCw0YIg0L7Qs9GA0LDQvdC40YfQtdC90Lgg0LTQviDQvtC/0YDQtdC00LXQu9C10L3QuCDQs9GA0YPQv9C4INC60LvQuNC10L3RgtC4LiDQmNC80LXRgtC+INC1INC10LTQuNC90YHRgtCy0LXQvdC40Y/RgiDQt9Cw0LTRitC70LbQuNGC0LXQu9C10L0g0LDRgtGA0LjQsdGD0YIuINCQ0LrQviDQvdC1INGB0LAg0LfQsNC00LDQtNC10L3QuCDQtNGA0YPQs9C4INC+0L/RhtC40LgsINCy0YHQuNGH0LrQuCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRidC1INCx0YrQtNCw0YIg0LLQuNC00LjQvNC4INCyINGC0LDQt9C4INC60LDRgtC10LPQvtGA0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L3QtdC+0LHRhdC+0LTQuNC80LjRgtC1INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0LjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINGBINC/0L7QvNC+0YnRgtCwINC90LAg0L7QsdGJ0LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC90LXQvtCx0YXQvtC00LjQvNC40YLQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC/0L7Qu9GD0YfQsNCy0LDQvdC1INC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCDRgSDQv9C+0LzQvtGJ0YLQsCDQvdCwINC+0LHRidC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvdC10L7QsdGF0L7QtNC40LzQuNGC0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0Lgg0YEg0L/QvtC80L7RidGC0LAg0L3QsCDQvtCx0YnQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0JfQsNC00YrQu9C20LjRgtC10LvQvdC4INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0LfQsNC00LDQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAgSVRTTSDRgSDQv9C+0LzQvtGJ0YLQsCDQvdCwINC+0LHRidC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC80L7QtNGD0Lsg0LfQsCDQv9GA0LXQs9C70LXQtCwg0LfQsCDQtNCwINC/0L7QutCw0LbQtSDQvNCw0LvRitC6INC40LfQs9C70LXQtCDQvdCwINGB0L/QuNGB0YrQuiDRgSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQtNCw0LvQuCDQtdGC0LjQutC10YLQuNGC0LUg0LfQsCDRgtC40L/QsCDQvdCwINCy0YDRitC30LrQsNGC0LAg0YLRgNGP0LHQstCwINC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCINCy0YrQsiDQstGA0YrQt9C60LjRgtC1INC90LAg0LLRitC30LvQuNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINGA0LXQs9GD0LvRj9GA0L3QuCDQuNC30YDQsNC30Lgg0LjQvdC00LjQstC40LTRg9Cw0LvQvdC+INC30LAg0LLRgdC10LrQuCDQutC70LDRgSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0LfQsCDQtNCwINC/0YDQvtCy0LXRgNC4INC40LzQtdGC0L4g0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQuCDQtNCwINC/0L7QutCw0LbQtSDRgdGK0L7RgtCy0LXRgtC90LjRgtC1INGB0YrQvtCx0YnQtdC90LjRjyDQt9CwINCz0YDQtdGI0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC90LDQu9C40YfQvdC40YLQtSDQutC+0LvQvtC90Lgg0L3QsCBDSSDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC30LDQstC40YHQuNC80L7RgdGCINC+0YIg0LrQu9Cw0YHQsCBDSS4g0JLRgdC10LrQuCDQt9Cw0L/QuNGBINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHRitGB0YLQvtC4INC+0YIg0LjQvNC1INC90LAg0LrQu9Cw0YEg0Lgg0LzQsNGB0LjQsiDQvtGCINC90LDQu9C40YfQvdC4INC/0L7Qu9C10YLQsCDQt9CwINGB0YrQvtGC0LLQtdGC0L3QuNGPINC60LvQsNGBLiDQl9Cw0L/QuNGB0LjRgtC1INC30LAg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCDRgtGA0Y/QsdCy0LAg0LTQsCDQvtGC0LPQvtCy0LDRgNGP0YIg0L3QsCDRgdGF0LXQvNCw0YLQsCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQsNGC0YDQuNCx0YPRgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQsNGC0YDQuNCx0YPRgtCwINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LfQsCDRgdC+0YDRgtC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC60LvQuNC10L3RgtGB0LrQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINCw0YLRgNC40LHRg9GC0LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQt9CwINGB0L7RgNGC0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwINGC0LDQt9C4INC+0L/QtdGA0LDRhtC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINGA0LXQtNCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4g0J3QsNCz0L7RgNC1OiDQvdCw0Lkt0YHRgtCw0YDQuNGP0YIg0L7RgtCz0L7RgNC1LiDQndCw0LTQvtC70YM6INC90LDQuS3QvdC+0LLQuNGP0YIg0L7RgtCz0L7RgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDRgNC10LTQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINC60LvQuNC10L3RgtCwLiDQndCw0LPQvtGA0LU6INC90LDQuS3RgdGC0LDRgNC40Y/RgiDQvtGC0LPQvtGA0LUuINCd0LDQtNC+0LvRgzog0L3QsNC5LdC90L7QstC40Y/RgiDQvtGC0LPQvtGA0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0YDQtdC00LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAg0YLQsNC30Lgg0L7Qv9C10YDQsNGG0LjRjy4g0J3QsNCz0L7RgNC1OiDQvdCw0Lkt0YHRgtCw0YDQuNGP0YIg0L7RgtCz0L7RgNC1LiDQndCw0LTQvtC70YM6INC90LDQuS3QvdC+0LLQuNGC0LUg0L7RgtCz0L7RgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQutC+0LvQvtC90LjRgtC1INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQvdCwIENJINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINCyINC30LDQstC40YHQuNC80L7RgdGCINC+0YIg0LrQu9Cw0YHQsCDQvdCwIENJLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0YHQtSDRgdGK0YHRgtC+0Lgg0L7RgiDQuNC80LUg0L3QsCDQutC70LDRgSDQuCDQvNCw0YHQuNCyINC+0YIg0L3QsNC70LjRh9C90LjRgtC1INC/0L7Qu9C10YLQsCDQt9CwINGB0YrQvtGC0LLQtdGC0L3QuNGPINC60LvQsNGBLiDQl9Cw0L/QuNGB0LjRgtC1INC30LAg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCDRgtGA0Y/QsdCy0LAg0LTQsCDQvtGC0LPQvtCy0LDRgNGP0YIg0L3QsCDRgdGF0LXQvNCw0YLQsCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfQntC/0YDQtdC00LXQu9GPINC00YrQu9Cx0L7Rh9C40L3QsNGC0LAg0L3QsCDQvtGC0L3QvtGI0LXQvdC40Y/RgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INGJ0LUg0YHQtSDQv9C+0LrQsNC30LLQsNGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0L7QutCw0LfQsNC90LjRjyDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQsNGC0YDQuNCx0YPRgiDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LfQsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40Y8g0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0J/RgNC40LzQtdGAOiAiS2V5IiAo0JrQu9GO0YcpINGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQtNGK0YDQttCwINC40LzQtdGC0L4g0L3QsCDQtNC40L3QsNC80LjRh9C90L7RgtC+INC/0L7Qu9C1INCyINGC0L7Qt9C4INGB0LvRg9GH0LDQuSAiWCIsICJDb250ZW50IiAo0KHRitC00YrRgNC20LDQvdC40LUpINGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQtNGK0YDQttCwINGB0YLQvtC50L3QvtGB0YLRgtCwINC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINGC0LjQv9CwINC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSwgVGV4dCAo0KLQtdC60YHRgik6ICJhIHRleHQiICjRgtC10LrRgdGCKSwgRHJvcGRvd24gKNC/0LDQtNCw0YnQvik6ICIxIiAoMSksIERhdGUvVGltZSAo0JTQsNGC0LAv0YfQsNGBKTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0Lgg0LjQu9C4IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PdGB0LXQtNC80LjRhtCwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD3Qn9GA0LXQtNC4OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LTQvtCx0LXQutGC0LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQutC70LDRgdCwIOKAnklUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGC4oCcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvdCw0LvQuNGH0L3QuNGC0LUg0LrQvtC70L7QvdC4INC90LAgQ0kg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAgQ0kuINCS0YHQtdC60Lgg0LfQsNC/0LjRgSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YrRgdGC0L7QuCDQvtGCINC40LzQtSDQvdCwINC60LvQsNGBINC4INC80LDRgdC40LIg0L7RgiDQvdCw0LvQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQstC40YHQvtGH0LjQvdCw0YLQsCDQvdCwINC60L7QvNC/0L7QvdC10L3RgtCwINC90LAg0YDQtdC00LDQutGC0L7RgNCwINC30LAg0LHQvtCz0LDRgiDRgtC10LrRgdGCINC30LAg0YLQvtC30Lgg0LXQutGA0LDQvS4g0JLRitCy0LXQtNC10YLQtSDRh9C40YHQu9C+ICjQv9C40LrRgdC10LvQuCkg0LjQu9C4INC/0YDQvtGG0LXQvdGC0L3QsCDRgdGC0L7QudC90L7RgdGCICjQvtGC0L3QvtGB0LjRgtC10LvQvdCwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQsdGA0L7RjyDQvdCwINGA0LXQtNC+0LLQtdGC0LUg0LfQsCDRgNC10LTQsNC60YLQvtGA0LAg0L3QsCDQmtCVINC00LXRhNC40L3QuNGG0LjQuCDQsiDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNGB0LrQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDRgNC10LTQsCDQvdCwINC40L3RhtC40LTQtdC90YLQvdC40YLQtSDRgdGK0YHRgtC+0Y/QvdC40Y8g0L7RgiDQstC40YHQvtC60L4gKNC90LDQv9GALiDQutGA0LjRgtC40YfQvdC+KSDQtNC+INC90LjRgdC60L4gKNC90LDQv9GALiDRhNGD0L3QutGG0LjQvtC90LDQu9C90L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YHRitC+0YLQstC10YLQvdC40YLQtSDRgdGK0YHRgtC+0Y/QvdC40Y8g0L3QsCDQstC90LXQtNGA0Y/QstCw0L3QtSwg0L/RgNC4INC60L7QuNGC0L4g0YHQstGK0YDQt9Cw0L3QuNGC0LUg0LHQuNC70LXRgtC4INC80L7Qs9Cw0YIg0LTQsCDQv9C+0LLQu9C40Y/Rj9GCINC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INCyINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y8g0L3QsCDQsNCz0LXQvdGC0LAgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40LXRgtC+INC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40LXRgtC+INC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0L7QutCw0LfQsNC90LjRgtC1INC60L7Qu9C+0L3QuCDQvtGCINCa0JUg0LIg0LrQvtC80L/Qu9C10LrRgdC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDRgtCw0LHQu9C40YbQsNGC0LAg0LfQsCDQstGA0YrQt9C60Lgg0LfQsCDQstGB0LjRh9C60Lgg0LrQu9Cw0YHQvtCy0LUg0JrQlS4g0JDQutC+INC90Y/QvNCwINC30LDQv9C40YEsINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQutC+0LvQvtC90LjRgtC1INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40YLQtSDQutC+0LvQvtC90Lgg0L7RgiDQmtCVINCyINGB0LvQvtC20L3QuNGPINC40LfQs9C70LXQtCDQvdCwINGC0LDQsdC70LjRhtCw0YLQsCDRgSDQstGA0YrQt9C60LgsINCyINC30LDQstC40YHQuNC80L7RgdGCINC+0YIg0LrQu9Cw0YHQsCDQvdCwINCa0JUuINCS0YHQtdC60Lgg0LfQsNC/0LjRgSDRgtGA0Y/QsdCy0LAg0LTQsCDQuNC80LAg0L/RgNC10YTQuNC60YEg0YEg0LjQvNC10YLQviDQvdCwINC60LvQsNGB0LAg0Lgg0LTQstC+0LnQvdC+INC00LLQvtC10YLQvtGH0LjQtSAo0YIu0LUuINC60L7QvNC/0Y7RgtGK0YAgOjopLiDQmNC80LAg0L3Rj9C60L7Qu9C60L4g0JrQlS3QsNGC0YDQuNCx0YPRgtCwLCDQutC+0LjRgtC+INGB0LAg0L7QsdGJ0Lgg0LfQsCDQstGB0LjRh9C60Lgg0JrQlSAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHQsCBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JfQsCDQtNCwINGB0LUg0L/QvtC60LDQttCw0YIg0L7RgtC00LXQu9C90Lgg0JrQlS3QsNGC0YDQuNCx0YPRgtC4LCDQutCw0LrRgtC+INGB0LAg0LTQtdGE0LjQvdC40YDQsNC90Lgg0LIg0JrQlS3QtNC10YTQuNC90LjRhtC40Y/RgtCwLCDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INC40LfQv9C+0LvQt9Cy0LAg0YHQu9C10LTQvdCw0YLQsCDRgdGF0LXQvNCwICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdCwIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCQ0LrQviDQvdGP0LzQsCDQt9Cw0L/QuNGBINC30LAg0JrQlSDQutC70LDRgSwg0YLQvtCz0LDQstCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQutC+0LvQvtC90LjRgtC1INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LrQvtC4INC10LvQtdC80LXQvdGC0Lgg0YHQsCDQtNC+0YHRgtGK0L/QvdC4INC30LAgItCU0LXQudGB0YLQstC40LUiINCyINGC0YDQtdGC0L7RgtC+INC90LjQstC+INC90LAg0YHRgtGA0YPQutGC0YPRgNCw0YLQsCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuCDQtdC70LXQvNC10L3RgtC4INGB0LAg0L3QsNC70LjRh9C90Lgg0LIg0L/RitGA0LLQvtGC0L4g0L3QuNCy0L4g0L3QsCDRgdGC0YDRg9C60YLRg9GA0LDRgtCwIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuCDQtdC70LXQvNC10L3RgtC4INGB0LAg0L3QsNC70LjRh9C90Lgg0LLRitCyINCy0YLQvtGA0L7RgtC+INC90LjQstC+INC90LAg0YHRgtGA0YPQutGC0YPRgNCw0YLQsCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lkg0YLQuNC/INCy0YDRitC30LrQsCAo0L3QsNC30L7QstCw0L0g0L7RgiDQs9C70LXQtNC90LAg0YLQvtGH0LrQsCDQvdCwINCx0LjQu9C10YLQsCkg0LzQvtC20LUg0LTQsCDQv9C+0LLQu9C40Y/QtSDQvdCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDRgdCy0YrRgNC30LDQvSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LrQvtC5INGC0LjQvyDQsdC40LvQtdGCINC80L7QttC1INC00LAg0L/QvtCy0LvQuNGP0LUg0L3QsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0YHQstGK0YDQt9Cw0L0g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfQkNC60YLRg9Cw0LvQuNC30LDRhtC40Y8g0L3QsCDQvtC/0YDQtdC00LXQu9C10L3QuNC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0KbQstGP0YIg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC1INC90LAg0LLQvdC10LTRgNGP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0J3QsNC/0YDQsNCy0Lgg0LrQvtC/0LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGK0LHQuNGC0LjRjyDRgSDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwLCDQutC+0LnRgtC+INC80LDRgNC60LjRgNCwINC00LXRhNC40L3QuNGG0LjQuNGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LrQsNGC0L4g0L3QtdGB0LjQvdGF0YDQvtC90LjQt9C40YDQsNC90LgsINCw0LrQviDRgdGK0LTRitGA0LbQsNGJ0LjRgtC1INCz0Lgg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCDRgdC1INC/0YDQvtC80LXQvdGP0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwLCDQv9C+0LrQsNC30LDQvdC4INCyINC10LrRgNCw0L3QsCDQt9CwINC00L7Qv9GK0LvQvdC40YLQtdC70L3QuCDQv9C+0LvQtdGC0LAg0L3QsCBJVFNNINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwLCDQv9C+0LrQsNC30LDQvdC4INCyINC10LrRgNCw0L3QsCDQt9CwINC/0YDQtdCz0LvQtdC0INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC60LvQuNC10L3RgtGB0LrQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAsINC/0L7QutCw0LfQsNC90Lgg0LIg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0KDQsNC30YDQtdGI0LDQstCwINGE0YPQvdC60YbQuNGP0YLQsCDQt9CwINCz0YDRg9C/0L7QstC+INC00LXQudGB0YLQstC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LfQsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsCDQtNCwINGA0LDQsdC+0YLQuCDQstGK0YDRhdGDINC/0L7QstC10YfQtSDQvtGCINC10LTQuNC9INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQvdCw0LLQtdC00L3RitC2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsCDRhNGD0L3QutGG0LjRj9GC0LAg0LfQsCDQs9GA0YPQv9C+0LLQviDQtNC10LnRgdGC0LLQuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINGB0LDQvNC+INC30LAg0LjQt9Cx0YDQvtC10L3QuNGC0LUg0LPRgNGD0L/QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsC/QtNC10LDQutGC0LjQstC40YDQsCDRhNGD0L3QutGG0LjQvtC90LDQu9C90L7RgdGC0YLQsCDQt9CwINC/0YDQvtCy0LXRgNC60LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINC30LAg0YPQvdC40LrQsNC70L3QuCDQuNC80LXQvdCwLiDQn9GA0LXQtNC4INC00LAg0LDQutGC0LjQstC40YDQsNGC0LUg0YLQsNC30Lgg0L7Qv9GG0LjRjywg0YLRgNGP0LHQstCwINC00LAg0L/RgNC+0LLQtdGA0LjRgtC1INGB0LjRgdGC0LXQvNCw0YLQsCDRgdC4INC30LAg0LLQtdGH0LUg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRidC4INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINGBINC00YPQsdC70LjRgNCw0YnQuCDRgdC1INC40LzQtdC90LAuINCc0L7QttC10YLQtSDQtNCwINC90LDQv9GA0LDQstC40YLQtSDRgtC+0LLQsCDRgSDQutC+0L3Qt9C+0LvQvdCw0YLQsCDQutC+0LzQsNC90LTQsCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0L3QsCDRgdGK0LHQuNGC0LjQtSDQt9CwINC30LDQtNCw0LLQsNC90LUg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LfQsCDQstGA0YrQt9C60LAg0LfQsCDQsdC40LvQtdGCLdC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn0J/QvtC70LXRgtCwINC+0YIg0LjQvdC00LXQutGB0LAg0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LjQt9C/0L7Qu9C30LLQsNC90Lgg0LfQsCDQv9GK0LvQvdC+0YLQtdC60YHRgtC+0LLQviDRgtGK0YDRgdC10L3QtS4g0J/QvtC70LXRgtCw0YLQsCDRgdGK0YnQviDRgdC1INGB0YrRhdGA0LDQvdGP0LLQsNGCLCDQvdC+INC90LUg0YHQsCDQt9Cw0LTRitC70LbQuNGC0LXQu9C90Lgg0LfQsCDRhtGP0LvQvtGB0YLQvdCw0YLQsCDRhNGD0L3QutGG0LjQvtC90LDQu9C90L7RgdGCLiDQktC60LvRjtGH0LLQsNC90LXRgtC+INC90LAg0L/RgNC40LrQsNGH0LXQvdC4INGE0LDQudC70L7QstC1INC80L7QttC1INC00LAg0LHRitC00LUg0LfQsNCx0YDQsNC90LXQvdC+INGH0YDQtdC3INC30LDQtNCw0LLQsNC90LUg0L3QsCDRgdGC0L7QudC90L7RgdGCIDAg0LjQu9C4INC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC30LDQv9C40YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ9Cf0L7Qu9C10YLQsCwg0YHRitGF0YDQsNC90Y/QstCw0L3QuCDQsiDQuNC90LTQtdC60YHQsCDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQutC+0LjRgtC+INGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINC30LAg0LTRgNGD0LPQuCDRhtC10LvQuCwg0L7RgdCy0LXQvSDQt9CwINC/0YrQu9C90L7RgtC10LrRgdGC0L7QstC+INGC0YrRgNGB0LXQvdC1LiDQl9CwINC/0YrQu9C90LDRgtCwINGE0YPQvdC60YbQuNC+0L3QsNC70L3QvtGB0YIg0LLRgdC40YfQutC4INC/0L7Qu9C10YLQsCDRgdCwINC30LDQtNGK0LvQttC40YLQtdC70L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICfQl9CwINCy0YHRj9C60LAg0YPQtdCxINGD0YHQu9GD0LPQsCAo0LrQu9GO0YcpINC80L7QttC1INC00LAg0YHQtSDQtNC10YTQuNC90LjRgNCwINC80LDRgdC40LIg0L7RgiDQutC70LDRgdC+0LLQtSAo0YHRgtC+0LnQvdC+0YHRgiksINC30LAg0LrQvtC40YLQviDQstC90L7RgdGK0YIg0LUg0L7Qs9GA0LDQvdC40YfQtdC9LiDQl9CwINCy0YHQuNGH0LrQuCDQuNC30LHRgNCw0L3QuCDQutC70LDRgdC+0LLQtSDQuNC70Lgg0LfQsCDQstGB0LjRh9C60Lgg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRidC4INC60LvQsNGB0L7QstC1INC40LTQtdC90YLQuNGE0LjRhtC40YDQsNGJ0LjRgtC1INCw0YLRgNC40LHRg9GC0Lgg0YnQtSDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQsNGCINC40LfQsdGA0LDQvdC4INCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCDQuNC30LLQuNC60LLQsNGJ0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQuNGA0LDQvdC1INC90LAg0LzQvtC00YPQuyBHZW5lcmljSW50ZXJmYWNlINC30LAg0YHQu9C+0Y8g0LfQsCDQuNC30LLQuNC60LLQsNC90LUg0L3QsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQuNGA0LDQvdC1INC90LAg0LzQvtC00YPQuyBHZW5lcmljSW50ZXJmYWNlINC30LAg0YHQu9C+0Y8g0LfQsCDQuNC30LLQuNC60LLQsNC90LUg0L3QsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtCDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cy0LAg0YHRitGB0YLQvtGP0L3QuNGPINC90LAg0LLQvdC10LTRgNGP0LLQsNC90LUg0LIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LrQu9C40LXQvdGC0YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cy0LAg0YHRitGB0YLQvtGP0L3QuNGPINC90LAg0LjQvdGG0LjQtNC10L3RgtC4INCyINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70LXQvSDQsdGA0L7QuSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDQtNCwINCx0YrQtNCw0YIg0L/QvtC60LDQt9Cw0L3QuCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtCw0LfQuCDQvtC/0LXRgNCw0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7QstC10YDQutCwINC90LAg0LPRgNGD0L/QsNGC0LAsINC+0YLQs9C+0LLQsNGA0Y/RidCwINC30LAg0LTQsNC00LXQvSDQutC70LDRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINCz0YDRg9C/0LDRgtCwLCDQvtGC0LPQvtCy0L7RgNC90LAg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGA0LDQvdC1INC90LAg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60Lgg0LTQsNC90L3QuCDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9CY0LzQtSDQvdCwINC80L7QtNGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0J3QvtC80LXRgCDQvdCwINC80L7QtNGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7QuSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDQtNCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQvdCwINCy0YHRj9C60LAg0YHRgtGA0LDQvdC40YbQsCDQvtGCINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0Lkg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QuNGC0L4g0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0L3QsCDQstGB0Y/QutCwINGB0YLRgNCw0L3QuNGG0LAg0L3QsCDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfQntCx0LXQutGC0LgsINC60L7QuNGC0L4g0LTQsCDRgdC1INGC0YrRgNGB0Y/Rgiwg0LrQvtC70LrQviDQt9Cw0L/QuNGB0Lgg0Lgg0LrQvtC4INCw0YLRgNC40LHRg9GC0Lgg0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIuINCQ0YLRgNC40LHRg9GC0LjRgtC1INC90LAgQ29uZmlnSXRlbSDRgtGA0Y/QsdCy0LAg0LjQt9GA0LjRh9C90L4g0LTQsCDRgdC1INGB0YrRhdGA0LDQvdGP0LLQsNGCINGH0YDQtdC3IEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LrQsNGC0LXQs9C+0YDQuNC40YLQtSDQt9CwINC60LvQsNGB0L7QstC10YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC30LPQu9C10LTQsCDQvdCwINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGP0YLQsCDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGE0LjQu9GC0YDQuNGC0LUg0L3QsCDQutC+0LvQvtC90LjRgtC1INCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQvNCw0LvQutC40Y8g0LXQu9C10LzQtdC90YIg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQnNC+0LvRjywg0L7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1OiDQt9Cw0LTQsNCy0LDQvdC10YLQviDQvdCwINGB0YLQvtC50L3QvtGB0YIgItCQ0LrRgtC40LLQtdC9IiDQvdCwIDAg0YnQtSDQv9C+0L/RgNC10YfQuCDRgdCw0LzQviDQvdCwINCw0LPQtdC90YLQuNGC0LUg0LTQsCDRgNC10LTQsNC60YLQuNGA0LDRgiDQvdCw0YHRgtGA0L7QudC60LjRgtC1INC90LAg0YLQsNC30Lgg0LPRgNGD0L/QsCDQsiDQu9C40YfQvdC40YLQtSDRgdC4INC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPLCDQvdC+INCy0YHQtSDQv9Cw0Log0YnQtSDQv9C+0LfQstC+0LvQuCDQvdCwINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LjRgtC1INC00LAg0YDQtdC00LDQutGC0LjRgNCw0YIg0L3QsNGB0YLRgNC+0LnQutC40YLQtSDQvtGCINC40LzQtdGC0L4g0L3QsCDQtNGA0YPQsyDQv9C+0YLRgNC10LHQuNGC0LXQuy4g0JjQt9C/0L7Qu9C30LLQsNC50YLQtSBcJ1ByZWZlcmVuY2VHcm91cFwnICjQk9GA0YPQv9CwINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPKSwg0LfQsCDQtNCwINC60L7QvdGC0YDQvtC70LjRgNCw0YLQtSDQsiDQutC+0Y8g0L7QsdC70LDRgdGCINC90LAg0L/QvtGC0YDQtdCx0LjRgtC10LvRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEg0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0YLQtdC30Lgg0L3QsNGB0YLRgNC+0LnQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0L3QsCDRgtCw0LHQu9C+0YLQviDQt9CwINGD0L/RgNCw0LLQu9C10L3QuNC1INC90LAg0L/RgNC10LPQu9C10LTQsCDQvdCwINC/0L7QtNGH0LjQvdC10L3QuNGC0LUg0LHQuNC70LXRgtC4INC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuIOKAntCe0LPRgNCw0L3QuNGH0LXQvdC40LXigJwg0LUg0LHRgNC+0Y/RgiDQvdCwINC30LDQv9C40YHQuNGC0LUsINC/0L7QutCw0LfQsNC9INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LiDigJ7Qk9GA0YPQv9Cw4oCcINGB0LUg0LjQt9C/0L7Qu9C30LLQsCDQt9CwINC+0LPRgNCw0L3QuNGH0LDQstCw0L3QtSDQvdCwINC00L7RgdGC0YrQv9CwINC00L4g0L/Qu9GK0LPQuNC90LAgKNC90LDQv9GALiDQk9GA0YPQv9CwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuIOKAntCf0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC14oCcINC+0L/RgNC10LTQtdC70Y8g0LTQsNC70Lgg0L/RgNC40YHRgtCw0LLQutCw0YLQsCDQtSDQsNC60YLQuNCy0LjRgNCw0L3QsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQuNC70Lgg0L/QvtGC0YDQtdCx0LjRgtC10LvRj9GCINGC0YDRj9Cx0LLQsCDQtNCwINGPINCw0LrRgtC40LLQuNGA0LAg0YDRitGH0L3Qvi4g4oCeQ2FjaGVUVExMb2NhbOKAnCDQtSDQstGA0LXQvNC10YLQviDQt9CwINC60LXRiNC40YDQsNC90LUg0LIg0LzQuNC90YPRgtC4INC30LAg0L/Qu9GK0LPQuNC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC90LAg0YLQsNCx0LvQvtGC0L4g0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjQtSDQvdCwINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQv9C+0LTRh9C40L3QtdC90LjRgtC1INCx0LjQu9C10YLQuCDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLiDigJ7QntCz0YDQsNC90LjRh9C10L3QuNC14oCcINC1INCx0YDQvtGP0YIg0L3QsCDQt9Cw0L/QuNGB0LjRgtC1LCDQv9C+0LrQsNC30LDQvSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtS4g4oCe0JPRgNGD0L/QsOKAnCDRgdC1INC40LfQv9C+0LvQt9Cy0LAg0LfQsCDQvtCz0YDQsNC90LjRh9Cw0LLQsNC90LUg0L3QsCDQtNC+0YHRgtGK0L/QsCDQtNC+INC/0LvRitCz0LjQvdCwICjQvdCw0L/RgC4g0JPRgNGD0L/QsDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiDigJ7Qn9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QteKAnCDQvtC/0YDQtdC00LXQu9GPINC00LDQu9C4INC/0YDQuNGB0YLQsNCy0LrQsNGC0LAg0LUg0LDQutGC0LjQstC40YDQsNC90LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LjQu9C4INC/0L7RgtGA0LXQsdC40YLQtdC70Y/RgiDRgtGA0Y/QsdCy0LAg0LTQsCDRjyDQsNC60YLQuNCy0LjRgNCwINGA0YrRh9C90L4uIOKAnkNhY2hlVFRMTG9jYWzigJwg0LUg0LLRgNC10LzQtdGC0L4g0LfQsCDQutC10YjQuNGA0LDQvdC1INCyINC80LjQvdGD0YLQuCDQt9CwINC/0LvRitCz0LjQvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuNGC0LUg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0YHQtSDQvtGG0LLQtdGC0Y/QstCw0YIg0LIg0LjQt9Cz0LvQtdC00LAg0YEg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40Y/RgtCwINC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0LIg0LjQt9Cz0LvQtdC00LAg0YEg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0L/RgNC40LzQtdGA0L3QuNGC0LUg0YDQsNC30YDQtdGI0LjRgtC10LvQvdC4INCz0YDRg9C/0Lgg0L7RgiDQsNGC0YDQuNCx0YPRgtC40YLQtSDQvdCwINC+0LHRidC40Y8g0LrQsNGC0LDQu9C+0LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC90LAg0LjQvNC10L3QsNGC0LAg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC80L7QtNGD0LvQsCDQt9CwINC90L7QvNC10YDQsCDQvdCwINC60LvQsNGB0L7QstC10YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC30LPQu9C10LTQsCDQvdCwINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGP0YLQsCDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjRhtC40YLQtSAo0LIg0LrQvtC40YLQviDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40YLQtSDQtdC70LXQvNC10L3RgtC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC30LAg0L3QuNC3INC+0YIg0LLQtdGA0YHQuNC4INC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC30LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQvNC+0LTRg9C70LAg0L3QsCDQvdCw0LHQvtGA0LAg0L7RgiDQuNC90YHRgtGA0YPQvNC10L3RgtC4INC30LAg0YjQsNCx0LvQvtC90Lgg0LfQsCDQvdC40Lcg0L7RgiDQstC10YDRgdC40Lgg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LfQsNC00LXQudGB0YLQstCw0L3QtSDQvdCwINCy0LXRgNGB0LjRj9GC0LAg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0LfQsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjyDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ9CY0LfQstGK0YDRiNCy0LAg0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90L7RgtC+INC00LXQudGB0YLQstC40LUg0LfQsCDQstGB0Y/QutC+INGB0YrQsdC40YLQuNC1ICjQutCw0YLQviBJbnZva2VyKSDQt9CwINCy0YHRj9C60LAg0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90LAg0YPQtdCxINGD0YHQu9GD0LPQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9CT0YDRg9C/0LAg0YDQsNC30YDQtdGI0LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC00LXQudGB0YLQstC40LXRgtC+INC30LAg0L/RgNC40LrQsNGH0LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0LIg0LrQu9C40LXQvdGC0YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0YEg0LTRitGA0LLQvtCy0LjQtNC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDQv9GA0LDQstCwINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCDQvNCw0YnQsNCx0LjRgNCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC00L7QsdCw0LLRj9C90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDRgSDQtdC70LXQvNC10L3RgtC40YLQtSDQt9CwINCz0YDRg9C/0L7QstCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjyDQvdCwIElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINGA0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC/0LXRh9Cw0YIg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30YLRgNC40LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQotGK0YDRgdC10L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQudGC0LUg0LDQstGC0L7QvNCw0YLQuNGH0L3QviDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQvdGG0LjQtNC10L3RgiDQvdCwINCa0JUsINC60L7Qs9Cw0YLQviDQsdC40LvQtdGC0YrRgiDQtSDRgdCy0YrRgNC30LDQvSDRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LLQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0LfQsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQt9CwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQstCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC90YbQuNC00LXQvdGC0LAg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQutC+0LXRgtC+INC/0L7Qt9Cy0L7Qu9GP0LLQsCDRgdCy0YrRgNC30LLQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0YEg0LTRgNGD0LMg0L7QsdC10LrRgiDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvtCx0YnQuNGPINC/0YDQtdCz0LvQtdC0INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDRg9Cy0LXQu9C40YfQtdC9INC40LfQs9C70LXQtCDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC/0L7QutCw0LfQstCw0L3QtSDQvdCwINCy0YDRitC30LrQuNGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LrQsNGC0L4g0LTRitGA0LLQvtCy0LjQtNC10L0g0LjQt9Cz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQtNGD0LHQu9C40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L/RgNC4INC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0LTRg9Cx0LvQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDRgNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQstGA0YrRidCw0L3QtSDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0L7RgtC/0LXRh9Cw0YLQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINGD0LLQtdC70LjRh9Cw0LLQsNC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIgKNCyINC+0LHRgNCw0YLQtdC9INGA0LXQtCkg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtGP0YLQviDRgdC1INC/0L7QutCw0LfQstCwLCDQsNC60L4g0L3QtSDQtSDQuNC30LHRgNCw0L3QsCDRgtCw0LrQsNCy0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGK0YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC90LDQv9GALiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0J/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JfQsNC00LXQudGB0YLQstCwINCw0LLRgtC+0LzQsNGC0LjRh9C90L4g0LjQt9Cy0LjQutCy0LDQvdC10YLQviDQvdCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDQuNC90LMg0LjQt9GA0LDQt9GP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JLQtdGA0YHQuNGPINCh0YLRgNGD0L3QtdC9INC80L7QtNGD0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn0JLQtdGA0YHQuNGPIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9CU0LDQu9C4INC40LfQv9GK0LvQvdC10L3QuNC10YLQviDQvdCwIENvbmZpZ0l0ZW1BQ0wg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQuNC30LHQtdCz0L3QsNGC0L4g0YfRgNC10Lcg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC60LXRiNC40YDQsNC90LjRgtC1INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L3QsCDQv9C+0LvQtdGC0LDRgtCwLiDQotC+0LLQsCDQvNC+0LbQtSDQtNCwINC/0L7QtNC+0LHRgNC4INCy0YDQtdC80LXRgtC+INC30LAg0LfQsNGA0LXQttC00LDQvdC1INC90LAg0YTQvtGA0LzRg9C70Y/RgNC40YLQtSwg0L3QviDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQtNC10LDQutGC0LjQstC40YDQsNC90L4sINCw0LrQviBBQ0xNb2R1bGVzINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINC30LAgSVRTTUNvbmZpZ0l0ZW0tINC4IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfQmtC+0Y8g0L7QsdGJ0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LUg0L/QvtC60LDQt9Cw0L3QsCDQsiDQt9Cw0LPQu9Cw0LLQuNC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfQutC70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YLQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC40L3Rh9CwICg0NCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSDQuNC90YfQsCAoNTMsMzQg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUg0LjQvdGH0LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQuNC90YfQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LjQvdGH0L7QsiDRgdGC0LXQu9Cw0LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC40L3Rh9CwICg0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUg0LjQvdGH0LAgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LjQvdGH0L7QsiDQsdCw0LPQsNC20L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDQuNC90YfQsCAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LjQvdGH0L7QstCwINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LjQvdGH0LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LjQvdGH0LAgKDEwNiw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUg0LjQvdGH0LAgKDEyMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1INC40L3Rh9CwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LjQvdGH0LAgKDEzMywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUg0LjQvdGH0LAgKDgwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUg0LjQvdGH0LAgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LjQvdGH0LAgKDkwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMg0LjQvdGH0LAgKDE2MCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0INC40L3Rh9CwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQuNC90YfQsCAoMTczLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUg0LjQvdGH0LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LjQvdGH0LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQuNC90YfQsCAoMTEwMCDQvNC8KTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1INC40L3Rh9CwICgyMDAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDQuNC90YfQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LjQvdGH0LAgKDIxMywzNiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INC40L3Rh9CwICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC40L3Rh9CwICgyMiwyMyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1INC40L3Rh9CwICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LjQvdGH0LAgKDMxLDEyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDQuNC90YfQsCAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC40L3Rh9CwICg0MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9Ch0YfQtdGC0L7QstC+0LTRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cg0LDQt9C/0YDQtdC00LXQu9C10L3QuNC1INC90LAg0LDQtNGA0LXRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfQkNC90LDQu9C+0LPQvtCyINGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfQotC40L8g0L3QsCDRg9GA0LXQtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfQmtCw0L/QsNGG0LjRgtC10YIg0L3QsCDQsdCw0YLQtdGA0LjRj9GC0LAgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfQotC40L8g0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQodCz0YDQsNC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10LnRgSDQvdCwINGI0LjQvdCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0J/RgNC+0YbQtdGB0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfQmtC70LDRgSDQvdCwINC/0YDQvtGG0LXRgdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn0JrQsNC/0LDRhtC40YLQtdGCIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfQmtCw0L/QsNGG0LjRgtC10YIg0L3QsCDQs9GA0LDRhNC40YfQvdCwINC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC90LAg0LrQsNGA0YLQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfQp9C10YLQtdGGINC90LAg0LrQsNGA0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfQotC40L8g0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0JrQu9C40LXQvdGC0YHQutC4INGB0LXRgNGC0LjRhNC40LrQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn0JrQu9C40LXQvdGC0YHQutC4INGB0L7RhNGC0YPQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQvdCwINC60LvQuNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9Cn0LDRgdC+0LLQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ9Ch0LrQvtGA0L7RgdGCINC90LAg0YfQsNGB0L7QstC90LjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtC4INC30LAg0L/QvtC00L/QuNGB0LLQsNC90LUg0L3QsCDQutC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ9Ca0L7QvdGE0LXRgNC10L3RgtC10L0g0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQutC+0L3RgdGD0LvRgtC40YDQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ9Ch0LLRitGA0LbQtdGC0LUg0YHQtSDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn0KHQstGK0YDQttC10YLQtSDRgdC1INGBINC00LjRgdGC0YDQuNCx0YPRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC90LAg0LrQvtC90YLQtdC50L3QtdGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfQlNC+0LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn0JLQuNC0INC90LAg0LTQvtCz0L7QstC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9Ch0YDQvtC6INC90LAg0LTQvtCz0L7QstC+0YDQsCDQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC90LAg0LTQvtCz0L7QstC+0YDQsCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9CR0LXQt9C20LjRh9C10L0g0YLQtdC70LXRhNC+0L0gKERFQ1Qg0YLQtdC70LXRhNC+0L0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ9Cg0LDQt9GF0L7QtNC90LAg0LXQtNC40L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfQkdGA0L7QuSDQvdCwINC70LjRhtC10L3Qt9C40YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0LAg0L3QsCDRgdGK0LfQtNCw0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ9Cf0L7RgtGA0LXQsdC40YLQtdC70YHQutC4INGB0YLQtdC70LDQtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDQl9Cw0L/QsNC30LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMt0YHRitGA0LLRitGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfQlNCw0YLQsCDQvdCwINGE0LDQutGC0YPRgNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn0JTQsNGC0LAg0L3QsCDQv9C+0YDRitGH0LrQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ9CU0LDRgtCwINC90LAg0LjQt9C00LDQstCw0L3QtSDQvdCwINCz0LDRgNCw0L3RhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ9CU0LDRgtCwINC90LAg0LjQt9C00LDQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0J3QsNGB0YLQvtC70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLQuCDQt9CwINC/0L7QtNC/0LjRgdCy0LDQvdC1INC90LAg0LTQvtC60YPQvNC10L3RgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtC4INC30LAg0LXQu9C10LrRgtGA0L7QvdC90LAg0L/QvtGJ0LAgKFMvTUlNRSDRgdC10YDRgtC40YTQuNC60LDRgtC4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfQotGA0YPQtNC+0LIg0LTQvtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfQmtGA0LDQtdC9IElQINCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfQmtGA0LDQuSDQvdCwINC/0L7QtNC60YDQtdC/0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30YLQuNGH0LDQvdC1INC90LAg0LLQsNC70LjQtNC90L7RgdGC0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn0JLRitC90YjQtdC9INGC0LLRitGA0LQg0LTQuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfQl9Cw0YnQuNGC0L3QsCDRgdGC0LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn0KTRitGA0LzRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfQodGK0YXRgNCw0L3QtdC90LjQtSDQvdCwINC10L3QtdGA0LPQuNGPINGH0YDQtdC3INC80LDRhdC+0LLQuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn0KTQsNC60YLQvtGAINC90LAg0YTQvtGA0LzQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINGE0YDQsNC90YfQsNC50LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10LfQv9C70LDRgtC90L4g0YDQsNC30L/RgNC+0YHRgtGA0LDQvdGP0LLQsNC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ9Ce0LHRidCwINC40L3RhNC+0YDQvNCw0YbQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn0JPRgNCw0YTQuNGH0L3QuCDQutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfQk9GA0LDRhNC40YfQvdCwINC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfQpdCw0YDQtNGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ9Cc0L7QtNC10Lsg0L3QsCDRhdCw0YDQtNGD0LXRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9Ci0LXQs9C70L4g0L3QsCDRhdCw0YDQtNGD0LXRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfQodC70YPRiNCw0LvQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAg0L/RgNC+0YLQvtC60L7Quyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQvdCwINC40LTQtdC90YLQuNGH0L3QvtGB0YLRgtCwINC4INC00L7RgdGC0YrQv9CwIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfQmNC90LLQtdC90YLQsNGA0LXQvSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn0KDQsNC30YXQvtC00Lgg0LfQsCDQuNC90LLQtdGA0YLQuNGA0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINGE0LDQutGC0YPRgNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9Ca0LvQsNCy0LjQsNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDQvNC+0L3QuNGC0L7RgCAo0LTQuNGB0L/Qu9C10Lkg0YEg0YLQtdGH0L3QuCDQutGA0LjRgdGC0LDQu9C4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEINC80L7QvdC40YLQvtGAICjRgdCy0LXRgtC70L7QuNC30LvRitGH0LLQsNGJINC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfQodGC0LDRhtC40L7QvdCw0YDQtdC9INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cf0YDQtdC90L7RgdC40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfQk9C10L7Qs9GA0LDRhNGB0LrQsCDRiNC40YDQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfQodC70L7QuSAxOiDQpNC40LfQuNGH0LXRgdC60Lgg0YHQu9C+0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn0KHQu9C+0LkgMjog0KHQu9C+0Lkg0LfQsCDQstGA0YrQt9C60LAg0YEg0LTQsNC90L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KHQu9C+0LkgMzog0JzRgNC10LbQvtCyINGB0LvQvtC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ9Ch0LvQvtC5IDM6INCc0YDQtdC20L7QsiDRgdC70L7QuSAo0YHRg9C/0LXRgNC80YDQtdC20LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ9Ch0LvQvtC5IDQ6INCi0YDQsNC90YHQv9C+0YDRgtC10L0g0YHQu9C+0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9Ch0LvQvtC5IDU6INCh0LvQvtC5INC90LAg0YHQtdGB0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn0KHQu9C+0LkgNjog0KHQu9C+0Lkg0L3QsCDQv9GA0LXQtNGB0YLQsNCy0Y/QvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn0KHQu9C+0LkgNzog0KHQu9C+0Lkg0L3QsCDQv9GA0LjQu9C+0LbQtdC90LjQtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0LvQuNC30LjQvdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0LvQuNGG0LXQvdC3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfQmtC70Y7RhyDQt9CwINC70LjRhtC10L3Qtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfQktC40LQg0LvQuNGG0LXQvdC3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICfQn9C10YDQuNC+0LQg0L3QsCDQu9C40YbQtdC90LfQsCDQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAn0KHRgNC+0Log0L3QsCDQu9C40YbQtdC90LfQsCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfQkdCw0YLQtdGA0LjRjyDQvtGCINC70LjRgtC40LXQstC+LdC20LXQu9C10LfQtdC9INGE0L7RgdGE0LDRgiAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ9Cb0LjRgtC40LXQstC+LdC50L7QvdC90LAgKExpLWlvbikg0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQt9Cw0LXQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn0J3QsNC80LjRgNCwINGB0LUg0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn0JTRitC70LbQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9Cf0YDQvtC40LfQstC+0LTQuNGC0LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn0JzQsNC60YHQuNC80LDQu9C10L0g0LrQsNC/0LDRhtC40YLQtdGCINC90LAg0L3QsNGC0L7QstCw0YDQstCw0L3QtSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC80LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQv9Cw0LzQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ9Cc0L7QsdC40LvQtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn0JzQvtCx0LjQu9C90Lgv0LLQs9GA0LDQtNC10L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgdCw0L3QuNC1INC90LAg0LzQvtC00LXQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ9Cg0LXQt9C+0LvRjtGG0LjRjyDQvdCwINC80L7QvdC40YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn0KDQsNC30LzQtdGAINC90LAg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9Cc0LjRiNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Cc0YDQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQvNGA0LXQttCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQvNGA0LXQttCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn0JzRgNC10LbQvtCy0L4g0L3QuNCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfQndC40LrQtdC7LdC60LDQtNC80LjQtdCy0LAgKE5pQ2QpINCx0LDRgtC10YDQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn0J3QuNC60LXQuy3QvNC10YLQsNC70YXQuNC00YDQuNC00L3QsCAoTmlNSCkg0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0L3QtdGA0LDQt9C60YDQuNCy0LDQvdC1INC90LAg0LjQvdGE0L7RgNC80LDRhtC40Y8gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC10LvQtdC20L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAn0JHRgNC+0Lkg0L/RgNC+0YbQtdGB0L7RgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9CR0YDQvtC5INC80L7QtNGD0LvQuCBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn0JHRgNC+0Lkg0LPRgNCw0YTQuNGH0L3QuCDQutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEINC80L7QvdC40YLQvtGAICjQvtGA0LPQsNC90LjRh9C10L0g0YHQstC10YLQvtC40LfQu9GK0YfQstCw0Ykg0LTQuNC+0LQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ9Ce0L/QtdGA0LDRgtC40LLQvdC4INGA0LDQt9GF0L7QtNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQv9C+0YDRitGH0LrQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQlNGA0YPQs9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQmNC30YXQvtC00LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn0J/QmNCdIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0L/QsNGA0YLQvdGM0L7RgNGB0YLQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0KLQtdC70LXRhNC+0L3QtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINGC0LXQu9C10YTQvtC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfQpNC40LfQuNGH0LXRgdC60Lgg0Y/QtNGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfQlNC+0YHRgtCw0LLQutCwINC90LAg0LXQvdC10YDQs9C40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfQl9Cw0LrRg9C/0LXQvdC+INCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfQlNGK0LvQsdC+0YfQuNC90LAg0L3QsCDRgdGC0LXQu9Cw0LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ9CV0LTQuNC90LjRhtC4INC30LAg0YHRgtC10LvQsNC2IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0KHRgtCw0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0g0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMg0YHQtdGA0YLQuNGE0LjQutCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LAg0L/RgNC+0LTQsNC20LHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfQodCw0YLQtdC70LjRgtC10L0g0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn0JfQsNC/0LXRh9Cw0YLQsNC90LAg0L7Qu9C+0LLQvdC+LdC60LjRgdC10LvQuNC90L3QsCDQsdCw0YLQtdGA0LjRjyAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9Ch0LXRgNC40LXQvSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0L7RhNGC0YPQtdGAINC30LAg0YHRitGA0LLRitGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDRg9GB0LvRg9Cz0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfQodC10YDQstC40LfQtdC9INC10YLQuNC60LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfQotC40L8g0LPQvdC10LfQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn0KHQvtGE0YLRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfQktC40YHQvtC60L7Qs9C+0LLQvtGA0LjRgtC10LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNGC0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn0J3QsNGH0LDQu9C10L0gSVAg0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn0KHRitGF0YDQsNC90LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfQoNCw0LfQtNC10Lsg0LfQsCDRgdGK0YXRgNCw0L3QtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ9CU0YrRidC10YDQvdC+INC00YDRg9C20LXRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn0KDQtdC30Y7QvNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn0KLRitC90YrQuiDQutC70LjQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ9Cd0LjRiNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0LAg0L7Qv9C10YDQsNGC0LjQstC90LAg0L/QsNC80LXRgiDQvdCwINCz0YDQsNGE0LjRh9C90LDRgtCwINC60LDRgNGC0LAgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ9Ce0LHRidC+IFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfQnNC+0L3QuNGC0L7RgCDRgdGK0YEg0YHQtdC90LfQvtGA0LXQvSDQtdC60YDQsNC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JrRg9C70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDQutC+0L3RhtC10L3RgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICfQodC70YPRiNCw0LvQutC4INC30LAgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn0KPQtdCxINC60LDQvNC10YDQsCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ca_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVhbG1lbnQgZGVzaXRqYSBlbGltaW5hciBhcXVlc3QgaW52b2NhZG9yPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1RlbXBzIGRlIGNyZWFjacOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRlIHpvb20nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdFeGVjdXRhciByZWNlcmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUaXB1cyBkXCdvYmplY3RlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJhciBwZXIgdGlwdXMnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6huY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBdGVuY2nDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdMOpIFBlcm3DrXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUmVzdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmw61jaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0Zvcm11bGFyaSBkZSByZXN1bHRhdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdBY29yZCBkZSBOaXZlbGwgZGUgU2VydmVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdFc3TDoG5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/cs_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPYmVjbsOpIHByb3Zvem7DrSDDumRhamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ05hc3RhdmVuw60gcHJvIHDFmcOtY2hvesOtIGRhdGEgcG/FvmFkYXZrxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbsOtIHBybyBvZGNob3rDrSBkYXRhIG9kcG92xJtkw60nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdTcHLDoXZhIEtvbmZpZ3VyYcSNbsOtY2ggUG9sb8W+ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabcSbbmEgZGVmaW5pY2UgdMWZw61keSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm3Em25hIGRlZmluaWNlIHJvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdTdmF6a3kgdMWZw61kIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1pkZSBtxa/FvmV0ZSBpbXBvcnRvdmF0IHN2YXpreSB0xZnDrWQgUmVhZHkySW1wb3J0LCBrdGVyw6kgcMWZZWRzdGF2dWrDrSBuYcWhZSBuZWpvYnZ5a2xlasWhw60gcG9sb8W+a3kga29uZmlndXJhY2UuIFZlem3Em3RlIHByb3PDrW0gbmEgdsSbZG9tw60sIMW+ZSBtxa/FvmUgYsO9dCB2ecW+YWRvdsOhbmEgZGFsxaHDrSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXphY2Ugc3TDoXZhasOtY8OtY2ggc3ViamVrdMWvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0IHN2YXprxa8gdMWZw61kIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVMWZw61kYSBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnUm9sZSBwb2xvxb5reSBrb25maWd1cmFjZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWcuIFBvbG/FvmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIHBybyB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoY2V0ZS1saSB2eXR2b8WZaXQgbm92b3UgcG9sb8W+a3Uga29uZmlndXJhY2UsIHZ5YmVydGUgemUgc2V6bmFtdSB0xZnDrWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1TFmcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnT2RrYXogbmEgZGFsxaHDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuw6kgxI3DrXNsbyBrb25maWd1cmHEjW7DrSBwb2xvxb5reSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnxIzDrXNsbyBqaW7DqSBwb2xvxb5reSBrb25maWd1cmFjZSwgc2Uga3Rlcm91IHNlIG3DoSBwcm9wb2ppdC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdPcHJhdmR1IGNoY2V0ZSB0dXRvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlIG9kc3RyYW5pdD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSm3DqW5vIHTDqXRvIEtvbmZpZy4gUG9sb8W+a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07DoXpldiBqZSBqacW+IHBvdcW+w612w6FuIHBvbG/FvmtvdSBDb25maWdJdGVtcyBzIG7DoXNsZWR1asOtY8OtbSDEjcOtc2xlbSAoxI3DrXNseSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxIzDrXNsbyB2ZXJ6ZSB0w6l0byBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8SMw61zbG8gdmVyemUgamUgamnFviBwb3XFvml0byB2IHBvbG/FvmNlIENvbmZpZ0l0ZW1zIHMgbsOhc2xlZHVqw61jw61tIMSNw61zbGVtICjEjcOtc2x5KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmllIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdPYnNhaCBoaXN0b3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRG9iYSB2eXR2b8WZZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQxZlpYmzDrcW+ZW7DrSB6b2JyYXplbsOtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ1BvbG/Fvmt5IGtvbmZpZ3VyYWNlIG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZWJ5bGEgbmFsZXplbmEgxb7DoWRuw6EgZGF0YSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHR1dG8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGl0IHZ5aGxlZMOhdsOhbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0hsZWRhdCB0YWvDqSB2IHDFmWVkY2hvesOtY2ggdmVyesOtY2g/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnWm9icmF6ZW7DrSBzdHJvbXUgcHJvIHBvbG/Fvmt1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfDmnJvdmXFiCBobG91Ymt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUMWZaWJsw63FvmVuw60vb2Rkw6FsZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQcm8gQ29uZmlnSXRlbSBieWxvIGRvc2HFvmVubyBtYXhpbcOhbG7DrSDDunJvdm7EmyBvZGthesWvISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvbG/FvmthIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjZSBvIHBvbG/FvmNlIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBOYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnUG9zbGVkbsOtIHptxJtuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQb3NsZWRuw60gem3Em25hIG9kJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVmHFoWUgcG9sb8W+a3kgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnVnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVHlwIG9iamVrdHUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cm92YXQgcG9kbGUgdHlwdSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSByb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bFoWltbsSbdGUgc2ksIMW+ZSBidWRvdSB2eXR2b8WZZW5hIHRha8OpIG9kcG92w61kYWrDrWPDrSBkeW5hbWlja8OhIHBvbGUgYSB0xZnDrWR5IEdlbmVyYWxDYXRhbG9nIGEgbmVkb2pkZSBrIGplamljaCBhdXRvbWF0aWNrw6ltdSBvZHN0cmFuxJtuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmF0Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQb3TFmWVidWpldGUgcMWZw61rbGFkb3bDqSB0xZnDrWR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmljZSBuZW7DrSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQxZllaGxlZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHphZMOhbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdMWZZWJ1amV0ZSBhbGVzcG/FiCBqZWRudSB2eWJyYW5vdSBwb2xvxb5rdSBrb25maWd1cmFjZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdLIHTDqXRvIGtvbmZpZ3VyYcSNbsOtIHBvbG/FvmNlIG5lbcOhdGUgcHLDoXZvIHrDoXBpc3U6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcm8gdMWZw61kdSAlcyBuZWJ5bGEgZGVmaW5vdsOhbmEgxb7DoWRuw6EgZGVmaW5pY2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DrSBwb2xvxb5rYSAiJXMiIG5lYnlsYSB2IGRhdGFiw6F6aSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZWZpbnVqZSBwb8SNZXQgxZnDoWRrxa8gZWRpdG9ydSBkZWZpbmljZSBDSSB2IHJvemhyYW7DrSBzcHLDoXZjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1BybyBDb25maWdJdGVtSUQgJXMgbmVieWxhIG5hbGV6ZW5hIMW+w6FkbsOhIHZlcnplISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW7DrSB1dmVkZW5vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgYW5pIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdQxZnDrXN0dXAgbmVuw60gdW1vxb5uxJtuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWx6ZSB6b2JyYXppdCBoaXN0b3JpaSwgbmVuw60gemFkw6FubyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVsemUgem9icmF6aXQgaGlzdG9yaWksIG5lanNvdSBkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydmVrIGtvbmZpZ3VyYWNlIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdsOhIHZlcnplIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2F6ZW7DrSBha3R1YWxpem92w6FuIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdiBpbmNpZGVudHUgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIG9kc3RyYW7Em24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdQxZlpZMOhbiBvZGtheiBuYSAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09ka2F6IG5hICVzICh0eXBlPSVzKSBvZHN0cmFuxJtuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmljZSBwb2xvxb5reSBDb25maWdJdGVtIGFrdHVhbGl6b3bDoW5hIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOw6F6ZXYgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dCAlcyBha3R1YWxpem92w6FuIHogIiVzIiBuYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHV2ZWRlbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEIGFuaSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbHplIHpvYnJheml0IHBvbG/Fvmt1IGtvbmZpZ3VyYWNlLCBuZWpzb3UgemFkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmVieWxvIHYgZGF0YWLDoXppIG5hbGV6ZW5vISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndnl0acWhdMSbbm8gJXMgbmEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1BhcmFtZXRyeSBzdHLDoW5layAobmEga3RlcsO9Y2ggc2Ugem9icmF6dWrDrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuw60gdXZlZGVubyDFvsOhZG7DqSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1BybyB0dXRvIHTFmcOtZHUgbmVqc291IGTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb3DoWRuw70gdsO9c2xlZGVrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1bDvXNsZWRreSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmVsemUgem9icmF6aXQgcG9sb8W+a3UsIG5lanNvdSB6YWTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhIHBybyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYnlsYSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmVieWx5IG5hbGV6ZW55IMW+w6FkbsOpIHZlcnplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3Byb3Zvem7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFyb3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IE5hc2F6ZW7DrSB0w6l0byBLb25maWcuIFBvbG/Fvmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdiBJbmNpZGVudHUgdMOpdG8gS29uZmlnLiBQb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9w6FkbsOpIHBvdm9sZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdIbGVkw6Fuw60gcGFyYW1zIGplIG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cCBzdGF2dSBuYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIGFrdHXDoWxuw61obyBzdGF2dSBpbmNpZGVudHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWV6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT21lemVuw60gdMWZw61keSBwcm8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWLEm3JlbSBqZWRuw6kgbmVibyB2w61jZSB0xZnDrWQgb21lesOtdGUgdnliw61yYXRlbG7DqSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09tZXplbsOtIHTFmcOtZHkgcHJvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YsSbcmVtIGplZG7DqSBuZWJvIHbDrWNlIHTFmcOtZCBvbWV6w610ZSB2eWLDrXJhdGVsbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHZlcnplKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXAgb2RrYXp1IE9ka2F6b3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdaZGEgc2UgdGVudG8gb2RrYXogdnp0YWh1amUgbmEgQ29uZmlnSXRlbSBuZWJvIHN0YXRpY2tvdSB2ZXJ6aSBvZGthenVqw61jw61obyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG7DrWhvIHN0YXZ1IGluY2lkZW50dSBzZSBwcm92w6Fkw60gcG91emUgdSBkeW5hbWlja8O9Y2ggb2RrYXrFry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmlidXQsIHBvZGxlIGt0ZXLDqWhvIHNlIGJ1ZG91IGhsZWRhdCBwb2xvxb5reSBrb25maWd1cmFjZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnWsOha2xhZG7DrSBzdHJ1a3R1cmEgbmVuw60gcGxhdG7DoS4gUG9za3l0bsSbdGUgaGFzaCBzIGRhdHkgdmUgZm9ybcOhdHUgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfFmGV0xJt6ZWMgWUFNTCBtdXPDrSB6YcSNw61uYXQgem5ha2VtIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05lcG9kYcWZaWxvIHNlIHZ5xI1pc3RpdCB0YWJ1bGt1IGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05lYnlsYSBuYWxlemVuYSDFvsOhZG7DoSByZWxldmFudG7DrSBkeW5hbWlja8OhIHBvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOZWx6ZSB2bG/Fvml0IGRvIHRhYnVsa3kgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdWbG/FvmVubyAwIMWZw6Fka8WvIGRvIHRhYnVsa3kgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heCBwb8SNZXQgamVkbsOpIFBvbG/Fvmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9leHBvcnQgcMWZw61sb2ggKGpha28gcG9zbGVkbsOtIHBvbG/Fvmt5IG5hIMWZw6Fka3UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyemUgxZhldMSbemVjJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0NoeWJhIHDFmWkgc3luY2hyb25pemFjaSBkZWZpbmljLiBaa29udHJvbHVqdGUgcHJvc8OtbSBwcm90b2tvbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdNw6F0ZSBkZWZpbmljZSBJVFNNQ29uZmlnSXRlbSwga3RlcsOpIG5lanNvdSBzeW5jaHJvbml6b3bDoW55LiBOYXNhxI90ZSB6bcSbbnkgZHluYW1pY2vDvWNoIHBvbMOtIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnUHJvcGFkbnV0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfDmmRyxb5iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ8WYw61kw61jw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ05hcGzDoW5vdsOhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnT3ByYXZhL09ibm92ZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnTWltbyBwcm92b3onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUMWZZWhsZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvS29udHJvbGEga3ZhbGl0eSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUMWZZWhsZWQgYSBwb3R2cnplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydCB0xZnDrWQvcm9sw60gYSBqZWppY2ggc291dmlzZWrDrWPDrWNoIHBvbMOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnUMWZaSBpbXBvcnR1IHTFmcOtZHkgZG/FoWxvIGsgY2h5YsSbLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gU2tyeXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gVnlvYnJhemVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxb7FiHVqZSByb3rFocOtxZllbsOpIHBvZG3DrW5reSB2eWhsZWTDoXbDoW7DrSB2IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+a8OhY2ggcm96aHJhbsOtIGFnZW50YS4gUG9tb2PDrSB0w6l0byBmdW5rY2UgbcWvxb5ldGUgdnlobGVkw6F2YXQgbmFwxZkuIG7DoXpldiBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBzIHBvZG3DrW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIG5lYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw63FmWVuw6kgcG9kbcOtbmt5IHZ5aGxlZMOhdsOhbsOtIHYga29uZmlndXJhxI1uw61tIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uIFBvbW9jw60gdMOpdG8gZnVua2NlIG3Fr8W+ZXRlIHZ5aGxlZMOhdmF0IG5hcMWZLiBuw6F6ZXYga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcyBwb2Rtw61ua2FtaSB0eXB1ICIoKmtleTEqJiYqa2V5MiopIiBuZWJvICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnUMWZacWZYXplbsOpIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0kgcMWZaWTEm2xlbsOpIHNwb2xlxI1ub3N0aSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHDFmWnFmWF6ZW7DqSB1xb5pdmF0ZWxpIHrDoWthem7DrWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdOYXN0YXZlbsOtIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1prb250cm9sdWp0ZSBqZWRpbmXEjW7DvSBuw6F6ZXYgcG91emUgdiByw6FtY2kgc3Rlam7DqSB0xZnDrWR5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIG5lYm8gZ2xvYsOhbG7EmyAoImdsb2JhbCIpLCBjb8W+IHpuYW1lbsOhLCDFvmUgcMWZaSBobGVkw6Fuw60gZHVwbGljaXQgc2UgYmVyZSB2IMO6dmFodSBrYcW+ZMO9IGV4aXN0dWrDrWPDrSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnWnZvbHRlIG1vZHVsIHBybyB2eW51Y2Vuw60gc2Now6ltYXR1IHBvam1lbm92w6Fuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWeWJlcnRlIG1vZHVsIHBybyB2eW51Y2Vuw60gxI3DrXNlbG7DqWhvIHNjaMOpbWF0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnWnZvbHRlIG1vZHVsIHBybyB2eW51Y2Vuw60gc2Now6ltYXR1IMWZZXTEm3pjZSB2ZXJ6w60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVnliZXJ0ZSBhdHJpYnV0eSwga3RlcsOpIHNwdXN0w60gdnl0dm/FmWVuw60gbm92w6kgdmVyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1Z5YmVydGUga2F0ZWdvcmllLCBrdGVyw6kgY2hjZXRlIHDFmWnFmWFkaXQgdMOpdG8gdMWZw61kxJsgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyeSBzbG91cGNvdsO9Y2gga29uZmlndXJhxI1uw61jaCBwb2xvxb5layBwcm8gcMWZZWhsZWQgcG9sb8W+ZWsgQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1Nsb3VwY2UsIGt0ZXLDqSBsemUgZmlsdHJvdmF0IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4gUG96bsOhbWthOiBQb3ZvbGVueSBqc291IHBvdXplIGF0cmlidXR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgYSBkeW5hbWlja8OhIHBvbGUgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ1BvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdQxZlpZMOhbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OacHJhdmEgcG9sb8W+a3kga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgdWTDoWxvc3TDrSBwb2xvxb5reSBrb25maWd1cmFjZSwga3RlcsO9IHVtb8W+xYh1amUgcHJvdG9rb2xvdsOhbsOtIGRvIGhpc3RvcmllIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgdWTDoWxvc3TDrSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLCBrdGVyw70gYWt0dWFsaXp1amUga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcG9kbGUgamVqaWNoIGFrdHXDoWxuw60gZGVmaW5pY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWUgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1Rpc2sga29uZmlndXJhxI1uw60gcG9sb8W+a3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnUMWZaWJsw63FvmVuw60gcG9sb8W+a3kga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnU3Ryb21vdsOpIHpvYnJhemVuw60gcG9sb8W+ZWsga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyemUgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdQb2xvxb5reSBDb25maWdJdGVtcyBuw6FzbGVkdWrDrWPDrWNoIHTFmcOtZCBuZWJ1ZG91IG5hIHNlcnZlcnUgRWxhc3RpY3NlYXJjaCB1bG/FvmVueS4gQ2hjZXRlLWxpIHR1dG8gbW/Fvm5vc3QgcG91xb7DrXQgbmEgZXhpc3R1asOtY8OtIENJLCBqZSB0xZllYmEgcG8gem3Em27EmyB0w6l0byBtb8W+bm9zdGkgc3B1c3RpdCBtaWdyYWNpIENJIHByb3N0xZllZG5pY3R2w61tIGtvbnpvbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ1BvbG/Fvmt5IENvbmZpZ0l0ZW1zIHMgbsOhc2xlZHVqw61jw61taSBzdGF2eSBuYXNhemVuw60gbmVidWRvdSBuYSBzZXJ2ZXJ1IEVsYXN0aWNzZWFyY2ggdWxvxb5lbnkuIENoY2V0ZS1saSB0dXRvIG1vxb5ub3N0IHBvdcW+w610IG5hIGV4aXN0dWrDrWPDrSBDSSwgamUgdMWZZWJhIHBvIHptxJtuxJsgdMOpdG8gbW/Fvm5vc3RpIHNwdXN0aXQgbWlncmFjaSBDSSBwcm9zdMWZZWRuaWN0dsOtbSBrb256b2x5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdCBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhY2UgT21lemVuw60gcG9sb8W+ZWsgbmEgc3Ryw6Fua3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYsOhemUgcHJvIHNwcsOhdnUga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdIcm9tYWRuw70gbW9kdWwgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYcSNbsOtIHBvbG/FvmthIHZ5aGxlZMOhdsOhbsOtIGJhY2tlbmRvdsOpaG8gc23Em3JvdmHEjWUgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVnl0dsOhxZlldCBhIHNwcmF2b3ZhdCBkZWZpbmljZSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdWeXR2w6HFmcOtIHRpcHkgcHJvIHBvbG/Fvmt5IENvbmZpZ0l0ZW1zIHYgdXLEjWl0w71jaCDEjWFzb3bDvWNoIGJvZGVjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnWsOha2F6bsOtY2kgc2kgbW9ob3UgcHJvaGzDqWRub3V0IGhpc3Rvcmlja8OpIHZlcnplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdaw6FrYXpuw61jaSBtYWrDrSBtb8W+bm9zdCBydcSNbsSbIHDFmWVww61uYXQgbWV6aSBoaXN0b3JpY2vDvW1pIHZlcnplbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbnVqdGUgQWtjZSwgdSBrdGVyw71jaCBqZSB2ZSB3aWRnZXR1IHByb3BvamVuw71jaCBvYmpla3TFryBrIGRpc3BvemljaSB0bGHEjcOtdGtvIG5hc3RhdmVuw60gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvem9yxYh1amVtZSwgxb5lIHR5dG8gQWtjZSBtdXPDrSBtw610IHphcmVnaXN0cm92YW7DqSBuw6FzbGVkdWrDrWPDrSBzb3Vib3J5IEpTIGEgQ1NTOiBVSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluaWNlIHNjaMOpbWF0dSBzYWR5IFRlbXBsYXRlOjpUb29sa2l0IHBybyDFmWV0xJt6Y2UgdmVyesOtLiBQb3XFvsOtdsOhIHNlIHBvdXplIHYgcMWZw61wYWTEmywgxb5lIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIG5hc3RhdmVuIG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbnVqdGUgc2FkdSBwb2Rtw61uZWssIHphIGt0ZXLDvWNoIGplIHrDoWthem7DrWtvdmkgcG92b2xlbm8gem9icmF6aXQgcG9sb8W+a3Uga29uZmlndXJhY2UuIFBvZG3DrW5reSBsemUgdm9saXRlbG7EmyBvbWV6aXQgbmEgdXLEjWl0w6kgc2t1cGlueSB6w6FrYXpuw61rxa8uIEplZGluw71tIHBvdmlubsO9bSBhdHJpYnV0ZW0gamUgbsOhemV2LiBQb2t1ZCBuZWpzb3UgemFkw6FueSDFvsOhZG7DqSBkYWzFocOtIG1vxb5ub3N0aSwgYnVkb3UgdiBkYW7DqSBrYXRlZ29yaWkgdmlkaXRlbG7DqSB2xaFlY2hueSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIFBvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gayBvZHN0cmHFiG92w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSBwb21vY8OtIG9iZWNuw6lobyByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyB6w61za8OhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00gcG9tb2PDrSBvYmVjbsOpaG8gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBrIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00gcG9tb2PDrSBvYmVjbsOpaG8gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBrIG5hc3RhdmVuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSBwb21vY8OtIG9iZWNuw6lobyByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmludWplIG1vZHVsIHDFmWVobGVkdSBwcm8gem9icmF6ZW7DrSBtYWzDqWhvIHpvYnJhemVuw60gc2V6bmFtdSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdVcsSNdWplLCB6ZGEgc2UgdiBwcm9wb2plbsOtIHV6bMWvIG11c8OtIHpvYnJhem92YXQgcG9waXNreSB0eXB1IHByb3BvamVuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbnVqZSByZWd1bMOhcm7DrSB2w71yYXp5IGplZG5vdGxpdsSbIHBybyBrYcW+ZG91IHTFmcOtZHUgQ29uZmlnSXRlbSBwcm8ga29udHJvbHUgbsOhenZ1IENvbmZpZ0l0ZW0gYSB6b2JyYXplbsOtIHDFmcOtc2x1xaFuw71jaCBjaHlib3bDvWNoIHpwcsOhdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSBkb3N0dXBuw6kgc2xvdXBjZSBDSSB2IHDFmWVobGVkdSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoXZpc2xvc3RpIG5hIHTFmcOtZMSbIENJLiBLYcW+ZMOhIHBvbG/FvmthIHNlIG11c8OtIHNrbMOhZGF0IHogbsOhenZ1IHTFmcOtZHkgYSBwb2xlIGRvc3R1cG7DvWNoIHBvbMOtIHBybyBwxZnDrXNsdcWhbm91IHTFmcOtZHUuIFBvbG/Fvmt5IGR5bmFtaWNrw71jaCBwb2zDrSBtdXPDrSByZXNwZWt0b3ZhdCBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gYXRyaWJ1dCBwb2xvxb5reSBrb25maWd1cmFjZSBwcm8gdMWZw61kxJtuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdmUgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBhdHJpYnV0IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHBybyB0xZnDrWTEm27DrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gYXRyaWJ1dCBwb2xvxb5reSBrb25maWd1cmFjZSBwcm8gdMWZw61kxJtuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdmUgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHTDqXRvIG9wZXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gcG/FmWFkw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdmUgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgcm96aHJhbsOtIGFnZW50YS4gTmFob3J1OiBuZWpzdGFyxaHDrSBuYWhvxZllLiBEb2zFrzogbmVqbm92xJtqxaHDrSBuYWhvxZllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIHBvxZlhZMOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHZlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLiBOYWhvcnU6IG5lanN0YXLFocOtIG5haG/FmWUuIERvbMWvOiBuZWpub3bEm2rFocOtIG5haG/FmWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBwb8WZYWTDrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdMOpdG8gb3BlcmFjZS4gTmFob3J1OiBuZWpzdGFyxaHDrSBuYWhvxZllLiBEb2zFrzogbmVqbm92xJtqxaHDrSBuYWhvxZllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIHpvYnJhemVuw6kgc2xvdXBjZSBDSSB2IHDFmWVobGVkdSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoXZpc2xvc3RpIG5hIHTFmcOtZMSbIENJLiBLYcW+ZMOhIHBvbG/FvmthIHNlIG11c8OtIHNrbMOhZGF0IHogbsOhenZ1IHTFmcOtZHkgYSBwb2xlIGRvc3R1cG7DvWNoIHBvbMOtIHBybyBwxZnDrXNsdcWhbm91IHTFmcOtZHUuIFBvbG/Fvmt5IGR5bmFtaWNrw71jaCBwb2zDrSBtdXPDrSByZXNwZWt0b3ZhdCBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmludWplIHbDvWNob3rDrSBobG91Ymt1IHZ6dGFoxa8sIGt0ZXLDqSBzZSBtYWrDrSB6b2JyYXppdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIHpvYnJhemVuw70gYXRyaWJ1dCB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBwcm8gb2JyYXpvdmt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIHpvYnJhemVuw70gYXRyaWJ1dCB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBwcm8gb2JyYXpvdmt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJLZXkiIG11c8OtIG3DrXQgbsOhemV2IGR5bmFtaWNrw6lobyBwb2xlIHYgdG9tdG8gcMWZw61wYWTEmyAiWCIsICJDb250ZW50IiBtdXPDrSBtw610IGhvZG5vdHUgZHluYW1pY2vDqWhvIHBvbGUgdiB6w6F2aXNsb3N0aSBuYSB0eXB1IGR5bmFtaWNrw6lobyBwb2xlLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhIG5lYm8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9dMO9ZGVuOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1QxZllZDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBwb2RvYmpla3QgdMWZw61keSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSBkb3N0dXBuw6kgc2xvdXBjZSBDSSB2IHDFmWVobGVkdSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoXZpc2xvc3RpIG5hIHTFmcOtZMSbIENJLiBLYcW+ZMOhIHBvbG/FvmthIHNlIG11c8OtIHNrbMOhZGF0IHogbsOhenZ1IHTFmcOtZHkgYSBwb2xlIGRvc3R1cG7DvWNoIHBvbMOtIHBybyBwxZnDrXNsdcWhbm91IHTFmcOtZHUuIFBvbG/Fvmt5IGR5bmFtaWNrw71jaCBwb2zDrSBtdXPDrSByZXNwZWt0b3ZhdCBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvcWha3Uga29tcG9uZW50eSB0ZXh0b3bDqWhvIGVkaXRvcnUgcHJvIHR1dG8gb2JyYXpvdmt1LiBaYWRlanRlIMSNw61zbG8gKHBpeGVseSkgbmVibyBwcm9jZW50dcOhbG7DrSBob2Rub3R1IChyZWxhdGl2bsOtKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcG/EjWV0IMWZw6Fka8WvIGVkaXRvcnUgZGVmaW5pY2UgQ0kgdiByb3pocmFuw60gc3Byw6F2Y2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxZlhZMOtIGluY2lkZW50bsOtY2ggc3RhdsWvIG9kIHZ5c29rw6lobyAobmFwxZkuIGNyaWNpdGFsKSBwbyBuw616a8O9IChuYXDFmS4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW51amUgcMWZw61zbHXFoW7DqSBzdGF2eSBuYXNhemVuw60sIHZlIGt0ZXLDvWNoIG1vaG91IHByb3BvamVuw6kgdGlweSBvdmxpdm5pdCBzdGF2IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIG9tZXplbsOtIHZ5aGxlZMOhdsOhbsOtIHBybyBvYnJhem92a3UgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgb21lemVuw60gdnlobGVkw6F2w6Fuw60gcHJvIG9icmF6b3ZrdSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aGxlZMOhdsOhbsOtIHBybyBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbnVqZSB6b2JyYXplbsOpIHNsb3VwY2UgQ0kgdiBrb21wbGV4bsOtbSB6b2JyYXplbsOtIHRhYnVsa3kgb2RrYXrFryBwcm8gdsWhZWNobnkgdMWZw61keSBDSS4gUG9rdWQgbmVuw60gayBkaXNwb3ppY2kgxb7DoWRuw6EgcG9sb8W+a2EsIHpvYnJhesOtIHNlIHbDvWNob3rDrSBzbG91cGNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRmlsdHIgcHJvIHTFmcOtZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw6kgcG9sb8W+a3kganNvdSBrIGRpc3BvemljaSBwcm8gIkFjdGlvbiIgdmUgdMWZZXTDrSDDunJvdm5pIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw6kgcG9sb8W+a3kganNvdSBrIGRpc3BvemljaSB2IHBydm7DrSDDunJvdm5pIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RlcsOpIHBvbG/Fvmt5IGpzb3UgayBkaXNwb3ppY2kgdmUgZHJ1aMOpIMO6cm92bmkgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw70gdHlwIHByb3BvamVuw60gKHBvam1lbm92YW7DvSB6IHBvaGxlZHUgdGlwdSkgbcWvxb5lIG92bGl2bml0IHN0YXYgcHJvcG9qZW7DqSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw70gdHlwIHRpcHUgbcWvxb5lIG92bGl2bml0IHN0YXYgcHJvcG9qZW7DqSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpemFjZSBkZWZpbmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnT2RzdHJhbsSbbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQmFydmEgc3RhdnUgbmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIGR5bmFtaWNrw71jaCBwb2zDrSwga3RlcsO9IG96bmHEjcOtIGRlZmluaWNlIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIGpha28gbmVzeW5jaHJvbml6b3ZhbsOpLCBwb2t1ZCBzZSB6bcSbbsOtIGR5bmFtaWNrw6EgcG9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6EgcG9sZSB6b2JyYXplbsOhIG5hIG9icmF6b3ZjZSBkb2RhdGXEjW7DvWNoIHBvbMOtIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OhIHBvbGUgem9icmF6ZW7DoSBuYSBvYnJhem92Y2UgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6EgcG9sZSB6b2JyYXplbsOhIG5hIG9icmF6b3ZjZSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1Bvdm9sdWplIGZ1bmtjaSBocm9tYWRuw6kgYWtjZSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBwcm8gZnJvbnRlbmQgYWdlbnRhLCBhYnkgYnlsbyBtb8W+bsOpIHByYWNvdmF0IHMgdsOtY2UgbmXFviBqZWRub3Uga29uZmlndXJhxI1uw60gcG9sb8W+a291IG5hamVkbm91Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnUG92b2zDrSBmdW5rY2kgaHJvbWFkbsOpIGFrY2Uga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcG91emUgcHJvIHV2ZWRlbsOpIHNrdXBpbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1Bvdm9sdWplL3pha2F6dWplIGZ1bmtjaSBrb250cm9seSBqZWRpbmXEjW7DvWNoIG7DoXp2xa8gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTS4gUMWZZWQgcG92b2xlbsOtbSB0w6l0byBtb8W+bm9zdGkgYnlzdGUgbcSbbGkgemtvbnRyb2xvdmF0IHN5c3TDqW0sIHpkYSBqacW+IG5lZXhpc3R1asOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHMgZHVwbGljaXRuw61taSBuw6F6dnkuIFRvIG3Fr8W+ZXRlIHByb3bDqXN0IHBvbW9jw60ga29uem9sb3bDqWhvIHDFmcOta2F6dSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsIHVkw6Fsb3N0w60gcHJvIG5hc3RhdmVuw60gY29uZmlnaXRlbS1zdGF0dXMgbmEgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnUG9sZSBpbmRleHUgcG9sb8W+a3kga29uZmlndXJhY2UsIGt0ZXLDoSBzZSBwb3XFvsOtdmFqw60gcHJvIGZ1bGx0ZXh0b3bDqSB2eWhsZWTDoXbDoW7DrS4gUG9sZSBqc291IHJvdm7Em8W+IHVsb8W+ZW5hLCBhbGUgcHJvIGNlbGtvdm91IGZ1bmvEjW5vc3QgbmVqc291IHBvdmlubsOhLiBaYWhybnV0w60gcMWZw61sb2ggbHplIHpha8OhemF0IG5hc3RhdmVuw61tIHBvbG/Fvmt5IG5hIGhvZG5vdHUgMCBuZWJvIGplasOtbSBvZHN0cmFuxJtuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnUG9sZSB1bG/FvmVuw6EgdiBpbmRleHUgcG9sb8W+ZWsga29uZmlndXJhY2UsIGt0ZXLDoSBzZSBrcm9txJsgZnVsbHRleHRvdsOpaG8gdnlobGVkw6F2w6Fuw60gcG91xb7DrXZhasOtIGkgayBqaW7DvW0gw7rEjWVsxa9tLiBQcm8gw7pwbG5vdSBmdW5rxI1ub3N0IGpzb3UgdsWhZWNobmEgcG9sZSBwb3Zpbm7DoS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQcm8ga2HFvmRvdSB3ZWJvdm91IHNsdcW+YnUgKGtsw63EjSkgbHplIGRlZmlub3ZhdCBwb2xlIHTFmcOtZCAoaG9kbm90YSksIG5hIGt0ZXLDqSBqZSBpbXBvcnQgb21lemVuLiBQcm8gdsWhZWNobnkgenZvbGVuw6kgdMWZw61keSBuZWJvIHbFoWVjaG55IGV4aXN0dWrDrWPDrSB0xZnDrWR5IGJ1ZGUgdMWZZWJhIHYga29uZmlndXJhY2kgaW52b2tlcnUgenZvbGl0IGlkZW50aWZpa2HEjW7DrSBhdHJpYnV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjZSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcm8gdnJzdHZ1IHZ5dm9sw6F2YcSNZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjZSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcm8gdnJzdHZ1IHZ5dm9sw6F2YcSNZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2UgbW9kdWx1IEdlbmVyaWNJbnRlcmZhY2UgcHJvIHZyc3R2dSB2eXZvbMOhdmHEjWUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQxZllaGxlZCBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFocm51amUgc3RhdnkgbmFzYXplbsOtIGRvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWhybnVqZSBzdGF2eSBpbmNpZGVudMWvIGRvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYXhpbcOhbG7DrSBwb8SNZXQga29uZmlndXJhxI1uw61jaCBwb2xvxb5laywga3RlcsOpIHNlIHpvYnJhesOtIHZlIHbDvXNsZWRrdSB0w6l0byBvcGVyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHBybyBrb250cm9sdSBza3VwaW55IG9kcG92xJtkbsOpIHphIHTFmcOtZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgcHJvIGtvbnRyb2x1IHNrdXBpbnkgb2Rwb3bEm2Ruw6kgemEgcG9sb8W+a3Uga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgcHJvIGdlbmVyb3bDoW7DrSBzdGF0aXN0aWsgcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOw6F6ZXYgbW9kdWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfEjMOtc2VsbsO9IG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvxI1ldCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLCBrdGVyw6kgc2UgbWFqw60gem9icmF6aXQgbmEga2HFvmTDqSBzdHLDoW5jZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8SNZXQga29uZmlndXJhxI1uw61jaCBwb2xvxb5laywga3RlcsOpIHNlIG1hasOtIHpvYnJheml0IG5hIGthxb5kw6kgc3Ryw6FuY2UgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0eSwga3RlcsOpIHNlIG1hasOtIHZ5aGxlZGF0LCBrb2xpayB6w6F6bmFtxa8gYSBrdGVyw6kgYXRyaWJ1dHkgc2UgbWFqw60gem9icmF6aXQuIEF0cmlidXR5IENvbmZpZ0l0ZW0gbXVzw60gYsO9dCBleHBsaWNpdG7EmyB1bG/FvmVueSBwcm9zdMWZZWRuaWN0dsOtbSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQxZllaGxlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8ga2F0ZWdvcmllIHTFmcOtZCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHBybyBmaWx0cnkgc2xvdXBjxa8gcMWZZWhsZWR1IG1hbMO9Y2gga29uZmlndXJhxI1uw61jaCBwb2xvxb5lay4gVXBvem9ybsSbbsOtOiBOYXN0YXZlbsOtIGhvZG5vdHkgIkFrdGl2bsOtIiBuYSAwIHBvdXplIHphYnLDoW7DrSBhZ2VudMWvbSB1cHJhdm92YXQgbmFzdGF2ZW7DrSB0w6l0byBza3VwaW55IHYgamVqaWNoIG9zb2Juw61jaCBwcmVmZXJlbmPDrWNoLCBhbGUgc3Byw6F2Y8WvbSBzdMOhbGUgdW1vxb5uw60gdXByYXZvdmF0IG5hc3RhdmVuw60gam3DqW5lbSBqaW7DqWhvIHXFvml2YXRlbGUuIFBvbW9jw60gXCdQcmVmZXJlbmNlR3JvdXBcJyBtxa/FvmV0ZSDFmcOtZGl0LCB2ZSBrdGVyw6kgb2JsYXN0aSBzZSBtYWrDrSB0YXRvIG5hc3RhdmVuw60gdiB1xb5pdmF0ZWxza8OpbSByb3pocmFuw60gem9icmF6b3ZhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG5hc3RhdmVuw60gbsOhc3TEm25reSBwcm8gcMWZZWhsZWQgcG9kxZnDrXplbsO9Y2ggdGlrZXTFryB2IHJvemhyYW7DrSBhZ2VudGEuICJMaW1pdCIgamUgbW5vxb5zdHbDrSBzdGFuZGFyZG7EmyB2aWRpdGVsbsO9Y2ggdnN0dXDFry4gIkdyb3VwIiBzZSBwb3XFvsOtdsOhIGsgb21lemVuw60gcMWZw61zdHVwdSBrIHBsdWdpbnUgKG5hcMWZLjogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIHVyxI11amUsIHpkYSBqZSBwbHVnaW4gcG92b2xlbiBzdGFuZGFyZG7EmyBuZWJvIHpkYSBqZWogbXVzw60gdcW+aXZhdGVsIHBvdm9saXQgbWFudcOhbG7Emy4gIkNhY2hlVFRMTG9jYWwiIGplIGNhY2hvdmFjw60gxI1hcyBwbHVnaW51IC0gdiBtaW51dMOhY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG5hc3RhdmVuw60gbsOhc3TEm25reSBwcm8gcMWZZWhsZWQgcG9kxZnDrXplbsO9Y2ggdGlrZXTFryB2IHJvemhyYW7DrSBhZ2VudGEuICJMaW1pdCIgamUgbW5vxb5zdHbDrSBzdGFuZGFyZG7EmyB2aWRpdGVsbsO9Y2ggdnN0dXDFry4gIkdyb3VwIiBzZSBwb3XFvsOtdsOhIGsgb21lemVuw60gcMWZw61zdHVwdSBrIHBsdWdpbnUgKG5hcMWZLjogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIHVyxI11amUsIHpkYSBqZSBwbHVnaW4gcG92b2xlbiBzdGFuZGFyZG7EmyBuZWJvIHpkYSBqZWogbXVzw60gdcW+aXZhdGVsIHBvdm9saXQgbWFudcOhbG7Emy4gIkNhY2hlVFRMTG9jYWwiIGplIGNhY2hvdmFjw60gxI1hcyBwbHVnaW51IC0gdiBtaW51dMOhY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHBybyBzdGF2eSBuYXNhemVuw60gc2UgdnliYXJ2w60gdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIHN0YXZ5IG5hc2F6ZW7DrSB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cnkgc2t1cGlueSBwcm8gcMWZw61rbGFkIG9wcsOhdm7Em27DrSBvYmVjbsO9Y2ggYXRyaWJ1dMWvIGthdGFsb2d1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSBuw6F6dsWvIHBybyB0xZnDrWR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBtb2R1bHUgxI3DrXNlbCBwcm8gdMWZw61keSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBzdHLDoW5layAobmEga3RlcsO9Y2ggc2Ugem9icmF6dWrDrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBtb2R1bHUgxZlldMSbemNlIHZlcnplIHBybyB0xZnDrWR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdWx1IMWhYWJsb255IMWZZXTEm3pjZSB2ZXJ6ZSBzYWR5IG7DoXN0cm9qxa8gcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIHNwb3XFoXTEm8SNIHZlcnplIHBybyB0xZnDrWR5IHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnUHJvdmVkZSBuYWtvbmZpZ3Vyb3Zhbm91IGFrY2kgcHJvIGthxb5kb3UgdWTDoWxvc3QgKGpha28gSW52b2tlcikgcHJvIGthxb5kb3UgbmFrb25maWd1cm92YW5vdSB3ZWJvdm91IHNsdcW+YnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIG9wcsOhdm7Em27DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gYWtjZSBwxZlpcG9qZW7DrSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgcG9sb8W+a3kga29uZmlndXJhY2UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwcm8gdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwcm8gdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgem9icmF6ZW7DrSBzdHJvbXUgcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgenbEm3TFoWVuw60gcG9sb8W+a3kga29uZmlndXJhY2UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RrYXogbmEgJXMgKHR5cGU9JXMpIG9kc3RyYW7Em24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwb2xvxb5reSBocm9tYWRuw6kga29uZmlndXJhY2UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgcHJvIMO6cHJhdnUgcG9sb8W+a3kga29uZmlndXJhY2UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgcG9sb8W+a3kga29uZmlndXJhY2UgaGlzdG9yaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHMgcG9sb8W+a291IGtvbmZpZ3VyYWNlIHRpc2t1IElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBrIG9kc3RyYW7Em27DrSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdWeWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0F1dG9tYXRpY2vDqSBuYXN0YXZlbsOtIHN0YXZ1IGluY2lkZW50dSBDSSwga2R5xb4gamUgdGlrZXQgcHJvcG9qZW4gcyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXbDrSBzdGF2IG5hc2F6ZW7DrSBuYSBvYnJhem92Y2UgaHJvbWFkbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3RhdsOtIHN0YXYgdWTDoWxvc3RpIG5hIG9icmF6b3ZjZSBocm9tYWRuw6kgcG9sb8W+a3kga29uZmlndXJhY2Ugcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlLCBrdGVyw70gdW1vxb7FiHVqZSBwcm9wb2ppdCBrb25maWd1cmHEjW7DrSBwb2xvxb5rdSBzIGppbsO9bSBvYmpla3RlbSB2IHpvYnJhemVuw60genbEm3TFoWVuw60ga29uZmlndXJhxI1uw60gcG9sb8W+a3kgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIHDFmcOtc3R1cCBrIGhpc3RvcmlpIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gcMWZw61zdHVwIGsgaGlzdG9yaWkgcG9sb8W+a3kga29uZmlndXJhY2UgdiB6b2JyYXplbsOtIGFnZW50YSBzIHDFmWlibMOtxb5lbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBvZHN0cmFuxJtuw60gcG9sb8W+a3kga29uZmlndXJhY2UgdiBqZWrDrW0genbEm3TFoWVuw6ltIHpvYnJhemVuw60gcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIHpvYnJhemVuw60gb2RrYXrFryBuYSBwb2xvxb5reSBrb25maWd1cmFjZSB2ZSBzdHJvbW92w6ltIHpvYnJhemVuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gZHVwbGlrb3bDoW7DrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IHDFmWVobGVkdSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIGR1cGxpa292w6Fuw60gcG9sb8W+a3kga29uZmlndXJhY2UgdiB6b2JyYXplbsOtIGFnZW50YSBzIHDFmWlibMOtxb5lbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIMO6cHJhdnUgcG9sb8W+a3kga29uZmlndXJhY2UgdiB6b2JyYXplbsOtIGFnZW50YSBzIHDFmWlibMOtxb5lbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIG7DoXZyYXQgenDEm3QgZG8gem9icmF6ZW7DrSB6dsSbdMWhZW7DrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIHRpc2sga29uZmlndXJhxI1uw60gcG9sb8W+a3kgdiBqZWrDrW0genbEm3TFoWVuw6ltIHpvYnJhemVuw60gcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBwxZlpYmzDrcW+ZW7DrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IHDFmWVobGVkdSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBoaXN0b3JpaSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrICh2IG9wYcSNbsOpbSBwb8WZYWTDrSkgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdWw71jaG96w60ga2F0ZWdvcmllLCBrdGVyw6Egc2Ugem9icmF6w60sIHBva3VkIG5lbsOtIHZ5YnLDoW5hIMW+w6FkbsOhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrw6F0b3Iga29uZmlndXJhxI1uw60gcG9sb8W+a3ksIG5hcMWZLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVsO9Y2hvesOtIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpY2t5IHNwb3XFoXTDrSBpbnZva8OhdG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnplIMWYZXTEm3pjb3bDvSB2w71yYXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTW9kdWwgVmVyc2lvbiBTdHJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnU3BvdcWhdMSbxI0gdmVyemUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1pkYSBzZSBsemUgdnlobm91dCBwcm92ZWRlbsOtIENvbmZpZ0l0ZW1BQ0wga29udHJvbG91IHrDoXZpc2xvc3TDrSBwb2zDrSB1bG/FvmVuw71jaCB2IG1lemlwYW3Em3RpLiBUbyBtxa/FvmUgemxlcMWhaXQgxI1hc3kgbmHEjcOtdMOhbsOtIGZvcm11bMOhxZnFrywgYWxlIG11c8OtIHRvIGLDvXQgemFrw6F6w6FubywgcG9rdWQgc2UgbWFqw60gcG91xb7DrXZhdCBBQ0xNb2R1bHkgcHJvIHR5cHkgSVRTTUNvbmZpZ0l0ZW0tIGEgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0t0ZXLDqSBvYmVjbsOpIGluZm9ybWFjZSBqc291IHV2ZWRlbnkgdiB6w6FobGF2w60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAndMWZw61kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iw6FsbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3Rpdm7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncMWZZWRwcm9kdWvEjW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGl2bsOtJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBhbGNlICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcGFsY8WvICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcGFsY2UgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcGFsY2UgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOXBhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcGFsY2UgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcGFsY8WvICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMXBhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcGFsY2UgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyM3BhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcGFsY2UgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBhbGPFryAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcGFsY2UgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwYWxjZSAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwYWxjZSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcGFsY2UgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBhbGNlICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwYWxjZSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcGFsY8WvICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcGFsY2UgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwYWxjZSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHBhbGNlICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwYWxjZSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwYWxjZSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBwYWxjZSAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBhbGNlICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgcGFsY8WvICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcGFsY8WvICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBwYWxjZSAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgcGFsY2UgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcGFsY2UgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcGFsY8WvICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHBhbGNlICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfDmsSNZXRuaWN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnUMWZaWTEm2xvdsOhbsOtIGFkcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdTcHLDoXZjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2dvdsO9IHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cCBzcG90xZllYmnEjWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0thcGFjaXRhIGJhdGVyaWUgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUeXAgYmF0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1ZG92YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUm96aHJhbsOtIHNixJtybmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnVMWZw61kYSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFjaXRhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhY2l0YSBuYSBncmFmaWNrb3Uga2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfEjMOtc2xvIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnxIx0ZcSNa2Ega2FyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnRza8OpIGNlcnRpZmlrw6F0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRza8O9IHNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBrbGllbnTFryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBwcm8gcG9kZXBpc292w6Fuw60ga8OzZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuxI1uw60gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1NtbG91dmEgbyBwb3JhZGVuc3R2w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgbmEgZGlzdHJpYnV0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBrb250ZWpuZXLFryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1NtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cCBzbWxvdXZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnRG9iYSB0cnbDoW7DrSBzbWxvdXZ5IG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0RvYmEgdHJ2w6Fuw60gc21sb3V2eSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCZXpkcsOhdG92w70gdGVsZWZvbiAodGVsZWZvbiBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdOw6FrbGFkb3bDoSBqZWRub3RrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1BvxI1ldCBsaWNlbmPDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0dW0gdnl0dm/FmWVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1ZsYXN0bsOtIHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCB2eWhyYXplbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIHZ5c3RhdmVuw60gZmFrdHVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0dW0gb2JqZWRuw6F2a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdHVtIHrDoXJ1a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0dW0gdnlkw6Fuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0b2xuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBwcm8gcG9kZXBpc292w6Fuw60gZG9rdW1lbnTFryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1tYWlsb3bDqSBjZXJ0aWZpa8OhdHkgKGNlcnRpZmlrw6F0eSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1ByYWNvdm7DrSBzbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uY292w6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVWtvbsSNZW7DrSBwb2Rwb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0dW0gdnlwcsWhZW7DrSBwbGF0bm9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybsOtIHBldm7DvSBkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnQnLDoW5hIGZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZG92w6Fuw60gZW5lcmdpZSB2IHNldHJ2YcSNbsOta3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3Jtw6F0b3bDvSBmYWt0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW7FocOtem92w6Egc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ09iZWNuw6kgaW5mb3JtYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlja8OpIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWNrw6Ega2FydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIGhhcmR3YXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0htb3Rub3N0IGhhcmR3YXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdOw6FobGF2bsOtIHNvdXByYXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnU3Byw6F2YSBpZGVudGl0IGEgcMWZw61zdHVwdSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50w6FybsOtIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdOw6FrbGFkeSBuYSBpbnZlcnppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnxIzDrXNsbyBmYWt0dXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2zDoXZlc25pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGRpc3BsZWogeiB0ZWt1dMO9Y2gga3J5c3RhbMWvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKHN2xJt0ZWxuw6EgZGlvZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1Bldm7DoSB0ZWxlZm9ubsOtIGxpbmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ01vYmlsbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnWmVtxJtwaXNuw6EgxaHDrcWZa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdWcnN0dmEgMTogRnl6aWNrw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ1Zyc3R2YSAyOiBWcnN0dmEgZGF0b3bDqWhvIHNwb2plJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdWcnN0dmEgMzogU8OtxaVvdsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdWcnN0dmEgMzogU8OtxaVvdsOhIHZyc3R2YSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ1Zyc3R2YSA0OiBUcmFuc3BvcnRuw60gdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdWcnN0dmEgNTogUmVsYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA2OiBQcmV6ZW50YcSNbsOtIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA3OiBBcGxpa2HEjW7DrSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTsOhamVtbsOtIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbsSNbsOtIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuxI1uw60ga2zDrcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdEb2JhIHBsYXRub3N0aSBsaWNlbmNlIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnRG9iYSBwbGF0bm9zdGkgbGljZW5jZSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS3FvmVsZXpvLWZvc2bDoXRvdsOhIGJhdGVyaWUgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLWlvbnRvdsOhIChMaS1pb24pIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdTbWxvdXZhIG8gcMWvasSNY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ05hY2jDoXrDrSBzZSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1plbcSbcGlzbsOhIGTDqWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVsO9cm9iY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltw6FsbsOtIHphdMOtxb5pdGVsbm9zdCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnUGFtxJvFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cCBwYW3Em3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ8SMw61zbG8gbW9iaWxuw61obyB0ZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbG7DrS92bG/FvmVuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ1BvcGlzIG1vZGVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSb3psacWhZW7DrSBtb25pdG9ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZWxpa29zdCBtb25pdG9ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ015xaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1PDrcWlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjZSBvIHPDrXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2UgbyBzw610aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnU8OtxaVvdsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2wta2FkbWlvdsOhIChOaUNkKSBiYXRlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlrbC1tZXRhbGh5ZHJpZG92w6EgKE5pTUgpIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnRG9ob2RhIG8gbWzEjWVubGl2b3N0aSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUG/EjWV0IHByb2Nlc29yxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUG/EjWV0IG1vZHVsxa8gUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ1BvxI1ldCBncmFmaWNrw71jaCBrYXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChvcmdhbmlja8OhIGRpb2RhIGVtaXR1asOtY8OtIHN2xJt0bG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1Byb3Zvem7DrSBuw6FrbGFkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdPYmplZG5hY8OtIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdKaW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVsO9c3R1cHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcGFydG5lcnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm7DrSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXAgdGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXppY2vDoSBqw6FkcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdEb2TDoXZrYSBlbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnWmFrb3VwZW5vIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0hsb3Via2Egc3RvamFudSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1N0b2phbm92w6kgamVkbm90a3kgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdNw61zdG5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1Byb2Rlam7DrSBzbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRuw60gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdVemF2xZllbsOhIG9sb3bEm27DoSBiYXRlcmllIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8OpcmlvdsOpIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyb3bDvSBzb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NtbG91dmEgbyBwb3NreXRvdsOhbsOtIHNsdcW+ZWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aXNuw60gxaF0w610ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwIHrDoXN1dmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnRS1tYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnUmVwcm9kdWt0b3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdQb8SNw6F0ZcSNbsOtIElQIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnw5psb8W+acWhdMSbJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnw5psb8W+bsO9IG9kZMOtbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RjZcWZaW7DoSBzcG9sZcSNbm9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU291aHJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGVua8O9IGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVmzDoWtuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdDZWxrb3bDoSBwYW3Em8WlIFJBTSBncmFmaWNrw6kga2FydHkgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0NlbGtvdsOhIHBhbcSbxaUgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0RvdHlrb3bDvSBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVsSbxb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1JvemJvxI1vdmHEjSBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdOw6FobGF2bsOtIHNvdXByYXZhIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Vib3bDoSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/da_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5kc3RpbGxpbmdlciBmb3IgaW5kZ8OlZW5kZSBmb3Jlc3DDuHJnc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbmRzdGlsbGluZ2VyIGZvciB1ZGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBzdHlyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU2tpZnQga2xhc3NlZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnw4ZuZHJpbmcgYWYgcm9sbGVkZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIZXIga2FuIGR1IGltcG9ydGVyZSBSZWFkeTJJbXBvcnQta2xhc3NlYnVuZHRlciwgZGVyIHZpc2VyIHZvcmVzIG1lc3QgYWxtaW5kZWxpZ2Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEJlbcOmcmssIGF0IGRlciBrYW4gdsOmcmUgYmVob3YgZm9yIHlkZXJsaWdlcmUga29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnT3BkYXRlciBla3Npc3RlcmVuZGUgZW5oZWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIFJlYWR5MkFkb3B0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWctZWxlbWVudGtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnLWVsZW1lbnRldHMgcm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ29uZmlnSXRlbUlEICVzIGZpbmRlcyBpa2tlIGkgZGF0YWJhc2VuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6ZsZyBlbiBrbGFzc2UgZnJhIGxpc3RlbiBmb3IgYXQgb3ByZXR0ZSBldCBueXQgQ29uZmlnIEl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEZXBsb3ltZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0aWwgZW4gYW5kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ1VneWxkaWd0IG51bW1lciBww6Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bW1lcmV0IHDDpSBldCBhbmRldCBrb25maWd1cmF0aW9uc2VsZW1lbnQsIGRlciBza2FsIGxpbmtlcyB0aWwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQ/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hdm5ldCBww6UgZGVubmUgQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hdm5ldCBlciBhbGxlcmVkZSBpIGJydWcgYWYgQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBudW1tZXIoZSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGZvciBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ZyBhZiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcihlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCB0aWxzdGFuZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWsgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ09wcmV0dGVsc2VzdGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20tdmlzbmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdLb25maWd1cmVyIGVsZW1lbnRlciBwci4gc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBmdW5kZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOmbGcgZGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnS8O4ciBzw7hnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdTw7hnIG9nc8OlIGkgdGlkbGlnZXJlIHZlcnNpb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyB0aWwgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R5YmRlbml2ZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBpbmQvdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWFrcy4gbGlua25pdmVhdSBuw6VldCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gb20ga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnV2w6ZyZW5kZSBkZXBsb3ltZW50IHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnV2w6ZyZW5kZSBJbmNpZGVudCB0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdTaWRzdCDDpm5kcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1NpZHN0IMOmbmRyZXQgYWYnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdEaW5lIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0tc8O4Z25pbmcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ09iamVrdHR5cGUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmVyIHDDpSB0eXBlJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO4bGdlbmRlIGtsYXNzZXIgdmlsIGJsaXZlIGltcG9ydGVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO4bGdlbmRlIHJvbGxlciB2aWwgYmxpdmUgaW1wb3J0ZXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdCZW3DpnJrLCBhdCBkZXIgb2dzw6Ugb3ByZXR0ZXMgdGlsc3ZhcmVuZGUgZHluYW1pc2tlIGZlbHRlciBvZyBHZW5lcmFsQ2F0YWxvZy1rbGFzc2VyLCBvZyBhdCBkZXIgaWtrZSBza2VyIG5vZ2VuIGF1dG9tYXRpc2sgZmplcm5lbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZpbCBkdSBmb3J0c8OmdHRlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCcnVnIGZvciBla3NlbXBlbGtsYXNzZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXRpb25lbiBlciBpa2tlIGVuIGd5bGRpZyBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGFuZ2l2ZXQgbm9nZXQgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IHNrYWwgYnJ1Z2UgbWluZHN0IMOpdCB2YWxndCBrb25maWd1cmF0aW9uc2VsZW1lbnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnRHUgaGFyIGlra2Ugc2tyaXZlYWRnYW5nIHRpbCBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQ6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdEZXIgYmxldiBpa2tlIGRlZmluZXJldCBub2dlbiBkZWZpbml0aW9uIGZvciBrbGFzc2VuICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlnLWVsZW1lbnRldCAiJXMiIGJsZXYgaWtrZSBmdW5kZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRGVmaW5lcmVyIGFudGFsbGV0IGFmIHLDpmtrZXIgZm9yIENJLWRlZmluaXRpb25zZWRpdG9yZW4gaSBhZG1pbmlzdHJhdGlvbnNncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnSW5nZW4gdmVyc2lvbiBmdW5kZXQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgYW5naXZldCBub2dldCBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGVsbGVyIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdEZXIgZ2l2ZXMgaW5nZW4gYWRnYW5nISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlrLCBkYSBkZXIgaWtrZSBlciBhbmdpdmV0IG5vZ2V0IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlrLCBpbmdlbiBhZGdhbmdzcmV0dGlnaGVkZXIgZ2l2ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOeXQgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOeSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbXBsZW1lbnRlcmluZ3NzdGF0dXMgb3BkYXRlcmV0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdIw6ZuZGVsc2Vzc3RhdHVzIG9wZGF0ZXJldCAobnk9JXMsIGdhbW1lbD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgc2xldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgdGlsICVzICh0eXBlPSVzKSB0aWxmw7hqZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgdGlsICVzICh0eXBlPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtLWRlZmluaXRpb24gb3BkYXRlcmV0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYXZuIG9wZGF0ZXJldCAobnl0PSVzLCBnYW1tZWx0PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ICVzIG9wZGF0ZXJldCBmcmEgIiVzIiB0aWwgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgYW5naXZldCBub2dldCBDb25maWdJdGVtSUQgZWxsZXIgVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGtvbmZpZ3VyYXRpb25zZWxlbWVudCwgaW5nZW4gYWRnYW5nc3JldHRpZ2hlZGVyIGdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBmaW5kZXMgaWtrZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Vkc2tyZXZldCBhZiAlcyBww6UgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1VneWxkaWd0IGtsYXNzZS1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdEZXIgZXIgaWtrZSBhbmdpdmV0IG5vZ2V0IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgZ2l2ZXQgYWRnYW5nc3JldHRpZ2hlZGVyIHRpbCBkZW5uZSBrbGFzc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbnRldCByZXN1bHRhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdTw7hnZXJlc3VsdGF0ZXIgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW4gaWtrZSB2aXNlIGVsZW1lbnQsIGluZ2VuIGFkZ2FuZ3NyZXR0aWdoZWRlciB0aWwgQ29uZmlnSXRlbSBlciBnaXZldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBpa2tlIGZ1bmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnSW5nZW4gdmVyc2lvbmVyIGZ1bmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpb25lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2YXJzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdow6ZuZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlcGxveW1lbnQgdGlsc3RhbmQgZm9yIGRlbm5lIENvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSW5jaWRlbnQgdGlsc3RhbmQgZm9yIGRlbm5lIENvbmZpZyBJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSW5nZW4gdGlsbGFkZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXJldCBlciB1Z3lsZGlndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDuGdlcGFyYW1ldHJlIHVneWxkaWdlISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Zpc3RlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgYWYgdWRydWxuaW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ051dsOmcmVuZGUgaMOmbmRlbHNlc3RpbHN0YW5kIFR5cGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVsbGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyw6Zuc25pbmdlciBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpmxnIGVuIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIGF0IGJlZ3LDpm5zZSB2YWxnYmFyZSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncsOmbnNuaW5nZXIgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsOmbGcgZW4gZWxsZXIgZmxlcmUga2xhc3NlciBmb3IgYXQgYmVncsOmbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2sgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrICh2ZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGFmIGxpbmtoZW52aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09tIGRldHRlIGxpbmsgZ8OmbGRlciBmb3IgQ29uZmlnSXRlbSBlbGxlciBkZW4gc3RhdGlza2UgdmVyc2lvbiBhZiBkZXQgcmVmZXJlcmVuZGUgb2JqZWt0LiBCZXJlZ25pbmcgYWYgYWt0dWVsIGjDpm5kZWxzZXN0aWxzdGFuZCB1ZGbDuHJlcyBrdW4gcMOlIGR5bmFtaXNrZSBsaW5rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWw6ZsZyBkZW4gYXR0cmlidXQsIHNvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBza2FsIHPDuGdlcyBlZnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNpc3N0cnVrdHVyZW4gZXIgaWtrZSBneWxkaWcuIEFuZ2l2IHZlbmxpZ3N0IGVuIGhhc2ggbWVkIGRhdGEgaSBZQU1MLWZvcm1hdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZXQgZXIgbsO4ZHZlbmRpZ3QgYXQgc3RhcnRlIFlBTUwtc3RyZW5nZW4gbWVkIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0t1bm5lIGlra2UgcmVuc2UgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnRGVyIGJsZXYgaWtrZSBmdW5kZXQgbm9nZW4gcmVsZXZhbnRlIGR5bmFtaXNrZSBmZWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdLdW5uZSBpa2tlIGluZHPDpnR0ZSBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5kc2F0IDAgcsOma2tlciBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbXVtIGFudGFsIGFmIGV0IGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0L2Vrc3BvcnQgYWYgdmVkaMOmZnRlZGUgZmlsZXIgKHNvbSBkZSBzaWRzdGUgcG9zdGVyIHByLiBsaW5qZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uc3N0cmVuZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWpsIHZlZCBzeW5rcm9uaXNlcmluZyBhZiBkZWZpbml0aW9uZXJuZS4gVGplayB2ZW5saWdzdCBsb2dnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnRHUgaGFyIElUU01Db25maWdJdGVtLWRlZmluaXRpb25lciwgc29tIGlra2UgZXIgc3lua3JvbmlzZXJlZGUuIEltcGxlbWVudGVyIHZlbmxpZ3N0IGRpbmUgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2tlIGZlbHTDpm5kcmluZ2VyLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVWRsw7hiZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWZWRsaWdlaG9sZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwZXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVyc2lvbmVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnQW5tZWxkZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnNpZ3Qgb2cgYmVrcsOmZnRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydCBhZiBrbGFzc2VyL3JvbGxlciBvZyBkZXJlcyByZWxhdGVyZWRlIGZlbHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0RlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBrbGFzc2VpbXBvcnRlbi4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNranVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gdmlzdCBww6UgYmlsbGVkZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhZGVyIHVkdmlkZWRlIHPDuGdlYmV0aW5nZWxzZXIgdmVkIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLiBNZWQgZGVubmUgZnVua3Rpb24ga2FuIGR1IGYuZWtzLiBzw7hnZSBlZnRlciBuYXZuZXQgcMOlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBtZWQgYmV0aW5nZWxzZXIgc29tICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhZGVyIHVkdmlkZWRlIHPDuGdlYmV0aW5nZWxzZXIgaSBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4gTWVkIGRlbm5lIGZ1bmt0aW9uIGthbiBkdSBmLmVrcy4gc8O4Z2UgaSBuYXZuZXQgcMOlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBtZWQgYmV0aW5nZWxzZXIgc29tICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1RpbGRlbHRlIENJXCdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJXCdlciB0aWxkZWx0IGt1bmRldmlya3NvbWhlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJXCdlciB0aWxkZWx0IGt1bmRlYnJ1Z2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluZHN0aWxsaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1RqZWsga3VuIGZvciBldCB1bmlrdCBuYXZuIGluZGVuIGZvciBkZW4gc2FtbWUgQ29uZmlnSXRlbS1rbGFzc2UgKFwnY2xhc3NcJykgZWxsZXIgZ2xvYmFsdCAoXCdnbG9iYWxcJyksIGh2aWxrZXQgYmV0eWRlciwgYXQgYWxsZSBla3Npc3RlcmVuZGUgQ29uZmlnSXRlbXMgdGFnZXMgaSBiZXRyYWd0bmluZywgbsOlciBkZXIgbGVkZXMgZWZ0ZXIgZHVibGV0dGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVsOmbGcgZXQgbW9kdWwgdGlsIGF0IGjDpW5kaMOmdmUgZXQgbmF2bmVza2VtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1bDpmxnIGV0IG1vZHVsIHRpbCBhdCBow6VuZGjDpnZlIGV0IG51bW1lcnNrZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWw6ZsZyBldCBtb2R1bCB0aWwgYXQgaMOlbmRow6Z2ZSBlbiB2ZXJzaW9uc3N0cmVuZ29yZG5pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVsOmbGcgZGUgYXR0cmlidXR0ZXIsIGRlciBza2FsIHVkbMO4c2Ugb3ByZXR0ZWxzZW4gYWYgZW4gbnkgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVsOmbGcga2F0ZWdvcmllciwgZGVyIHNrYWwgdGlsZGVsZXMgZGVubmUga2xhc3NlIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2xvbm5lLWtvbmZpZ3VyYXRpb25zZWxlbWVudGZpbHRyZSB0aWwgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9ubmVyLCBkZXIga2FuIGZpbHRyZXJlcyBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4gQmVtw6ZyazogS3VuIENvbmZpZyBJdGVtLWF0dHJpYnV0dGVyIG9nIGR5bmFtaXNrZSBmZWx0ZXIgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXIgdGlsbGFkdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1RpbGbDuGoga29uZmlnLWVsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlciBrb25maWd1cmF0aW9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0taMOmbmRlbHNlc21vZHVsLCBkZXIgbXVsaWdnw7hyIGxvZ25pbmcgdGlsIGhpc3RvcmlrIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudC1tb2R1bCwgZGVyIG9wZGF0ZXJlciBjb25maWcgaXRlbXMgdGlsIGRlcmVzIGFrdHVlbGxlIGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXJlciBlbGVtZW50ZXRzIGhpc3RvcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdQcmludCBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnR6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0tdHLDpnZpc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGkgZsO4bGdlbmRlIGtsYXNzZXIgdmlsIGlra2UgYmxpdmUgZ2VtdCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIGF0IGFudmVuZGUgZGV0dGUgcMOlIGVrc2lzdGVyZW5kZSBDSVwnZXIgc2thbCBDSS1taWdyZXJpbmdlbiBrw7hyZXMgdmlhIGtvbnNvbGxlbiwgZWZ0ZXIgYXQgZGVubmUgaW5kc3RpbGxpbmcgZXIgw6ZuZHJldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUgdmlsIGlra2UgYmxpdmUgZ2VtdCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIGF0IGFudmVuZGUgZGV0dGUgcMOlIGVrc2lzdGVyZW5kZSBDSVwnZXIgc2thbCBDSS1taWdyZXJpbmdlbiBrw7hyZXMgdmlhIGtvbnNvbGxlbiwgZWZ0ZXIgYXQgZGVubmUgaW5kc3RpbGxpbmcgZXIgw6ZuZHJldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnR3LDpm5zZSBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmF0aW9uIEVsZW1lbnRncsOmbnNlIHByLiBzaWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2UgZm9yIGtvbmZpZ3VyYXRpb25zc3R5cmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBidWxrLW1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmF0aW9uc2VsZW1lbnQgc8O4ZyBiYWNrZW5kLXJvdXRlciBmb3IgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdPcHJldCBvZyBhZG1pbmlzdHJlciBkZWZpbml0aW9uZXJuZSBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdPcHJldHRlciBiaWxsZXR0ZXIgdGlsIENvbmZpZ0l0ZW1zIHDDpSBiZXN0ZW10ZSB0aWRzcHVua3Rlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS3VuZGVyIGthbiBzZSBoaXN0b3Jpc2tlIENJLXZlcnNpb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS3VuZGVybmUgaGFyIG11bGlnaGVkIGZvciBtYW51ZWx0IGF0IHNraWZ0ZSBtZWxsZW0gaGlzdG9yaXNrZSBDSS12ZXJzaW9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRhLCBkZXIgc2thbCBicnVnZXMgcMOlIGF0dHJpYnV0dGVuIGZvciBza8Omcm1iaWxsZWRldCB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0YSwgZGVyIHNrYWwgYnJ1Z2VzIHDDpSBhdHRyaWJ1dHRlbiBmb3Igc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLiBFa3NlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluZXIgaGFuZGxpbmdlciwgaHZvciBlbiBpbmRzdGlsbGluZ3NrbmFwIGVyIHRpbGfDpm5nZWxpZyBpIGRlIGxpbmtlZGUgb2JqZWt0ZXJzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBCZW3DpnJrLCBhdCBkaXNzZSBoYW5kbGluZ2VyIHNrYWwgaGF2ZSByZWdpc3RyZXJldCBmw7hsZ2VuZGUgSlMtIG9nIENTUy1maWxlcjogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgb2cgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBUZW1wbGF0ZTo6VG9vbGtpdC1za2VtYSB0aWwgdmVyc2lvbnNzdHJlbmdlLiBCcnVnZXMga3VuLCBodmlzIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBlciBzYXQgdGlsIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmVyIGV0IHPDpnQgYmV0aW5nZWxzZXIsIHVuZGVyIGh2aWxrZSBlbiBrdW5kZSBoYXIgbG92IHRpbCBhdCBzZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQuIEJldGluZ2Vsc2VybmUga2FuIGV2ZW50dWVsdCBiZWdyw6Zuc2VzIHRpbCBiZXN0ZW10ZSBrdW5kZWdydXBwZXIuIE5hdm4gZXIgZGVuIGVuZXN0ZSBvYmxpZ2F0b3Jpc2tlIGF0dHJpYnV0LiBIdmlzIGRlciBpa2tlIGVyIGFuZ2l2ZXQgYW5kcmUgbXVsaWdoZWRlciwgdmlsIGFsbGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdsOmcmUgc3lubGlnZSB1bmRlciBkZW4gcMOlZ8OmbGRlbmRlIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBzbGV0dGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBoZW50ZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHZlZCBoasOmbHAgYWYgZGVuIGdlbmVyaXNrZSBncsOmbnNlZmxhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IHPDuGdlIGkgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBpbmRzdGlsbGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZXQgb3ZlcnNpZ3RzbW9kdWwgdGlsIGF0IHZpc2UgZGVuIGxpbGxlIHZpc25pbmcgYWYgZW4gbGlzdGUgb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBvbSBsaW5rdHlwZWV0aWtldHRlcm5lIHNrYWwgdmlzZXMgaSBub2RlZm9yYmluZGVsc2VybmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcmVndWzDpnJlIHVkdHJ5ayBpbmRpdmlkdWVsdCBmb3IgaHZlciBDb25maWdJdGVtLWtsYXNzZSBmb3IgYXQga29udHJvbGxlcmUgQ29uZmlnSXRlbS1uYXZuZXQgb2cgZm9yIGF0IHZpc2UgdGlsc3ZhcmVuZGUgZmVqbG1lZGRlbGVsc2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB0aWxnw6ZuZ2VsaWdlIGtvbG9ubmVyIG1lZCBDSVwnZXIgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgYWZow6ZuZ2lndCBhZiBDSS1rbGFzc2VuLiBIdmVyIHBvc3Qgc2thbCBiZXN0w6UgYWYgZXQga2xhc3NlbmF2biBvZyBldCBhcnJheSBhZiB0aWxnw6ZuZ2VsaWdlIGZlbHRlciBmb3IgZGVuIHRpbHN2YXJlbmRlIGtsYXNzZS4gRHluYW1pc2tlIGZlbHRpbmRnYW5nZSBza2FsIG92ZXJob2xkZSBza2VtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb25maWd1cmF0aW9uc2VsZW1lbnRhdHRyaWJ1dHRlbiBmb3Igc29ydGVyaW5nIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGtvbmZpZ3VyYXRpb25zZWxlbWVudGF0dHJpYnV0dGVuIGZvciBzb3J0ZXJpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGtvbmZpZ3VyYXRpb25zZWxlbWVudGF0dHJpYnV0dGVuIGZvciBzb3J0ZXJpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXQgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGRlbm5lIGhhbmRsaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRyw6Zra2Vmw7hsZ2VuIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIHPDuGdlcmVzdWx0YXRldCBmb3IgZGVubmUgaGFuZGxpbmcuIE9wOiDDpmxkc3RlIMO4dmVyc3QuIE5lZDogbnllc3RlIMO4dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUga29sb25uZXIsIGRlciBzb20gc3RhbmRhcmQgdmlzZXMgZm9yIENJXCdlciBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciwgYWZow6ZuZ2lndCBhZiBDSS1rbGFzc2VuLiBIdmVyIHBvc3Qgc2thbCBiZXN0w6UgYWYgZXQga2xhc3NlbmF2biBvZyBldCBhcnJheSBhZiB0aWxnw6ZuZ2VsaWdlIGZlbHRlciBmb3IgZGVuIHRpbHN2YXJlbmRlIGtsYXNzZS4gRHluYW1pc2tlIGZlbHRpbmRnYW5nZSBza2FsIG92ZXJob2xkZSBza2VtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZXJlciBkZW4gc3RhbmRhcmRyZWxhdGlvbnNkeWJkZSwgZGVyIHNrYWwgdmlzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZW4gdmlzdGUgc3RhbmRhcmRhdHRyaWJ1dCBmb3Igc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgcMOlIHNrw6ZybWVuIHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZW4gc3RhbmRhcmQgdmlzdGUgc8O4Z2VhdHRyaWJ1dCBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgcMOlIHNrw6ZybWVuIHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4gRWtzZW1wZWw6ICJLZXkiIHNrYWwgaGF2ZSBuYXZuZXQgcMOlIGRldCBkeW5hbWlza2UgZmVsdCwgaSBkZXR0ZSB0aWxmw6ZsZGUgXCdYXCcsICJDb250ZW50IiBza2FsIGhhdmUgdsOmcmRpZW4gYWYgZGV0IGR5bmFtaXNrZSBmZWx0IGFmaMOmbmdpZ3QgYWYgZGVuIGR5bmFtaXNrZSBmZWx0dHlwZSwgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBvZyBlbGxlciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmR1bmRlcm9iamVrdGV0IGkga2xhc3NlbiBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgdGlsZ8OmbmdlbGlnZSBrb2xvbm5lciBtZWQgQ0lcJ2VyIGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgYmVzdMOlIGFmIGV0IGtsYXNzZW5hdm4gb2cgZXQgYXJyYXkgYWYgdGlsZ8OmbmdlbGlnZSBmZWx0ZXIgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2UuIER5bmFtaXNrZSBmZWx0aW5kZ2FuZ2Ugc2thbCBvdmVyaG9sZGUgc2tlbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaMO4amRlbiBmb3IgUmljaCBUZXh0IEVkaXRvci1rb21wb25lbnRlbiBmb3IgZGVubmUgc2vDpnJtLiBJbmR0YXN0IHRhbCAocGl4ZWxzKSBlbGxlciBwcm9jZW50dsOmcmRpIChyZWxhdGl2KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGFudGFsbGV0IGFmIHLDpmtrZXIgZm9yIENJLWRlZmluaXRpb25zZWRpdG9yZW4gaSBhZG1pbmlzdHJhdGlvbnNncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcsOma2tlZsO4bGdlbiBhZiBow6ZuZGVsc2VzdGlsc3RhbmRlIGZyYSBow7hqIChmLmVrcy4gY3JpY2l0YWwpIHRpbCBsYXYgKGYuZWtzLiBmdW5rdGlvbmVsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgcmVsZXZhbnRlIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSwgaHZvciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXMgZm9yIGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hnZWdyw6Zuc2VuIGZvciBza8Omcm1iaWxsZWRldCBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hnZWdyw6Zuc2VuIGZvciBza8Omcm1iaWxsZWRldCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hnZWdyw6Zuc2VuIGZvciBDdXN0b21lcklUU01Db25maWdJdGVtLXNrw6ZybWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hnZWdyw6Zuc2VuIGZvciBza8Omcm1iaWxsZWRldCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW0gKElEPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgdmlzdGUga29sb25uZXIgYWYgQ0lcJ2VyIGkgZGVuIGtvbXBsZWtzZSB2aXNuaW5nIGFmIGxpbmt0YWJlbGxlbiwgYWZow6ZuZ2lndCBhZiBDSS1rbGFzc2VuLiBIdmVyIHBvc3Qgc2thbCBpbmRsZWRlcyBtZWQga2xhc3NlbnMgbmF2biBvZyBkb2JiZWx0IGtvbG9uIChmLmVrcy4gQ29tcHV0ZXI6OikuIERlciBlciBub2dsZSBmw6UgQ0ktYXR0cmlidXR0ZXIsIHNvbSBlciBmw6ZsbGVzIGZvciBhbGxlIENJXCdlciAoZWtzZW1wZWwgZm9yIGtsYXNzZW4gQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEZvciBhdCB2aXNlIGluZGl2aWR1ZWxsZSBDSS1hdHRyaWJ1dHRlciBzb20gZGVmaW5lcmV0IGkgQ0ktZGVmaW5pdGlvbmVuIHNrYWwgZsO4bGdlbmRlIHNrZW1hIGJydWdlcyAoZWtzZW1wZWwgZm9yIGtsYXNzZW4gQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSHZpcyBkZXIgaWtrZSBlciBub2dlbiBwb3N0IGZvciBlbiBDSS1rbGFzc2UsIHZpc2VzIHN0YW5kYXJka29sb25uZXJuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZSBlbGVtZW50ZXIgZGVyIGVyIHRpbGfDpm5nZWxpZ2UgZm9yIFwnSGFuZGxpbmdcJyBww6UgdHJlZGplIG5pdmVhdSBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2UgZWxlbWVudGVyIGRlciBlciB0aWxnw6ZuZ2VsaWdlIHDDpSBmw7hyc3RlIG5pdmVhdSBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgaHZpbGtlIGVsZW1lbnRlciBkZXIgZXIgdGlsZ8OmbmdlbGlnZSBww6UgYW5kZXQgbml2ZWF1IGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2VuIHR5cGUgbGluayAobmF2bmdpdmV0IGZyYSB0aWNrZXQtcGVyc3Bla3RpdmV0KSBkZXIga2FuIHDDpXZpcmtlIHN0YXR1cyBmb3IgZXQgbGlua2V0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgaHZpbGtlbiB0eXBlIHRpY2tldCBkZXIga2FuIHDDpXZpcmtlIHN0YXR1cyBmb3IgZXQgbGlua2V0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ09wZGF0ZXJpbmcgYWYgZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnU2xldCBrb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdGYXJ2ZSBww6UgaW1wbGVtZW50ZXJpbmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWtlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0jDpm5kZWxzZXNtb2R1bCBmb3IgZHluYW1pc2tlIGZlbHRlciwgZGVyIG1hcmtlcmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGRlZmluaXRpb25lciBzb20gdXN5bmtyb25pc2VyZWRlLCBodmlzIGRlIGluZGVob2xkZXIgZHluYW1pc2tlIGZlbHRlciwgZGVyIMOmbmRyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdGVyLCBkZXIgdmlzZXMgaSBkZW4gZWtzdHJhIElUU00tZmVsdHNrw6ZybSBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHRlciwgZGVyIHZpc2VzIGkgb3ZlcnNpZ3Rzc2vDpnJtZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHRlciwgZGVyIHZpc2VzIGkgc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmVyZXIgZnVua3Rpb25lbiB0aWwgbWFzc2VoYW5kbGluZyBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlciwgc8OlIGFnZW50ZW5zIGZyb250ZW5kIGthbiBhcmJlamRlIHDDpSBtZXJlIGVuZCDDqXQga29uZmlndXJhdGlvbnNlbGVtZW50IGFkIGdhbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSByZWxldmFudGUgaW1wbGVtZW50ZXJpbmdzdGlsc3RhbmRlLCBodm9yIHRpbGtueXR0ZWRlIHRpY2tldHMga2FuIHDDpXZpcmtlIHN0YXR1cyBmb3IgZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJlci9kZWFrdGl2ZXJlciBmdW5rdGlvbmVuIHRpbCBhdCBrb250cm9sbGVyZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGZvciB1bmlra2UgbmF2bmUuIEbDuHIgZHUgYWt0aXZlcmVyIGRlbm5lIG11bGlnaGVkLCBiw7hyIGR1IHRqZWtrZSBkaXQgc3lzdGVtIGZvciBhbGxlcmVkZSBla3Npc3RlcmVuZGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgbWVkIGR1cGxpa2F0bmF2bmUuIERldCBrYW4gZHUgZ8O4cmUgbWVkIGtvbnNvbGtvbW1hbmRvZW4gQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdIw6ZuZGVsc2VzbW9kdWwgdGlsIGF0IHPDpnR0ZSBjb25maWdpdGVtLXN0YXR1cyBww6UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmVsdGVyIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGluZGVrcywgZGVyIGJydWdlcyB0aWwgZnVsZHRla3N0c8O4Z25pbmcuIEZlbHRlciBnZW1tZXMgb2dzw6UsIG1lbiBlciBpa2tlIG9ibGlnYXRvcmlza2UgZm9yIGRlbiBvdmVyb3JkbmVkZSBmdW5rdGlvbmFsaXRldC4gSW5rbHVkZXJpbmcgYWYgdmVkaMOmZnRlZGUgZmlsZXIga2FuIGRlYWt0aXZlcmVzIHZlZCBhdCBzw6Z0dGUgcG9zdGVuIHRpbCAwIGVsbGVyIHNsZXR0ZSBkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGZWx0ZXIgZ2VtdCBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBpbmRla3MsIHNvbSBicnVnZXMgdGlsIGFuZHJlIHRpbmcgZW5kIGZ1bGR0ZWtzdHPDuGduaW5nLiBGb3IgYXQgZsOlIGZ1bGQgZnVua3Rpb25hbGl0ZXQgZXIgYWxsZSBmZWx0ZXIgb2JsaWdhdG9yaXNrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdGb3IgaHZlciB3ZWJ0amVuZXN0ZSAobsO4Z2xlKSBrYW4gZGVyIGRlZmluZXJlcyBldCBhcnJheSBhZiBrbGFzc2VyICh2w6ZyZGkpLCBzb20gaW1wb3J0ZW4gZXIgYmVncsOmbnNldCB0aWwuIEZvciBhbGxlIHZhbGd0ZSBrbGFzc2VyIGVsbGVyIGFsbGUgZWtzaXN0ZXJlbmRlIGtsYXNzZXIgc2thbCBkZSBpZGVudGlmaWNlcmVuZGUgYXR0cmlidXR0ZXIgdsOmbGdlcyBpIGludm9rZXIta29uZmlndXJhdGlvbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYWYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCB0aWwgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmxhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhZiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIHRpbCBDb25maWdJdGVtRmV0Y2gtaW52b2thdG9ybGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhZiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIHRpbCBDb25maWdJdGVtRmV0Y2gtaW52b2thdG9ybGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJzaWd0IG92ZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdIw6ZuZGVsc2Vzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyZXIgaW1wbGVtZW50ZXJpbmdzdGlsc3RhbmRlIGkgc8O4Z25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyZXIgaMOmbmRlbHNlc3RpbHN0YW5kZSBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudC1zw7hnbmluZ2VuIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltYWx0IGFudGFsIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLCBkZXIgc2thbCB2aXNlcyBpIHJlc3VsdGF0ZXQgYWYgZGVubmUgaGFuZGxpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgdGlsIGF0IGtvbnRyb2xsZXJlIGRlbiBncnVwcGUsIGRlciBlciBhbnN2YXJsaWcgZm9yIGVuIGtsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB0aWwgYXQga29udHJvbGxlcmUgZGVuIGdydXBwZSwgZGVyIGVyIGFuc3ZhcmxpZyBmb3IgZXQga29uZmlndXJhdGlvbnNlbGVtZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHRpbCBhdCBnZW5lcmVyZSBzdGF0aXN0aWsgb3ZlciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hdm4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lcm1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLCBkZXIgc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGFmIGV0IHPDuGdlcmVzdWx0YXQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLCBkZXIgc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGFmIGV0IHPDuGdlcmVzdWx0YXQgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0ZXIsIGRlciBza2FsIHPDuGdlcyBlZnRlciwgaHZvciBtYW5nZSBwb3N0ZXIgb2cgaHZpbGtlIGF0dHJpYnV0dGVyLCBkZXIgc2thbCB2aXNlcy4gQ29uZmlnSXRlbS1hdHRyaWJ1dHRlciBza2FsIGVrc3BsaWNpdCBnZW1tZXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJibGlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBrYXRlZ29yaWVybmUgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIGtvbG9ubmVmaWx0cmVuZSBpIG92ZXJzaWd0ZW4gb3ZlciBzbcOlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLiBCZW3DpnJrOiBIdmlzIFwnQWt0aXZcJyBzw6Z0dGVzIHRpbCAwLCBmb3JoaW5kcmVyIGRldCBrdW4gYWdlbnRlciBpIGF0IHJlZGlnZXJlIGluZHN0aWxsaW5nZXJuZSBmb3IgZGVubmUgZ3J1cHBlIGkgZGVyZXMgcGVyc29ubGlnZSBwcsOmZmVyZW5jZXIsIG1lbiBkZXQgZ2l2ZXIgc3RhZGlnIGFkbWluaXN0cmF0b3JlciBtdWxpZ2hlZCBmb3IgYXQgcmVkaWdlcmUgaW5kc3RpbGxpbmdlcm5lIHDDpSBlbiBhbmRlbiBicnVnZXJzIHZlZ25lLiBCcnVnIFwnUHJlZmVyZW5jZUdyb3VwXCcgdGlsIGF0IHN0eXJlLCBpIGh2aWxrZXQgb21yw6VkZSBkaXNzZSBpbmRzdGlsbGluZ2VyIHNrYWwgdmlzZXMgaSBicnVnZXJncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIHVkcnVsbmluZ3N0aWxzdGFuZGVuZXMgZmFydmUgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIHVkcnVsbmluZ3N0aWxzdGFuZGUgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBla3NlbXBsZXJuZSBww6UgdGlsbGFkZWxzZXNncnVwcGVyIGZvciBkZSBnZW5lcmVsbGUga2F0YWxvZ2F0dHJpYnV0dGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSB0aWwgbmF2bmVtb2R1bGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2VyIGkgcHLDpmZlcmVuY2V2aXNuaW5nZW4gYWYgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBudW1tZXJtb2R1bGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2VyIGkgcHLDpmZlcmVuY2V2aXNuaW5nZW4gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3Igc2lkZXJuZSAoaHZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlcm5lIHZpc2VzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciB2ZXJzaW9uc3N0cmVuZ21vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGkgcHLDpmZlcmVuY2V2aXNuaW5nZW4gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdmVyc2lvbnN1ZGzDuHNlcmVuIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2VyIGkgYWdlbnRncsOmbnNlZmxhZGVucyBwcsOmZmVyZW5jZXZpc25pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVWRmw7hyZXIgZGVuIGtvbmZpZ3VyZXJlZGUgaGFuZGxpbmcgZm9yIGh2ZXIgYmVnaXZlbmhlZCAoc29tIGVuIEludm9rZXIpIGZvciBodmVyIGtvbmZpZ3VyZXJldCB3ZWJ0amVuZXN0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1RpbGxhZGVsc2VzZ3J1cHBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyB2ZWRow6ZmdG5pbmdzaGFuZGxpbmcgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2UgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRza8Omcm1lbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBtZWQgdHLDpnZpc25pbmcgYWYgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHpvb21za8Omcm1lbiBmb3IgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgVGlsZsO4aiBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IG1lZCBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYnVsayBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IFJlZGlnZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBtZWQgaGlzdG9yaWsgZm9yIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgVWRza3JpdiBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ07DuGR2ZW5kaWdlIHJldHRpZ2hlZGVyIGZvciBhdCBzbGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O4ZyBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnSW5kc3RpbCBhdXRvbWF0aXNrIGjDpm5kZWxzZXNzdGF0dXMgZm9yIGVuIENJLCBuw6VyIGVuIHRpY2tldCBlciBsaW5rZXQgdGlsIGVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luZHN0aWxsZXIgaW1wbGVtZW50ZXJpbmdzdGlsc3RhbmRlbiBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBidWxrc2vDpnJtIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmRzdGlsbGVyIGjDpm5kZWxzZXN0aWxzdGFuZGVuIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGJ1bGtza8Omcm0gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiwgZGVyIGfDuHIgZGV0IG11bGlndCBhdCBmb3JiaW5kZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgbWVkIGV0IGFuZGV0IG9iamVrdCBpIHpvb212aXNuaW5nZW4gYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgZsOlIGFkZ2FuZyB0aWwgaGlzdG9yaWtrZW4gZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgZsOlIGFkZ2FuZyB0aWwgaGlzdG9yaWtrZW4gZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbnMgem9vbXZpc25pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgc2xldHRlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYWYgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgdmlzZSBsaW5rcyB0aWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgc29tIGVuIHRyw6Z2aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGR1cGxpa2VyZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGR1cGxpa2VyZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSB6b29tdmlzbmluZ2VuIGFmIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIHJlZGlnZXJpbmcgYWYgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVucyB6b29tdmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGfDpSB0aWxiYWdlIGkgem9vbXZpc25pbmdlbiBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCB1ZHNrcml2ZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHpvb212aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IHpvb21lIGluZCBww6UgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGhpc3RvcmlrIChpIG9tdmVuZHQgcsOma2tlZsO4bGdlKSBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnU3RhbmRhcmRrYXRlZ29yaWVuLCBzb20gdmlzZXMsIGh2aXMgaW5nZW4gZXIgdmFsZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yZW4gZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCwgZi5la3MuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBTdGFuZGFyZCBlciBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdVZGzDuHNlciBhdXRvbWF0aXNrIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmctdWR0cnlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIHVkbMO4c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdPbSB1ZGbDuHJlbHNlbiBhZiBDb25maWdJdGVtQUNMIGthbiB1bmRnw6VzIHZlZCBhdCB0amVra2UgY2FjaGVsYWdyZWRlIGZlbHRhZmjDpm5naWdoZWRlci4gRGV0dGUga2FuIGZvcmJlZHJlIGluZGzDpnNuaW5nc3RpZGVuIGZvciBmb3JtdWxhcmVyLCBtZW4gc2thbCBkZWFrdGl2ZXJlcywgaHZpcyBBQ0xNb2R1bGVzIHNrYWwgYnJ1Z2VzIHRpbCBJVFNNQ29uZmlnSXRlbS0gb2cgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0h2aWxrZSBnZW5lcmVsbGUgb3BseXNuaW5nZXIgdmlzZXMgaSBvdmVyc2tyaWZ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdEZXRhbGplciBvbSB2ZXJzaW9uIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10b21tZXIgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgdG9tbWVyIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9tbWVyICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgdG9tbWVyIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdG9tbWVyICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbW1lciAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbW1lciAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogMTQ2LDY4IGNtICg1Nyw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0b21tZXIgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHRvbW1lciAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgdG9tbWVyICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHRvbW1lciAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0b21tZXIgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCB0b21tZXIgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogMTcsNzggY20gKDcgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAzNSw1NiBjbSAoMTQgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSZWduc2thYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ1RpbGRlbGluZyBhZiBhZHJlc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBhcHBhcmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdCYXR0ZXJpa2FwYWNpdGV0IChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQmF0dGVyaXR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCeWduaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXMtZ3LDpm5zZWZsYWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYWNpdGV0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhY2l0ZXQgcHIuIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0bnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS29ydGzDpnNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLb3J0dHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50LWNlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRzb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLdW5kZWthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1VyZnJla3ZlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1VyZXRzIGhhc3RpZ2hlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kZXNpZ25lcmluZ3NjZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuY2V0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsZW50YWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IGRpc3RyaWJ1dMO4cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0jDpW5kdGVyaW5nIGFmIGNvbnRhaW5lcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdLb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnS29udHJha3R0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnS29udHJha3RwZXJpb2RlIGZyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdLb250cmFrdHBlcmlvZGUgaW5kdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1Ryw6VkbMO4cyB0ZWxlZm9uIChERUNULXRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ09ta29zdG5pbmdzZW5oZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdBbnRhbCBsaWNlbnNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnT3ByZXR0ZWxzZXNkYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdCcnVnZXJkZWZpbmVyZXQgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1zZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdG8gZm9yIGZha3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdG8gZm9yIGJlc3RpbGxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdG8gZm9yIGdhcmFudGlzdGlsbGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0byBmb3IgdWRnaXZlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVudHNpZ25lcmluZ3NjZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJLXN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1tYWlsLWNlcnRpZmlrYXRlciAoUy9NSU1FLWNlcnRpZmlrYXRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQW5zw6Z0dGVsc2Vza29udHJha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdTbHV0IElQLWFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdTbHV0IG1lZCBzdMO4dHRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVWRsw7hic2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Vrc3Rlcm4gaGFyZGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU3ZpbmdoanVsIHRpbCBlbmVyZ2lsYWdyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnR2VuZXJlbCBpbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlLW1vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0hhcmR3YXJlLXbDpmd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdGV0cy0gb2cgYWRnYW5nc3N0eXJpbmcgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdGVyaW5nc29ta29zdG5pbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0Zha3R1cmFudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXR1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qtc2vDpnJtIChmbHlkZW5kZSBrcnlzdGFsc2vDpnJtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELXNrw6ZybSAobHlzZW1pdHRlcmVuZGUgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0Zhc3RuZXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWRkZWdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWcgMTogRnlzaXNrIGxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYWcgMjogRGF0YWxpbmstbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWcgMzogTmV0dsOmcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhZyAzOiBOZXR2w6Zya3NsYWcgKHN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYWcgNDogVHJhbnNwb3J0bGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYWcgNTogU2Vzc2lvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFnIDY6IFByw6ZzZW50YXRpb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFnIDc6IEFwcGxpa2F0aW9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdMZWplYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5zYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnNuw7hnbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5zdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zcGVyaW9kZSBmcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbnNwZXJpb2RlIGluZHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1qZXJuZm9zZmF0IChMaUZlUE80KS1iYXR0ZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpdW0taW9uLWJhdHRlcmkgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMw6VuZWFmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnQmVsaWdnZW5kZSBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0zDpm5nZGVncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdWNlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3NpbWFsIGJlbGFzdG5pbmdza2FwYWNpdGV0IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdIdWtvbW1lbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnSHVrb21tZWxzZXN0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsL2luZGxlanJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWxiZXNrcml2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdTa8Omcm1lbnMgb3Bsw7hzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdTa8Omcm1zdMO4cnJlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOZXR2w6Zyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR2w6Zya3NpbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBuZXR2w6Zyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0dsOmcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWNhZG1pdW0tYmF0dGVyaSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0YWxoeWRyaWQtYmF0dGVyaSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWZ0YWxlIG9tIGhlbW1lbGlnaG9sZGVsc2UgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3Rlc2JvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FudGFsIENQVVwnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQW50YWwgUkFNLW1vZHVsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW50YWwgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1za8Omcm0gKG9yZ2FuaXNrIGx5c2VtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdEcmlmdHNvbWtvc3RuaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdGlsbGluZ3NudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbmRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVWRnYW5nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4tS09ERSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJza2Fic2FmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb250eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnlzaXNrZSBrZXJuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHLDuG1mb3JzeW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdLw7hidCBww6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1N0YXRpdmV0cyBkeWJkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2stZW5oZWRlciAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1bDpnJlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWtvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLWNlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1NhbGdza29udHJha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0ZvcnNlZ2xldCBibHlzeXJlYmF0dGVyaSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlcmllbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlci1zb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlLXRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdTdGlra29udGFrdHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0jDuGp0dGFsZXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUC1hZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdPcGJldmFyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnT3BiZXZhcmluZ3NwYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEYXR0ZXJzZWxza2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTYW1tZW5mYXRuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVHluZCBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1Ryw6VkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RvcmRlbmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0dyYWZpa2tvcnRldHMgc2FtbGVkZSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSBpIGFsdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdCZXLDuHJpbmdzZsO4bHNvbSBza8Omcm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUw6Vybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLWhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/de_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxnZW1laW5lIEJldHJpZWJzZGF0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0VpbnN0ZWxsdW5nZW4gZsO8ciBlaW5nZWhlbmRlIEFuZm9yZGVydW5nc2RhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnRWluc3RlbGx1bmdlbiBmw7xyIGF1c2dlaGVuZGUgQW50d29ydGRhdGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnQ29uZmlnSXRlbS1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnS2xhc3Nlbi1EZWZpbml0aW9uIMOkbmRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ1JvbGxlbmRlZmluaXRpb24gw6RuZGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1LbGFzc2VuYsO8bmRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hpZXIga8O2bm5lbiBTaWUgUmVhZHkySW1wb3J0LUtsYXNzZW5iw7xuZGVsIGltcG9ydGllcmVuLCBkaWUgdW5zZXJlIGdlYnLDpHVjaGxpY2hzdGVuIEtvbmZpZ3VyYXRpb25zcHVua3RlIHplaWdlbi4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGVpbmlnZSB6dXPDpHR6bGljaGUgS29uZmlndXJhdGlvbmVuIGVyZm9yZGVybGljaCBzZWluIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ1ZvcmhhbmRlbmUgRW50aXTDpHRlbiBha3R1YWxpc2llcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQtS2xhc3NlbmLDvG5kZWwgaW1wb3J0aWVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWdJdGVtLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0tUm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIGbDvHIgS2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdXw6RobGVuIFNpZSBlaW5lIEtsYXNzZSBhdXMgZGVyIExpc3RlIGF1cyB1bSBlaW4gbmV1ZXMgQ29uZmlnIEl0ZW0genUgZXJzdGVsbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBTYW1tZWxha3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdadSBlaW5lbSBhbmRlcmVuIHZlcmtuw7xwZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVbmfDvGx0aWdlIENvbmZpZ3VyYXRpb24gSXRlbSBOdW1tZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0RpZSBOdW1tZXIgZGVzIHp1IHZlcmtuw7xwZmVuZGVuIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnV29sbGVuIFNpZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtIHdpcmtsaWNoIGzDtnNjaGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgTmFtZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWd1cmF0aW9uIEl0ZW1zIG1pdCBkZW4gZm9sZ2VuZGVuIE51bW1lcm4gdmVyd2VuZGV0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb25zbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzaW9uc251bW1lciBkaWVzZXMgS29uZmlndXJhdGlvbnNlbGVtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0RpZSBWZXJzaW9uc251bW1lciB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWdJdGVtcyBtaXQgZGVuIGZvbGdlbmRlbiBOdW1tZXJuIHZlcndlbmRldDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWUgdm9uIENvbmZpZ3VyYXRpb24gSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnw4RuZGVydW5nc3ZlcmxhdWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0Vyc3RlbGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ0RldGFpbGFuc2ljaHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyBwcm8gU2VpdGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIENvbmZpZyBJdGVtLURhdGVuIGdlZnVuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0NvbmZpZyBJdGVtIGF1c3fDpGhsZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTdWNoZSBhdXNmw7xocmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0F1Y2ggaW4gZnLDvGhlcmVuIFZlcnNpb25lbiBzdWNoZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZsO8ciBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1RpZWZlIEViZW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnVmVyZ3LDtsOfZXJuL1ZlcmtsZWluZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heGltYWxlIFZlcmtuw7xwZnVuZ3NlYmVuZSBmw7xyIENvbmZpZ0l0ZW0gZXJyZWljaHQhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1ZWxsZXIgVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVlbGxlciBWb3JmYWxsc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0IHZvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0locmUgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZyBJdGVtLVN1Y2hlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdPYmpla3QtVHlwJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmVsZCBuYWNoIE9iamVrdHR5cCBmaWx0ZXJuJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBLbGFzc2VuIHdlcmRlIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBSb2xsZW4gd2VyZGVuIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnQmVhY2h0ZW4gU2llLCBkYXNzIGF1Y2ggZW50c3ByZWNoZW5kZSBkeW5hbWlzY2hlIEZlbGRlciB1bmQgR2VuZXJhbENhdGFsb2ctS2xhc3NlbiBlcnN0ZWxsdCB3ZXJkZW4gdW5kIGVzIGtlaW5lIGF1dG9tYXRpc2NoZSBMw7ZzY2h1bmcgZ2lidC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdNw7ZjaHRlbiBTaWUgZm9ydGZhaHJlbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQmVuw7Z0aWdlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzdCBrZWluIGfDvGx0aWdlcyBZQU1MLUhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5xiZXJzaWNodDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIElEIGbDvHIgZGFzIENvbmZpZ3VyYXRpb24gSXRlbSBhbmdlZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnU2llIGJlbsO2dGlnZW4gd2VuaWdzdGVucyBlaW4gYXVzZ2V3w6RobHRlcyBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnU2llIGhhYmVuIGtlaW5lIFNjaHJlaWItQmVyZWNodGlndW5nZW4gZsO8ciBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2VpbmUgRGVmaW5pdGlvbiBmw7xyIEtsYXNzZSAlcyBkZWZpbmllcnQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gIiVzIiBpbiBEYXRlbmJhbmsgbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRXMgd2FyIG5pY2h0IG3DtmdsaWNoLCBkaWUgQ29uZmlndXJhdGlvbiBJdGVtLUlEICVzIHp1IGzDtnNjaGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnS2VpbmUgVmVyc2lvbiBmw7xyIENvbmZpZ3VyYXRpb24gSXRlbS1JRCAlcyBnZWZ1bmRlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlELCBEdXBsaWthdHMtSUQgb2RlciBLbGFzc2VuLUlEIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0tlaW4gWnVncmlmZiBnZXfDpGhydCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FubiBIaXN0b3JpZSBuaWNodCBhbnplaWdlbiwga2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlEIMO8YmVybWl0dGVsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW5uIEhpc3RvcmllIG5pY2h0IGFuemVpZ2VuLCBrZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV1ZXMgQ29uZmlndXJhdGlvbiBJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05ldWUgVmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMgYWt0dWFsaXNpZXJ0IChuZXU9JXMsIGFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVm9yZmFsbHN0YXR1cyBha3R1YWxpc2llcnQgKG5ldT0lcywgYWx0PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBnZWzDtnNjaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgaGluenVnZWbDvGd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgZ2Vsw7ZzY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtLURlZmluaXRpb24gYWt0dWFsaXNpZXJ0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIGFrdHVhbGlzaWVydCAobmV1PSVzLCBhbHQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXQgJXMgYWt0dWFsaXNpZXJ0IHZvbiAiJXMiIG5hY2ggIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIGdlbMO2c2NodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdLZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tSUQgb2RlciBWZXJzaW9ucy1JRCBhbmdlZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBrYW5uIG5pY2h0IGFuZ2V6ZWlndCB3ZXJkZW4sIGtlaW5lIFp1Z3JpZmZzcmVjaHRlIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1JRCAlcyBpbiBEYXRlbmJhbmsgbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdnZWRydWNrdCB2b24gJXMgYW0gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW56JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVW5nw7xsdGlnZSBLbGFzc2VuLUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIEtsYXNzZW4tSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0tlaW5lIFp1Z3JpZmZzcmVjaHRlIGbDvHIgZGllc2UgS2xhc3NlIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnS2VpbiBFcmdlYm5pcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbS1TdWNoZXJnZWJuaXNzZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FubiBkYXMgRWxlbWVudCBuaWNodCBhbnplaWdlbiwga2VpbmUgWnVncmlmZnNyZWNodGUgZsO8ciBkYXMgQ29uZmlnSXRlbSB2ZXJnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnIEl0ZW0gbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0tlaW5lIFZlcnNpb25lbiBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnV2FybnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ1ZvcmZhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlciBWZXJ3ZW5kdW5nc3N0YXR1cyBkaWVzZXMgQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVyIFZvcmZhbGxzdGF0dXMgZGllc2VzIENvbmZpZyBJdGVtcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0tlaW5lIEJlcmVjaHRpZ3VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdW5nw7xsdGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU3VjaHBhcmFtZXRlciB1bmfDvGx0aWchJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnQW5nZXplaWd0ZSBDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0FrdHVlbGxlciBWb3JmYWxsc3N0YXR1cy1UeXAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnWndpc2NoZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZW5laW5zY2hyw6Rua3VuZ2VuIGbDvHIgZGFzIEtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdXw6RobGVuIFNpZSBlaW5lIG9kZXIgbWVocmVyZSBLbGFzc2VuIGF1cywgdW0gZGllIGF1c3fDpGhsYmFyZW4gQ29uZmlnIEl0ZW1zIGVpbnp1c2NocsOkbmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMtRWluc2NocsOkbmt1bmdlbiBmw7xyIGRhcyBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0VpbmVuIG9kZXIgbWVocmVyZSBWZXJ3ZW5kdW5nc3N0YXR1cyBhdXN3w6RobGVuIHVtIGF1c3fDpGhsYmFyZSBDb25maWcgSXRlbXMgZWluenVzY2hyw6Rua2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2NoIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGlzY2ggKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmstUmVmZXJlbnppZXJ1bmdzYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0FuZ2FiZSwgb2Igc2ljaCBkaWVzZXIgTGluayBhdWYgZGFzIENvbmZpZ0l0ZW0gb2RlciBkaWUgc3RhdGlzY2hlIFZlcnNpb24gZGVzIHJlZmVyZW56aWVyZW5kZW4gT2JqZWt0cyBiZXppZWh0LiBEaWUgQmVyZWNobnVuZyBkZXMgYWt0dWVsbGVuIFZvcmZhbGxzc3RhdHVzIHdpcmQgbnVyIGJlaSBkeW5hbWlzY2hlbiBMaW5rcyBkdXJjaGdlZsO8aHJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1fDpGhsZW4gU2llIGRhcyBBdHRyaWJ1dCBhdXMsIG5hY2ggZGVtIGRpZSBLb25maWd1cmF0aW9uc2VsZW1lbnRlIGR1cmNoc3VjaHQgd2VyZGVuIHNvbGxlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNpc3N0cnVrdHVyIGlzdCBuaWNodCBnw7xsdGlnLiBCaXR0ZSBnZWJlbiBTaWUgZWluZW4gSGFzaCBtaXQgRGF0ZW4gaW0gWUFNTC1Gb3JtYXQgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRGVyIEJlZ2lubiBkZXIgWUFNTC1aZWljaGVua2V0dGUgbWl0IFwnLS0tXCcgaXN0IGVyZm9yZGVybGljaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnRGllIFRhYmVsbGUgY29uZmlnaXRlbV9saW5rIGtvbm50ZSBuaWNodCBnZWzDtnNjaHQgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnRXMgd3VyZGVuIGtlaW5lIHJlbGV2YW50ZW4gZHluYW1pc2NoZW4gRmVsZGVyIGdlZnVuZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnS29ubnRlIG5pY2h0IGluIGRpZSBUYWJlbGxlIGNvbmZpZ2l0ZW1fbGluayBlaW5nZWbDvGd0IHdlcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnMCBaZWlsZW4gaW4gZGllIFRhYmVsbGUgY29uZmlnaXRlbV9saW5rIGVpbmdlZsO8Z3QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW1hbGUgQW56YWhsIGVpbmVzIEVsZW1lbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9FeHBvcnQgdm9uIEFuaMOkbmdlbiAoYWxzIGxldHp0ZSBFaW50csOkZ2UgcHJvIFplaWxlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb24gU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0ZlaGxlciBiZWltIFN5bmNocm9uaXNpZXJlbiBkZXIgRGVmaW5pdGlvbmVuLiBCaXR0ZSBwcsO8ZmVuIFNpZSBkYXMgUHJvdG9rb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1NpZSBoYWJlbiBJVFNNQ29uZmlnSXRlbS1EZWZpbml0aW9uZW4sIGRpZSBuaWNodCBzeW5jaHJvbmlzaWVydCBzaW5kLiBCaXR0ZSBzdGVsbGVuIFNpZSBJaHJlIGR5bmFtaXNjaGVuIElUU01Db25maWdJdGVtLUZlbGTDpG5kZXJ1bmdlbiBiZXJlaXQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdBYmdlbGF1ZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSW4gV2FydHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90YmV0cmllYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnR2VwbGFudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdJbiBSZXBhcmF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0F1w59lciBEaWVuc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnVW50ZXIgUmV2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FTJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfDnGJlcmJsaWNrIHVuZCBCZXN0w6R0aWd1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0IHZvbiBLbGFzc2VuL1JvbGxlbiB1bmQgaWhyZW4genVnZWjDtnJpZ2VuIEZlbGRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdCZWltIEtsYXNzZW5pbXBvcnQgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW4uJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBWZXJzdGVja3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIEFiZ2ViaWxkZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0VybcO2Z2xpY2h0IGVyd2VpdGVydGUgU3VjaGJlZGluZ3VuZ2VuIGJlaSBkZXIgU3VjaGUgbmFjaCBLb25maWd1cmF0aW9uc29iamVrdGVuIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4gTWl0IGRpZXNlciBGdW5rdGlvbiBrw7ZubmVuIFNpZSB6LiBCLiBkZW4gTmFtZW4gZGVzIEtvbmZpZ3VyYXRpb25zZWludHJhZ3MgbWl0IHNvbGNoZW4gQmVkaW5ndW5nZW4gd2llICIoKmtleTEqJiYqa2V5MiopIiBvZGVyICIoKmtleTEqfHwqa2V5MiopIiBzdWNoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0VybcO2Z2xpY2h0IGVyd2VpdGVydGUgU3VjaGJlZGluZ3VuZ2VuIGJlaSBkZXIgU3VjaGUgbmFjaCBLb25maWd1cmF0aW9uc2VpbnRyw6RnZW4gaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUuIE1pdCBkaWVzZXIgRnVua3Rpb24ga8O2bm5lbiBTaWUgei4gQi4gZGVuIE5hbWVuIGVpbmVzIEtvbmZpZ3VyYXRpb25zZWludHJhZ3MgbWl0IEJlZGluZ3VuZ2VuIHdpZSAiKCprZXkxKiYmKmtleTIqKSIgb2RlciAiKCprZXkxKnx8KmtleTIqKSIgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdadWdld2llc2VuZSBDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnWnVtIEt1bmRlbiB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ1p1bSBLdW5kZW5iZW51dHplciB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1FaW5zdGVsbHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcsO8ZnQgTmFtZW4gYXVmIEVpbmRldXRpZ2tlaXQgaW5uZXJoYWxiIGRlciBzZWxiZW4gQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBvZGVyIGdsb2JhbCwgZC5oLiBlcyB3ZXJkZW4gYWxsZSBDb25maWd1cmF0aW9uIEl0ZW1zIGplZ2xpY2hlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGJlaSBkZXIgUHLDvGZ1bmcgYXVmIGVpbmVuIGVpbmRldXRpZ2VuIE5hbWVuIGJlcsO8Y2tzaWNodGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIEJlbmVubnVuZ3NzY2hlbWEgenUgZXJ6d2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnV8OkaGxlbiBTaWUgZWluIE1vZHVsLCB1bSBlaW4gTnVtbWVybnNjaGVtYSB6dSBlcnp3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIFZlcnNpb25za2V0dGVuc2NoZW1hIHp1IGVyendpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdXw6RobGVuIFNpZSBBdHRyaWJ1dGUsIHVtIGRpZSBFcnN0ZWxsdW5nIGVpbmVyIG5ldWVuIFZlcnNpb24gYXVzenVsw7ZzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1fDpGhsZW4gU2llIEthdGVnb3JpZW4gYXVzLCBkaWUgU2llIGRpZXNlciBLb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2UgenVvcmRuZW4gbcO2Y2h0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ1NwYWx0ZW5rb25maWd1cmF0aW9uc2ZpbHRlciBmw7xyIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTcGFsdGVuLCBkaWUgaW4gZGVyIENvbmZpZyBJdGVtIMOcYmVyc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlIGdlZmlsdGVydCB3ZXJkZW4ga8O2bm5lbi4gSGlud2VpczogTnVyIENvbmZpZyBJdGVtIEF0dHJpYnV0ZSB1bmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgc2luZCBlcmxhdWJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gaGluenVmw7xnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBJdGVtLUV2ZW50LU1vZHVsLCBkYXMgZGllIFByb3Rva29sbGllcnVuZyBkZXIgSGlzdG9yaWUgaW0gQWdlbnRlbi1JbnRlcmZhY2UgZXJtw7ZnbGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZy1FbGVtZW50LUVyZWlnbmlzbW9kdWwsIGRhcyBDb25maWctRWxlbWVudGUgYXVmIGlocmUgYWt0dWVsbGUgRGVmaW5pdGlvbiBha3R1YWxpc2llcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLUhpc3RvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gZHJ1Y2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tRGV0YWlsYW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtLVN0cnVrdHVyYW5zaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGVyIGZvbGdlbmRlbiBLbGFzc2VuIHdlcmRlbiBuaWNodCBhdWYgZGVtIEVsYXN0aWNzZWFyY2gtU2VydmVyIGdlc3BlaWNoZXJ0LiBVbSBkaWVzIGF1ZiBiZXN0ZWhlbmRlIENJcyBhbnp1d2VuZGVuLCBtdXNzIGRpZSBDSS1NaWdyYXRpb24gw7xiZXIgZGllIEtvbnNvbGUgYXVzZ2Vmw7xocnQgd2VyZGVuLCBuYWNoZGVtIGRpZXNlIE9wdGlvbiBnZcOkbmRlcnQgd3VyZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG1pdCBkZW4gZm9sZ2VuZGVuIEJlcmVpdHN0ZWxsdW5nc3p1c3TDpG5kZW4gd2VyZGVuIG5pY2h0IGF1ZiBkZW0gRWxhc3RpY3NlYXJjaC1TZXJ2ZXIgZ2VzcGVpY2hlcnQuIFVtIGRpZXMgYXVmIGJlc3RlaGVuZGUgQ0lzIGFuenV3ZW5kZW4sIG11c3MgZGllIENJLU1pZ3JhdGlvbiDDvGJlciBkaWUgS29uc29sZSBhdXNnZWbDvGhydCB3ZXJkZW4sIG5hY2hkZW0gZGllc2UgT3B0aW9uIGdlw6RuZGVydCB3dXJkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLUxpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tTGltaXQgcHJvIFNlaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLVNhbW1lbGFrdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBJdGVtIFN1Y2gtQmFja2VuZCBOYXZpZ2F0aW9uIGRlcyBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnRGllIERlZmluaXRpb25lbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtLUxpbWl0IGVyc3RlbGxlbiB1bmQgdmVyd2FsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0VyemV1Z3QgVGlja2V0cyBmw7xyIENvbmZpZ0l0ZW1zIHp1IGJlc3RpbW10ZW4gWmVpdHB1bmt0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0t1bmRlbiBrw7ZubmVuIGhpc3RvcmlzY2hlIENJLVZlcnNpb25lbiBlaW5zZWhlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS3VuZGVuIGhhYmVuIGRpZSBNw7ZnbGljaGtlaXQsIG1hbnVlbGwgendpc2NoZW4gaGlzdG9yaXNjaGVuIENJLVZlcnNpb25lbiB6dSB3ZWNoc2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGVuLCBkaWUgYXVmIGRlbSBBdHRyaWJ1dCBmw7xyIGRlbiBTdWNoYmlsZHNjaGlybSBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGxlbi4gQmVpc3BpZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRlbiwgZGllIGbDvHIgZGFzIEF0dHJpYnV0IGbDvHIgZGVuIFN1Y2hiaWxkc2NoaXJtIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RlIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLiBCZWlzcGllbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaWVyZW4gU2llIEFjdGlvbnMsIGluIGRlbmVuIGltIFZlcmtuw7xwZnRlLU9iamVrdGUtV2lkZ2V0IGVpbiBFaW5zdGVsbHVuZ2VuLUtub3BmIHZlcmbDvGdiYXIgc2VpbiBzb2xsIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIEJpdHRlIGJlYWNodGVuIFNpZSwgZGFzcyBmw7xyIGRpZXNlIEFjdGlvbnMgZGllIGZvbGdlbmRlbiBKUy0gdW5kIENTUy1EYXRlaWVuIHJlZ2lzdHJpZXJ0IHNlaW4gbcO8c3NlbjogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgdW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBlaW4gVGVtcGxhdGU6OlRvb2xraXQtU2NoZW1hIGbDvHIgVmVyc2lvbnNzdHJpbmdzLiBXaXJkIG51ciB2ZXJ3ZW5kZXQsIHdlbm4gVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGF1ZiBUZW1wbGF0ZVRvb2xraXQgZWluZ2VzdGVsbHQgaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyZW4gU2llIGVpbmUgUmVpaGUgdm9uIEJlZGluZ3VuZ2VuLCB1bnRlciBkZW5lbiBlaW4gS3VuZGUgZWluIEtvbmZpZ3VyYXRpb25zb2JqZWt0IHNlaGVuIGRhcmYuIERpZSBCZWRpbmd1bmdlbiBrw7ZubmVuIG9wdGlvbmFsIGF1ZiBiZXN0aW1tdGUgS3VuZGVuZ3J1cHBlbiBiZXNjaHLDpG5rdCB3ZXJkZW4uIERlciBOYW1lIGlzdCBkYXMgZWluemlnZSBvYmxpZ2F0b3Jpc2NoZSBBdHRyaWJ1dC4gV2VubiBrZWluZSBhbmRlcmVuIE9wdGlvbmVuIGFuZ2VnZWJlbiB3ZXJkZW4sIHNpbmQgYWxsZSBLb25maWd1cmF0aW9uc29iamVrdGUgdW50ZXIgZGllc2VyIEthdGVnb3JpZSBzaWNodGJhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4genVtIEzDtnNjaGVuIHZvbiBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbXMgZHVyY2ggZGFzIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBiZW7DtnRpZ3RlbiBCZXJlY2h0aWd1bmdlbiwgdW0gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW1zIMO8YmVyIGRhcyBHZW5lcmljIEludGVyZmFjZSBhYnp1cnVmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGJlbsO2dGlndGVuIEJlcmVjaHRpZ3VuZ2VuLCB1bSBuYWNoIElUU00tQ29uZmlndXJhdGlvbiBJdGVtcyBtaXQgZGVtIEdlbmVyaWMgSW50ZXJmYWNlIHp1IHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgZXJmb3JkZXJsaWNoZW4gQmVyZWNodGlndW5nZW4genVtIEVpbnN0ZWxsZW4gdm9uIElUU00tS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gw7xiZXIgZGllIGdlbmVyaXNjaGUgU2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyDDnGJlcnNpY2h0c21vZHVsIHVtIGRpZSAiS2xlaW4iLUFuc2ljaHQgZWluZXIgQ29uZmlndXJhdGlvbiBJdGVtcy1MaXN0ZSBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIG9iIGRpZSBCZXNjaHJpZnR1bmdlbiBkZXIgVmVyYmluZHVuZ3N0eXBlbiBpbiBkZW4gS25vdGVudmVyYmluZHVuZ2VuIGFuZ2V6ZWlndCB3ZXJkZW4gbcO8c3Nlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCByZWd1bMOkcmUgQXVzZHLDvGNrZSBpbmRpdmlkdWVsbCBmw7xyIGplZGVzIENvbmZpZ3VyYXRpb24gSXRlbSwgdW0gZGVuIE5hbWVuIGRlcyBDb25maWd1cmF0aW9uIEl0ZW0genUgw7xiZXJwcsO8ZmVuIHVuZCBlbnRzcHJlY2hlbmRlIEZlaGxlcm1lbGR1bmdlbiBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgdmVyZsO8Z2JhcmVuIFNwYWx0ZW4gZGVyIENJcyBpbiBkZXIgS29uZmlndXJhdGlvbnPDvGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDSS1LbGFzc2UuIEplZGVyIEVpbnRyYWcgbXVzcyBhdXMgZWluZW0gS2xhc3Nlbm5hbWVuIHVuZCBlaW5lbSBBcnJheSB2b24gdmVyZsO8Z2JhcmVuIEZlbGRlcm4gZsO8ciBkaWUgZW50c3ByZWNoZW5kZSBLbGFzc2UgYmVzdGVoZW4uIER5bmFtaXNjaGUgRmVsZGVpbnRyw6RnZSBtw7xzc2VuIGRhcyBTY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBlaW5oYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgS29uZmlndXJhdGlvbnNlcmdlYm5pc3NlcyBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgU3VjaGVyZ2Vibmlzc2VzIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIG5hY2ggS29uZmlnLUVsZW1lbnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgS29uZmlndXJhdGlvbnMtU3VjaGVyZ2Vibmlzc2VzIGRpZXNlciBPcGVyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdMZWd0IGRpZSBTdGFuZGFyZHJlaWhlbmZvbGdlIGRlciBLb25maWd1cmF0aW9uc29iamVrdGUgaW4gZGVuIFN1Y2hlcmdlYm5pc3NlbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgZmVzdC4gVXA6IMOkbHRlc3RlciBFaW50cmFnIG9iZW4uIE5hY2ggdW50ZW46IGRhcyBuZXVlc3RlIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkcmVpaGVuZm9sZ2UgZGVyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSBpbiBkZW4gU3VjaGVyZ2Vibmlzc2VuIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlLiBPYmVuOiDDpGx0ZXN0ZXIgRWludHJhZyBnYW56IG9iZW4uIFVudGVuOiBuZXVlc3RlIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0xlZ3QgZGllIFN0YW5kYXJkcmVpaGVuZm9sZ2UgZGVyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSBpbSBTdWNoZXJnZWJuaXMgZGllc2VyIE9wZXJhdGlvbiBmZXN0LiBVcDogw6RsdGVzdGVyIEVpbnRyYWcgb2Jlbi4gTmFjaCB1bnRlbjogZGFzIE5ldWVzdGUgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gZGVyIENJcyBpbiBkZXIgS29uZmlndXJhdGlvbnPDvGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDSS1LbGFzc2UuIEplZGVyIEVpbnRyYWcgbXVzcyBhdXMgZWluZW0gS2xhc3Nlbm5hbWVuIHVuZCBlaW5lbSBBcnJheSB2b24gdmVyZsO8Z2JhcmVuIEZlbGRlcm4gZsO8ciBkaWUgZW50c3ByZWNoZW5kZSBLbGFzc2UgYmVzdGVoZW4uIER5bmFtaXNjaGUgRmVsZGVpbnRyw6RnZSBtw7xzc2VuIGRhcyBTY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBlaW5oYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0xlZ3QgZGllIFN0YW5kYXJkdGllZmUgZGVyIEJlemllaHVuZ2VuIGZlc3QsIGRpZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBzdGFuZGFyZG3DpMOfaWcgYW5nZXplaWd0ZSBTdWNoYXR0cmlidXQgZsO8ciBkaWUgU3VjaGUgbmFjaCBLb25maWd1cmF0aW9uc29iamVrdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBzdGFuZGFyZG3DpMOfaWcgYW5nZXplaWd0ZSBTdWNoYXR0cmlidXQgZsO8ciBkaWUgU3VjaG1hc2tlIGRlcyBLb25maWd1cmF0aW9uc29iamVrdHMuIEJlaXNwaWVsOiAiS2V5IiBtdXNzIGRlbiBOYW1lbiBkZXMgZHluYW1pc2NoZW4gRmVsZGVzIGVudGhhbHRlbiwgaW4gZGllc2VtIEZhbGwgXCdYXCcsICJDb250ZW50IiBtdXNzIGRlbiBXZXJ0IGRlcyBkeW5hbWlzY2hlbiBGZWxkZXMgZW50aGFsdGVuLCBhYmjDpG5naWcgdm9tIFR5cCBkZXMgZHluYW1pc2NoZW4gRmVsZGVzLCBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIHVuZCBvZGVyIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtVW50ZXJvYmpla3QgZGVyIEtsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIHZlcmbDvGdiYXJlbiBTcGFsdGVuIGRlciBDSXMgaW4gZGVyIEtvbmZpZ3VyYXRpb25zw7xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ0ktS2xhc3NlLiBKZWRlciBFaW50cmFnIG11c3MgYXVzIGVpbmVtIEtsYXNzZW5uYW1lbiB1bmQgZWluZW0gQXJyYXkgdm9uIHZlcmbDvGdiYXJlbiBGZWxkZXJuIGbDvHIgZGllIGVudHNwcmVjaGVuZGUgS2xhc3NlIGJlc3RlaGVuLiBEeW5hbWlzY2hlIEZlbGRlaW50csOkZ2UgbcO8c3NlbiBkYXMgU2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgZWluaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIEjDtmhlIGRlciBSaWNoVGV4dC1FZGl0b3IgS29tcG9uZW50ZS4gR2ViZW4gU2llIGVpbmVuIFphaGxlbi0gKFBpeGVsKSBvZGVyIFByb3plbndlcnQgKHJlbGF0aXYpIGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIEFuemFobCBkZXIgWmVpbGVuIGbDvHIgZGVuIEVkaXRvciBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLURlZmluaXRpb24gaW0gQWRtaW5pc3RyYXRvci1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgUmVpaGVuZm9sZ2UgZGVyIFZvcmZhbGxzdGF0dXMgdm9uIGhvY2ggKGJzcHcuIGtyaXRpc2NoKSBuYWNoIG5pZWRyaWcgKGJzcHcuIGZ1bmt0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCByZWxldmFudGUgVmVyd2VuZHVuZ3NzdGF0dXMsIGluIGRlbmVuIHZlcmtuw7xwZnRlIFRpY2tldHMgZGVuIFN0YXR1cyBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zIGJlZWluZmx1c3Nlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN1Y2hsaW1pdCBmw7xyIGRpZSBJVFNNIENvbmZpZ3VyYXRpb24tQW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN1Y2hsaW1pdCBmw7xyIGRpZSBDb25maWd1cmF0aW9uIEl0ZW1zLVN1Y2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3VjaGdyZW56ZSBmw7xyIGRlbiBCaWxkc2NoaXJtIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTGVndCBkaWUgU3VjaGdyZW56ZSBmw7xyIGRlbiBCaWxkc2NoaXJtIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggZmVzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW4gZGVyIEtvbXBsZXhhbnNpY2h0IGRlciBWZXJrbsO8cGZ1bmdzdGFiZWxsZSBmw7xyIGFsbGUgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZW4uIFdlbm4gZXMga2VpbmVuIEVpbnRyYWcgZ2lidCwgd2VyZGVuIGRpZSBTdGFuZGFyZHNwYWx0ZW4gYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGluIGRlciBLb21wbGV4YW5zaWNodCBkZXIgVmVya27DvHBmdW5nc3RhYmVsbGUgYWJow6RuZ2lnIHZvbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZS4gRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZS4gSmVkZW0gRWludHJhZyBtw7xzc2VuIGRlciBLbGFzc2VubmFtZSB1bmQgRG9wcGVscHVua3RlIHZvcmFuZ2VzdGVsbHQgd2VyZGVuICh6LkIuIENvbXB1dGVyOjo6KS4gRXMgZ2lidCBlaW5pZ2UgQ29uZmlndXJhdGlvbiBJdGVtLUF0dHJpYnV0ZSwgZGllIGFsbGVuIENvbmZpZ3VyYXRpb24gSXRlbXMgZ2VtZWluc2FtIHNpbmQgKEJlaXNwaWVsIGbDvHIgZGllIEtsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVW0gZWluemVsbmUgQ29uZmlndXJhdGlvbiBJdGVtLUF0dHJpYnV0ZSwgd2llIHNpZSBpbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLURlZmluaXRpb24gZGVmaW5pZXJ0IHNpbmQsIGRhcnp1c3RlbGxlbiwgbXVzcyBkYXMgZm9sZ2VuZGUgU2NoZW1hIHZlcndlbmRldCB3ZXJkZW4gKEJlaXNwaWVsIGbDvHIgZGllIEtsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpLYXBheml0w6R0OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6S2FwYXppdMOkdDo6MS4gV2VubiBlcyBrZWluZW4gRWludHJhZyBmw7xyIGVpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBnaWJ0LCB3ZXJkZW4gZGllIFN0YW5kYXJkc3BhbHRlbiBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIGRyaXR0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIGbDvHIgIkFjdGlvbiIgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0xlZ3QgZmVzdCwgd2VsY2hlIEVsZW1lbnRlIGluIGRlciBlcnN0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIHZlcmbDvGdiYXIgc2luZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIHp3ZWl0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIHZlcmbDvGdiYXIgc2luZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgQXJ0IHZvbiBMaW5rIChhdXMgZGVyIFRpY2tldHBlcnNwZWt0aXZlIGJlbmFubnQpIGRlbiBTdGF0dXMgZWluZXMgdmVybGlua3RlbiBDSSBiZWVpbmZsdXNzZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcnQsIHdlbGNoZXIgVHlwIHZvbiBUaWNrZXQgZGVuIFN0YXR1cyBlaW5lcyB2ZXJrbsO8cGZ0ZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBiZWVpbmZsdXNzZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpc2llcnVuZyBkZXIgRGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGzDtnNjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRmFyYmUgVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpemllcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pc2NoZXMgRmVsZC1FcmVpZ25pc21vZHVsLCBkYXMgS29uZmlndXJhdGlvbnNkZWZpbml0aW9uZW4gYWxzIG5pY2h0IG1laHIgc3luY2hyb24gbWFya2llcnQsIHdlbm4gc2ljaCBkaWUgZGFyaW4gZW50aGFsdGVuZW4gZHluYW1pc2NoZW4gRmVsZGVyIMOkbmRlcm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaWUgYW5nZXplaWd0ZW4gRHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciBBbnNpY2h0ICJ6dXPDpHR6bGljaGUgSVRTTS1GZWxkZXIiIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIEZlbGRlciwgZGllIGluIGRlciDDnGJlcnNpY2h0c21hc2tlIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIEZlbGRlciwgZGllIGluIGRlciBTdWNobWFza2UgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVydCBkaWUgRnVua3Rpb24gIlNhbW1lbGFrdGlvbiIgZsO8ciBkYXMgQWdlbnRlbi1Gcm9udGVuZCwgdW0genVyIGdsZWljaGVuIFplaXQgYW4gbWVocmVyZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBhcmJlaXRlbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGRpZSBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBudXIgZsO8ciBkaWUgZ2VsaXN0ZXRlbiBHcnVwcGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBa3RpdmllcnQvZGVha3RpdmllcnQgZGllIEZ1bmt0aW9uLCBJVFNNLUtvbmZpZ3VyYXRpb25zZWxlbWVudGUgYXVmIGVpbmRldXRpZ2UgTmFtZW4genUgcHLDvGZlbi4gQmV2b3IgU2llIGRpZXNlIE9wdGlvbiBha3RpdmllcmVuLCBzb2xsdGVuIFNpZSBJaHIgU3lzdGVtIGF1ZiBiZXJlaXRzIHZvcmhhbmRlbmUgS29uZmlndXJhdGlvbnNlbGVtZW50ZSBtaXQgZG9wcGVsdGVuIE5hbWVuIMO8YmVycHLDvGZlbi4gU2llIGvDtm5uZW4gZGllcyBtaXQgZGVtIEtvbnNvbGVuYmVmZWhsIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyB0dW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0VpbiBFcmVpZ25pc21vZHVsIGRhcyBiZWltIFZlcmtuw7xwZmVuIHZvbiBUaWNrZXRzIG1pdCBDb25maWd1cmF0aW9uIEl0ZW1zIGRlbiBTdGF0dXMgZGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgdmVyw6RuZGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmVsZGVyIGRlcyBLb25maWd1cmF0aW9uc2VsZW1lbnRpbmRleCwgZGllIGbDvHIgZGllIFZvbGx0ZXh0c3VjaGUgdmVyd2VuZGV0IHdlcmRlbi4gRmVsZGVyIHdlcmRlbiBlYmVuZmFsbHMgZ2VzcGVpY2hlcnQsIHNpbmQgYWJlciBmw7xyIGRpZSBHZXNhbXRmdW5rdGlvbmFsaXTDpHQgbmljaHQgendpbmdlbmQgZXJmb3JkZXJsaWNoLiBEaWUgQXVmbmFobWUgdm9uIEFuaMOkbmdlbiBrYW5uIGRlYWt0aXZpZXJ0IHdlcmRlbiwgaW5kZW0gZGVyIEVpbnRyYWcgYXVmIDAgZ2VzZXR6dCBvZGVyIGdlbMO2c2NodCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnSW0gSW5kZXggZGVyIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgZ2VzcGVpY2hlcnRlIEZlbGRlciwgZGllIG5lYmVuIGRlciBWb2xsdGV4dHN1Y2hlIGF1Y2ggZsO8ciBhbmRlcmUgWndlY2tlIHZlcndlbmRldCB3ZXJkZW4uIEbDvHIgZGllIHZvbGxzdMOkbmRpZ2UgRnVua3Rpb25hbGl0w6R0IHNpbmQgYWxsZSBGZWxkZXIgb2JsaWdhdG9yaXNjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdGw7xyIGplZGVuIFdlYnNlcnZpY2UgKFNjaGzDvHNzZWwpIGthbm4gZWluIEFycmF5IHZvbiBLbGFzc2VuIChXZXJ0KSBkZWZpbmllcnQgd2VyZGVuLCBhdWYgZGllIGRlciBJbXBvcnQgYmVzY2hyw6Rua3Qgd2lyZC4gRsO8ciBhbGxlIGdld8OkaGx0ZW4gS2xhc3NlbiBvZGVyIGFsbGUgdm9yaGFuZGVuZW4gS2xhc3NlbiBtw7xzc2VuIGRpZSBpZGVudGlmaXppZXJlbmRlbiBBdHRyaWJ1dGUgaW4gZGVyIEludm9rZXJrb25maWd1cmF0aW9uIGF1c2dld8OkaGx0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZS1Nb2R1bHJlZ2lzdHJpZXJ1bmcgZsO8ciBkaWUgQ29uZmlnSXRlbUZldGNoLUF1ZnJ1ZmVyc2NoaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLU1vZHVscmVnaXN0cmllcnVuZyBmw7xyIGRpZSBDb25maWdJdGVtRmV0Y2gtQXVmcnVmZXJzY2hpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLU1vZHVscmVnaXN0cmllcnVuZyBmw7xyIGRpZSBDb25maWdJdGVtRmV0Y2gtQXVmcnVmZXJzY2hpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1ZvcmZhbGxadXN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NjaGxpZcOfdCBCZXJlaXRzdGVsbHVuZ3N6dXN0w6RuZGUgaW4gZGllIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2NobGllw590IFZvcmZhbGxzenVzdMOkbmRlIGluIGRpZSBLb25maWd1cmF0aW9uc3N1Y2hlIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIGVpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCBkZXIgS29uZmlndXJhdGlvbnNvYmpla3RlLCBkaWUgaW0gRXJnZWJuaXMgZGllc2VyIE9wZXJhdGlvbiBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6dXIgw5xiZXJwcsO8ZnVuZyBkZXIgR3J1cHBlLCBkaWUgZsO8ciBlaW5lIEtsYXNzZSB2ZXJhbnR3b3J0bGljaCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwsIHVtIGRpZSBHcnVwcGUgenUgw7xiZXJwcsO8ZmVuLCBkaWUgZsO8ciBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmFudHdvcnRsaWNoIGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB6dW0gR2VuZXJpZXJlbiB2b24gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW0tU3RhdGlzdGlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuemFobCBkZXIgS29uZmlndXJhdGlvbnNwdW5rdGUsIGRpZSBhdWYgamVkZXIgU2VpdGUgZWluZXMgU3VjaGVyZ2Vibmlzc2VzIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIGRlciBLb25maWd1cmF0aW9uc3B1bmt0ZSwgZGllIGF1ZiBqZWRlciBTZWl0ZSBlaW5lcyBTdWNoZXJnZWJuaXNzZXMgaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0ZSwgbmFjaCBkZW5lbiBnZXN1Y2h0IHdlcmRlbiBzb2xsLCB3aWUgdmllbGUgRWludHLDpGdlIHVuZCB3ZWxjaGUgQXR0cmlidXRlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLiBDb25maWdJdGVtLUF0dHJpYnV0ZSBtw7xzc2VuIGV4cGxpeml0IMO8YmVyIEVsYXN0aWNzZWFyY2ggZ2VzcGVpY2hlcnQgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfDnGJlcnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIEthdGVnb3JpZW4gZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTcGFsdGVuZmlsdGVyIGRlciBrbGVpbmVuIEtvbmZpZ3VyYXRpb25zw7xiZXJzaWNodC4gQml0dGUgYmVhY2h0ZW4gU2llOiBXZW5uIFNpZSBcJ0FjdGl2ZVwnIGF1ZiAwIHNldHplbiwga8O2bm5lbiBBZ2VudGVuIGRpZSBFaW5zdGVsbHVuZ2VuIGRpZXNlciBHcnVwcGUgbnVyIGluIGlocmVuIHBlcnPDtm5saWNoZW4gUHLDpGZlcmVuemVuIGJlYXJiZWl0ZW4sIEFkbWluaXN0cmF0b3JlbiBrw7ZubmVuIGplZG9jaCB3ZWl0ZXJoaW4gZGllIEVpbnN0ZWxsdW5nZW4gZWluZXMgYW5kZXJlbiBCZW51dHplcnMgYmVhcmJlaXRlbi4gVmVyd2VuZGVuIFNpZSBcJ1ByZWZlcmVuY2VHcm91cFwnLCB1bSB6dSBzdGV1ZXJuLCBpbiB3ZWxjaGVtIEJlcmVpY2ggZGllc2UgRWluc3RlbGx1bmdlbiBpbiBkZXIgQmVudXR6ZXJvYmVyZmzDpGNoZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGFzIERhc2hib2FyZC1CYWNrZW5kIGRlcyBLdW5kZW5saXN0ZW4tV2lkZ2V0cyBpbSBBZ2VudGVuYmVyZWljaC4gIkxpbWl0IiBiZXN0aW1tdCBkaWUgQW56YWhsIGRlciBzdGFuZGFyZG3DpMOfaWcgYW5nZXplaWd0ZW4gRWludHLDpGdlLiDDnGJlciAiR3JvdXAiIGthbm4gZGVyIFp1Z3JpZmYgYXVmIGRhcyBQbHVnaW4gYmVzY2hyw6Rua3Qgd2VyZGVuICh6LiBCLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZ2lidCBhbiwgb2IgZGFzIFBsdWdpbiBzdGFuZGFyZG3DpMOfaWcgYWt0aXZpZXJ0IHNlaW4gc29sbCBvZGVyIG9iIGRlciBOdXR6ZXIgZXMgbWFudWVsbCBha3RpdmllcmVuIG11c3MuICJDYWNoZVRUTExvY2FsIiBiZXN0aW1tdCBkaWUgTGF1ZnplaXQgZGVzIFBsdWdpbi1DYWNoZXMgaW4gTWludXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgRGFzaGJvYXJkLUJhY2tlbmQgZGVzIEt1bmRlbmxpc3Rlbi1XaWRnZXRzIGltIEFnZW50ZW5iZXJlaWNoLiAiTGltaXQiIGJlc3RpbW10IGRpZSBBbnphaGwgZGVyIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3RlbiBFaW50csOkZ2UuIMOcYmVyICJHcm91cCIga2FubiBkZXIgWnVncmlmZiBhdWYgZGFzIFBsdWdpbiBiZXNjaHLDpG5rdCB3ZXJkZW4gKHouIEIuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBnaWJ0IGFuLCBvYiBkYXMgUGx1Z2luIHN0YW5kYXJkbcOkw59pZyBha3RpdmllcnQgc2VpbiBzb2xsIG9kZXIgb2IgZGVyIE51dHplciBlcyBtYW51ZWxsIGFrdGl2aWVyZW4gbXVzcy4gIkNhY2hlVFRMTG9jYWwiIGJlc3RpbW10IGRpZSBMYXVmemVpdCBkZXMgUGx1Z2luLUNhY2hlcyBpbiBNaW51dGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXRpb24gdm9uIEZhcmJlbiBmw7xyIFZlcndlbmR1bmdzc3RhdHVzIGluIGRlbiBwZXJzw7ZubGljaGVuIEVpbnN0ZWxsdW5nZW4gaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgVmVyd2VuZHVuZ3NzdGF0dXMgaW4gZGVuIHBlcnPDtm5saWNoZW4gRWluc3RlbGx1bmdlbiBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIHp1Z3JpZmZzYmVyZWNodGlndGVuIEJlaXNwaWVsZ3J1cHBlbiBkZXIgR2VuZXJhbCBDYXRhbG9nLUF0dHJpYnV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgTmFtZW5zbW9kdWwgZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGFzIE51bW1lcm5tb2R1bCBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0a2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4sIGluIGRlbmVuIENvbmZpZ3VyYXRpb24gSXRlbXMgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGFzIFZlcnNpb25zc3RyaW5nbW9kdWwgZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRhcyBWZXJzaW9uc3RyaW5nLVRlbXBsYXRlLVRvb2xraXQtTW9kdWwgZsO8ciBDb25maWctSXRlbS1LbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGVuIFZlcnNpb25zLVRyaWdnZXIgZsO8ciBDb25maWctSXRlbS1LbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdGw7xocnQgZGllIGtvbmZpZ3VyaWVydGUgQWt0aW9uIGbDvHIgamVkZXMgRXJlaWduaXMgZsO8ciBqZWRlbiBrb25maWd1cmllcnRlbiBXZWJzZXJ2aWNlIGF1cyAoYWxzIEludm9rZXIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnQmVyZWNodGlndW5nc2dydXBwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIFZlcndlbmR1bmcgZGVyIElUU00tS29uZmlndXJhdGlvbnNvYmpla3QtQW5ow6RuZ2Vha3Rpb24gaW4gZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIEtvbmZpZ3VyYXRpb24gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIFN1Y2hlIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4genVyIFZlcndlbmR1bmcgZGVzIElUU00tU3VjaGJpbGRzY2hpcm1zIGbDvHIgS29uZmlndXJhdGlvbnNlbGVtZW50ZSBpbiBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIFZlcndlbmR1bmcgZGVyIElUU00tS29uZmlndXJhdGlvbnNiYXVtYW5zaWNodCBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBEZXRhaWxhbnNpY2h0IHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1bSBIaW56dWbDvGdlbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiB6dXIgVmVyd2VuZHVuZyBkZXMgSVRTTS1Lb25maWd1cmF0aW9uc2JpbGRzY2hpcm1zIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVtIEJlYXJiZWl0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBIaXN0b3JpZW4tQW5zaWNodCB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1bSBEcnVja2VuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gQ29uZmlndXJhdGlvbiBJdGVtcyBsw7ZzY2hlbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbXMgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0dHp0IGRlbiBWb3JmYWxsc3RhdHVzIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgYXV0b21hdGlzY2gsIHdlbm4gZWluIFRpY2tldCBtaXQgZWluZW0gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmtuw7xwZnQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXR6dCBkZW4gVmVyd2VuZHVuZ3NzdGF0dXMgaW4gZGVyIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0enQgZGVuIFZlcndlbmR1bmdzc3RhdHVzIGbDvHIgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8LCBkaWUgZXMgZXJsYXVidCBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIG1pdCBlaW5lbSBhbmRlcmVuIE9iamVrdCBpbiBkZXIgRGV0YWlsYW5zaWNodCBkZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgenUgdmVya27DvHBmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGRpZSBWZXJrbsO8cGZ1bmcgenVyIEhpc3RvcmllIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGV0YWlsYW5zaWNodCBkaWUgVmVya27DvHBmdW5nIHp1ciBIaXN0b3JpZSBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gTMO2c2NoZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgYW4sIHVtIGRpZSBMaW5rcyB6dSBkZW4gS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gaW4gZWluZXIgQmF1bWFuc2ljaHQgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHVwbGl6aWVyZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBEdXBsaXppZXJlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBCZWFyYmVpdGVuIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW0gZWluZSBWZXJrbsO8cGZ1bmcgenVtIFp1csO8Y2tnZWhlbiBhdWYgZGllIHZvcmhlcmlnZSBBbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHJ1Y2tlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8IGRlciBBbnNpY2h0ICJDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCIsIHVtIHp1ciBEZXRhaWxhbnNpY2h0IGRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIHp1IGdlbGFuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZGllIENvbmZpZ3VyYXRpb24gSXRlbS1IaXN0b3JpZSAodW1nZWtlaHJ0ZSBSZWloZW5mb2xnZSkgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RpZSBTdGFuZGFyZGthdGVnb3JpZSwgZGllIGFuZ2V6ZWlndCB3aXJkLCB3ZW5uIGtlaW5lIEthdGVnb3JpZSBhdXNnZXfDpGhsdCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdEZXIgSWRlbnRpZmlrYXRvciBmw7xyIGVpbiBDb25maWd1cmF0aW9uIEl0ZW0sIGJzcHcuICJDb25maWdJdGVtIyIgLCAiTWVpbkNvbmZpZ0l0ZW0jIi4gRGVyIFN0YW5kYXJkIGlzdCAiQ29uZmlnSXRlbSMiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0zDtnN0IGF1dG9tYXRpc2NoIGRlbiBBdWZydWYgdm9uIENvbmZpZ0l0ZW1GZXRjaCBhdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZy1BdXNkcnVjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZy1Nb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIEF1c2zDtnNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdEZWZpbmllcnQsIG9iIEZlbGRlciBhdXRvbWF0aXNjaCBiZWbDvGxsdCAoMSksIHVuZCBvYiBhdXRvbWF0aXNjaCBiZWbDvGxsdGUgRmVsZGVyIGluIGRlbiBUaWNrZXRmb3JtdWxhcmVuIGF1c2dlYmxlbmRldCB3ZXJkZW4gc29sbGVuICgyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnT2IgZGllIEF1c2bDvGhydW5nIHZvbiBDb25maWdJdGVtQUNMIGR1cmNoIMOcYmVycHLDvGZ1bmcgdm9uIHp3aXNjaGVuZ2VzcGVpY2hlcnRlbiBGZWxkYWJow6RuZ2lna2VpdGVuIHZlcm1pZWRlbiB3ZXJkZW4ga2Fubi4gRGllcyBrYW5uIGRpZSBMYWRlemVpdGVuIHZvbiBGb3JtdWxhcmVuIHZlcmJlc3Nlcm4sIG11c3MgYWJlciBkZWFrdGl2aWVydCB3ZXJkZW4sIHdlbm4gQUNMTW9kdWxlIGbDvHIgSVRTTUNvbmZpZ0l0ZW0tIHVuZCBGb3JtLVJldHVyblR5cGVzIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnRGllIGFsbGdlbWVpbmVuIEluZm9ybWF0aW9uZW4gd2VyZGVuIGluIGRlciBLb3BmemVpbGUgYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ0tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdHbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdQb3N0LXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnUHJlLXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnUHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IFpvbGwgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBab2xsICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgWm9sbCAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBab2xsICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktWm9sbC1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBab2xsICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IFpvbGwgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLVpvbGwtR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgWm9sbCAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLVpvbGwtR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgWm9sbCAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgWm9sbCAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgWm9sbCAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IFpvbGwgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgWm9sbCAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgWm9sbCAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgWm9sbCAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgWm9sbCAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgWm9sbCAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IFpvbGwgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBab2xsICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgWm9sbCAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgWm9sbCAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBab2xsICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IFpvbGwgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBab2xsICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgWm9sbCAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IFpvbGwgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IFpvbGwgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IFpvbGwgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgWm9sbCAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBab2xsICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IFpvbGwgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0J1Y2hoYWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICdCdWNoaGFsdHVuZ3NpbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzc3p1d2Vpc3VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnVmVyd2FsdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2VzIFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0dlcsOkdGV0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlla2FwYXppdMOkdCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0Fra3UtVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnR2Viw6R1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1cy1TY2huaXR0c3RlbGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXppdMOkdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXppdMOkdCBwcm8gR3JhZmlra2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYXJ0ZW5udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYXJ0ZW5sZXNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYXJ0ZSBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0t1bmRlbi1aZXJ0aWZpa2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLdW5kZW4tU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS3VuZGVua2F0ZWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1Rha3RyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdUYWt0ZnJlcXVlbnonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NvZGUgU2lnbmluZy1aZXJ0aWZpa2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyZW56dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0JlcmF0dW5nc3ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgVmVydHJpZWJzcGFydG5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lci1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnVmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVmVydHJhZ3NhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdWZXJ0cmFnc2RhdWVyIHZvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdWZXJ0cmFnc2RhdWVyIGJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdTY2hudXJsb3NlcyBUZWxlZm9uIChERUNULVRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0tvc3RlbnRyw6RnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdBbnphaGwgZGVyIExpemVuemVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdFcnN0ZWxsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQmVudXR6ZXJkZWZpbmllcnRlcyBHZXN0ZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1TZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIGRlciBSZWNobnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0dW0gZGVyIEJlc3RlbGx1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdHVtIGRlciBCw7xyZ3NjaGFmdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXR1bSBkZXIgVmVyw7ZmZmVudGxpY2h1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50ZW5zaWduYXR1ci1aZXJ0aWZpa2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1NYWlsLVplcnRpZmlrYXRlIChTL01JTUUtWmVydGlmaWthdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0FyYmVpdHN2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kLUlQLUFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdFbmRlIGRlciBVbnRlcnN0w7x0enVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1ZlcmZhbGxzZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybmVzIEZlc3RwbGF0dGVubGF1ZndlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU2Nod3VuZ3JhZC1FbmVyZ2llc3BlaWNoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2V2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnQWxsZ2VtZWluZSBJbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlra2FydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWtrYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSGFyZHdhcmUtTW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0hhcmR3YXJlIEdld2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0tvcGZow7ZyZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1Qcm90b2tvbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdMOkdHMtIHVuZCBadWdyaWZmc21hbmFnZW1lbnQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdG1lbnRrb3N0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdSZWNobnVuZ3NudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXR1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QtTW9uaXRvciAoRmzDvHNzaWdrcmlzdGFsbGFuemVpZ2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtTW9uaXRvciAoTGljaHQgZW1pdHRpZXJlbmRlIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdGZXN0bmV0enRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnQnJlaXRlbmdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdTY2hpY2h0IDE6IFBoeXNpa2FsaXNjaGUgU2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdTY2hpY2h0IDI6IERhdGVudmVyYmluZHVuZ3NzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdTY2hpY2h0IDM6IE5ldHp3ZXJrc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdTY2hpY2h0IDM6IE5ldHp3ZXJrc2NoaWNodCAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ1NjaGljaHQgNDogVHJhbnNwb3J0c2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnU2NoaWNodCA1OiBTaXR6dW5nc3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnU2NoaWNodCA2OiBQcsOkc2VudGF0aW9uc3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdTY2hpY2h0IDc6IEFud2VuZHVuZ3NzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ1BhY2h0dmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpemVuenZlcmVpbmJhcnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnTGl6ZW56YW56YWhsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGl6ZW56c2NobMO8c3NlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaXplbnotVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaXplbnp6ZWl0cmF1bSB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaXplbnpkYXVlciBiaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0tRWlzZW4tUGhvc3BoYXQtQWtrdSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGhpdW0tSW9uZW4tQWtrdSAoTGktSW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0RhcmxlaGVuc3ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0FuZ2VzaWVkZWx0IGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0zDpG5nZW5ncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdIZXJzdGVsbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbWFsZSBUcmFnZsOkaGlna2VpdCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnU3BlaWNoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdTcGVpY2hlciBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnSGFuZHludW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRWluZ2ViZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdCZXNjaHJlaWJ1bmcgZGVzIE1vZGVsbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvci1BdWZsw7ZzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3IgR3LDtsOfZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01hdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHp3ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHp3ZXJrLUluZm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR6d2Vyay1JbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR6d2Vya3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWNrZWwtTWV0YWxsaHlkcmlkLUFra3UgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1ZlcnRyYXVsaWNoa2VpdHN2ZXJlaW5iYXJ1bmcgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FuemFobCBkZXIgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdBbnphaGwgZGVyIFJBTS1Nb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW56YWhsIGRlciBHcmFmaWtrYXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtTW9uaXRvciAoT3JnYW5pc2NoZSBMZXVjaHRkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQmV0cmllYnNrb3N0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdGVsbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ1NvbnN0aWdlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnQXVzZ8OkbmdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzY2hhZnRzYWJrb21tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnVW5iZWZyaXN0ZXRlIExpemVuemVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdSdWZudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb24gVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnUGh5c2lrYWxpc2NoZSBLZXJuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N0cm9tbGllZmVydW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnR2VrYXVmdCBiZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhY2stVGllZmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSZWdhbGVpbmhlaXRlbiAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1JhdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0tS2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLVplcnRpZmlrYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnS2F1ZnZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXRlbnRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVmVyc2NobG9zc2VuZSBCbGVpLVPDpHVyZS1CYXR0ZXJpZSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnU2l0enBsYXR6bGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlci1Tb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0RpZW5zdGxlaXN0dW5nc3ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlLVRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdCdWNoc2UgVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdSZWRuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0LUlQLUFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0xhZ2VydW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU3BlaWNoZXItUGFydGl0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJ0Fib25uZW1lbnQtYmFzaWVydGUgTGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1RvY2h0ZXJnZXNlbGxzY2hhZnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1p1c2FtbWVuZmFzc3VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RoaW4gQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGw6RkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhZmlra2FydGVuLVJBTSBpbnNnZXNhbXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSBpbnNnZXNhbXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnVG91Y2hzY3JlZW4tTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1R1cm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1IdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1IZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtVGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICdWb2x1bWVubGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/el_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfOk861zr3Ouc66zqwgz4PPhM6/zrnPh861zq/OsSDOu861zrnPhM6/z4XPgc6zzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfOoc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM61zrnPg861z4HPh8+MzrzOtc69zrEgzrTOtc60zr/OvM6tzr3OsSDOsc6vz4TOt8+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ86hz4XOuM68zq/Pg861zrnPgiDOs865zrEgzrTOtc60zr/OvM6tzr3OsSDOtc6+zrXPgc+Hz4zOvM61zr3Ot8+CIM6xz4DOrM69z4TOt8+DzrfPgic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ86bzrXOuc+Ezr/Phc+BzrPOuc66z4wgz4PPjc+Dz4TOt868zrEgzrTOuc6xzrrOv868zrnPg8+Ezq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gzrrOu86sz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gz4HPjM67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ86Uzq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfOlc60z44gzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM61zrnPg86xzrPOrM6zzrXPhM61IM60zq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQgz4DOv8+FIM+AzrHPgc6/z4XPg865zqzOts6/z4XOvSDPhM6xIM+AzrnOvyDPg8+Fzr3Ot864zrnPg868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzrEgz4HPhc64zrzOr8+DzrXPic69LiDOoM6xz4HOsc66zrHOu86/z43OvM61IM+DzrfOvM61zrnPjs+Dz4TOtSDPjM+EzrkgzrXOvc60zq3Ph861z4TOsc65IM69zrEgzrHPgM6xzrnPhM6/z43Ovc+EzrHOuSDOus6sz4DOv865zrXPgiDPgM+Bz4zPg864zrXPhM61z4Igz4HPhc64zrzOr8+DzrXOuc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfOlc69zrfOvM6tz4HPic+Dzrcgz4XPhs65z4PPhM6szrzOtc69z4nOvSDOv869z4TOv8+Ezq7PhM+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICfOlc65z4POsc6zz4nOs86uIM+AzrHOus6tz4TPic69IM66zrvOrM+DzrXPic69IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIEl0ZW0gQ2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ86hz4zOu86/z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ86mzq/Ou8+Ez4HOvyDOs865zrEgz4TOrM6+zrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrzOuc6xIM66zrvOrM+DzrcgzrHPgM+MIM+EzrcgzrvOr8+Dz4TOsSDOs865zrEgzr3OsSDOtM63zrzOuc6/z4XPgc6zzq7Pg861z4TOtSDOrc69zrEgzr3Orc6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfOpM6szr7Otyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ86czrHOts65zrrOriDOtc69zq3Pgc6zzrXOuc6xIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnzqPPjc69zrTOtc+DzrzOv8+CIM+DzrUgzqzOu867zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ86czrcgzq3Os866z4XPgc6/z4IgzrHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ86fIM6xz4HOuc64zrzPjM+CIM61zr3PjM+CIM6szrvOu86/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDPhM6/IM6/z4DOv86vzr8gzrjOsSDPg8+Fzr3OtM61zrjOtc6vLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ86Uzq/Ous+Ez4XOvyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOpM6/IM+Mzr3Ov868zrEgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86kzr8gz4zOvc6/zrzOsSDPh8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrkgzq7OtM63IM6xz4DPjCDPhM6xIENvbmZpZ0l0ZW1zIM68zrUgz4TOv869IM6xzrrPjM67zr/Phc64zr8gzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOkc+BzrnOuM68z4zPgiDOrc66zrTOv8+DzrfPgiDOsc+Fz4TOv8+NIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86fIM6xz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CIM+Hz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrHOuSDOrs60zrcgzrHPgM+MIM+EzrEgQ29uZmlnSXRlbXMgzrzOtSDPhM6/zr0oz4TOv8+Fz4IpIM6xzrrPjM67zr/Phc64zr8oLc6/z4XPgikgzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ86Zz4PPhM6/z4HOuc66z4wgz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfOmc+Dz4TOv8+Bzq/OsSDOoM61z4HOuc61z4fPjM68zrXOvc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfOp8+Bz4zOvc6/z4IgzrTOt868zrnOv8+Fz4HOs86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfOoM+Bzr/Oss6/zrvOriDOts6/z4XOvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgzqPPhM6/zrnPh861zq/OsSDOsc69zqwgz4POtc67zq/OtM6xJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOtM61zrTOv868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrHPhc+Ez4wgz4TOvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfOlc66z4TOrc67zrXPg863IM6xzr3Osc62zq7PhM63z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ86Vz4DOr8+DzrfPgiDOsc69zrHOts6uz4TOt8+Dzrcgz4POtSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc61z4IgzrXOus60z4zPg861zrnPgj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDOs865zrEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ86Vz4DOr8+AzrXOtM6/IM6yzqzOuM6/z4XPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ86czrXOs86tzrjPhc69z4POty/Oo868zq/Ous+Bz4XOvc+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnzpXPgM6vz4TOtc+Fzr7OtyDOvM6tzrPOuc+Dz4TOv8+FIM61z4DOuc+Azq3OtM6/z4Ugz4PPhc69zrTOrc+DzrXPic69IM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ86gzrvOt8+Bzr/Phs6/z4HOr861z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnzqTPgc6tz4fOv8+Fz4POsSDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfOpM+Bzq3Ph86/z4XPg86xIM66zrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnzqTOtc67zrXPhc+EzrHOr86xIM6xzrvOu86xzrPOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfOpM61zrvOtc+Fz4TOsc6vzrEgzrHOu867zrHOs86uIM6xz4DPjCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ86kzrEgQ29uZmlnSXRlbXMgz4POsc+CJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ86Rzr3Osc62zq7PhM63z4POtyBDb25maWdJdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM6xzr3PhM65zrrOtc65zrzOrc69zr/PhSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOtc+CIM66zrvOrM+DzrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOv865IM+Bz4zOu86/zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnzqPOt868zrXOuc+Oz4PPhM61IM+Mz4TOuSDOuM6xIM60zrfOvM65zr/Phc+BzrPOt864zr/Pjc69IM61z4DOr8+DzrfPgiDPhM6xIM6xzr3PhM6vz4PPhM6/zrnPh86xIM60z4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSDOus6xzrkgzr/OuSDOus67zqzPg861zrnPgiBHZW5lcmFsQ2F0YWxvZyDOus6xzrkgzrTOtc69IM+Fz4DOrM+Bz4fOtc65IM6xz4XPhM+MzrzOsc+EzrcgzrHPhs6xzq/Pgc61z4POty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfOmM6tzrvOtc+EzrUgzr3OsSDPgM+Bzr/Ph8+Jz4HOrs+DzrXPhM61Oyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfOp8+BzrXOuc6szrbOtc+Dz4TOtSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnzp8gzr/Pgc65z4POvM+Mz4IgzrTOtc69IM61zq/Ovc6xzrkgzq3Os866z4XPgc6/z4IgzrrOsc+EzrHOus61z4HOvM6xz4TOuc+DzrzPjM+CIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnzpXPgM65z4POus+Mz4DOt8+Dzrc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzq3Ph861zrkgzrTOv864zrXOryBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnzqfPgc61zrnOrM62zrXPg8+EzrUgz4TOv8+FzrvOrM+HzrnPg8+Ezr/OvSDOrc69zrEgzrXPgM65zrvOtc6zzrzOrc69zr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ86UzrXOvSDOrc+HzrXPhM61IM+Az4HPjM+DzrLOsc+DzrcgzrXOs86zz4HOsc+Gzq7PgiDPg861IM6xz4XPhM+MIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnzpTOtc69IM6tz4fOtc65IM6/z4HOuc+Dz4TOtc6vIM6/z4HOuc+DzrzPjM+CIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ86kzr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CICIlcyIgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnzpTOtc69IM68z4DPjM+BzrXPg861IM69zrEgzrTOuc6xzrPPgc6sz4jOtc65IM+Ezr8gY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ86UzrXOvSDOss+Bzq3OuM63zrrOtSDOrc66zrTOv8+DzrcgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zrXPhM6xzrkgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDOriBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IM66zrHOvM6vzrEgz4DPgc+Mz4POss6xz4POtyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCwgzrTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDOuc+Dz4TOv8+BzrnOus+MLCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ86dzq3OvyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ86dzq3OsSDOrc66zrTOv8+DzrcgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4Igzr/OvM6szrTOtc+CIM60zrnOus6xzrnPic68zqzPhM+Jzr0gz4TOv8+FIM+AzrHPgc6xzrTOtc6vzrPOvM6xz4TOv8+CIM+Ez4nOvSDOs861zr3Ouc66z47OvSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+Ozr0gzrrOsc+EzrHOu8+MzrPOv8+FLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfOlc69zrfOvM6tz4HPic+DzrcgzrrOsc+EzqzPg8+EzrHPg863z4Igz4DOtc+BzrnPg8+EzrHPhM65zrrOv8+NIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfOoM+Bzr/Pg8+Ezq3OuM63zrrOtSDPg8+Nzr3OtM61z4POvM6/z4Igz4DPgc6/z4IgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfOlM65zrHOs8+BzrHPhs6uIM+Dz4XOvc60zq3Pg868zr/PhSDPgM+Bzr/PgiAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ86fIM6/z4HOuc+DzrzPjM+CIENvbmZpZ0l0ZW0gzrXOvc63zrzOtc+Bz47OuM63zrrOtSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnzozOvc6/zrzOsSDOtc69zrfOvM61z4HPic68zq3Ovc6/IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDPg8+Ezr/Ouc+HzrXOr86/LCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiDOs865zrEgz4TOvyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfOiM66zrTOv8+DzrcgJXMgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCDOriBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ86UzrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDOtc68z4bOsc69zrnPg8+EzrXOryDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnzqTOvyBDb25maWdJdGVtSUQgJXMgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfPhM+Fz4DPic68zq3Ovc6/IM6xz4DPjCAlcyDPg8+Ezr8gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ86czrcgzq3Os866z4XPgc6/IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc6/zr3PhM6xzrkgzrTOuc66zrHOuc+OzrzOsc+EzrEgz4DPgc+Mz4POss6xz4POt8+CIM6zzrnOsSDOsc+Fz4TOriDPhM63zr0gzrrOu86sz4POtyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ86azrHOvc6tzr3OsSDOsc+Azr/PhM6tzrvOtc+DzrzOsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfOkc+Azr/PhM61zrvOrc+DzrzOsc+EzrEgzrHOvc6xzrbOrs+EzrfPg863z4IgzrHOvc+EzrnOus61zrnOvM6tzr3Ov8+FIENvbmZpZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gz4PPhM6/zrnPh861zq/OvywgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnzqTOvyBDb25maWdJdGVtIM60zrXOvSDOss+Bzq3OuM63zrrOtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnzpTOtc69IM6yz4HOrc64zrfOus6xzr0gzrXOus60z4zPg861zrnPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfOu861zrnPhM6/z4XPgc6zzrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfPgM+Bzr/Otc65zrTOv8+Azr/Or863z4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ8+AzrXPgc65z4PPhM6xz4TOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86XIM66zrHPhM6sz4PPhM6xz4POtyDOsc69zqzPgM+Ez4XOvs63z4IgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOlyDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM6xz4XPhM6/z40gz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnzpTOtc69IM+Fz4DOrM+Bz4fOtc65IM6szrTOtc65zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnzqbOr867z4TPgc6/IM6szrrPhc+Bzr8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfOn865IM+AzrHPgc6xzrzOrc+Ez4HOv8+Fz4IgzrHOvc6xzrbOrs+EzrfPg863z4IgzrXOr869zrHOuSDOrM66z4XPgc61z4IhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnzpXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CIM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Bzq3Ph86/zr0gz4DOtc+BzrnPg8+EzrHPhM65zrrPjCDOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ86czrXPhM6xzr7PjSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnzqDOtc+BzrnOv8+BzrnPg868zr/OryDOus67zqzPg863z4IgzrPOuc6xIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfOlc+AzrnOu86tzr7PhM61IM68zq/OsSDOriDPgM61z4HOuc+Dz4PPjM+EzrXPgc61z4IgzrrOu86sz4POtc65z4IgzrPOuc6xIM69zrEgz4DOtc+BzrnOv8+Bzq/Pg861z4TOtSDPhM6xIM61z4DOuc67zq3Ovs65zrzOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ86gzrXPgc65zr/Pgc65z4POvM6/zq8gzrrOu86sz4POt8+CIM6zzrnOsSDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ86Vz4DOuc67zq3Ovs+EzrUgzrzOr86xIM6uIM+AzrXPgc65z4PPg8+Mz4TOtc+BzrXPgiDOus67zqzPg861zrnPgiDOs865zrEgzr3OsSDPgM61z4HOuc6/z4HOr8+DzrXPhM61IM+EzrEgzrXPgM65zrvOrc6+zrnOvM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ86Uz4XOvc6xzrzOuc66z4wgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKM6IzrrOtM6/z4POtyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOsc69zrHPhs6/z4HOrM+CIM+Dz4XOvc60zq3Pg868zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfOlc6szr0gzrHPhc+Ezq4gzrcgz4PPjc69zrTOtc+DzrcgzrnPg8+Hz43Otc65IM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0gzq4gz4TOtyDPg8+EzrHPhM65zrrOriDOrc66zrTOv8+Dzrcgz4TOv8+FIM6xzr3PhM65zrrOtc65zrzOrc69zr/PhSDOsc69zrHPhs6/z4HOrM+CLiDOnyDPhc+Azr/Ou86/zrPOuc+DzrzPjM+CIM+EzrfPgiDPhM+Bzq3Ph86/z4XPg86xz4IgzrrOsc+EzqzPg8+EzrHPg863z4Igz4PPhc68zrLOrM69z4TOv8+CIM61zrrPhM61zrvOtc6vz4TOsc65IM68z4zOvc6/IM+DzrUgzrTPhc69zrHOvM65zrrOrc+CIM+Dz4XOvc60zq3Pg861zrnPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfOlc+AzrnOu86tzr7PhM61IM+Ezr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOvM61IM6yzqzPg863IM+Ezr8gzr/PgM6/zq/OvyDOuM6xIM6zzq/Ovc61z4TOsc65IM63IM6xzr3Osc62zq7PhM63z4POtyDPhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnzpcgzrLOsc+DzrnOus6uIM60zr/OvM6uIM60zrXOvSDOtc6vzr3Osc65IM6tzrPOus+Fz4HOty4gzqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtM+Oz4PPhM61IM6tzr3OsSBoYXNoIM68zrUgzrTOtc60zr/OvM6tzr3OsSDPg861IM68zr/Pgc+Gzq4gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfOkc+AzrHOuc+EzrXOr8+EzrHOuSDOtyDOrc69zrHPgc6+zrcgz4TOt8+CIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrM+CIFlBTUwgzrzOtSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfOlM61zr0gzq7PhM6xzr0gzrTPhc69zrHPhM6uIM63IM61zrrOus6xzrjOrM+BzrnPg863IM+Ezr/PhSDPgM6vzr3Osc66zrEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnzpTOtc69IM6yz4HOrc64zrfOus6xzr0gz4PPh861z4TOuc66zqwgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnzpTOtc69IM6uz4TOsc69IM60z4XOvc6xz4TOriDOtyDOtc65z4POsc6zz4nOs86uIM+Dz4TOv869IM+Azq/Ovc6xzrrOsSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ86VzrnPg86uz4fOuM63z4POsc69IDAgzrPPgc6xzrzOvM6tz4Igz4PPhM6/zr0gz4DOr869zrHOus6xIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfOnM6tzrPOuc+Dz4TOv8+CIM6xz4HOuc64zrzPjM+CIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICfOlc65z4POsc6zz4nOs86uL86Vzr7Osc6zz4nOs86uIM+Dz4XOvc63zrzOvM6tzr3Pic69ICjPic+CIM6/zrkgz4TOtc67zrXPhc+EzrHOr861z4IgzrrOsc+EzrHPh8+Jz4HOrs+DzrXOuc+CIM6xzr3OrCDOs8+BzrHOvM68zq4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnzqPPhc68zrLOv867zr/Pg861zrnPgc6sIM6tzrrOtM6/z4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ86jz4bOrM67zrzOsSDPg8+FzrPPh8+Bzr/Ovc65z4POvM6/z40gz4TPic69IM6/z4HOuc+DzrzPjs69LiDOlc67zq3Os86+z4TOtSDPhM6/IM6xz4HPh861zq/OvyDOus6xz4TOsc6zz4HOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfOiM+HzrXPhM61IM6/z4HOuc+DzrzOv8+Nz4IgSVRTTUNvbmZpZ0l0ZW0gz4DOv8+FIM60zrXOvSDOtc6vzr3Osc65IM+Dz4XOs8+Hz4HOv869zrnPg868zq3Ovc6/zrkuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrHOvc6xz4DPhM+Nzr7PhM61IM+EzrnPgiDOsc67zrvOsc6zzq3PgiDPhM+Jzr0gzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ86bzrXOuc+Ezr/Pjc+BzrPOt8+DzrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfOo8+Fzr3PhM6uz4HOt8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfOoM65zrvPjM+Ezr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnzqDPgc6/zrPPgc6xzrzOvM6xz4TOuc+DzrzOrc69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnzpXPgM65z4POus61z4XOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnzqPPhc69z4TOsc6+zrnOv8+Nz4fOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ86Rzr3Osc+DzrrPjM+AzrfPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfOlM6/zrrOuc68zq4vUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ86Vz4DOuc+DzrrPjM+AzrfPg863IM66zrHOuSDOtc+AzrnOss61zrLOsc6vz4nPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ86VzrnPg86xzrPPic6zzq4gzrrOu86sz4POtc+Jzr0vz4HPjM67z4nOvSDOus6xzrkgz4TPic69IM+Dz4fOtc+EzrnOus+Ozr0gz4DOtc60zq/Pic69IM+Ezr/Phc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnzqDPgc6/zq3Ous+Fz4jOtSDPg8+GzqzOu868zrEgzrrOsc+Ezqwgz4TOt869IM61zrnPg86xzrPPic6zzq4gz4TOt8+CIM66zrvOrM+DzrfPgi4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIM6az4HPhc+Gz4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIM6VzrzPhs6xzr3Or862zrXPhM6xzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ86Vz4DOuc+Ez4HOrc+AzrXOuSDOtc66z4TOtc+EzrHOvM6tzr3Otc+CIM+Dz4XOvc64zq7Ous61z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Az4HOrM66z4TOv8+BzrEuIM6czrUgzrHPhc+Ezq4gz4TOtyDOtM+Fzr3Osc+Ez4zPhM63z4TOsSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrHOvc6xzrbOt8+Ezq7Pg861z4TOtSDPgC7Phy4gz4TOvyDPjM69zr/OvM6xIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM61IM+Ezq3PhM6/zrnOv8+FIM61zq/OtM6/z4XPgiDPg8+Fzr3OuM6uzrrOtc+CIM+Mz4DPic+CICIoKmtleTEqJiYqa2V5MiopIiDOriAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ86Vz4DOuc+Ez4HOrc+AzrXOuSDOtc66z4TOtc+EzrHOvM6tzr3Otc+CIM+Dz4XOvc64zq7Ous61z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86xz4TPjs69LiDOnM61IM6xz4XPhM6uIM+EzrcgzrTPhc69zrHPhM+Mz4TOt8+EzrEgzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM6xzr3Osc62zrfPhM6uz4POtc+EzrUgz4Auz4cuIM+Ezr8gz4zOvc6/zrzOsSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDPhM6tz4TOv865zr/PhSDOtc6vzrTOv8+Fz4Igz4PPhc69zrjOrs66zrXPgiDPjM+Az4nPgiAiKCprZXkxKiYmKmtleTIqKSIgzq4gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfOlc66z4fPic+BzrfOuM6tzr3PhM6xIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyDPgM6/z4UgzrHOvc6xz4TOr864zrXOvc+EzrHOuSDPg8+EzrfOvSDOtc+EzrHOuc+BzrXOr86xLc+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyDPgM6/z4Ugzq3Ph86/z4XOvSDOtc66z4fPic+BzrfOuM61zq8gz4POtSDPh8+Bzq7Pg8+Ezrcgz4DOtc67zqzPhM63JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICfOoc+FzrjOvM6vz4POtc65z4IgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnzpXOu86tzrPOvs+EzrUgzrPOuc6xIM6tzr3OsSDOvM6/zr3Osc60zrnOus+MIM+Mzr3Ov868zrEgzrzPjM69zr8gzrXOvc+Ez4zPgiDPhM63z4Igzq/OtM65zrHPgiDOus67zqzPg863z4IgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSDOriDPg861IM+AzrHOs866z4zPg868zrnOvyDOtc+Azq/PgM61zrTOvyAoXCdnbG9iYWxcJyksIM+Az4HOrM6zzrzOsSDPgM6/z4Ugz4POt868zrHOr869zrXOuSDPjM+EzrkgzrrOrM64zrUgz4XPgM6sz4HPh86/zr0gQ29uZmlnSXRlbSDOu86xzrzOss6szr3Otc+EzrHOuSDPhc+Az4zPiM63IM66zrHPhM6sIM+EzrfOvSDOsc69zrHOts6uz4TOt8+DzrcgzrHOvc+EzrnOs8+BzqzPhs+Jzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM68zrnOsSDOtc69z4zPhM63z4TOsSDOs865zrEgz4TOt869IM61z4DOuc6yzr/Ou86uIM61zr3PjM+CIM+Dz4fOrs68zrHPhM6/z4Igzr/Ovc6/zrzOsc+Ezr/OtM6/z4POr86xz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM68zrnOsSDOtc69z4zPhM63z4TOsSDOs865zrEgz4TOt869IM61z4DOuc6yzr/Ou86uIM61zr3PjM+CIM6xz4HOuc64zrzOt8+EzrnOus6/z40gz4PPhc+Dz4TOrs68zrHPhM6/z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrzOuc6xIM61zr3PjM+EzrfPhM6xIM6zzrnOsSDPhM63zr0gzrXPgM65zrLOv867zq4gzrXOvc+Mz4Igz4PPh86uzrzOsc+Ezr/PgiDPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqzPgiDOtc66zrTPjM+DzrXPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCDOs865zrEgzr3OsSDOtc69zrXPgc6zzr/PgM6/zrnOrs+DzrXPhM61IM+EzrcgzrTOt868zrnOv8+Fz4HOs86vzrEgzrzOuc6xz4Igzr3Orc6xz4Igzq3Ous60zr/Pg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrrOsc+EzrfOs86/z4HOr861z4IgzrPOuc6xIM69zrEgzrHOvc6xzrjOrc+DzrXPhM61IM+DzrUgzrHPhc+Ezq4gz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnzqbOr867z4TPgc6xIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezq7Ou863z4IgzrPOuc6xIM+EzrfOvSDOlc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfOo8+Ezq7Ou861z4Igz4DOv8+FIM68z4DOv8+Bzr/Pjc69IM69zrEgz4bOuc67z4TPgc6xz4HOuc+Dz4TOv8+Nzr0gz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuIM6jzrfOvM61zq/Pic+Dzrc6IM6Vz4DOuc+Ez4HOrc+Azr/Ovc+EzrHOuSDOvM+Mzr3OvyDPhM6xIM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrrOsc65IM+EzrEgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfOo8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ86gz4HOv8+DzrjOrs66zrcgz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnzpXPgM61zr7Otc+BzrPOsc+Dzq/OsSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOnM6/zr3OrM60zrEgz4PPhc68zrLOrM69z4TPic69IM+Dz4TOv865z4fOtc6vzr/PhSDPgc+NzrjOvM65z4POt8+CIM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Azr/PhSDOtc+AzrnPhM+Bzq3PgM61zrkgz4TOt869IM66zrHPhM6xzrPPgc6xz4bOriDPg8+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ86czr/Ovc6szrTOsSDPg8+FzrzOss6szr3PhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM61zr3Ot868zrXPgc+Ozr3Otc65IM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOv869IM+Ez4HOrc+Hzr/Ovc+EzrEgzr/Pgc65z4POvM+MIM+Ezr/Phc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ86Izr7Ov860zr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfOlc66z4TPjc+Az4nPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ86hz43OuM68zrnPg863IM62zr/Phc68IM6xzr3PhM65zrrOtc65zrzOrc69zr/PhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfOlM61zr3OtM+BzrnOus6uIM+Az4HOv86yzr/Ou86uIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSDOiM66zrTOv8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnzqTOsSBDb25maWdJdGVtcyDPhM+Jzr0gzrHOus+MzrvOv8+FzrjPic69IM66zrvOrM+DzrXPic69IM60zrXOvSDOuM6xIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM+Dz4TOvyDOtM65zrHOus6/zrzOuc+Dz4TOriBFbGFzdGljc2VhcmNoLiDOk865zrEgzr3OsSDOtc+GzrHPgc68zr/Pg8+EzrXOryDOsc+Fz4TPjCDPg861IM+Fz4DOrM+Bz4fOv869z4TOsSBDSSwgzrcgzrzOtc+EzqzOss6xz4POtyBDSSDPgM+Bzq3PgM61zrkgzr3OsSDOtc66z4TOtc67zrXPg8+EzrXOryDOvM6tz4PPiSDPhM63z4IgzrrOv869z4PPjM67zrHPgiwgzrzOtc+Ezqwgz4TOt869IM6xzrvOu86xzrPOriDOsc+Fz4TOrs+CIM+EzrfPgiDOtc+AzrnOu86/zrPOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfOpM6xIENvbmZpZ0l0ZW1zIM68zrUgz4TOuc+CIM6xzrrPjM67zr/Phc64zrXPgiDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM6xzr3OrM+Az4TPhc6+zrfPgiDOtM61zr0gzrjOsSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPg8+Ezr8gzrTOuc6xzrrOv868zrnPg8+Ezq4gRWxhc3RpY3NlYXJjaC4gzpPOuc6xIM69zrEgzrXPhs6xz4HOvM6/z4PPhM61zq8gzrHPhc+Ez4wgz4POtSDPhc+AzqzPgc+Hzr/Ovc+EzrEgQ0lzLCDOtyDOvM61z4TOrM6yzrHPg863IENJIM+Az4HOrc+AzrXOuSDOvc6xIM61zrrPhM61zrvOtc+Dz4TOtc6vIM68zq3Pg8+JIM+EzrfPgiDOus6/zr3Pg8+MzrvOsc+CLCDOvM61z4TOrCDPhM63zr0gzrHOu867zrHOs86uIM6xz4XPhM6uz4Igz4TOt8+CIM61z4DOuc67zr/Os86uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ86Mz4HOuc6/IM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfOjM+BzrnOvyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOsc69zqwgz4POtc67zq/OtM6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnzpLOrM+DzrcgzrTOtc60zr/OvM6tzr3Pic69IM60zrnOsc+HzrXOr8+BzrnPg863z4IgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ86jz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM6xzrbOuc66zq7PgiDOvM6/zr3OrM60zrHPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOv865z4fOtc6vzr8gzrHOvc6xzrbOrs+EzrfPg863z4IgYmFja2VuZCByb3V0ZXIgz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnzpTOt868zrnOv8+Fz4HOs86vzrEgzrrOsc65IM60zrnOsc+HzrXOr8+BzrnPg863IM+Ez4nOvSDOv8+BzrnPg868z47OvSDOs865zrEgz4TOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnzpTOt868zrnOv8+Fz4HOs861zq8gzrXOuc+DzrnPhM6uz4HOuc6xIM6zzrnOsSBDb25maWdJdGVtcyDPg861IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OsSDPh8+Bzr/Ovc65zrrOrCDPg863zrzOtc6vzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ86fzrkgz4DOtc67zqzPhM61z4IgzrzPgM6/z4HOv8+Nzr0gzr3OsSDOtM6/z4XOvSDOuc+Dz4TOv8+BzrnOus6tz4IgzrXOus60z4zPg861zrnPgiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnzp/OuSDPgM61zrvOrM+EzrXPgiDOrc+Hzr/Phc69IM+EzrcgzrTPhc69zrHPhM+Mz4TOt8+EzrEgzr3OsSDOtc69zrHOu867zqzPg8+Dzr/Ovc+EzrHOuSDPh861zrnPgc6/zrrOr869zrfPhM6xIM68zrXPhM6xzr7PjSDPhM+Jzr0gzrnPg8+Ezr/Pgc65zrrPjs69IM61zrrOtM+Mz4POtc+Jzr0gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnzqDPgc6/zrXPgM65zrvOtc6zzrzOrc69zrEgzrTOtc60zr/OvM6tzr3OsSDPgM6/z4UgzrjOsSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDPg8+Ezr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6gzrHPgc6szrTOtc65zrPOvM6xOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ86gz4HOv861z4DOuc67zrXOs868zq3Ovc6xIM60zrXOtM6/zrzOrc69zrEgz4DOv8+FIM64zrEgz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgz4PPhM6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOoM6xz4HOrM60zrXOuc6zzrzOsTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ86fz4HOuc+DzrzPjM+CIM6Vzr3Otc+BzrPOtc65z47OvSDPjM+Azr/PhSDOrc69zrEgzrrOv8+FzrzPgM6vIM+Bz4XOuM68zq/Pg861z4nOvSDOtc6vzr3Osc65IM60zrnOsc64zq3Pg865zrzOvyDPg8+Ezr8gd2lkZ2V0IM+Ez4nOvSDPg8+Fzr3OtM61zrTOtc68zq3Ovc+Jzr0gzrHOvc+EzrnOus61zrnOvM6tzr3Pic69IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIM6jzrfOvM61zrnPjs+Dz4TOtSDPjM+EzrkgzrHPhc+Ezq3PgiDOv865IM6Vzr3Orc+BzrPOtc65zrXPgiDPgM+Bzq3PgM61zrkgzr3OsSDOrc+Hzr/Phc69IM66zrHPhM6xz4fPic+Bzq/Pg861zrkgz4TOsSDOsc66z4zOu86/z4XOuM6xIM6xz4HPh861zq/OsSBKUyDOus6xzrkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDOus6xzrkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnzp/Pgc65z4POvM+Mz4IgzrXOvc+Mz4Igz4PPh86uzrzOsc+Ezr/PgiBUZW1wbGF0ZTo6VG9vbGtpdCDOs865zrEgz4PPhc68zrLOv867zr/Pg861zrnPgc6tz4Igzq3Ous60zr/Pg863z4IuIM6nz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrHOuSDOvM+Mzr3OvyDOsc69IM63IM61zr3PjM+EzrfPhM6xIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDOrc+HzrXOuSDOv8+BzrnPg8+EzrXOryDPg861IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfOn8+Bzq/Pg8+EzrUgzq3Ovc6xIM+Dz43Ovc6/zrvOvyDPg8+Fzr3OuM63zrrPjs69IM+Fz4DPjCDPhM65z4Igzr/PgM6/zq/Otc+CIM61z4DOuc+Ez4HOrc+AzrXPhM6xzrkgz4POtSDOrc69zrHOvSDPgM61zrvOrM+Ezrcgzr3OsSDOtM61zrkgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzp/OuSDPg8+Fzr3OuM6uzrrOtc+CIM68z4DOv8+Bzr/Pjc69IM+Az4HOv86xzrnPgc61z4TOuc66zqwgzr3OsSDPgM61z4HOuc6/z4HOuc+Dz4TOv8+Nzr0gz4POtSDOv8+BzrnPg868zq3Ovc61z4Igzr/OvM6szrTOtc+CIM+AzrXOu86xz4TPjs69LiDOpM6/IM+Mzr3Ov868zrEgzrXOr869zrHOuSDPhM6/IM68z4zOvc6/IM+Fz4DOv8+Hz4HOtc+Jz4TOuc66z4wgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjC4gzpXOrM69IM60zrXOvSDOtM6/zrjOv8+Nzr0gzqzOu867zrXPgiDOtc+AzrnOu86/zrPOrc+CLCDPjM67zrEgz4TOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrjOsSDOtc6vzr3Osc65IM6/z4HOsc+Ezqwgz4PPhM6/IM+AzrvOsc6vz4POuc6/IM6xz4XPhM6uz4Igz4TOt8+CIM66zrHPhM63zrPOv8+Bzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDOu86uz4jOtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM68zrUgz4fPgc6uz4POtyDPhM63z4IgzrPOtc69zrnOus6uz4IgzrTOuc61z4DOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6xIM6xz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDOvM61IM+Hz4HOrs+Dzrcgz4TOt8+CIM6zzrXOvc65zrrOrs+CIM60zrnOtc+AzrHPhs6uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOsSDOsc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM6/zr0gzrrOsc64zr/Pgc65z4POvM+MIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfOn8+Bzq/Ots61zrkgzrzOuc6xIM61zr3PjM+EzrfPhM6xIM61z4DOuc+DzrrPjM+AzrfPg863z4IgzrPOuc6xIM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+EzrfPgiDOvM65zrrPgc6uz4Igz4DPgc6/zrLOv867zq7PgiDOvM65zrHPgiDOu86vz4PPhM6xz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDOtc6szr0gzr/OuSDOtc+EzrnOus6tz4TOtc+CIM+Ez43PgM6/z4Ugz4PPhc69zrTOrc+DzrzOv8+FIM+Az4HOrc+AzrXOuSDOvc6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrnPgiDPg8+Fzr3OtM6tz4POtc65z4IgzrrPjM68zrLPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM66zrHOvc6/zr3Ouc66zq3PgiDOtc66z4bPgc6sz4POtc65z4Igzr7Otc+Hz4nPgc65z4PPhM6sIM6zzrnOsSDOus6szrjOtSDOus67zqzPg863IENvbmZpZ0l0ZW0gzrPOuc6xIM+Ezr/OvSDOrc67zrXOs8+Hzr8gz4TOv8+FIM6/zr3PjM68zrHPhM6/z4Igz4TOv8+FIENvbmZpZ0l0ZW0gzrrOsc65IM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+Ez4nOvSDOsc69z4TOr8+Dz4TOv865z4fPic69IM68zrfOvc+FzrzOrM+Ez4nOvSDPg8+GzqzOu868zrHPhM6/z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtM65zrHOuM6tz4POuc68zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6xzr3OrM67zr/Os86xIM68zrUgz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSBDSS4gzprOrM64zrUgzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/z4TOtc67zrXOr8+EzrHOuSDOsc+Az4wgzq3Ovc6xIM+Mzr3Ov868zrEgzrrOu86sz4POt8+CIM66zrHOuSDOrc69zrHOvSDPgM6vzr3Osc66zrEgzrTOuc6xzrjOrc+DzrnOvM+Jzr0gz4DOtc60zq/Pic69IM6zzrnOsSDPhM63zr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrcgzrrOu86sz4POty4gzp/OuSDOus6xz4TOsc+Hz4nPgc6vz4POtc65z4IgzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM+Bzq3PgM61zrkgzr3OsSDPhM63z4HOv8+Nzr0gz4TOvyDPg8+Hzq7OvM6xIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM+Dz4TOv865z4fOtc6vzr8gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gzrPOuc6xIM+EzrfOvSDPhM6xzr7Ouc69z4zOvM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOv8+FIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM63z4IgzrTOuc6xz4PPjc69zrTOtc+DzrfPgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDPg8+Ezr/Ouc+HzrXOr86/IM+AzrHPgc6xzrzOrc+Ez4HPic69IM6zzrnOsSDPhM63zr0gz4TOsc6+zrnOvc+MzrzOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Ezr/PhSDOsc+Azr/PhM61zrvOrc+DzrzOsc+Ezr/PgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgz4PPhM6/zrnPh861zq/OvyDPgM6xz4HOsc68zq3PhM+Bz4nOvSDOs865zrEgz4TOt869IM+EzrHOvs65zr3PjM68zrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM6/z4UgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM6xz4XPhM6uz4Igz4TOt8+CIM67zrXOuc+Ezr/Phc+BzrPOr86xz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOt869IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc63IM+DzrXOuc+Bzqwgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Dz4TOvyDOsc+Azr/PhM6tzrvOtc+DzrzOsSDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4DPgc6szrrPhM6/z4HOsS4gVXA6IM+Ezr8gz4DOsc67zrHOuc+Mz4TOtc+Bzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLiDOms6sz4TPiTogz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrfOvSDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDPg861zrnPgc6sIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4gzqDOrM69z4k6IM+Ezr8gz4DOsc67zrHOuc+Mz4TOtc+Bzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLiDOms6sz4TPiTogz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOt869IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc63IM+DzrXOuc+Bzqwgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Dz4TOvyDOsc+Azr/PhM6tzrvOtc+DzrzOsSDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM67zrXOuc+Ezr/Phc+BzrPOr86xz4IgzrHPhc+Ezq7Pgi4gzqDOrM69z4k6IM+Ezr8gz4DOsc67zrHOuc+Mz4TOtc+Bzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLiDOms6sz4TPiTogz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3Otc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOus6xz4TOsc+Hz47Pgc63z4POtyDPgM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/PhM61zrvOtc6vz4TOsc65IM6xz4DPjCDOrc69zrEgz4zOvc6/zrzOsSDOus67zqzPg863z4IgzrrOsc65IM6tzr3Osc69IM+Azq/Ovc6xzrrOsSDOtM65zrHOuM6tz4POuc68z4nOvSDPgM61zrTOr8+Jzr0gzrPOuc6xIM+EzrfOvSDOsc69z4TOr8+Dz4TOv865z4fOtyDOus67zqzPg863LiDOn865IM66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrfPgc6/z43OvSDPhM6/IM+Dz4fOrs68zrEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gzrLOrM64zr/PgiDPg8+Hzq3Pg861z4nOvSDPgM6/z4UgzrjOsSDOtc68z4bOsc69zq/Ots61z4TOsc65Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDOtc68z4bOsc69zrnOts+MzrzOtc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDOtc68z4bOsc69zrnOts+MzrzOtc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6gzrHPgc6szrTOtc65zrPOvM6xOiAiS2V5IiDPgM+Bzq3PgM61zrkgzr3OsSDOrc+HzrXOuSDPhM6/IM+Mzr3Ov868zrEgz4TOv8+FIM60z4XOvc6xzrzOuc66zr/PjSDPgM61zrTOr86/z4Ugz4PPhM63zr0gz4DPgc6/zrrOtc65zrzOrc69zrcgz4DOtc+Bzq/PgM+Ez4nPg863IFwnWFwnLCAiQ29udGVudCIgz4DPgc6tz4DOtc65IM69zrEgzq3Ph861zrkgz4TOt869IM+EzrnOvM6uIM+Ezr/PhSDOtM+Fzr3Osc68zrnOus6/z40gz4DOtc60zq/Ov8+FIM6xzr3OrM67zr/Os86xIM68zrUgz4TOv869IM+Ez43PgM6/IM+Ezr/PhSDOtM+Fzr3Osc68zrnOus6/z40gz4DOtc60zq/Ov8+FLCBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0LSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDEtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjYtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwLCBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTMtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxLCBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjYtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjMtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OS0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5LFwnIM66zrHOuSDOriBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfOn8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPhc+Azr/Osc69z4TOuc66zrXOr868zrXOvc6/IM+EzrfPgiDOus67zqzPg863z4IgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtM65zrHOuM6tz4POuc68zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6xzr3OrM67zr/Os86xIM68zrUgz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSBDSS4gzprOrM64zrUgzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/z4TOtc67zrXOr8+EzrHOuSDOsc+Az4wgzq3Ovc6xIM+Mzr3Ov868zrEgzrrOu86sz4POt8+CIM66zrHOuSDOrc69zrHOvSDPgM6vzr3Osc66zrEgzrTOuc6xzrjOrc+DzrnOvM+Jzr0gz4DOtc60zq/Pic69IM6zzrnOsSDPhM63zr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrcgzrrOu86sz4POty4gzp/OuSDOus6xz4TOsc+Hz4nPgc6vz4POtc65z4IgzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM+Bzq3PgM61zrkgzr3OsSDPhM63z4HOv8+Nzr0gz4TOvyDPg8+Hzq7OvM6xIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Nz4jOv8+CIM6zzrnOsSDPhM6/IM+Dz4TOv865z4fOtc6vzr8gz4TOv8+FIM61z4DOtc6+zrXPgc6zzrHPg8+Ezq4gz4DOu86/z43Pg865zr/PhSDOus61zrnOvM6tzr3Ov8+FIM6zzrnOsSDOsc+Fz4TOriDPhM63zr0gzr/OuM+Mzr3Oty4gzpXOuc+DzqzOs861z4TOtSDOsc+BzrnOuM68z4wgKHBpeGVscykgzq4gz4DOv8+Dzr/Pg8+EzrnOsc6vzrEgz4TOuc68zq4gKM+Dz4fOtc+EzrnOus6uKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr/OvSDOsc+BzrnOuM68z4wgz4TPic69IM6zz4HOsc68zrzPjs69IM6zzrnOsSDPhM6/zr0gzrXPgM61zr7Otc+BzrPOsc+Dz4TOriDOv8+BzrnPg868zr/PjSBDSSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDOtM65zrHPh861zq/Pgc65z4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOtyDPg861zrnPgc6sIM+Ez4nOvSDOus6xz4TOsc+Dz4TOrM+DzrXPic69IM+Dz4XOvM6yzqzOvc+Ez4nOvSDOsc+Az4wgz4XPiM63zrvOriAoz4Auz4cuIM66z4HOr8+DzrnOvM63KSDOrc+Jz4Igz4fOsc68zrfOu86uICjPgC7Phy4gzrvOtc65z4TOv8+Fz4HOs865zrrOrikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDPg8+HzrXPhM65zrrOrc+CIM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Mz4DOv8+FIM+EzrEgz4PPhc69zrTOtc60zrXOvM6tzr3OsSDOtc65z4POuc+Ezq7Pgc65zrEgzrzPgM6/z4HOv8+Nzr0gzr3OsSDOtc+AzrfPgc61zqzPg86/z4XOvSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM65z4IgzrXOvM+GzrHOvc65zrbPjM68zrXOvc61z4Igz4PPhM6uzrvOtc+CIM+Ez4nOvSBDSSDPg8+EzrfOvSDPgM6/zrvPjc+AzrvOv866zrcgz4DPgc6/zrLOv867zq4gz4TOv8+FIM+Azq/Ovc6xzrrOsSDPg8+Fzr3OtM6tz4POtc+Jzr0gzrPOuc6xIM+MzrvOtc+CIM+EzrnPgiDOus6xz4TOt86zzr/Pgc6vzrXPgiBDSS4gzpXOrM69IM60zrXOvSDPhc+AzqzPgc+HzrXOuSDOus6xz4TOsc+Hz47Pgc65z4POtywgz4TPjM+EzrUgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM6/zrkgz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrXPgiDPg8+Ezq7Ou861z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gz4DOv867z43PgM67zr/Ous63IM+Az4HOv86yzr/Ou86uIM+Ezr/PhSDPgM6vzr3Osc66zrEgz4PPhc69zrTOrc+DzrzPic69LCDOsc69zqzOu86/zrPOsSDOvM61IM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgQ0kuIM6azqzOuM61IM61zrPOs8+BzrHPhs6uIM+Az4HOrc+AzrXOuSDOvc6xIM6tz4fOtc65IM+Jz4Igz4DPgc+MzrjOtc68zrEgz4TOvyDPjM69zr/OvM6xIM+EzrfPgiDOus67zqzPg863z4IgzrrOsc65IM60zrnPgM67zq3PgiDOrM69z4kgzrrOsc65IM66zqzPhM+JIM+EzrXOu861zq/OsSAoz4Auz4cuIENvbXB1dGVyOjo6KS4gzqXPgM6sz4HPh86/z4XOvSDOvM61z4HOuc66zqwgQ0ktQXR0cmlidXRlcyDPgM6/z4UgzrXOr869zrHOuSDOus6/zrnOvc6sIM6zzrnOsSDPjM67zrEgz4TOsSBDSSAoz4DOsc+BzqzOtM61zrnOs868zrEgzrPOuc6xIM+EzrfOvSDOus67zqzPg863IENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDOk865zrEgzr3OsSDOtc68z4bOsc69zrnPg8+Ezr/Pjc69IM68zrXOvM6/zr3Pic68zq3Ovc6xIENJLUF0dHJpYnV0ZXMgz4zPgM+Jz4Igzr/Pgc6vzrbOv869z4TOsc65IM+Dz4TOv869IENJLURlZmluaXRpb24sIM+Az4HOrc+AzrXOuSDOvc6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zrfOuM61zq8gz4TOvyDOsc66z4zOu86/z4XOuM6/IM+Dz4fOrs68zrEgKM+AzrHPgc6szrTOtc65zrPOvM6xIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDOlc6szr0gzrTOtc69IM+Fz4DOrM+Bz4fOtc65IM66zrHPhM6xz4fPjs+BzrfPg863IM6zzrnOsSDOvM65zrEgzrrOu86sz4POtyBDSSwgz4TPjM+EzrUgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM6/zrkgz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrXPgiDPg8+Ezq7Ou861z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6xIM+Dz4TOv865z4fOtc6vzrEgzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zrEgzrPOuc6xICLOlM+BzqzPg863IiDPg8+Ezr8gz4TPgc6vz4TOvyDOtc+Azq/PgM61zrTOvyDPhM63z4IgzrTOv868zq7PgiBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4DOv865zrEgz4PPhM6/zrnPh861zq/OsSDOtc6vzr3Osc65IM60zrnOsc64zq3Pg865zrzOsSDPg8+Ezr8gz4DPgc+Oz4TOvyDOtc+Azq/PgM61zrTOvyDPhM63z4IgzrTOv868zq7PgiBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6xIM+Dz4TOv865z4fOtc6vzrEgzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zrEgz4PPhM6/IM60zrXPjc+EzrXPgc6/IM61z4DOr8+AzrXOtM6/IM+EzrfPgiDOtM6/zrzOrs+CIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4DOv865zr/PgiDPhM+Nz4DOv8+CIM+Dz43Ovc60zrXPg863z4IgKM68zrUgz4zOvc6/zrzOsSDOsc+Az4wgz4TOt869IM6/z4DPhM65zrrOriDOs8+Jzr3Or86xIM+Ezr/PhSDOtc65z4POuc+EzrfPgc6vzr/PhSkgzrzPgM6/z4HOtc6vIM69zrEgzrXPgM63z4HOtc6sz4POtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrcgzrXOvc+Mz4Igz4PPhc69zrTOtc60zrXOvM6tzr3Ov8+FIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOv8+CIM+Ez43PgM6/z4IgzrXOuc+DzrnPhM63z4HOr86/z4UgzrzPgM6/z4HOtc6vIM69zrEgzrXPgM63z4HOtc6sz4POtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrcgzrXOvc+Mz4Igz4PPhc69zrTOtc60zrXOvM6tzr3Ov8+FIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ86Vzr3Ot868zq3Pgc+Jz4POtyDOv8+BzrnPg868zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnzpTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ86nz4HPjs68zrEgzrrOsc+EzqzPg8+EzrHPg863z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfOlM65z4DOu8+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnzpzOv869zqzOtM6xIM+Dz4XOvM6yzqzOvc+Ez4nOvSDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IM+Azr/PhSDOtc+AzrnPg863zrzOsc6vzr3Otc65IM+Ezr/Phc+CIM6/z4HOuc+DzrzOv8+Nz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4nPgiDOvM63IM+Dz4XOs8+Hz4HOv869zrnPg868zq3Ovc6/z4XPgiwgzrXOrM69IM6xzrvOu86szr7Ov8+Fzr0gz4TOsSDOtM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM+AzrXPgc65zq3Ph86/z4XOvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Uz4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSDPgM6/z4UgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOt869IM6/zrjPjM69zrcgz4DPgc+Mz4POuM61z4TPic69IM+AzrXOtM6vz4nOvSBJVFNNIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOv864z4zOvc63IM61z4DOuc+DzrrPjM+AzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnzpXOvc61z4HOs86/z4DOv865zrXOryDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM68zrHOts65zrrOrs+CIM60z4HOrM+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOvyBmcm9udGVuZCDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsSDPjs+Dz4TOtSDOvc6xIM61z4HOs86szrbOtc+EzrHOuSDPg861IM+AzrXPgc65z4PPg8+Mz4TOtc+BzrEgzrHPgM+MIM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOsc+Fz4TPjM+Hz4HOv869zrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfOlyDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CIM6xz4XPhM6/z40gz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ86Vzr3Otc+BzrPOv8+Azr/Ouc61zq8vzrHPgM61zr3Otc+BzrPOv8+Azr/Ouc61zq8gz4TOtyDOu861zrnPhM6/z4XPgc6zzq/OsSDOtc67zq3Os8+Hzr/PhSDPhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IElUU00gzrPOuc6xIM68zr/Ovc6xzrTOuc66zqwgzr/Ovc+MzrzOsc+EzrEuIM6gz4HOuc69IM61zr3Otc+BzrPOv8+Azr/Ouc6uz4POtc+EzrUgzrHPhc+Ezq7OvSDPhM63zr0gzrXPgM65zrvOv86zzq4sIM64zrEgz4DPgc6tz4DOtc65IM69zrEgzrXOu86tzrPOvs61z4TOtSDPhM6/IM+Dz43Pg8+EzrfOvM6sIM+DzrHPgiDOs865zrEgzq7OtM63IM+Fz4DOrM+Bz4fOv869z4TOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDOtM65z4DOu86sIM6/zr3PjM68zrHPhM6xLiDOnM+Azr/Pgc61zq/PhM61IM69zrEgz4TOvyDOus6szr3Otc+EzrUgzrHPhc+Ez4wgzrzOtSDPhM63zr0gzrXOvc+Ezr/Ou86uIM+EzrfPgiDOus6/zr3Pg8+MzrvOsc+CIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnzpXOvc+Mz4TOt8+EzrEgz4PPhc68zrLOrM69z4TOv8+CIM6zzrnOsSDOvc6xIM6/z4HOr8+DzrXPhM61IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDPgM6xz4HOsc68zrXPhM+Bzr/PgM6/zq/Ot8+DzrfPgiDPg8+Ezr8gz4PPjc69zrTOtc+DzrzOvyB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfOoM61zrTOr86xIM+Ezr/PhSDOtc+Fz4HOtc+EzrfPgc6vzr/PhSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgz4DOv8+FIM+Hz4HOt8+DzrnOvM6/z4DOv865zr/Pjc69z4TOsc65IM6zzrnOsSDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+AzrvOrs+Bzr/Phc+CIM66zrXOuc68zq3Ovc6/z4UuIM6kzrEgz4DOtc60zq/OsSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDOtc+Azq/Pg863z4IsIM6xzrvOu86sIM60zrXOvSDOtc6vzr3Osc65IM+Fz4DOv8+Hz4HOtc+Jz4TOuc66zqwgzrPOuc6xIM+Ezrcgz4PPhc69zr/Ou865zrrOriDOu861zrnPhM6/z4XPgc6zzrnOus+Mz4TOt8+EzrEuIM6XIM+Dz4XOvM+AzrXPgc6vzrvOt8+Izrcgz4TPic69IM+Dz4XOvc63zrzOvM6tzr3Pic69IM68z4DOv8+BzrXOryDOvc6xIM6xz4DOtc69zrXPgc6zzr/PgM6/zrnOt864zrXOryDOuM6tz4TOv869z4TOsc+CIM+EzrfOvSDOus6xz4TOsc+Hz47Pgc63z4POtyDPg861IDAgzq4gzrTOuc6xzrPPgc6sz4bOv869z4TOrM+CIM+EzrfOvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ86gzrXOtM6vzrEgz4DOv8+FIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM+Dz4TOvyDOtc+Fz4HOtc+Ezq7Pgc65zr8gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrrOsc65IM+Hz4HOt8+DzrnOvM6/z4DOv865zr/Pjc69z4TOsc65IM6zzrnOsSDOrM67zrvOsSDPgM+BzqzOs868zrHPhM6xIM61zrrPhM+Mz4IgzrHPgM+MIM+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4DOu86uz4HOv8+Fz4IgzrrOtc65zrzOrc69zr/PhS4gzpPOuc6xIM+EzrfOvSDPgM67zq7Pgc63IM67zrXOuc+Ezr/Phc+BzrPOuc66z4zPhM63z4TOsSDPjM67zrEgz4TOsSDPgM61zrTOr86xIM61zq/Ovc6xzrkgz4XPgM6/z4fPgc61z4nPhM65zrrOrC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICfOk865zrEgzrrOrM64zrUgz4XPgM63z4HOtc+Dzq/OsSDOuc+Dz4TOv8+NICjOus67zrXOuc60zq8pIM68z4DOv8+BzrXOryDOvc6xIM6/z4HOuc+Dz4TOtc6vIM6tzr3Osc+CIM+Azq/Ovc6xzrrOsc+CIM66zrvOrM+DzrXPic69ICjPhM65zrzOriksIM+Dz4TOuc+CIM6/z4DOv86vzrXPgiDPgM61z4HOuc6/z4HOr862zrXPhM6xzrkgzrcgzrXOuc+DzrHOs8+JzrPOri4gzpPOuc6xIM+MzrvOtc+CIM+EzrnPgiDOtc+AzrnOu861zrPOvM6tzr3Otc+CIM66zrvOrM+DzrXOuc+CIM6uIM6zzrnOsSDPjM67zrXPgiDPhM65z4Igz4XPgM6sz4HPh86/z4XPg861z4IgzrrOu86sz4POtc65z4IgzrjOsSDPgM+Bzq3PgM61zrkgzr3OsSDOtc+AzrnOu861zrPOv8+Nzr0gz4TOsSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus6sIM6xzr3Osc6zzr3Pjs+BzrnPg863z4Igz4PPhM6/IGNvbmZpZyDPhM6/z4UgaW52b2tlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnzpXOs86zz4HOsc+Gzq4gzrzOv869zqzOtM6xz4IgR2VuZXJpY0ludGVyZmFjZSDOs865zrEgz4TOvyDOtc+Azq/PgM61zrTOvyDOtc+AzrnOus6xzrvOv8+NzrzOtc69zr/PhSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnzpXOs86zz4HOsc+Gzq4gzrzOv869zqzOtM6xz4IgR2VuZXJpY0ludGVyZmFjZSDOs865zrEgz4TOvyDOtc+Azq/PgM61zrTOvyDOtc+AzrnOus6xzrvOv8+NzrzOtc69zr/PhSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ86VzrPOs8+BzrHPhs6uIM68zr/Ovc6szrTOsc+CIEdlbmVyaWNJbnRlcmZhY2UgzrPOuc6xIM+Ezr8gzrXPgM6vz4DOtc60zr8gzrXPgM65zrrOsc67zr/Pjc68zrXOvc6/z4UgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfOlc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4HPhc64zrzOr8+DzrXPic69IElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM61z4HOuc67zrHOvM6yzqzOvc61zrkgzrrOsc+EzrHPg8+EzqzPg861zrnPgiDOsc69zqzPgM+Ez4XOvs63z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrXPgc65zrvOsc68zrLOrM69zrXOuSDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM+Dz4XOvM6yzqzOvc+Ez4nOvSDPg8+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnzpzOrc6zzrnPg8+Ezr/PgiDOsc+BzrnOuM68z4zPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPgM6/z4UgzrjOsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM6/IM6xz4DOv8+Ezq3Ou861z4POvM6xIM6xz4XPhM6uz4Igz4TOt8+CIM67zrXOuc+Ezr/Phc+BzrPOr86xz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnzpXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+Ezr/OvSDOrc67zrXOs8+Hzr8gz4TOt8+CIM6/zrzOrM60zrHPgiDPgM6/z4UgzrXOr869zrHOuSDPhc+AzrXPjc64z4XOvc63IM6zzrnOsSDOvM65zrEgz4TOrM6+zrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnzpXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+Ezr/OvSDOrc67zrXOs8+Hzr8gz4TOt8+CIM6/zrzOrM60zrHPgiDPgM6/z4UgzrXOr869zrHOuSDPhc+AzrXPjc64z4XOvc63IM6zzrnOsSDOrc69zrEgz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ86Vzr3PjM+EzrfPhM6xIM6zzrnOsSDPhM63IM60zrfOvM65zr/Phc+BzrPOr86xIM+Dz4TOsc+EzrnPg8+EzrnOus+Ozr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfOjM69zr/OvM6xIM6Vzr3PjM+EzrfPhM6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfOlc69z4zPhM63z4TOsSDOsc+BzrnOuM68zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+BzrnOuM68z4zPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPgM6/z4UgzrjOsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4POtSDOus6szrjOtSDPg861zrvOr860zrEgzrXOvc+Mz4IgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4HOuc64zrzPjM+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Azr/PhSDOuM6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg861IM66zqzOuM61IM+DzrXOu86vzrTOsSDOtc69z4zPgiDOsc+Azr/PhM61zrvOrc+DzrzOsc+Ezr/PgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ86Rzr3PhM65zrrOtc6vzrzOtc69zrEgzrPOuc6xIM+EzrEgzr/PgM6/zq/OsSDOuM6xIM6zzq/Ovc61zrkgzrHOvc6xzrbOrs+EzrfPg863LCDPgM+Mz4POtc+CIM66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiDOus6xzrkgz4DOv865zrEgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCDOuM6xIM61zrzPhs6xzr3Ouc+Dz4TOv8+Nzr0uIM6kzrEgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCBDb25maWdJdGVtIM+Az4HOrc+AzrXOuSDOvc6xIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM+BzrfPhM6sIM68zq3Pg8+JIM+Ezr/PhSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfOlc+AzrnPg866z4zPgM63z4POty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4IgzrrOsc+EzrfOs86/z4HOr861z4Igz4TPic69IM66zrvOrM+DzrXPic69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrEgz4bOr867z4TPgc6xIM+Dz4TOrs67zrfPgiDPhM63z4IgzrXPgM65z4POus+Mz4DOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrzOuc66z4HOrs+CIM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6jzrfOvM61zq/Pic+Dzrc6IM63IM+Bz43OuM68zrnPg863IFwnQWN0aXZlXCcgz4POtSAwIM64zrEgzrXOvM+Azr/OtM6vz4POtc65IM68z4zOvc6/IM+Ezr/Phc+CIM+Az4HOrM66z4TOv8+BzrXPgiDOvc6xIM61z4DOtc6+zrXPgc6zzqzOts6/zr3PhM6xzrkgz4TOuc+CIM+Bz4XOuM68zq/Pg861zrnPgiDOsc+Fz4TOrs+CIM+EzrfPgiDOv868zqzOtM6xz4Igz4PPhM65z4Igz4DPgc6/z4PPic+AzrnOus6tz4Igz4TOv8+Fz4Igz4DPgc6/z4TOuc68zq7Pg861zrnPgiwgzrHOu867zqwgzrjOsSDOtc+AzrnPhM+Bzq3PiM61zrkgz4PPhM6/z4XPgiDOtM65zrHPh861zrnPgc65z4PPhM6tz4Igzr3OsSDOtc+AzrXOvs61z4HOs86szrbOv869z4TOsc65IM+EzrnPgiDPgc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM67zr/Os86xz4HOuc6xz4POvM+MIM6szrvOu86/z4Ugz4fPgc6uz4PPhM63LiDOp8+BzrfPg865zrzOv8+Azr/Ouc6uz4PPhM61IM+Ezr8gXCdQcmVmZXJlbmNlR3JvdXBcJyDOs865zrEgzr3OsSDOtc67zq3Os86+zrXPhM61IM+DzrUgz4DOv865zrEgz4DOtc+BzrnOv8+Hzq4gzrjOsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgzrHPhc+Ezq3PgiDOv865IM+Bz4XOuM68zq/Pg861zrnPgiDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPh8+Bzq7Pg8+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM6/IM+Hz4HPjs68zrEgz4TPic69IM66zrHPhM6xz4PPhM6sz4POtc+Jzr0gzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrnPgiDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM6xzr3OrM+Az4TPhc6+zrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM6/zrzOrM60zrXPgiDOtM65zrrOsc65z4nOvM6sz4TPic69IM+Ezr/PhSDPgM6xz4HOsc60zrXOr86zzrzOsc+Ezr/PgiDPhM+Jzr0gzrPOtc69zrnOus+Ozr0gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjs69IM66zrHPhM6xzrvPjM6zzr/PhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOtyDOvM6/zr3OrM60zrEgzr/Ovc+MzrzOsc+Ezr/PgiDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM63IM68zr/Ovc6szrTOsSDOsc+BzrnOuM68zr/PjSDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrnPgiDPg861zrvOr860zrXPgiAoz4PPhM65z4Igzr/PgM6/zq/Otc+CIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPhM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM63IM68zr/Ovc6szrTOsSDPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqzPgiDOrc66zrTOv8+DzrfPgiDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrfOvSDOtc69z4zPhM63z4TOsSDOtc+BzrPOsc67zrXOuc6/zrjOrs66zrfPgiDPgM+Bzr/PhM+Nz4DOv8+FIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrM+CIM6tzrrOtM6/z4POt8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrfOvSDOtc69zrXPgc6zzr/PgM6/zq/Ot8+Dzrcgzq3Ous60zr/Pg863z4IgzrPOuc6xIM+EzrnPgiDOus67zqzPg861zrnPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ86VzrrPhM61zrvOtc6vIM+Ezrcgz4HPhc64zrzOuc+DzrzOrc69zrcgzrXOvc6tz4HOs861zrnOsSDOs865zrEgzrrOrM64zrUgz4PPhc68zrLOrM69ICjPic+CIEludm9rZXIpIM6zzrnOsSDOus6szrjOtSDPgc+FzrjOvM65z4POvM6tzr3OtyDPhc+AzrfPgc61z4POr86xIFdlYnNlcnZpY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfOn868zqzOtM6xIM6xzrTOtc65z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM61zr3Orc+BzrPOtc65zrHPgiDPgM+Bzr/Pg86sz4HPhM63z4POt8+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM60zrXOvc60z4HOuc66zq7PgiDPgM+Bzr/Oss6/zrvOrs+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM68zrXOs86tzrjPhc69z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM63IM60zrnOtc+AzrHPhs6uIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Az4HOv8+DzrjOrs66zrfPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOvM6xzrbOuc66z47OvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOtc+AzrXOvs61z4HOs86xz4POr86xz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM65z4PPhM6/z4HOuc66zr/PjSBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM+Az4HOv869z4zOvM65zrEgzrPOuc6xIM+EzrcgzrTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4HPhc64zrzOr8+DzrXPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ86Rzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ86fz4HOr8+Dz4TOtSDOsc+Fz4TPjM68zrHPhM6xIM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM61zr3PjM+CIENJIM+Mz4TOsc69IM6tzr3OsSBUaWNrZXQgz4PPhc69zrTOrc61z4TOsc65IM68zrUgzq3Ovc6xIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgiDPg8+EzrfOvSDOv864z4zOvc63IM68zrHOts65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM+Dz4XOvM6yzqzOvc+Ezr/PgiDPg8+EzrfOvSDOv864z4zOvc63IM68zrHOts65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfPgM+Bzr/PgM6xz4HOsc6zz4nOs865zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPgM+Bz4zPg86yzrHPg863IM+Dz4TOvyDOuc+Dz4TOv8+BzrnOus+MIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4DPgc+Mz4POss6xz4POtyDPg8+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+Ez4nOvSDPg8+Fzr3OtM6tz4POvM+Jzr0gz4TPic69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Jz4IgzrTOtc69zrTPgc65zrrOriDPgM+Bzr/Oss6/zrvOri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM6xzr3PhM65zrPPgc6xz4bOriDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+EzrfOvSDOsc69z4TOuc6zz4HOsc+Gzq4gzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61z4DOtc6+zrXPgc6zzrHPg86vzrEgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgzr3OsSDOtc+AzrnPg8+Ez4HOrc+IzrXPhM61IM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61zrrPhM+Nz4DPic+DzrcgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM68zrXOs86tzrjPhc69z4POtyDPg861IM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgz4TOvyDOuc+Dz4TOv8+BzrnOus+MIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CICjOsc69z4TOr8+Dz4TPgc6/z4bOtyDPg861zrnPgc6sKSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnzpcgz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrcgzrrOsc+EzrfOs86/z4HOr86xIM+Azr/PhSDOtc68z4bOsc69zq/Ots61z4TOsc65LCDOtc6szr0gzrTOtc69IM6tz4fOtc65IM61z4DOuc67zrXOs861zq8gzrrOsc68zq/OsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ86kzr8gzrHOvc6xzrPOvc+Jz4HOuc+Dz4TOuc66z4wgzrPOuc6xIM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4IsIM+ALs+HLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gzpcgz4DPgc6/zrXPgM65zrvOv86zzq4gzrXOr869zrHOuSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICfOoM+Bzr/Ous6xzrvOtc6vIM6xz4XPhM+MzrzOsc+EzrEgz4TOt869IM61z4DOr866zrvOt8+DzrcgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnzojOus60zr/Pg863IFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ86IzrrOtM6/z4POtyBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ86jzrrOsc69zrTOrM67zrcgzq3Ous60zr/Pg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ86VzqzOvSDOtyDOtc66z4TOrc67zrXPg863IM+Ezr/PhSBDb25maWdJdGVtQUNMIM68z4DOv8+BzrXOryDOvc6xIM6xz4DOv8+GzrXPhc+HzrjOtc6vIM68zrUgz4TOv869IM6tzrvOtc6zz4fOvyDPhM+Jzr0gzrXOvs6xz4HPhM6uz4POtc+Jzr0gz4TPic69IM+AzrXOtM6vz4nOvSDPgM6/z4Ugzq3Ph86/z4XOvSDOsc+Azr/OuM63zrrOtc+Fz4TOtc6vIM+Dz4TOt869IM+Az4HOv8+Dz4nPgc65zr3OriDOvM69zq7OvM63LiDOkc+Fz4TPjCDOvM+Azr/Pgc61zq8gzr3OsSDOss61zrvPhM65z47Pg861zrkgz4TOv8+Fz4Igz4fPgc+Mzr3Ov8+Fz4Igz4bPjM+Bz4TPic+DzrfPgiDPhM+Jzr0gz4bOv8+BzrzPjs69LCDOsc67zrvOrCDPgM+Bzq3PgM61zrkgzr3OsSDOsc+AzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8sIM61zqzOvSDPgM+Bz4zOus61zrnPhM6xzrkgzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc63zrjOv8+Nzr0gQUNMTW9kdWxlcyDOs865zrEgSVRTTUNvbmZpZ0l0ZW0tIM66zrHOuSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnzqDOv865zrXPgiDOs861zr3Ouc66zq3PgiDPgM67zrfPgc6/z4bOv8+Bzq/Otc+CIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOtc+AzrnOus61z4bOsc67zq/OtM6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ866zrHPhM63zrPOv8+Bzq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfPgM6xzrPOus+Mz4POvM65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfOvM61z4TOsc+AzrHPgc6xzrPPic6zzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfPgM+Bzr/PgM6xz4HOsc6zz4nOs865zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnz4DOsc+BzrHOs8+JzrPOuc66z4wnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgzq/Ovc+Ez4POtc+CICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ86hzqzPhs65IDE5IM65zr3PhM+Dz47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnzqHOrM+GzrkgMjEgzrnOvc+Ez4PPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDOr869z4TPg861z4IgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICfOoc6sz4bOuSAyMyDOuc69z4TPg8+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IM6vzr3PhM+DzrXPgiAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgzq/Ovc+Ez4POtc+CICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSDOr869z4TPg861z4IgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgzq/Ovc+Ez4POtc+CICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSDOr869z4TPg861z4IgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IM6vzr3PhM+DzrXPgiAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgzq/Ovc+Ez4POtc+CICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDOr869z4TPg861z4IgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDOr869z4TPg861z4IgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgzq/Ovc+Ez4POtc+CICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgzq/Ovc+Ez4POtc+CICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgzq/Ovc+Ez4POtc+CICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnzpvOv86zzrnPg8+EzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnzprOsc+EzrHOvc6/zrzOriDOtM65zrXPhc64z43Ovc+DzrXPic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfOlM65zrHPh861zrnPgc65z4PPhM6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnzpHOvc6xzrvOv86zzrnOus+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ86kz43PgM6/z4Igz4PPhc+DzrrOtc+Fzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnzqfPic+BzrfPhM65zrrPjM+EzrfPhM6xIM68z4DOsc+EzrHPgc6vzrHPgiAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ86kz43PgM6/z4IgzrzPgM6xz4TOsc+Bzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnzprPhM6vz4HOuc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfOlM65zrHPg8+Nzr3OtM61z4POtyDOtM65zrHPjc67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ86azrHPhM63zrPOv8+Bzq/OsSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ86nz4nPgc63z4TOuc66z4zPhM63z4TOsSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnzqfPic+BzrfPhM65zrrPjM+EzrfPhM6xIM6xzr3OrCDOus6sz4HPhM6xIM6zz4HOsc+GzrnOus+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDOus6sz4HPhM6xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfOkc69zrHOs869z47Pg8+EzrfPgiDOus6xz4HPhM+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOus6sz4HPhM6xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIM+AzrXOu86xz4TPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ86bzr/Os865z4POvM65zrrPjCDPgM61zrvOrM+EzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnzprOsc+EzrfOs86/z4HOr86xIM+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfOoc+FzrjOvM+Mz4Igz4HOv867zr/Os865zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnzqTOsc+Hz43PhM63z4TOsSDPgc6/zrvOv86zzrnOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfOoM65z4PPhM6/z4DOv865zrfPhM65zrrOrCDPhc+Azr/Os8+BzrHPhs6uz4IgzrrPjs60zrnOus6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfOpM63zrvOrc+Gz4nOvc6/IM+Dz4XOvc60zrnOrM+DzrrOtc+IzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ86jz4XOvM6yzr/Phc67zrXPhc+EzrnOus6uIM+Dz4XOvM+Gz4nOvc6vzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ86Vz4DOuc66zr/Ouc69z4nOvc6vzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ86Vz4DOuc66zr/Ouc69z4nOvc6uz4PPhM61IM68zrUgz4TOv869IM60zrnOsc69zr/OvM6tzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfOlM65zrHPh861zq/Pgc65z4POtyDOtc68z4DOv8+BzrXPhc68zrHPhM6/zrrOuc6yz4nPhM6vz4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ86jz43OvM6yzrHPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM+Dz43OvM6yzrHPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfOoM61z4HOr86/zrTOv8+CIM+Dz43OvM6yzrHPg863z4IgzrHPgM+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ86gzrXPgc6vzr/OtM6/z4Igz4PPjc68zrLOsc+DzrfPgiDOrc+Jz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnzpHPg8+Nz4HOvM6xz4TOvyDPhM63zrvOrc+Gz4nOvc6/ICjPhM63zrvOrc+Gz4nOvc6/IERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ86czr/Ovc6szrTOsSDOus+Mz4PPhM6/z4XPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ86Rz4HOuc64zrzPjM+CIM6xzrTOtc65z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgzrTOt868zrnOv8+Fz4HOs86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnzqDPgc6/z4POsc+BzrzOv8+DzrzOrc69zr8gz4HOrM+GzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgzprPgc6xz4TOt868zq3Ovc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDPhM6/z4Ugz4TOuc68zr/Ou86/zrPOr86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM+AzrHPgc6xzrPOs861zrvOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM+Hzr/Pgc6uzrPOt8+DzrfPgiDOtc6zzrPPjc63z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM66z4XOus67zr/Phs6/z4HOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ86Vz4DOuc+Ez4HOsc+Azq3Ots65zrEgzrXPgM65z4bOrM69zrXOuc6xIM61z4HOs86xz4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIM+Fz4DOv86zz4HOsc+Gzq7PgiDOtc6zzrPPgc6sz4bPic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnzqHOrM+GzrkgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgzrfOu861zrrPhM+Bzr/Ovc65zrrOv8+NIM+EzrHPh8+FzrTPgc6/zrzOtc6vzr/PhSAoz4DOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfOo8+NzrzOss6xz4POtyDOtc+BzrPOsc+Dzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnzpTOuc61z43OuM+Fzr3Pg863IElQIM+Ezq3Ou86/z4XPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ86kzq3Ou86/z4Igz4TOt8+CIM+Dz4TOrs+BzrnOvs63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDOu86uzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfOlc6+z4nPhM61z4HOuc66z4zPgiDPg866zrvOt8+Bz4zPgiDOtM6vz4POus6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfOpM61zq/Ph86/z4Igz4DPgc6/z4PPhM6xz4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ86Rz4DOv864zq7Ous61z4XPg863IM61zr3Orc+BzrPOtc65zrHPgiDOvM61IM65z4DPhM6szrzOtc69zr8gz4TPgc6/z4fPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ86gzrHPgc6szrPOv869z4TOsc+CIM68zr/Pgc+Gzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSBGcmFuY2hpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfOk861zr3Ouc66zq3PgiDPgM67zrfPgc6/z4bOv8+Bzq/Otc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnzprOrM+Bz4TOtc+CIM6zz4HOsc+GzrnOus+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ86azqzPgc+EzrEgzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ86lzrvOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfOnM6/zr3PhM6tzrvOvyDPhc67zrnOus6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnzpLOrM+Bzr/PgiDPhc67zrnOus6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ86RzrrOv8+Fz4PPhM65zrrOrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ86gz4HPic+Ez4zOus6/zrvOu86/IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ86UzrnOsc+HzrXOr8+BzrnPg863IM+EzrHPhc+Ez4zPhM63z4TOsc+CIM66zrHOuSDPgM+Bz4zPg86yzrHPg863z4IgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM6xz4DOv86zz4HOsc+Gzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ86az4zPg8+Ezr/PgiDOvM61z4TOsc+Ez4HOv8+Azq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+EzrnOvM6/zrvOv86zzq/Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnzqDOu863zrrPhM+Bzr/Ou8+MzrPOuc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ86fzrjPjM69zrcgTENEICjOn864z4zOvc63IM+FzrPPgc+Ozr0gzrrPgc+Fz4PPhM6szrvOu8+Jzr0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfOn864z4zOvc63IExFRCAozrTOr86/zrTOv8+CIM61zrrPgM6/zrzPgM6uz4Igz4bPic+Ez4zPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnzqPPhM6xzrjOtc+Bz4wgz4TOt867zq3Phs+Jzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfOps6/z4HOt8+Ez4zPgiDPhc+Azr/Ou86/zrPOuc+Dz4TOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnzpPOtc+JzrPPgc6xz4bOuc66z4wgz4DOu86sz4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDE6IM6mz4XPg865zrrPjCDPg8+Ez4HPjs68zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDI6IM6jz4TPgc+OzrzOsSDOts61z43Ovs63z4IgzrTOtc60zr/OvM6tzr3Pic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfOo8+Ez4HPjs68zrEgMzogzqPPhM+Bz47OvM6xIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ86Vz4DOr8+AzrXOtM6/IDM6IM6Vz4DOr8+AzrXOtM6/IM60zrnOus+Ez43Ov8+FIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDQ6IM6jz4TPgc+OzrzOsSDOvM61z4TOsc+Gzr/Pgc6sz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA1OiDOo8+Ez4HPjs68zrEgz4PPhc69z4zOtM6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDY6IM6jz4TPgc+OzrzOsSDPgM6xz4HOv8+Fz4POr86xz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDc6IM6jz4TPgc+OzrzOsSDOtc+GzrHPgc68zr/Os86uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDOvM6vz4POuM+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDOrM60zrXOuc6xz4Igz4fPgc6uz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfOms67zrXOuc60zq8gzqzOtM61zrnOsc+CIM+Hz4HOrs+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM6szrTOtc65zrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnzqDOtc+Bzq/Ov860zr/PgiDOrM60zrXOuc6xz4IgzrHPgM+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnzqDOtc+Bzq/Ov860zr/PgiDOrM60zrXOuc6xz4IgzrzOrc+Hz4HOuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnzpzPgM6xz4TOsc+Bzq/OsSDPhs+Jz4PPhs6/z4HOuc66zr/PjSDPg865zrTOrs+Bzr/PhSDOu865zrjOr86/z4UgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfOnM+AzrHPhM6xz4HOr86xIM65z4zOvc+Ez4nOvSDOu865zrjOr86/z4UgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfOo8+NzrzOss6xz4POtyDOtM6xzr3Otc6vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnzpLPgc6vz4POus61z4TOsc65IM+Dz4TOt869JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ86TzrXPic6zz4HOsc+GzrnOus+MIM68zq7Ous6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ86azrHPhM6xz4POus61z4XOsc+Dz4TOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfOnM6tzrPOuc+Dz4TOtyDPh8+Jz4HOt8+EzrnOus+Mz4TOt8+EzrEgz4bOv8+Bz4TOr86/z4UgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ86czr3Ors68zrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM68zr3Ors68zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDOus65zr3Ot8+Ezr/PjSDPhM63zrvOtc+Gz47Ovc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnzprOuc69zrfPhM+ML861zr3Pg8+JzrzOsc+Ez4nOvM6tzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ86czr/Ovc+Ezq3Ou86/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnzqDOtc+BzrnOs8+BzrHPhs6uIM68zr/Ovc+Ezq3Ou86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnzpHOvc6szrvPhc+Dzrcgzr/OuM+Mzr3Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ86czq3Os861zrjOv8+CIM6/zrjPjM69zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ86gzr/Ovc+Ezq/Ous65JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfOlM6vzrrPhM+Fzr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnzqDOu863z4HOv8+Gzr/Pgc6vzrXPgiDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnzqDOu863z4HOv8+Gzr/Pgc6vzrXPgiDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnzpXPgM6vz4DOtc60zr8gzrTOuc66z4TPjc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfOnM+AzrHPhM6xz4HOr86xIM69zrnOus61zrvOr86/z4UtzrrOsc60zrzOr86/z4UgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnzpzPgM6xz4TOsc+Bzq/OsSDOvc65zrrOtc67zq/Ov8+FLc68zrXPhM6xzrvOu865zrrOv8+NIM+FzrTPgc65zrTOr86/z4UgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzrzOtyDOsc+Azr/Ous6szrvPhc+IzrfPgiAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ86jzrfOvM61zrnPic68zrHPhM6sz4HOuc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnzpHPgc65zrjOvM+Mz4IgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICfOkc+BzrnOuM68z4zPgiDOvM6/zr3OrM60z4nOvSBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrrOsc+Bz4TPjs69IM6zz4HOsc+GzrnOus+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ86fzrjPjM69zrcgT0xFRCAozr/Pgc6zzrHOvc65zrrOriDOtM6vzr/OtM6/z4IgzrXOus+Azr/OvM+Azq7PgiDPhs+Jz4TPjM+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfOm861zrnPhM6/z4XPgc6zzrnOus+MIM66z4zPg8+Ezr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDPgM6xz4HOsc6zzrPOtc67zq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnzobOu867zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ86Izr7Ov860zr/OuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfOo8+FzrzPhs+Jzr3Or86xIM61z4TOsc65z4HOuc66zq7PgiDPg8+Hzq3Pg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDPhM63zrvOtc+Gz47Ovc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ86kz43PgM6/z4Igz4TOt867zrXPhs+Ozr3Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnzqbPhc+DzrnOus6/zq8gz4DPhc+Bzq7Ovc61z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfOoM6xz4HOrM60zr/Pg863IM65z4PPh8+Nzr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ86RzrPOv8+BzqzPg8+EzrfOus61IM+Dz4TOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnzpLOrM64zr/PgiDPgc6xz4bOuc6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfOnM6/zr3OrM60zrXPgiBSYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnzpTPic68zqzPhM65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICfOms6sz4HPhM6xIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfOo8+NzrzOss6xz4POtyDPgM+OzrvOt8+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfOlM6/z4HPhc+Gzr/Pgc65zrrPjCDPhM63zrvOrc+Gz4nOvc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ86jz4bPgc6xzrPOuc+DzrzOrc69zrcgzrzPgM6xz4TOsc+Bzq/OsSDOvM6/zrvPjc6yzrTOv8+FLc6/zr7Orc6/z4IgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfOkc+Nzr7Pic69IM6xz4HOuc64zrzPjM+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ86bzr/Os865z4POvM65zrrPjCDOtM65zrHOus6/zrzOuc+Dz4TOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgz4DOsc+Bzr/Ph86uz4Igz4XPgM63z4HOtc+DzrnPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnzpXPhM65zrrOrc+EzrEgz4XPgM63z4HOtc+Dzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ86kz43PgM6/z4Igz4XPgM6/zrTOv8+Hzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ86bzr/Os865z4POvM65zrrPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ86fzrzOuc67zrfPhM6tz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnzprOsc69zr/Ovc65zrrOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnzpTOuc61z43OuM+Fzr3Pg863IElQIM6tzr3Osc+Bzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfOkc+Azr/OuM6uzrrOtc+Fz4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ86UzrnOsc68zq3Pgc65z4POvM6xIM6xz4DOv864zq7Ous61z4XPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfOmM+FzrPOsc+Ez4HOuc66zq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ86gzrXPgc6vzrvOt8+IzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfOm861z4DPhM+Mz4Igz4DOtc67zqzPhM63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ86dzq7OvM6xz4TOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfOo8+Fzr3Ov867zrnOus6uIM68zr3Ors68zrcgUkFNIM66zqzPgc+EzrHPgiDOs8+BzrHPhs65zrrPjs69IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfOo8+Fzr3Ov867zrnOus6uIM68zr3Ors68zrcgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ86fzrjPjM69zrcgzrHPhs6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfOoM+Nz4HOs86/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ86UzrnOsc69zr/OvM6tzrHPgiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICfOkc66zr/Phc+Dz4TOuc66zqwgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnzqTOt867zq3Phs+Jzr3OvyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/en_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgc3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0byBhbm90aGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ05ldHdvcmsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50IFN0YXRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3J5IENvbnRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aWV3JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUnVuIFNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RlcHRoIExldmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBJbi9PdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnTGFzdCBjaGFuZ2VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0xhc3QgY2hhbmdlZCBieSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1lvdXIgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBTZWFyY2gnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ09iamVjdCBUeXBlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZWVkIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05vIGFjY2VzcyBpcyBnaXZlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOZXcgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnU3VibmV0IE1hc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAncHJpbnRlZCBieSAlcyBhdCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdObyB2ZXJzaW9ucyBmb3VuZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnd2FybmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdObyBwZXJtaXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBpbnZhbGlkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Nob3duIGNvbmZpZyBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEZXBsb3ltZW50IFN0YXRlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0JldHdlZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmsgUmVmZXJlbmNpbmcgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5uZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gSGlkZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTaG93bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0Fzc2lnbmVkIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgU2V0dGluZ3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZyBpdGVtIGhpc3RvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZyBpdGVtIHByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdEZWZpbml0aW9uIFVwZGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdEZXBsb3ltZW50IFN0YXRlIENvbG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOYW1lIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtYmVyIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1Blcm1pc3Npb24gR3JvdXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdTZWFyY2ggY29uZmlnIGl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2ZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYgaW5jaGVzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41IGluY2hlcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCBpbmNoZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40IGluY2hlcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIGluY2hlcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdBY2NvdW50aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRkcmVzcyBBbGxvY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnQXBwbGlhbmNlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJ5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWlsZGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzIEludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBDbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdHkgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnQ2FyZCBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdDYXJkIFJlYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdDYXJkIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NsaWVudCBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnQ2xpZW50IFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NsaWVudCBjYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0NvbmZlcmVuY2UgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdDb25zdWx0aW5nIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdCBEaXN0cmlidXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lciBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0NvbnRyYWN0IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdDb250cmFjdCBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdDb250cmFjdCBwZXJpb2QgdW50aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0Nvc3QgdW5pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0NvdW50IG9mIGxpY2Vuc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdDcmVhdGlvbiBEYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdDdXN0b20gUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLVNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0ZSBvZiBJbnZvaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRlIG9mIE9yZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRlIG9mIFdhcnJhbnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGUgb2YgcmVsZWFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnRW1wbG95bWVudCBDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRW5kIG9mIHN1cHBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdFeHBpcnkgRGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuYWwgSGFyZCBEcml2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm0gRmFjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnR2VuZXJhbCBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYXBoaWNzIENhcmRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkd2FyZSBNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZSBXZWlnaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBQcm90b2NvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yeSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0bWVudCBjb3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ludm9pY2UgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2V5Ym9hcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhbmRsaW5lIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYXllciAzOiBOZXR3b3JrIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTGVhc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5zZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2Vuc2UgS2V5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2Vuc2UgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zZSBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc2UgcGVyaW9kIHVudGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTG9hbiBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0xvY2F0ZWQgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdNYW51ZmFjdHVyZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWVtb3J5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxlIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsIERlc2NyaXB0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3IgUmVzb2x1dGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIFNpemUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNb3VzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0d29yayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR3b3JrIEluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHdvcmsgSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHdvcmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTnVtYmVyIG9mIENQVXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ051bWJlciBvZiBncmFwaGljcyBjYXJkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdPcGVyYXRpbmcgY29zdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT3JkZXIgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNoaXAgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnUGhvbmUgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdQaG9uZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnUGh5c2ljYWwgQ29yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdQb3dlciBEZWxpdmVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ1B1cmNoYXNlZCBhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBEZXB0aCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2sgVW5pdHMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSb29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIENhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1NhbGVzIENvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0ZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpYWxudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyIFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlIFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdTb2NrZXQgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnU3BlYWtlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9yYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU3RvcmFnZSBQYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdTdWJzaWRpYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTdW1tYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1RocmVhZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbiBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG93ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBIdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/en_GB_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRGVwbG95bWVudCBzdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIHRvIGFub3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbiBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCBTdGF0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yeSBDb250ZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20gdmlldyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdSdW4gU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGZvciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRGVwdGggTGV2ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIEluL091dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdMYXN0IGNoYW5nZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFzdCBjaGFuZ2VkIGJ5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnWW91ciBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIFNlYXJjaCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnT2JqZWN0IFR5cGUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0ZXIgYnkgdHlwZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgaXMgZ2l2ZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmV3IHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAncHJpbnRlZCBieSAlcyBhdCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnSW52YWxpZCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBub3QgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHZlcnNpb25zIGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd3YXJuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05vIFBlcm1pc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIGludmFsaWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTZWFyY2ggcGFyYW1zIGludmFsaWQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2hvd24gY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pYyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluayBSZWZlcmVuY2luZyBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFpbnRlbmFuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbm5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhaXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBIaWRkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFNob3duJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQXNzaWduZWQgQ0lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBTZXR0aW5ncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWcgaXRlbSBhZGQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnQ29uZmlnIGl0ZW0gZWRpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlnIGl0ZW0gcHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlnIGl0ZW0gem9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIFRyZWUgVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGlvbiBVcGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdEZXBsb3ltZW50IFN0YXRlIENvbG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOYW1lIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtYmVyIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIHVzZXIgbGlzdCBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIHVzZXIgbGlzdCBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZ3VlIGF0dHJpYnV0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzc2lvbiBHcm91cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2ZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYgaW5jaGVzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41IGluY2hlcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCBpbmNoZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40IGluY2hlcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIGluY2hlcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdBY2NvdW50aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRkcmVzcyBBbGxvY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnQXBwbGlhbmNlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJ5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWlsZGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzIEludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBDbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdHkgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnQ2FyZCBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdDYXJkIFJlYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdDYXJkIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NsaWVudCBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnQ2xpZW50IFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NsaWVudCBjYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0NvbmZlcmVuY2UgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdDb25zdWx0aW5nIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdCBEaXN0cmlidXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lciBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0NvbnRyYWN0IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdDb250cmFjdCBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdDb250cmFjdCBwZXJpb2QgdW50aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0Nvc3QgdW5pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0NvdW50IG9mIGxpY2Vuc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdDcmVhdGlvbiBEYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdDdXN0b20gUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLVNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0ZSBvZiBJbnZvaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRlIG9mIE9yZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRlIG9mIFdhcnJhbnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGUgb2YgcmVsZWFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnRW1wbG95bWVudCBDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRW5kIG9mIHN1cHBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdFeHBpcnkgRGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuYWwgSGFyZCBEcml2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm0gRmFjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnR2VuZXJhbCBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYXBoaWNzIENhcmRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkd2FyZSBNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZSBXZWlnaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBQcm90b2NvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yeSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0bWVudCBjb3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ludm9pY2UgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2V5Ym9hcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhbmRsaW5lIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYXllciAzOiBOZXR3b3JrIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTGVhc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5zZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2Vuc2UgS2V5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2Vuc2UgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zZSBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc2UgcGVyaW9kIHVudGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTG9hbiBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0xvY2F0ZWQgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdNYW51ZmFjdHVyZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWVtb3J5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxlIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsIERlc2NyaXB0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3IgUmVzb2x1dGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIFNpemUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNb3VzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0d29yayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR3b3JrIEluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHdvcmsgSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHdvcmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTnVtYmVyIG9mIENQVXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ051bWJlciBvZiBncmFwaGljcyBjYXJkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdPcGVyYXRpbmcgY29zdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT3JkZXIgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNoaXAgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnUGhvbmUgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdQaG9uZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnUGh5c2ljYWwgQ29yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdQb3dlciBEZWxpdmVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ1B1cmNoYXNlZCBhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBEZXB0aCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2sgVW5pdHMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSb29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIENhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1NhbGVzIENvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0ZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpYWxudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyIFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlIFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdTb2NrZXQgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnU3BlYWtlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQIEFkZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1N0b3JhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdTdG9yYWdlIFBhcnRpdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1N1YnNpZGlhcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1N1bW1hcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVGhyZWFkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ1RvdWNoc2NyZWVuIE1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIEh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIEhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/es_CO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0NPX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgY2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0FjY2nDs24gbWFzaXZhIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGVsIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdFbmxhY2UgYSBvdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIG5vIHbDoWxpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0VsIG7Dum1lcm8gZGUgb3RybyBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZWwgcXVlIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbiBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsO6bWVybyBkZSB2ZXJzacOzbiB5YSBlc3TDoSBlbiB1c28gcG9yIGVsIENvbmZpZ0l0ZW1zIGNvbiBlbCBzaWd1aWVudGUgbsO6bWVybyAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYSBkZSBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWEgQ29udGVuaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudG9zIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/QnVzY2FyIHRhbWJpw6luIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdEZW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbW8gY2FtYmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbW8gY2FtYmlvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1N1cyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIENvbmZpZ0l0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcG8gZGUgb2JqZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJhciBwb3IgdGlwbyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGNsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBmdW5jaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVGVuZ2EgZW4gY3VlbnRhIHF1ZSB0YW1iacOpbiBzZSBjcmVhcsOhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgeSBsYXMgY2xhc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRpZW50ZXMgeSBxdWUgbm8gc2UgZWxpbWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfCv1F1aWVyZXMgY29udGludWFyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfCoU5lY2VzaXRhIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbmljacOzbiBubyBlcyB1biBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWaXNpw7NuIGdlbmVyYWw6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBpbmRpY2FkbyBuaW5nw7puIENvbmZpZ0l0ZW1JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdOZWNlc2l0YSBhbCBtZW5vcyB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTm8gdGllbmUgYWNjZXNvIGRlIGVzY3JpdHVyYSBhIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfCoU5vIHNlIGhhIGRlZmluaWRvIGxhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gIiVzIiBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIHNlIGhhIHBvZGlkbyBib3JyYXIgZWwgY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ8KhTm8gc2UgaGEgZW5jb250cmFkbyBuaW5ndW5hIHZlcnNpw7NuIHBhcmEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIMKhbm8gc2UgZGEgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHB1ZWRvIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCBubyB0ZW5nbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOdWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGVsIGluY2lkZW50ZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0VubGFjZSBhICVzICh0eXBlPSVzKSBhw7FhZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnRW5sYWNlIGEgJXMgKHR5cGU9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pY2nDs24gZGUgQ29uZmlnSXRlbSBhY3R1YWxpemFkYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tYnJlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhY3R1YWxpemFkbyBkZSAiJXMiIGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzacOzbiAlcyBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaW5kaWNhIG5pbmfDum4gQ29uZmlnSXRlbUlEIG5pIFZlcnNpb25JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIGNvbmNlZGlkbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJlc28gcG9yICVzIGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnwqFDbGFzc0lEIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDbGFzc0lELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05vIHNlIGhhbiBjb25jZWRpZG8gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWd1cmFyIHJlc3VsdGFkb3MgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgwqFubyBzZSBkYW4gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBkZXNwbGllZ3VlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdGllbmUgcGVybWlzb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIGVzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0VzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBUaXBvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW7DoW1pY28gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdFc3TDoXRpY2EgKFZlcnNpw7NuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyZW5jaWEgZGUgZW5sYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NpIGVzdGUgZW5sYWNlIHNlIGFwbGljYSBhbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBvIGEgbGEgdmVyc2nDs24gZXN0w6F0aWNhIGRlbCBvYmpldG8gZGUgcmVmZXJlbmNpYS4gRWwgY8OhbGN1bG8gZGVsIGVzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBzw7NsbyBzZSByZWFsaXphIGVuIGxvcyBlbmxhY2VzIGRpbsOhbWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBlbCBhdHJpYnV0byBwb3IgZWwgcXVlIHNlIGJ1c2NhcsOhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIGVzdHJ1Y3R1cmEgYmFzZSBubyBlcyB2w6FsaWRhLiBQb3IgZmF2b3IsIHByb3BvcmNpb25lIHVuIGhhc2ggY29uIGRhdG9zIGVuIGZvcm1hdG8gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdFcyBuZWNlc2FyaW8gY29tZW56YXIgbGEgY2FkZW5hIFlBTUwgY29uIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05vIHNlIGhhIHBvZGlkbyBwdXJnYXIgbGEgdGFibGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gc2UgaGFuIGVuY29udHJhZG8gY2FtcG9zIGRpbsOhbWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05vIHNlIGhhIHBvZGlkbyBpbnNlcnRhciBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGFkYXMgMCBmaWxhcyBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGFyL2V4cG9ydGFyIGFyY2hpdm9zIGFkanVudG9zIChjb21vIMO6bHRpbWFzIGVudHJhZGFzIHBvciBsw61uZWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2nDs24gQ2FkZW5hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIGFsIHNpbmNyb25pemFyIGxhcyBkZWZpbmljaW9uZXMuIFBvciBmYXZvciwgY29tcHJ1ZWJlIGVsIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1RpZW5lIGRlZmluaWNpb25lcyBkZSBJVFNNQ29uZmlnSXRlbSBxdWUgbm8gZXN0w6FuIHNpbmNyb25pemFkYXMuIERlc3BsaWVndWUgbG9zIGNhbWJpb3MgZW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIGRlIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQ2FkdWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW50ZW5pbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ0NvbnN1bHRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdQcnVlYmFzL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQyBhc2lnbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdJQyBhc2lnbmFkb3MgYSBsYSBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNpZ25hZG9zIGFsIHVzdWFyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2nDs24gZGUgbGEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzY2EgdW4gbm9tYnJlIMO6bmljbyBzw7NsbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgYSBsYSBob3JhIGRlIGJ1c2NhciBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBub21icmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgY2FkZW5hcyBkZSB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRWxpamEgYXRyaWJ1dG9zIHBhcmEgYWN0aXZhciBsYSBjcmVhY2nDs24gZGUgdW5hIG51ZXZhIHZlcnNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFbGlqYSBsYXMgY2F0ZWdvcsOtYXMgcXVlIGRlc2VhIGFzaWduYXIgYSBlc3RhIGNsYXNlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBjb2x1bW5hIHBhcmEgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbmFzIHF1ZSBzZSBwdWVkZW4gZmlsdHJhciBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBOb3RhOiBTb2xvIHNlIHBlcm1pdGVuIGF0cmlidXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24geSBjYW1wb3MgZGluw6FtaWNvcyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWcgaXRlbSBhZGQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdGFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcXVlIHBlcm1pdGUgZWwgcmVnaXN0cm8gZW4gZWwgaGlzdG9yaWFsIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGFjdHVhbGl6YSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGEgc3UgZGVmaW5pY2nDs24gYWN0dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZyBpdGVtIHByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXIgem9vbSBkZSBlbGVtZW50b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgZW4gw6FyYm9sIGRlIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgZGUgbGFzIHNpZ3VpZW50ZXMgY2xhc2VzIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ29uZmlndXJhY2nDs24gRWxlbWVudG8gTMOtbWl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhY2nDs24gTMOtbWl0ZSBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXNlIGRlIGRhdG9zIGRlIGdlc3Rpw7NuIGRlIGxhIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOzZHVsbyBtYXNpdm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBidXNjYXIgZW5ydXRhZG9yIGJhY2tlbmQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlZSB5IGdlc3Rpb25lIGxhcyBkZWZpbmljaW9uZXMgZGUgbG9zIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhIFRpY2tldHMgcGFyYSBDb25maWdJdGVtcyBlbiBtb21lbnRvcyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xvcyBjbGllbnRlcyBwdWVkZW4gdmVyIGxhcyB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0xvcyBjbGllbnRlcyB0aWVuZW4gbGEgcG9zaWJpbGlkYWQgZGUgY2FtYmlhciBtYW51YWxtZW50ZSBlbnRyZSB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0b3MgcHJlZGV0ZXJtaW5hZG9zIHF1ZSBzZSB1dGlsaXphcsOhbiBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD1hw7FvO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9w5psdGltbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0b3MgcG9yIGRlZmVjdG8gYSB1dGlsaXphciBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgY29uZmlnLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIGFjY2lvbmVzIGRvbmRlIHVuIGJvdMOzbiBkZSBjb25maWd1cmFjacOzbiBlc3TDqSBkaXNwb25pYmxlIGVuIGVsIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZWpvIikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgYWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50IC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlbmFzIGRlIHZlcnNpw7NuLiBTw7NsbyBzZSB1dGlsaXphIHNpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBzZSBlc3RhYmxlY2UgZW4gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBjb25qdW50byBkZSBjb25kaWNpb25lcyBiYWpvIGxhcyBjdWFsZXMgdW4gY2xpZW50ZSBwdWVkZSB2ZXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uIExhcyBjb25kaWNpb25lcyBwdWVkZW4gcmVzdHJpbmdpcnNlIG9wY2lvbmFsbWVudGUgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBFbCBub21icmUgZXMgZWwgw7puaWNvIGF0cmlidXRvIG9ibGlnYXRvcmlvLiBTaSBubyBzZSBlc3BlY2lmaWNhIG5pbmd1bmEgb3RyYSBvcGNpw7NuLCB0b2RvcyBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlcsOhbiB2aXNpYmxlcyBlbiBlc2EgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Byb3BpZWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgcmVxdWVyaWRvcyBwYXJhIGJ1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgcmVxdWVyaWRvcyBwYXJhIGVzdGFibGVjZXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuYSBsaXN0YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBsYXMgZXRpcXVldGFzIGRlIHRpcG8gZGUgZW5sYWNlIGRlYmVuIG1vc3RyYXJzZSBlbiBsYXMgY29uZXhpb25lcyBkZSBsb3Mgbm9kb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmUgZXhwcmVzaW9uZXMgcmVndWxhcmVzIGluZGl2aWR1YWxtZW50ZSBwYXJhIGNhZGEgY2xhc2UgQ29uZmlnSXRlbSBwYXJhIGNvbXByb2JhciBlbCBub21icmUgQ29uZmlnSXRlbSB5IG1vc3RyYXIgbG9zIG1lbnNhamVzIGRlIGVycm9yIGNvcnJlc3BvbmRpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnN0YXIgZGUgdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW5hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8gZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lIGxhIHByb2Z1bmRpZGFkIGRlIGxhcyByZWxhY2lvbmVzIHF1ZSBzZSBtb3N0cmFyw6FuIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJDbGF2ZSIgZGViZSB0ZW5lciBlbCBub21icmUgZGVsIENhbXBvIERpbsOhbWljbyBlbiBlc3RlIGNhc28gXCdYXCcsICJDb250ZW5pZG8iIGRlYmUgdGVuZXIgZWwgdmFsb3IgZGVsIENhbXBvIERpbsOhbWljbyBkZXBlbmRpZW5kbyBkZWwgdGlwbyBkZSBDYW1wbyBEaW7DoW1pY28sIFRleHRvOiBcJ2EgdGV4dFwnLCBEZXNwbGVnYWJsZTogXCcxXCcsIEZlY2hhL0hvcmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2Vjb25kPTU5O1wnIHkgbyBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc3Vib2JqZXRvIHBvciBkZWZlY3RvIGRlIGxhIGNsYXNlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zdGFyIGRlIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIGRlbCBjb21wb25lbnRlIGVkaXRvciBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6Y2EgdW4gbsO6bWVybyAocMOteGVsZXMpIG8gdW4gdmFsb3IgcG9yY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBkZWwgZWRpdG9yIGRlIGRlZmluaWNpb25lcyBDSSBlbiBsYSBpbnRlcmZheiBkZSBhZG1pbmlzdHJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBkZSBsb3MgZXN0YWRvcyBpbmNpZGVudGVzIGRlIGFsdG8gKHBvciBlamVtcGxvLCBjcmljaXRhbCkgYSBiYWpvIChwb3IgZWplbXBsbywgZnVuY2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSByZWxldmFudGVzIGVuIGxvcyBxdWUgbG9zIHRpY2tldHMgdmluY3VsYWRvcyBwdWVkZW4gYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBDSXMgZW4gbGEgdmlzdGEgY29tcGxlamEgZGUgbGEgdGFibGEgZGUgZW5sYWNlcywgZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGxsZXZhciBjb21vIHByZWZpam8gZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHkgZG9zIHB1bnRvcyBkb2JsZXMgKHBvciBlamVtcGxvLCBPcmRlbmFkb3I6OikuIEhheSBhbGd1bm9zIENJLUF0cmlidXRvcyBxdWUgc29uIGNvbXVuZXMgYSB0b2RvcyBsb3MgQ0lzIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBhcmEgbW9zdHJhciBsb3MgQXRyaWJ1dG9zLUNJIGluZGl2aWR1YWxlcyB0YWwgeSBjb21vIHNlIGRlZmluZW4gZW4gbGEgRGVmaW5pY2nDs24tQ0ksIHNlIGRlYmUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGVzcXVlbWEgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBPcmRlbmFkb3IpOiBPcmRlbmFkb3I6OkRpc2NvRHVybzo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjE6OkNhcGFjaWRhZDo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjIsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoyOjpDYXBhY2lkYWQ6OjEuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEgcGFyYSB1bmEgY2xhc2UgQ0ksIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIHBhcmEgIkFjY2nDs24iIGVuIGVsIHRlcmNlciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgcHJpbWVyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgc2VndW5kbyBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIGVubGFjZSAobm9tYnJhZG8gZGVzZGUgbGEgcGVyc3BlY3RpdmEgZGVsIHRpY2tldCkgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgZW5sYXphZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSB0aWNrZXQgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FjdHVhbGl6YWNpw7NuIGRlIGxhIGRlZmluaWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdCb3JyYXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSBDb2xvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBxdWUgbWFyY2EgbGFzIGRlZmluaWNpb25lcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyBubyBzaW5jcm9uaXphZGFzIHNpIGNhbWJpYW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBjb250aWVuZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgY2FtcG9zIElUU00gYWRpY2lvbmFsZXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gZGUgYWNjacOzbiBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHPDs2xvIHBhcmEgbG9zIGdydXBvcyBkZSBsYSBsaXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZhL2Rlc2FjdGl2YSBsYSBmdW5jaW9uYWxpZGFkIGRlIGNvbXByb2JhciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gcGFyYSBub21icmVzIMO6bmljb3MuIEFudGVzIGRlIGhhYmlsaXRhciBlc3RhIG9wY2nDs24gZGViZSBjb21wcm9iYXIgc2kgZXhpc3RlbiBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29uIG5vbWJyZXMgZHVwbGljYWRvcy4gUHVlZGUgaGFjZXJsbyBjb24gZWwgY29tYW5kbyBkZSBjb25zb2xhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgZXN0YWJsZWNlciBjb25maWdpdGVtLXN0YXR1cyBlbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLCB1dGlsaXphZG9zIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvLiBMb3MgY2FtcG9zIHRhbWJpw6luIHNlIGFsbWFjZW5hbiwgcGVybyBubyBzb24gb2JsaWdhdG9yaW9zIHBhcmEgbGEgZnVuY2lvbmFsaWRhZCBnZW5lcmFsLiBMYSBpbmNsdXNpw7NuIGRlIGFuZXhvcyBwdWVkZSBkZXNhY3RpdmFyc2UgcG9uaWVuZG8gbGEgZW50cmFkYSBhIDAgbyBib3Jyw6FuZG9sYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhbG1hY2VuYWRvcyBlbiBlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgdXRpbGl6YW4gcGFyYSBvdHJhcyBjb3NhcyBhZGVtw6FzIGRlIGxhcyBiw7pzcXVlZGFzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGxhIGZ1bmNpb25hbGlkYWQgY29tcGxldGEgdG9kb3MgbG9zIGNhbXBvcyBzb24gb2JsaWdhdG9yaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BhcmEgY2FkYSB3ZWJzZXJ2aWNlIChjbGF2ZSkgc2UgcHVlZGUgZGVmaW5pciB1biBhcnJheSBkZSBjbGFzZXMgKHZhbG9yKSBzb2JyZSBsYXMgcXVlIHNlIHJlc3RyaW5nZSBsYSBpbXBvcnRhY2nDs24uIFBhcmEgdG9kYXMgbGFzIGNsYXNlcyBlbGVnaWRhcywgbyB0b2RhcyBsYXMgY2xhc2VzIGV4aXN0ZW50ZXMsIGxvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYWNpw7NuIHRlbmRyw6FuIHF1ZSBzZXIgZWxlZ2lkb3MgZW4gbGEgY29uZmlndXJhY2nDs24gZGVsIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXllIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdWx0YWRvIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNw7NkdWxvIHBhcmEgY29tcHJvYmFyIGVsIGdydXBvIHJlc3BvbnNhYmxlIGRlIHVuYSBjbGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgY29tcHJvYmFyIGVsIGdydXBvIHJlc3BvbnNhYmxlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ03Ds2R1bG8gcGFyYSBnZW5lcmFyIGVzdGFkw61zdGljYXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tYnJlIE3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ03Ds2R1bG8gbnVtw6lyaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBkZWJlbiBtb3N0cmFyc2UgZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZXRvcyBhIGJ1c2NhciwgY3XDoW50YXMgZW50cmFkYXMgeSBxdcOpIGF0cmlidXRvcyBtb3N0cmFyLiBMb3MgYXRyaWJ1dG9zIENvbmZpZ0l0ZW0gZGViZW4gYWxtYWNlbmFyc2UgZXhwbMOtY2l0YW1lbnRlIGEgdHJhdsOpcyBkZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXNpw7NuIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBjb2xvciBkZSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZ3J1cG9zIGRlIHBlcm1pc29zIGRlIGVqZW1wbG8gZGUgbG9zIGF0cmlidXRvcyBnZW5lcmFsZXMgZGVsIGNhdMOhbG9nby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBkZSBub21icmVzIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBudW3DqXJpY28gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIG3Ds2R1bG8gZGVsIGtpdCBkZSBoZXJyYW1pZW50YXMgZGUgcGxhbnRpbGxhcyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYWN0aXZhZG9yIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnUmVhbGl6YSBsYSBhY2Npw7NuIGNvbmZpZ3VyYWRhIHBhcmEgY2FkYSBldmVudG8gKGNvbW8gSW52b2tlcikgcGFyYSBjYWRhIFdlYnNlcnZpY2UgY29uZmlndXJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwbyBkZSBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgYWNjacOzbiBkZSBhZGp1bnRhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgdmlzdGEgZGUgw6FyYm9sIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBhbXBsaWFjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBhw7FhZGlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIG1hc2l2YSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWRpY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGRlbCBoaXN0b3JpYWwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhbHRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnRGlzcG9zaXRpdm8gZGUgY29waWEgZGUgc2VndXJpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0VzdGFibGV6Y2EgYXV0b23DoXRpY2FtZW50ZSBlbCBlc3RhZG8gZGUgaW5jaWRlbmNpYSBkZSB1biBDSSBjdWFuZG8gc2UgdmluY3VsZSB1biBUaWNrZXQgYSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlIGRlc3BsaWVndWUgZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIHZpbmN1bGFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBvdHJvIG9iamV0byBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWxpbWluYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdmlzdWFsaXphciBsb3MgZW5sYWNlcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gdW5hIHZpc3RhIGVuIMOhcmJvbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGR1cGxpY2FyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZvbHZlciBhdHLDoXMgZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhbXBsaWFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGVsIGhpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKG9yZGVuIGludmVyc28pIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgcG9yIGRlZmVjdG8gcXVlIHNlIG11ZXN0cmEsIHNpIG5vIHNlIHNlbGVjY2lvbmEgbmluZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIHBvciBlamVtcGxvIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQb3IgZGVmZWN0byBlcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBY3RpdmEgYXV0b23DoXRpY2FtZW50ZSBlbCBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRXhwcmVzacOzbiBkZSBjYWRlbmEgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0FjdGl2YWRvciBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2kgc2UgcHVlZGUgZXZpdGFyIGxhIGVqZWN1Y2nDs24gZGUgQ29uZmlnSXRlbUFDTCBjb21wcm9iYW5kbyBsYXMgZGVwZW5kZW5jaWFzIGRlIGNhbXBvcyBlbiBjYWNow6kuIEVzdG8gcHVlZGUgbWVqb3JhciBsb3MgdGllbXBvcyBkZSBjYXJnYSBkZSBsb3MgZm9ybXVsYXJpb3MsIHBlcm8gZGViZSBkZXNhY3RpdmFyc2Ugc2kgc2UgdmFuIGEgdXRpbGl6YXIgQUNMTW9kdWxlcyBwYXJhIElUU01Db25maWdJdGVtLSB5IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdRdcOpIGluZm9ybWFjacOzbiBnZW5lcmFsIHNlIG11ZXN0cmEgZW4gbGEgY2FiZWNlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3Rpdm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcHVsZ2FkYXMgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwdWxnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHB1bGdhZGFzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHB1bGdhZGFzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAxOSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcHVsZ2FkYXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0NyZW1hbGxlcmEgZGUgMjEgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiA5Nyw3OSBjbSAoMzgsNSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnRXN0YW50ZSBkZSAyMyBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcHVsZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHB1bGdhZGFzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwdWxnYWRhcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHB1bGdhZGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHB1bGdhZGFzICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwdWxnYWRhcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcHVsZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHB1bGdhZGFzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwdWxnYWRhcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcxLjAwMCBtbSAoMzksNCBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHB1bGdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcHVsZ2FkYXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHB1bGdhZGFzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHB1bGdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHB1bGdhZGFzICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcHVsZ2FkYXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwdWxnYWRhcyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHB1bGdhZGFzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcHVsZ2FkYXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcHVsZ2FkYXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FzaWduYWNpw7NuIGRlIGRpcmVjY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZCBkZSBsYSBiYXRlcsOtYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYXogZGUgYnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaWRhZCBwb3IgdGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlY3RvciBkZSB0YXJqZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcsOtYSBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1JlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWZWxvY2lkYWQgZGUgcmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBjw7NkaWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZGUgY29uZmVyZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGNvbnN1bHRvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnUMOzbmdhc2UgZW4gY29udGFjdG8gY29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0YXIgY29uIGVsIGRpc3RyaWJ1aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNvbnRlbmVkb3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGRlc2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBoYXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWzDqWZvbm8gaW5hbMOhbWJyaWNvICh0ZWzDqWZvbm8gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pZGFkIGRlIGNvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUmVjdWVudG8gZGUgbGljZW5jaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdGZWNoYSBkZSBjcmVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VzdGFudGVyw61hIHBlcnNvbmFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0ZlY2hhIGRlIGxhIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0ZlY2hhIGRlbCBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0ZlY2hhIGRlIGxhIGdhcmFudMOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdGZWNoYSBkZSBwdWJsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBkb2N1bWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY29ycmVvIGVsZWN0csOzbmljbyAoQ2VydGlmaWNhZG9zIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdHJhYmFqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0RpcmVjY2nDs24gSVAgZmluYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbGEgYXl1ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdGZWNoYSBkZSBleHBpcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gZHVybyBleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnQ29ydGFmdWVnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvIGRlIGVuZXJnw61hIG1lZGlhbnRlIHZvbGFudGUgZGUgaW5lcmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBmcmFucXVpY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGdlbmVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdUYXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1RhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRlbCBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVyaWN1bGFyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGnDs24gZGUgaWRlbnRpZGFkZXMgeSBhY2Nlc29zIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDb3N0ZXMgZGUgaW52ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKHBhbnRhbGxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoZGlvZG8gZW1pc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsw6lmb25vIGZpam8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NhcGEgMTogQ2FwYSBmw61zaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NhcGEgMjogQ2FwYSBkZSBlbmxhY2UgZGUgZGF0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ2FwYSAzOiBDYXBhIGRlIHJlZCAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NhcGEgNDogQ2FwYSBkZSB0cmFuc3BvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDYXBhIDU6IENhcGEgZGUgc2VzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDYXBhIDY6IENhcGEgZGUgcHJlc2VudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NhcGEgNzogQ2FwYSBkZSBhcGxpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBhcnJlbmRhbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBsaWNlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2xhdmUgZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBkZSBsaWNlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZSBsaWNlbmNpYSBoYXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgbGl0aW8gZm9zZmF0byBkZSBoaWVycm8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXRlcsOtYSBkZSBpb25lcyBkZSBsaXRpbyAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgcHLDqXN0YW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaXR1YWRvIGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2lkYWQgZGUgY2FyZ2EgbcOheGltYSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1RpcG8gZGUgbWVtb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIG3Ds3ZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNw7N2aWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gZGVsIG1vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHVjacOzbiBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYW1hw7FvIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnUmF0w7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYWNpw7NuIGRlIGxhIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlIGxhIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ2FwYSBkZSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcsOtYSBkZSBuw61xdWVsLWNhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcsOtYSBkZSBuw61xdWVsLWhpZHJ1cm8gbWV0w6FsaWNvIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY3VlcmRvIGRlIGNvbmZpZGVuY2lhbGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdDdWFkZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ07Dum1lcm8gZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ07Dum1lcm8gZGUgbcOzZHVsb3MgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ07Dum1lcm8gZGUgdGFyamV0YXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKGRpb2RvIG9yZ8OhbmljbyBlbWlzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDb3N0ZXMgZGUgZXhwbG90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU2FsaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGFzb2NpYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RpcG8gZGUgdGVsw6lmb25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTsO6Y2xlb3MgZsOtc2ljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdW1pbmlzdHJvIGRlIGVuZXJnw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQ29tcHJhZG8gZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2Z1bmRpZGFkIGRlIGxhIGVzdGFudGVyw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pZGFkZXMgZGUgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0hhYml0YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnVGFyamV0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBwb3Igc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIHBsb21vLcOhY2lkbyBzZWxsYWRhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTsO6bWVybyBkZSBzZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpY2lvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aXF1ZXRhIGRlIHNlcnZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGUgZW5jaHVmZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0YXZvY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGljacOzbiBkZSBhbG1hY2VuYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmVzdW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudGUgbGlnZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdIaWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgZGUgbGEgdGFyamV0YSBncsOhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgdMOhY3RpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzY29zIGRlIFJWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdDw6FtYXJhIHdlYic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/es_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgZGVmaW5pY2nDs24gZGUgbGEgQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgQ2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBJdGVtIGRlIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQWNjacOzbiBNYXNpdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnRW5sYXphciBjb24gb3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnwqFOw7ptZXJvIGRlIMONdGVtIGRlIENvbmZpZ3VyYWNpw7NuIG5vIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnRWwgbsO6bWVybyBkZSBvdHJvIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBlbCBxdWUgdmluY3VsYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgbm9tYnJlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0VsIG5vbWJyZSB5YSBlc3RhIGVuIHVzbyBwb3Igw410ZW1zIGRlIENvbmZpZ3VyYWNpw7NuIGNvbiBsb3Mgc2lndWllbnRlcyBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIGxhIEltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYWwgZGVsIEVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW5pZG8gZGVsIGhpc3RvcmlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRmVjaGEgZGUgQ3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ0lzIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgbGEgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/RGVzZWEgYnVzY2FyIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBBY3R1YWwgZGUgbGEgSW1wbGVtZW50YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGVsIEluY2lkZW50ZSBBY3R1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGEgw7psdGltYSB2ZXogcXVlIHNlIG1vZGlmaWPDsyBmdWUgcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnU3VzIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVGlwbyBkZSBvYmpldG8nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmFyIHBvciB0aXBvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGZ1bmNpb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdUZW5nYSBlbiBjdWVudGEgcXVlIHRhbWJpw6luIHNlIGNyZWFyw6FuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyB5IGxhcyBjbGFzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGllbnRlcyB5IHF1ZSBubyBzZSBlbGltaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ8K/RGVzZWEgcHJvY2VkZXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ8KhTmVjZXNpdGEgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGRlZmluaWNpw7NuIG5vIGVzIHVuIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Jlc3VtZW46IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8KhTmVjZXNpdGEgYWwgbWVub3MgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vIHRpZW5lIHBlcm1pc28gZGUgZXNjcml0dXJhIHBhcmEgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnwqFOaW5ndW5hIGRlZmluaWNpw7NuIGZ1ZSBkZWZpbmlkYSBwYXJhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAiJXMiICBubyBzZSBlbmNvbnRyw7MgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIGZ1ZSBwb3NpYmxlIGVsaW1pbmFyIGVsIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBWZXJzacOzbiBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIGFjY2VzbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGRlc3BsaWVndWUgKG51ZXZvPSVzLCB2aWVqbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGluY2lkZW5jaWEgKG51ZXZvPSVzLHZpZWpvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdFbmxhY2UgYSAlcyAodGlwbz0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICh0aXBvPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0FjdHVhbGl6YWRhIGRlZmluaWNpw7NuIGRlIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWJyZSBhY3R1YWxpemFkbyAobnVldm89JXMsdmllam89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYWN0dWFsaXphZG8gZGUgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2nDs24gJXMgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY29udHLDsyBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzbyBwb3IgJXMgZW4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfCoUNsYXNzSUQgbm8gZXMgdsOhbGlkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2luIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2UgbXVlc3RyYW4gZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgZXN0YWRvIGRlIGltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBUaXBvIGRlIGluY2lkZW50ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6FtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNhIChWZXJzacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcmVuY2lhIGRlIGVubGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBlc3RlIGVubGFjZSBzZSBhcGxpY2EgYWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gbyBhIGxhIHZlcnNpw7NuIGVzdMOhdGljYSBkZWwgb2JqZXRvIGRlIHJlZmVyZW5jaWEuIEVsIGPDoWxjdWxvIGRlbCBlc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgc8OzbG8gc2UgcmVhbGl6YSBlbiBsb3MgZW5sYWNlcyBkaW7DoW1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjY2lvbmUgZWwgYXRyaWJ1dG8gcG9yIGVsIHF1ZSBzZSBidXNjYXLDoW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdMYSBlc3RydWN0dXJhIGJhc2Ugbm8gZXMgdsOhbGlkYS4gUG9yIGZhdm9yLCBwcm9wb3JjaW9uZSB1biBoYXNoIGNvbiBkYXRvcyBlbiBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRXMgbmVjZXNhcmlvIHF1ZSBsYSBjYWRlbmEgWUFNTCBjb21pZW5jZSBwb3IgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTm8gc2UgaGEgcG9kaWRvIHB1cmdhciBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBjYW1wb3MgZGluw6FtaWNvcyByZWxldmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTm8gc2UgaGEgcG9kaWRvIGluc2VydGFyIGVuIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zZXJ0YWRhcyAwIGZpbGFzIGVuIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW4gZWxlbWVudG8gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGFyL2V4cG9ydGFyIGFyY2hpdm9zIGFkanVudG9zIChjb21vIMO6bHRpbWFzIGVudHJhZGFzIHBvciBsw61uZWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2nDs24gQ2FkZW5hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIGFsIHNpbmNyb25pemFyIGxhcyBkZWZpbmljaW9uZXMuIFBvciBmYXZvciwgY29tcHJ1ZWJlIGVsIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1RpZW5lIGRlZmluaWNpb25lcyBkZSBJVFNNQ29uZmlnSXRlbSBxdWUgbm8gZXN0w6FuIHNpbmNyb25pemFkYXMuIERlc3BsaWVndWUgbG9zIGNhbWJpb3MgZW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIGRlIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW50ZW5pbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1BydWViYSAvIENvbnRyb2wgZGUgY2FsaWRhZCc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVmlzacOzbiBnZW5lcmFsIHkgY29uZmlybWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhciBjbGFzZXMvcm9sZXMgeSBzdXMgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1NlIGhhIHByb2R1Y2lkbyB1biBlcnJvciBkdXJhbnRlIGxhIGltcG9ydGFjacOzbiBkZSBsYSBjbGFzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gU2UgbXVlc3RyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kaWNpb25lcyBkZSBiw7pzcXVlZGEgZXh0ZW5kaWRhcyBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gY29uZGljaW9uZXMgY29tbyAiKCpjbGF2ZTEqJiYqY2xhdmUyKikiIG8gIigqY2xhdmUxKnx8KmNsYXZlMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBhbXBsaWFyIGxhcyBjb25kaWNpb25lcyBkZSBiw7pzcXVlZGEgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLiBDb24gZXN0YSBmdW5jacOzbiBwdWVkZSBidXNjYXIsIHBvciBlamVtcGxvLCBlbCBub21icmUgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBlc3RlIHRpcG8gZGUgY29uZGljaW9uZXMgY29tbyAiKCpjbGF2ZTEqJiYqY2xhdmUyKikiIG8gIigqY2xhdmUxKnx8KmNsYXZlMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQ0lzIGFzaWduYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NpcyBhc2lnbmFkb3MgYSBsYSBFbXByZXNhIGRlbCBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ2lzIGFzaWduYWRvcyBhbCB1c3VhcmlvIGRlbCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjaW9uZXMgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzcXVlIHVuIG5vbWJyZSDDum5pY28gc29sbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzZVwnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgY3VhbmRvIHNlIGJ1c2NhbiBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBub21icmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgY2FkZW5hcyBkZSB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRWxpamEgYXRyaWJ1dG9zIHBhcmEgYWN0aXZhciBsYSBjcmVhY2nDs24gZGUgdW5hIG51ZXZhIHZlcnNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFbGlqYSBsYXMgY2F0ZWdvcsOtYXMgcXVlIGRlc2VhIGFzaWduYXIgYSBlc3RhIGNsYXNlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBjb2x1bW5hIHBhcmEgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbmFzIHF1ZSBzZSBwdWVkZW4gZmlsdHJhciBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBOb3RhOiBTb2xvIHNlIHBlcm1pdGVuIGF0cmlidXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24geSBjYW1wb3MgZGluw6FtaWNvcyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBw7FhZGlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdGFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgaGFiaWxpdGEgZWwgYWNjZXNvIGEgbGEgaGlzdG9yaWEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgYWN0dWFsaXphIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gYSBzdSBkZWZpbmljacOzbiBhY3R1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWFsIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmltaXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnRGV0YWxsZXogZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVuIMOhcmJvbCBkZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGRlIGxhcyBzaWd1aWVudGVzIGNsYXNlcyBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGNvbiBsb3Mgc2lndWllbnRlcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0zDrW1pdGUgZGUgRWxlbWVudG9zIGRlIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdMw61taXRlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnR2VzdGnDs24gZGUgbGEgQ29uZmlndXJhY2nDs24gZGUgQmFzZXMgZGUgRGF0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCBtw7NkdWxvIG1hc2l2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3V0ZXIgYmFja2VuZCBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWEgeSBnZXN0aW9uYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYSBUaWNrZXRzIHBhcmEgQ29uZmlnSXRlbXMgZW4gbW9tZW50b3MgZXNwZWPDrWZpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgQWNjaW9uZXMgZW4gbGFzIHF1ZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6EgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgQWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW4gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVuYXMgZGUgdmVyc2nDs24uIFPDs2xvIHNlIHV0aWxpemEgc2kgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIHNlIGVzdGFibGVjZSBlbiBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGNvbmp1bnRvIGRlIGNvbmRpY2lvbmVzIGJham8gbGFzIGN1YWxlcyB1biBjbGllbnRlIHB1ZWRlIHZlciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4gTGFzIGNvbmRpY2lvbmVzIHB1ZWRlbiByZXN0cmluZ2lyc2Ugb3BjaW9uYWxtZW50ZSBhIGRldGVybWluYWRvcyBncnVwb3MgZGUgY2xpZW50ZXMuIEVsIG5vbWJyZSBlcyBlbCDDum5pY28gYXRyaWJ1dG8gb2JsaWdhdG9yaW8uIFNpIG5vIHNlIGVzcGVjaWZpY2EgbmluZ3VuYSBvdHJhIG9wY2nDs24sIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2Vyw6FuIHZpc2libGVzIGVuIGVzYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgZWxpbWluYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gbWVkaWFudGUgbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSB1dGlsaXphbmRvIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIGJ1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSB1dGlsaXphbmRvIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgcmVxdWVyaWRvcyBwYXJhIGVzdGFibGVjZXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHJlc3VtZW4gcGFyYSBtb3N0cmFyIGxhIHBlcXVlw7FhIHZpc3RhIGRlIHVuYSBsaXN0YSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBldGlxdWV0YXMgZGUgdGlwbyBkZSBlbmxhY2UgZGViZW4gbW9zdHJhcnNlIGVuIGxhcyBjb25leGlvbmVzIGRlIGxvcyBub2Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNpb25lcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzZSBDb25maWdJdGVtIHBhcmEgdmVyaWZpY2FyIGVsIG5vbWJyZSBkZSBDb25maWdJdGVtIHkgcGFyYSBtb3N0cmFyIGxvcyBtZW5zYWplcyBkZSBlcnJvciBjb3JyZXNwb25kaWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zdGFyIGRlIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgZXN0YSBvcGVyYWNpw7NuLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIHBvciBkZWZlY3RvIGRlIGxvcyBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZSBsYSBwcm9mdW5kaWRhZCBkZSBsYXMgcmVsYWNpb25lcyBxdWUgc2UgbW9zdHJhcsOhbiBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG8gcG9yIGRlZmVjdG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG8gcG9yIGRlZmVjdG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiQ2xhdmUiIGRlYmUgdGVuZXIgZWwgbm9tYnJlIGRlbCBDYW1wbyBEaW7DoW1pY28gZW4gZXN0ZSBjYXNvIFwnWFwnLCAiQ29udGVuaWRvIiBkZWJlIHRlbmVyIGVsIHZhbG9yIGRlbCBDYW1wbyBEaW7DoW1pY28gZGVwZW5kaWVuZG8gZGVsIHRpcG8gZGUgQ2FtcG8gRGluw6FtaWNvLCBUZXh0bzogXCdhIHRleHRcJywgRGVzcGxlZ2FibGU6IFwnMVwnLCBGZWNoYS9Ib3JhOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFNlY29uZD01OTtcJyB5IG8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHN1Ym9iamV0byBwb3IgZGVmYXVsdCBkZSBsYSBjbGFzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc3RhciBkZSB1biBub21icmUgZGUgY2xhc2UgeSB1bmEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBkZWwgY29tcG9uZW50ZSBlZGl0b3IgZGUgdGV4dG8gZW5yaXF1ZWNpZG8gcGFyYSBlc3RhIHBhbnRhbGxhLiBJbnRyb2R1emNhIHVuIG7Dum1lcm8gKHDDrXhlbGVzKSBvIHVuIHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG7Dum1lcm8gZGUgZmlsYXMgcGFyYSBlbCBlZGl0b3IgZGUgZGVmaW5pY2lvbmVzIGRlIENJIGVuIGxhIGludGVyZmF6IGRlIGFkbWluaXN0cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIGRlIGxvcyBlc3RhZG9zIGRlIGluY2lkZW5jaWEgZGVzZGUgYWx0byAocG9yIGVqZW1wbG8sIGNyw610aWNvKSBhIGJham8gKHBvciBlamVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZXN0YWRvcyBkZSBpbXBsZW1lbnRhY2nDs24gcmVsZXZhbnRlcyBkb25kZSBsb3MgdGlja2V0cyB2aW5jdWxhZG9zIHB1ZWRlbiBhZmVjdGFyIGVsIGVzdGFkbyBkZSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGUgQ0kgbW9zdHJhZGFzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIHbDrW5jdWxvcyBwYXJhIHRvZGFzIGxhcyBjbGFzZXMgZGUgQ0kuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEsIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwcmVkZXRlcm1pbmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG9zIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMsIHNlZ8O6biBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgaXIgcHJlY2VkaWRhIGRlbCBub21icmUgZGUgbGEgY2xhc2UgeSBkb3MgcHVudG9zIGRvYmxlcyAoZXMgZGVjaXIsIGNvbXB1dGFkb3JhOiA6KS4gSGF5IGFsZ3Vub3MgYXRyaWJ1dG9zIGRlIENJIHF1ZSBzb24gY29tdW5lcyBhIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yYTogQ29tcHV0YWRvcmEgOjogTm9tYnJlLCBDb21wdXRhZG9yYSA6OiBDdXJEZXBsU3RhdGUsIENvbXB1dGFkb3JhIDo6IENyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgbG9zIElDLUF0cmlidXRvcyBpbmRpdmlkdWFsZXMgZGVmaW5pZG9zIGVuIGxhIERlZmluaWNpw7NuLUNJLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcmEpOiBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDEsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMSA6OiBDYXBhY2lkYWQgOjogMSwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAyLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDIgOjogQ2FwYWNpZGFkIDo6IDEuIFNpIG5vIGhheSB1bmEgZW50cmFkYSBwYXJhIHVuYSBjbGFzZSBDSSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHByZWRldGVybWluYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIHBhcmEgIkFjY2nDs24iIGVuIGVsIHRlcmNlciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgcHJpbWVyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgc2VndW5kbyBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIGVubGFjZSAobm9tYnJhZG8gZGVzZGUgbGEgcGVyc3BlY3RpdmEgZGVsIHRpY2tldCkgcHVlZGUgYWZlY3RhciBlbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFjacOzbiBkZSBsYSBkZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxpbWluYXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb2xvciBkZWwgZXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBtYXJjYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIG5vIHNpbmNyb25pemFkYXMgc2kgY2FtYmlhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgcXVlIGNvbnRpZW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIHF1ZSBzZSBtdWVzdHJhbiBlbiBsYSBwYW50YWxsYSBkZSBjYW1wbyBJVFNNIGFkaWNpb25hbCBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUGVybWl0ZSBxdWUgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGFjY2nDs24gbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwYXJhIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgZnVuY2lvbmUgZW4gbcOhcyBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBhIGxhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGxhIGNhcmFjdGVyw61zdGljYSBkZSBhY2Npw7NuIG1hc2l2YSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc29sbyBwYXJhIGxvcyBncnVwb3MgZW51bWVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZhL2Rlc2FjdGl2YSBsYSBmdW5jaW9uYWxpZGFkIGRlIGNvbXByb2JhciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gcGFyYSBub21icmVzIMO6bmljb3MuIEFudGVzIGRlIGhhYmlsaXRhciBlc3RhIG9wY2nDs24gZGViZSBjb21wcm9iYXIgc2kgZXhpc3RlbiBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29uIG5vbWJyZXMgZHVwbGljYWRvcy4gUHVlZGUgaGFjZXJsbyBjb24gZWwgY29tYW5kbyBkZSBjb25zb2xhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgY29uZmlndXJhciBjb25maWdpdGVtLXN0YXR1cyBlbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLCB1dGlsaXphZG9zIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvLiBMb3MgY2FtcG9zIHRhbWJpw6luIHNlIGFsbWFjZW5hbiwgcGVybyBubyBzb24gb2JsaWdhdG9yaW9zIHBhcmEgbGEgZnVuY2lvbmFsaWRhZCBnZW5lcmFsLiBMYSBpbmNsdXNpw7NuIGRlIGFuZXhvcyBwdWVkZSBkZXNhY3RpdmFyc2UgcG9uaWVuZG8gbGEgZW50cmFkYSBhIDAgbyBib3Jyw6FuZG9sYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhbG1hY2VuYWRvcyBlbiBlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgdXRpbGl6YW4gcGFyYSBvdHJhcyBjb3NhcyBhZGVtw6FzIGRlIGxhcyBiw7pzcXVlZGFzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGxhIGZ1bmNpb25hbGlkYWQgY29tcGxldGEgdG9kb3MgbG9zIGNhbXBvcyBzb24gb2JsaWdhdG9yaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BhcmEgY2FkYSB3ZWJzZXJ2aWNlIChjbGF2ZSkgc2UgcHVlZGUgZGVmaW5pciB1biBhcnJheSBkZSBjbGFzZXMgKHZhbG9yKSBzb2JyZSBsYXMgcXVlIHNlIHJlc3RyaW5nZSBsYSBpbXBvcnRhY2nDs24uIFBhcmEgdG9kYXMgbGFzIGNsYXNlcyBlbGVnaWRhcywgbyB0b2RhcyBsYXMgY2xhc2VzIGV4aXN0ZW50ZXMsIGxvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYWNpw7NuIHRlbmRyw6FuIHF1ZSBzZXIgZWxlZ2lkb3MgZW4gbGEgY29uZmlndXJhY2nDs24gZGVsIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdEZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG9JbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdWx0YWRvIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIGVsIGdydXBvIHJlc3BvbnNhYmxlIGRlIHVuYSBjbGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIGVsIGdydXBvIHJlc3BvbnNhYmxlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ03Ds2R1bG8gcGFyYSBnZW5lcmFyIGVzdGFkw61zdGljYXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWJyZSBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNw7NkdWxvIG51bcOpcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgZGViZW4gbW9zdHJhcnNlIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBidXNjYXIsIGN1w6FudGFzIGVudHJhZGFzIHkgcXXDqSBhdHJpYnV0b3MgbW9zdHJhci4gTG9zIGF0cmlidXRvcyBDb25maWdJdGVtIGRlYmVuIGFsbWFjZW5hcnNlIGV4cGzDrWNpdGFtZW50ZSBhIHRyYXbDqXMgZGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgZ2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIGNhdGVnb3LDrWFzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGZpbHRyb3MgZGUgY29sdW1uYSBkZSBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBwZXF1ZcOxb3MuIFBvciBmYXZvciwgdGVuZ2EgZW4gY3VlbnRhOiBlc3RhYmxlY2VyIFwnQWN0aXZvXCcgYSAwIHPDs2xvIGV2aXRhcsOhIHF1ZSBsb3MgYWdlbnRlcyBlZGl0ZW4gbG9zIGFqdXN0ZXMgZGUgZXN0ZSBncnVwbyBlbiBzdXMgcHJlZmVyZW5jaWFzIHBlcnNvbmFsZXMsIHBlcm8gc2VndWlyw6EgcGVybWl0aWVuZG8gYSBsb3MgYWRtaW5pc3RyYWRvcmVzIGVkaXRhciBsb3MgYWp1c3RlcyBlbiBub21icmUgZGUgb3RybyB1c3VhcmlvLiBVdGlsaWNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgcGFyYSBjb250cm9sYXIgZW4gcXXDqSDDoXJlYSBkZWJlbiBtb3N0cmFyc2UgZXN0b3MgYWp1c3RlcyBlbiBsYSBpbnRlcmZheiBkZSB1c3VhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0cm9zIGRlbCBiYWNrZW5kIGRlbCBwYW5lbCBwcmluY2lwYWwgZGUgbGEgdmlzdGEgZGVsIHRpY2tldCBlc2NsYXZvIGRlbCBpbnRlcmZhY2UgZGVsIGFnZW50ZS4gIkxpbWl0ZSIgZXMgZWwgbsO6bWVybyBkZSBlbnRyYWRhIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdydXBvImVzIHVzYWRvIHBhcmEgcmVzdHJpbmdpciBlbCBhY2Nlc28gYWwgcGx1Z2luIChFam0uIEdydXBvOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZlY3RvIiBkZXRlcm1pbmEgc2kgZWwgcGx1Z2luIGVzIGhhYmlsaXRhZG8gcG9yIGRlZmVjdG8gbyBzaSBlbCB1c3VhcmlvIG5lY2VzaXRhIGhhYmlsaXRhcmxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgZXMgZWwgdGllbXBvIGRlIGNhY2hlIGVuIG1pbnV0b3MgcGFyYSBlbCBwbHVnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0cm9zIGRlbCBiYWNrZW5kIGRlbCBwYW5lbCBwcmluY2lwYWwgZGUgbGEgdmlzdGEgZGVsIHRpY2tldCBlc2NsYXZvIGRlbCBpbnRlcmZhY2UgZGVsIGFnZW50ZS4gIkxpbWl0ZSIgZXMgZWwgbsO6bWVybyBkZSBlbnRyYWRhIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdydXBvImVzIHVzYWRvIHBhcmEgcmVzdHJpbmdpciBlbCBhY2Nlc28gYWwgcGx1Z2luIChFam0uIEdydXBvOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZlY3RvIiBkZXRlcm1pbmEgc2kgZWwgcGx1Z2luIGVzIGhhYmlsaXRhZG8gcG9yIGRlZmVjdG8gbyBzaSBlbCB1c3VhcmlvIG5lY2VzaXRhIGhhYmlsaXRhcmxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgZXMgZWwgdGllbXBvIGRlIGNhY2hlIGVuIG1pbnV0b3MgcGFyYSBlbCBwbHVnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMb3MgcGFyw6FtZXRyb3MgcGFyYSBsYSBpbXBsZW1lbnRhY2nDs24gaW5kaWNhbiBlbCBjb2xvciBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGVzdGFkb3MgZGUgaW1wbGVtZW50YWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBwZXJtaXNvcyBkZSBlamVtcGxvIGRlIGxvcyBhdHJpYnV0b3MgZGVsIGNhdMOhbG9nbyBnZW5lcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZSBub21icmVzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gbnVtw6lyaWNvIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIHDDoWdpbmFzIChkb25kZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlbCBraXQgZGUgaGVycmFtaWVudGFzIGRlIHBsYW50aWxsYXMgZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGFjdGl2YWRvciBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1JlYWxpemEgbGEgYWNjacOzbiBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvICggY29tbyB1biBJbnZva2VyKSBwYXJhIGNhZGEgc2VydmljaW8gV2ViIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIGFjY2nDs24gZGUgYWRqdW50YXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgdmlzdGEgZGUgw6FyYm9sIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgZGV0YWxsZSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBwYXJhIGFncmVnYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBtYXNpdmEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBlZGljacOzbiBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgaGlzdG9yaWFsIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgaW1wcmVzacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbGVnaW9zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0J1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFc3RhYmxlemNhIGVsIGVzdGFkbyBkZSBpbmNpZGVudGUgZGUgdW4gQ0kgYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gdW4gdGlja2V0IGVzdMOpIHZpbmN1bGFkbyBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgaW1wbGVtZW50YWNpw7NuIGVuIGxhIHBhbnRhbGxhIG1hc2l2YSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvLCBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhIGxhIGhpc3RvcmlhIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpb24gZW4gc3UgdmlzdGEgZGV0YWxsYWRhLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWxpbWluYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2aXN1YWxpemFyIGxvcyBlbmxhY2VzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyB1bmEgdmlzdGEgZW4gw6FyYm9sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgZGVzY3JpcGNpw7NuIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZvbHZlciBhIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGluayBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpb24gZW4gc3UgdmlzdGEgZGV0YWxsYWRhLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNlcmNhcnNlIGEgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSBsYSBoaXN0b3JpYSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChvcmRlbmFkb3MgaW52ZXJzYW1lbnRlKSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXRlZ29yw61hIHBvciBkZWZlY3RvIHF1ZSBzZSBtdWVzdHJhLCBzaSBubyBzZSBzZWxlY2Npb25hIG5pbmd1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLCBwb3IgZWplbXBsby4gQ29uZmlnSXRlbSAjLCBNeUNvbmZpZ0l0ZW0gIy4gRWwgdmFsb3IgcG9yIGRlZmVjdG8gZXMgQ29uZmlnSXRlbSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjdGl2YSBhdXRvbcOhdGljYW1lbnRlIGVsIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNpw7NuIGRlIGNhZGVuYSBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnQWN0aXZhZG9yIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBzZSBwdWVkZSBldml0YXIgbGEgZWplY3VjacOzbiBkZSBDb25maWdJdGVtQUNMIGNvbXByb2JhbmRvIGxhcyBkZXBlbmRlbmNpYXMgZGUgY2FtcG9zIGVuIGNhY2jDqS4gRXN0byBwdWVkZSBtZWpvcmFyIGxvcyB0aWVtcG9zIGRlIGNhcmdhIGRlIGxvcyBmb3JtdWxhcmlvcywgcGVybyBkZWJlIGRlc2FjdGl2YXJzZSBzaSBzZSB2YW4gYSB1dGlsaXphciBBQ0xNb2R1bGVzIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIHkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1w6kgaW5mb3JtYWNpw7NuIGdlbmVyYWwgc2UgbXVlc3RyYSBlbiBsYSBjYWJlY2VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2byc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwdWxnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHB1bGdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcHVsZ2FkYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcHVsZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwdWxnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3JlbWFsbGVyYSBkZSAyMSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDk3LDc5IGNtICgzOCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdFc3RhbnRlIGRlIDIzIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwdWxnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcHVsZ2FkYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHB1bGdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcHVsZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcHVsZ2FkYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHB1bGdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwdWxnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcHVsZ2FkYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHB1bGdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzEuMDAwIG1tICgzOSw0IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcHVsZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwdWxnYWRhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcHVsZ2FkYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcHVsZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcHVsZ2FkYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwdWxnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHB1bGdhZGFzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcHVsZ2FkYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwdWxnYWRhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwdWxnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNpZ25hY2nDs24gZGUgZGlyZWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsw6lmb25vIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpZGFkIGRlIGxhIGJhdGVyw61hIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkZSBiYXRlcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZheiBkZSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaWRhZCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpZGFkIHBvciB0YXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdG9yIGRlIHRhcmpldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1RpcG8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnUmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZCBkZSByZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBkZSBjb25mZXJlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgY29uc3VsdG9yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdQw7NuZ2FzZSBlbiBjb250YWN0byBjb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3RhciBjb24gZWwgZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgY29udGVuZWRvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gZGVzZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGhhc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbMOpZm9ubyBpbmFsw6FtYnJpY28gKHRlbMOpZm9ubyBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdVbmlkYWQgZGUgY29zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdSZWN1ZW50byBkZSBsaWNlbmNpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0ZlY2hhIGRlIGNyZWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnRXN0YW50ZXLDrWEgcGVyc29uYWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRmVjaGEgZGUgbGEgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRmVjaGEgZGVsIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRmVjaGEgZGUgbGEgZ2FyYW50w61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0ZlY2hhIGRlIHB1YmxpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRXNjcml0b3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIChDZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbiBkZSBsYSBheXVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0ZlY2hhIGRlIGV4cGlyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyBkdXJvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdDb3J0YWZ1ZWdvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8gZGUgZW5lcmfDrWEgbWVkaWFudGUgdm9sYW50ZSBkZSBpbmVyY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFjdG9yIGRlIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGZyYW5xdWljaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZ2VuZXJhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1RhcmpldGFzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnVGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZGVsIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXJpY3VsYXJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0acOzbiBkZSBpZGVudGlkYWRlcyB5IGFjY2Vzb3MgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBpbnZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAocGFudGFsbGEgZGUgY3Jpc3RhbCBsw61xdWlkbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBlbWlzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZmlqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdPcmRlbmFkb3IgcG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NhcGEgMTogQ2FwYSBmw61zaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NhcGEgMjogQ2FwYSBkZSBlbmxhY2UgZGUgZGF0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ2FwYSAzOiBDYXBhIGRlIHJlZCAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NhcGEgNDogQ2FwYSBkZSB0cmFuc3BvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDYXBhIDU6IENhcGEgZGUgc2VzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDYXBhIDY6IENhcGEgZGUgcHJlc2VudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NhcGEgNzogQ2FwYSBkZSBhcGxpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBhcnJlbmRhbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBsaWNlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2xhdmUgZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBkZSBsaWNlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZSBsaWNlbmNpYSBoYXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgbGl0aW8gZm9zZmF0byBkZSBoaWVycm8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXRlcsOtYSBkZSBpb25lcyBkZSBsaXRpbyAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgcHLDqXN0YW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaXR1YWRvIGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2lkYWQgZGUgY2FyZ2EgbcOheGltYSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1RpcG8gZGUgbWVtb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIG3Ds3ZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNw7N2aWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gZGVsIG1vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHVjacOzbiBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYW1hw7FvIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnUmF0w7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYWNpw7NuIGRlIGxhIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlIGxhIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ2FwYSBkZSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcsOtYSBkZSBuw61xdWVsLWNhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcsOtYSBkZSBuw61xdWVsLWhpZHJ1cm8gbWV0w6FsaWNvIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY3VlcmRvIGRlIGNvbmZpZGVuY2lhbGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdDdWFkZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ07Dum1lcm8gZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ07Dum1lcm8gZGUgbcOzZHVsb3MgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ07Dum1lcm8gZGUgdGFyamV0YXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKGRpb2RvIG9yZ8OhbmljbyBlbWlzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDb3N0ZXMgZGUgZXhwbG90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU2FsaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGFzb2NpYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RpcG8gZGUgdGVsw6lmb25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTsO6Y2xlb3MgZsOtc2ljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdW1pbmlzdHJvIGRlIGVuZXJnw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQ29tcHJhZG8gZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2Z1bmRpZGFkIGRlIGxhIGVzdGFudGVyw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pZGFkZXMgZGUgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0hhYml0YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnVGFyamV0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBwb3Igc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIHBsb21vLcOhY2lkbyBzZWxsYWRhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTsO6bWVybyBkZSBzZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpY2lvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aXF1ZXRhIGRlIHNlcnZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGUgZW5jaHVmZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0YXZvY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGljacOzbiBkZSBhbG1hY2VuYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmVzdW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudGUgbGlnZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdIaWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgZGUgbGEgdGFyamV0YSBncsOhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgdMOhY3RpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzY29zIGRlIFJWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdDw6FtYXJhIHdlYic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/es_MX_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmFyIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRybyBwb3IgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjY2lvbmUgdW5hIGNsYXNlIGRlIGxhIGxpc3RhIHBhcmEgY3JlYXIgdW4gbnVldm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBY2Npw7NuIG1hc2l2YSBkZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0VubGFjZSBhIG90cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8KhTsO6bWVybyBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBubyB2w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFbCBuw7ptZXJvIGRlIG90cm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVsIHF1ZSBzZSB2YSBhIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgcXVpZXJlIGVsaW1pbmFyIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdFbCBub21icmUgeWEgZXN0w6EgZW4gdXNvIHBvciBsb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIG7Dum1lcm9zOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBJbmNpZGVudGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbmlkbyBkZSBsYSBoaXN0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXIgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWd1cmFjacOzbiBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGRhdG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2Npb25lIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdDb3JyZXIgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/VGFtYmnDqW4gYnVzY2FyIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBhY3R1YWwgZGVsIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlIEFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdNb2RpZmljYWRvIHBvciDDumx0aW1hIHZleiBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTdXMgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBDb25maWdJdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUaXBvIGRlIG9iamV0byc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ0ZpbHRybyBwb3IgdGlwbyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGNsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBmdW5jaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVGVuZ2EgZW4gY3VlbnRhIHF1ZSB0YW1iacOpbiBzZSBjcmVhcsOhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgeSBsYXMgY2xhc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRpZW50ZXMgeSBxdWUgbm8gc2UgZWxpbWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfCv1F1aWVyZXMgY29udGludWFyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfCoU5lY2VzaXRhIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbmljacOzbiBubyBlcyB1biBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdSZXN1bWVuOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBkYSBuaW5nw7puIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfCoU5lY2VzaXRhIGFsIG1lbm9zIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdObyB0aWVuZSBhY2Nlc28gZGUgZXNjcml0dXJhIGEgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbjogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ8KhTm8gc2UgaGEgZGVmaW5pZG8gbGEgY2xhc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfCoUVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuICIlcyIgbm8gc2UgZW5jdWVudHJhIGVuIGxhIGJhc2UgZGUgZGF0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnwqFObyBzZSBoYSBwb2RpZG8gYm9ycmFyIGVsIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfCoU5vIHNlIGhhIGVuY29udHJhZG8gbmluZ3VuYSB2ZXJzacOzbiBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSB0aWVuZSBuaW5nw7puIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSB0aWVuZSBhY2Nlc28hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCDCoW5vIHNlIHRpZW5lIGVsIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgwqFubyBzZSB0aWVuZW4gZGVyZWNob3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnVldmEgdmVyc2nDs24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBib3JyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnRW5sYWNlIGEgJXMgKCB0aXBvPSVzKSBhw7FhZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnRW5sYWNlIGEgJXMgKCB0aXBvPSVzKSBib3JyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmljacOzbiBkZSBDb25maWdJdGVtIGFjdHVhbGl6YWRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21icmUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXRvICVzIGFjdHVhbGl6YWRvIGRlICIlcyIgYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpw7NuICVzIGJvcnJhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSB0aWVuZSBuaW5nw7puIENvbmZpZ0l0ZW1JRCBvIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgwqFubyBzZSB0aWVuZW4gZGVyZWNob3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzbyBwb3IgJXMgZW4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfCoUNsYXNzSUQgaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgbmluZ8O6biBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGFuIGNvbmNlZGlkbyBkZXJlY2hvcyBkZSBhY2Nlc28gcGFyYSBlc3RhIGNsYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnwqFObyBoYXkgcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1Jlc3VsdGFkb3MgZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgwqFubyBzZSB0aWVuZW4gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBkZXNwbGllZ3VlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2luIHBlcm1pc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnwqFGaWx0cm8gaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyw6FtZXRyb3MgZGUgYsO6c3F1ZWRhIGludsOhbGlkb3MnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIERlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBhY3R1YWwgZGVsIGVzdGFkbyBkZWwgaW5jaWRlbnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW7DoW1pY28gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdFc3TDoXRpY2EgKFZlcnNpw7NuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyZW5jaWEgZGUgZW5sYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NpIGVzdGUgZW5sYWNlIHNlIGFwbGljYSBhbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBvIGEgbGEgdmVyc2nDs24gZXN0w6F0aWNhIGRlbCBvYmpldG8gZGUgcmVmZXJlbmNpYS4gRWwgY8OhbGN1bG8gZGVsIGVzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBzw7NsbyBzZSByZWFsaXphIGVuIGxvcyBlbmxhY2VzIGRpbsOhbWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBlbCBhdHJpYnV0byBwb3IgZWwgcXVlIHNlIGJ1c2NhcsOhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIGVzdHJ1Y3R1cmEgYmFzZSBubyBlcyB2w6FsaWRhLiBQb3IgZmF2b3IsIHByb3BvcmNpb25lIHVuIGhhc2ggY29uIGRhdG9zIGVuIGZvcm1hdG8gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdFcyBuZWNlc2FyaW8gcXVlIGxhIGNhZGVuYSBZQU1MIGNvbWllbmNlIHBvciBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdObyBzZSBoYSBwb2RpZG8gcHVyZ2FyIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGNhbXBvcyBkaW7DoW1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdObyBzZSBoYSBwb2RpZG8gaW5zZXJ0YXIgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRhZGFzIDAgZmlsYXMgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ07Dum1lcm8gbcOheGltbyBkZSB1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnRhci9leHBvcnRhciBhcmNoaXZvcyBhZGp1bnRvcyAoY29tbyDDumx0aW1hcyBlbnRyYWRhcyBwb3IgbMOtbmVhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpw7NuIENhZGVuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvciBhbCBzaW5jcm9uaXphciBsYXMgZGVmaW5pY2lvbmVzLiBQb3IgZmF2b3IsIGNvbXBydWViZSBlbCByZWdpc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUaWVuZSBkZWZpbmljaW9uZXMgZGUgSVRTTUNvbmZpZ0l0ZW0gcXVlIG5vIGVzdMOhbiBzaW5jcm9uaXphZGFzLiBEZXNwbGllZ3VlIGxvcyBjYW1iaW9zIGVuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBkZSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudGVuaW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmlmaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdQcnVlYmEvQ29udHJvbCBkZSBjYWxpZGFkJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSXMgYXNpZ25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzaWduYWRvcyBhIGxhIGVtcHJlc2EgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc2lnbmFkb3MgYWwgdXN1YXJpbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdCdXNjYSB1biBub21icmUgw7puaWNvIHPDs2xvIGRlbnRybyBkZSBsYSBtaXNtYSBjbGFzZSBkZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBsbyBxdWUgc2lnbmlmaWNhIHF1ZSBjYWRhIENvbmZpZ0l0ZW0gZXhpc3RlbnRlIHNlIHRpZW5lIGVuIGN1ZW50YSBhbCBidXNjYXIgZHVwbGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgbm9tYnJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIGNhZGVuYXMgZGUgdmVyc2lvbmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0VsaWphIGF0cmlidXRvcyBwYXJhIGFjdGl2YXIgbGEgY3JlYWNpw7NuIGRlIHVuYSBudWV2YSB2ZXJzacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRWxpamEgbGFzIGNhdGVnb3LDrWFzIHF1ZSBkZXNlYSBhc2lnbmFyIGEgZXN0YSBjbGFzZSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgY29sdW1uYSBwYXJhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5hcyBxdWUgc2UgcHVlZGVuIGZpbHRyYXIgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gTm90YTogU29sbyBzZSBwZXJtaXRlbiBhdHJpYnV0b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQcOxYWRpciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGljacOzbiBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBwZXJtaXRlIGVsIHJlZ2lzdHJvIGVuIGVsIGhpc3RvcmlhbCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBhY3R1YWxpemEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBhIHN1IGRlZmluaWNpw7NuIGFjdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWd1cmFyIGVsZW1lbnRvIGltcHJlc29yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmFyIGVsIHpvb20gZGVsIGVsZW1lbnRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVuIMOhcmJvbCBkZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGRlIGxhcyBzaWd1aWVudGVzIGNsYXNlcyBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGNvbiBsb3Mgc2lndWllbnRlcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYWNpw7NuIEzDrW1pdGUgZGUgZWxlbWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmFjacOzbiBMw61taXRlIGRlIGVsZW1lbnRvcyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZGF0b3MgZGUgZ2VzdGnDs24gZGUgbGEgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVsZW1lbnRvcyBpbmRpdmlkdWFsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBidXNjYSBlbCBlbnJ1dGFtaWVudG8gYmFja2VuZCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhciB5IGdlc3Rpb25hciBsYXMgZGVmaW5pY2lvbmVzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ29uIGVzdGEgb3BjacOzbiBlcyBwb3NpYmxlIHJlbGxlbmFyIGF1dG9tw6F0aWNhbWVudGUgdW4gY2FtcG8gQ0ksIGRlcGVuZGllbmRvIGRlbCByZWN1ZW50byBkZSBDSSB2aW5jdWxhZG9zIGNvbiBlbCB0aXBvIGV4aXN0ZW50ZSBEZXBlbmRzT24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xvcyBjbGllbnRlcyBwdWVkZW4gdmVyIGxhcyB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0xvcyBjbGllbnRlcyB0aWVuZW4gbGEgcG9zaWJpbGlkYWQgZGUgY2FtYmlhciBtYW51YWxtZW50ZSBlbnRyZSB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0b3MgcHJlZGV0ZXJtaW5hZG9zIHF1ZSBzZSB1dGlsaXphcsOhbiBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD1hw7FvO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9w5psdGltbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0b3MgcG9yIGRlZmVjdG8gYSB1dGlsaXphciBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgY29uZmlnLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pciBhY2Npb25lcyBlbiBsYXMgcXVlIHVuIGJvdMOzbiBkZSBjb25maWd1cmFjacOzbiBlc3TDoSBkaXNwb25pYmxlIGVuIGVsIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBlc3RhcyBhY2Npb25lcyBkZWJlbiBoYWJlciByZWdpc3RyYWRvIGxvcyBzaWd1aWVudGVzIGFyY2hpdm9zIEpTIHkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB5IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgY2FkZW5hcyBkZSB2ZXJzacOzbi4gU8OzbG8gc2UgdXRpbGl6YSBzaSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgc2UgZXN0YWJsZWNlIGVuIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW4gY29uanVudG8gZGUgY29uZGljaW9uZXMgYmFqbyBsYXMgY3VhbGVzIHVuIGNsaWVudGUgcHVlZGUgdmVyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLiBMYXMgY29uZGljaW9uZXMgcHVlZGVuIHJlc3RyaW5naXJzZSBvcGNpb25hbG1lbnRlIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gRWwgbm9tYnJlIGVzIGVsIMO6bmljbyBhdHJpYnV0byBvYmxpZ2F0b3Jpby4gU2kgbm8gc2UgaW5kaWNhbiBvdHJhcyBvcGNpb25lcywgdG9kb3MgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZXLDoW4gdmlzaWJsZXMgZW4gZXNhIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gbWVkaWFudGUgbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBidXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJzacOzbiBDYWRlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBldGlxdWV0YXMgZGUgdGlwbyBkZSBlbmxhY2UgZGViZW4gbW9zdHJhcnNlIGVuIGxhcyBjb25leGlvbmVzIGRlIGxvcyBub2Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNpb25lcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzZSBDb25maWdJdGVtIHBhcmEgY29tcHJvYmFyIGVsIG5vbWJyZSBkZSBDb25maWdJdGVtIHkgbW9zdHJhciBsb3MgbWVuc2FqZXMgZGUgZXJyb3IgY29ycmVzcG9uZGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0byBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgbGEgcHJvZnVuZGlkYWQgZGUgbGFzIHJlbGFjaW9uZXMgcXVlIHNlIG1vc3RyYXLDoW4gcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIkNsYXZlIiBkZWJlIHRlbmVyIGVsIG5vbWJyZSBkZWwgQ2FtcG8gRGluw6FtaWNvIGVuIGVzdGUgY2FzbyBcJ1hcJywgIkNvbnRlbmlkbyIgZGViZSB0ZW5lciBlbCB2YWxvciBkZWwgQ2FtcG8gRGluw6FtaWNvIGRlcGVuZGllbmRvIGRlbCB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwnYSB0ZXh0XCcsIERlc3BsZWdhYmxlOiBcJzFcJywgRmVjaGEvSG9yYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTZWNvbmQ9NTk7XCcgeSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzdWJvYmpldG8gcG9yIGRlZmVjdG8gZGUgbGEgY2xhc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgZGVsIGNvbXBvbmVudGUgZGVsIGVkaXRvciBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6Y2EgdW4gbsO6bWVybyAocMOteGVsZXMpIG8gdW4gdmFsb3IgcG9yY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBkZWwgZWRpdG9yIGRlIGRlZmluaWNpb25lcyBDSSBlbiBsYSBpbnRlcmZheiBkZSBhZG1pbmlzdHJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBkZSBsb3MgZXN0YWRvcyBkZSBpbmNpZGVuY2lhIGRlIGFsdG8gKHBvciBlamVtcGxvLCBjcsOtdGljbykgYSBiYWpvIChwb3IgZWplbXBsbywgZnVuY2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSByZWxldmFudGVzIGVuIGxvcyBxdWUgbG9zIHRpY2tldHMgdmluY3VsYWRvcyBwdWVkZW4gYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMsIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBsbGV2YXIgY29tbyBwcmVmaWpvIGVsIG5vbWJyZSBkZSBsYSBjbGFzZSB5IGRvcyBwdW50b3MgZG9ibGVzIChwb3IgZWplbXBsbywgQ29tcHV0ZXI6OikuIEhheSBhbGd1bm9zIGF0cmlidXRvcyBDSSBxdWUgc29uIGNvbXVuZXMgYSB0b2RvcyBsb3MgQ0lzIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGxvcyBBdHJpYnV0b3MtQ2kgaW5kaXZpZHVhbGVzIGNvbW8gc2UgZGVmaW5lbiBlbiBsYSBEZWZpbmljacOzbi1DaSwgc2UgZGViZSB1dGlsaXphciBlbCBzaWd1aWVudGUgZXNxdWVtYSAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3IpOiBPcmRlbmFkb3I6OkRpc2NvRHVybzo6MSwgQ29tcHV0YWRvcjo6RGlzY29EdXJvOjoxOjpDYXBhY2lkYWQ6OjEsIENvbXB1dGFkb3I6OkRpc2NvRHVybzo6MiwgQ29tcHV0YWRvcjo6RGlzY29EdXJvOjoyOjpDYXBhY2lkYWQ6OjEuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEgcGFyYSB1bmEgY2xhc2UgQ0ksIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIHBhcmEgIkFjY2nDs24iIGVuIGVsIHRlcmNlciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgcHJpbWVyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgc2VndW5kbyBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIGVubGFjZSAobm9tYnJhZG8gZGVzZGUgbGEgcGVyc3BlY3RpdmEgZGVsIHRpY2tldCkgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFjacOzbiBkZSBsYSBkZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQm9ycmFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29sb3IgZGVsIEVzdGFkbyBkZSBEZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBxdWUgbWFyY2EgbGFzIGRlZmluaWNpb25lcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyBubyBzaW5jcm9uaXphZGFzIHNpIGNhbWJpYW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBjb250aWVuZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgY2FtcG9zIGFkaWNpb25hbGVzIElUU00gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gZGUgYWNjacOzbiBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgcXVlIGVsIGZyb250ZW5kIGRlbCBhZ2VudGUgdHJhYmFqZSBlbiBtw6FzIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGEgbGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIGFjY2nDs24gbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzw7NsbyBwYXJhIGxvcyBncnVwb3MgZGUgbGEgbGlzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FjdGl2YS9kZXNhY3RpdmEgbGEgZnVuY2lvbmFsaWRhZCBkZSBjb21wcm9iYXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHBhcmEgbm9tYnJlcyDDum5pY29zLiBBbnRlcyBkZSBoYWJpbGl0YXIgZXN0YSBvcGNpw7NuIGRlYmUgY29tcHJvYmFyIHNpIGV4aXN0ZW4gZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBub21icmVzIGR1cGxpY2Fkb3MuIFB1ZWRlIGhhY2VybG8gY29uIGVsIGNvbWFuZG8gZGUgY29uc29sYSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBwYXJhIGVzdGFibGVjZXIgZWwgZXN0YWRvIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCB0aWNrZXQtY29uZmlnaXRlbS1lbmxhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24sIHV0aWxpemFkb3MgcGFyYSBsYSBiw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8uIExvcyBjYW1wb3MgdGFtYmnDqW4gc2UgYWxtYWNlbmFuLCBwZXJvIG5vIHNvbiBvYmxpZ2F0b3Jpb3MgcGFyYSBsYSBmdW5jaW9uYWxpZGFkIGdlbmVyYWwuIExhIGluY2x1c2nDs24gZGUgYW5leG9zIHB1ZWRlIGRlc2FjdGl2YXJzZSBwb25pZW5kbyBsYSBlbnRyYWRhIGEgMCBvIGJvcnLDoW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcG9zIGFsbWFjZW5hZG9zIGVuIGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSB1dGlsaXphbiBwYXJhIG90cmFzIGNvc2FzIGFkZW3DoXMgZGUgbGFzIGLDunNxdWVkYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgbGEgZnVuY2lvbmFsaWRhZCBjb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zIHNvbiBvYmxpZ2F0b3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUGFyYSBjYWRhIHdlYnNlcnZpY2UgKGNsYXZlKSBzZSBwdWVkZSBkZWZpbmlyIHVuIGFycmF5IGRlIGNsYXNlcyAodmFsb3IpIHNvYnJlIGxhcyBxdWUgc2UgcmVzdHJpbmdlIGxhIGltcG9ydGFjacOzbi4gUGFyYSB0b2RhcyBsYXMgY2xhc2VzIGVsZWdpZGFzLCBvIHRvZGFzIGxhcyBjbGFzZXMgZXhpc3RlbnRlcywgbG9zIGF0cmlidXRvcyBkZSBpZGVudGlmaWNhY2nDs24gdGVuZHLDoW4gcXVlIHNlciBlbGVnaWRvcyBlbiBsYSBjb25maWd1cmFjacOzbiBkZWwgaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkZWwgbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgbGEgY2FwYSBpbnZvY2Fkb3JhIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkZWwgbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgbGEgY2FwYSBpbnZvY2Fkb3JhIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1Jlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBpbmNpZGVuY2lhcyBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIHJlc3VsdGFkbyBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1bmEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlc3RhZMOtc3RpY2FzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWJyZSBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNw7NkdWxvIG51bcOpcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgZGViZW4gbW9zdHJhcnNlIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBidXNjYXIsIGN1w6FudGFzIGVudHJhZGFzIHkgcXXDqSBhdHJpYnV0b3MgbW9zdHJhci4gTG9zIGF0cmlidXRvcyBDb25maWdJdGVtIGRlYmVuIGFsbWFjZW5hcnNlIGV4cGzDrWNpdGFtZW50ZSBhIHRyYXbDqXMgZGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgR2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIGNhdGVnb3LDrWFzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGZpbHRyb3MgZGUgY29sdW1uYSBkZSBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBwZXF1ZcOxb3MuIFBvciBmYXZvciwgdGVuZ2EgZW4gY3VlbnRhOiBlc3RhYmxlY2VyIFwnQWN0aXZvXCcgYSAwIHPDs2xvIGV2aXRhcsOhIHF1ZSBsb3MgYWdlbnRlcyBlZGl0ZW4gbG9zIGFqdXN0ZXMgZGUgZXN0ZSBncnVwbyBlbiBzdXMgcHJlZmVyZW5jaWFzIHBlcnNvbmFsZXMsIHBlcm8gc2VndWlyw6EgcGVybWl0aWVuZG8gYSBsb3MgYWRtaW5pc3RyYWRvcmVzIGVkaXRhciBsb3MgYWp1c3RlcyBlbiBub21icmUgZGUgb3RybyB1c3VhcmlvLiBVdGlsaWNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgcGFyYSBjb250cm9sYXIgZW4gcXXDqSDDoXJlYSBkZWJlbiBtb3N0cmFyc2UgZXN0b3MgYWp1c3RlcyBlbiBsYSBpbnRlcmZheiBkZSB1c3VhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGJhY2tlbmQgZGVsIHBhbmVsIGRlIGNvbnRyb2wgZGUgbGEgbGlzdGEgZGUgdXN1YXJpb3MgY2xpZW50ZSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIC4gIkzDrW1pdGUiIGVzIGVsIG7Dum1lcm8gZGUgZW50cmFkYXMgcXVlIHNlIG11ZXN0cmFuIHBvciBkZWZlY3RvLiAiR3J1cG8iIHNlIHV0aWxpemEgcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKHBvciBlamVtcGxvLCBHcnVwbzogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlc3TDoSBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyB0aWVuZSBxdWUgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZGUgY2FjaMOpIGVuIG1pbnV0b3MgcGFyYSBlbCBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBiYWNrZW5kIGRlbCBwYW5lbCBkZSBjb250cm9sIGRlIGxhIGxpc3RhIGRlIHVzdWFyaW9zIGNsaWVudGUgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZSAuICJMw61taXRlIiBlcyBlbCBuw7ptZXJvIGRlIGVudHJhZGFzIHF1ZSBzZSBtdWVzdHJhbiBwb3IgZGVmZWN0by4gIkdydXBvIiBzZSB1dGlsaXphIHBhcmEgcmVzdHJpbmdpciBlbCBhY2Nlc28gYWwgcGx1Z2luIChwb3IgZWplbXBsbywgR3J1cG86IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluYSBzaSBlbCBwbHVnaW4gZXN0w6EgaGFiaWxpdGFkbyBwb3IgZGVmZWN0byBvIHNpIGVsIHVzdWFyaW8gdGllbmUgcXVlIGhhYmlsaXRhcmxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgZXMgZWwgdGllbXBvIGRlIGNhY2jDqSBlbiBtaW51dG9zIHBhcmEgZWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgY29sb3IgZGUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgZWplbXBsbyBkZSBwZXJtaXNvcyBkZSBncnVwbyBkZWwgY2F0w6Fsb2dvIGdlbmVyYWwgZGUgYXRyaWJ1dG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZSBub21icmVzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gbnVtw6lyaWNvIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlbCBraXQgZGUgaGVycmFtaWVudGFzIGRlIHBsYW50aWxsYXMgZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGFjdGl2YWRvciBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1JlYWxpemEgbGEgYWNjacOzbiBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvIChjb21vIEludm9rZXIpIHBhcmEgY2FkYSBXZWJzZXJ2aWNlIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzb3MgZGUgZ3J1cG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIGFjY2nDs24gZGUgYWRqdW50YXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIHZpc3RhIGRlIMOhcmJvbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYW1wbGlhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYcOxYWRpciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gbWFzaXZhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlZGljacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCBoaXN0b3JpYWwgZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGltcHJlc2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWxlZ2lvcyBuZWNlc2FyaW9zIHBhcmEgZWxpbWluYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0J1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFc3RhYmxlemNhIGVsIGVzdGFkbyBkZSBsYSBpbmNpZGVuY2lhIGRlIHVuIENJIGRlIGZvcm1hIGF1dG9tw6F0aWNhIGN1YW5kbyBzZSB2aW5jdWxlIHVuIHRpY2tldCBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBlbiBsYSBwYW50YWxsYSBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlIGxhIGluY2lkZW5jaWEgZW4gbGEgcGFudGFsbGEgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSB2aW5jdWxhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gb3RybyBvYmpldG8gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWxpbWluYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2aXN1YWxpemFyIGxvcyBlbmxhY2VzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyB1bmEgdmlzdGEgZW4gw6FyYm9sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGVkaXRhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZvbHZlciBhIGxhIHZpc3RhIGRlIHpvb20gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBpbXByaW1pciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhbXBsaWFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGVsIGhpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKG9yZGVuYWRvIGRlIGZvcm1hIGludmVyc2EpIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgcG9yIGRlZmVjdG8gcXVlIHNlIG11ZXN0cmEsIHNpIG5vIHNlIHNlbGVjY2lvbmEgbmluZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIHBvciBlamVtcGxvIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBFbCB2YWxvciBwb3IgZGVmZWN0byBlcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBY3RpdmEgYXV0b23DoXRpY2FtZW50ZSBlbCBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRXhwcmVzacOzbiBkZSBjYWRlbmEgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0FjdGl2YWRvciBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdTaSBsb3MgY2FtcG9zIGRlYmVuIHJlbGxlbmFyc2UgYXV0b23DoXRpY2FtZW50ZSAoMSksIHkgZW4gZXNlIGNhc28gdGFtYmnDqW4gZGViZW4gb2N1bHRhcnNlIGRlIGxvcyBmb3JtdWxhcmlvcyBkZSBsYXMgZW50cmFkYXMgKDIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBzZSBwdWVkZSBldml0YXIgbGEgZWplY3VjacOzbiBkZSBDb25maWdJdGVtQUNMIGNvbXByb2JhbmRvIGxhcyBkZXBlbmRlbmNpYXMgZGUgY2FtcG9zIGVuIGNhY2jDqS4gRXN0byBwdWVkZSBtZWpvcmFyIGxvcyB0aWVtcG9zIGRlIGNhcmdhIGRlIGxvcyBmb3JtdWxhcmlvcywgcGVybyBkZWJlIGRlc2FjdGl2YXJzZSBzaSBzZSB2YW4gYSB1dGlsaXphciBBQ0xNb2R1bGVzIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIHkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1w6kgaW5mb3JtYWNpw7NuIGdlbmVyYWwgc2UgbXVlc3RyYSBlbiBsYSBjYWJlY2VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdDbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2byc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwdWxnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHB1bGdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcHVsZ2FkYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcHVsZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwdWxnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3JlbWFsbGVyYSBkZSAyMSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDk3LDc5IGNtICgzOCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdFc3RhbnRlIGRlIDIzIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwdWxnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcHVsZ2FkYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHB1bGdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcHVsZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcHVsZ2FkYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHB1bGdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwdWxnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcHVsZ2FkYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHB1bGdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzEuMDAwIG1tICgzOSw0IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcHVsZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwdWxnYWRhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcHVsZ2FkYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcHVsZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcHVsZ2FkYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwdWxnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHB1bGdhZGFzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcHVsZ2FkYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwdWxnYWRhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwdWxnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNpZ25hY2nDs24gZGUgZGlyZWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsw6lmb25vIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpZGFkIGRlIGxhIGJhdGVyw61hIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkZSBiYXRlcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZheiBkZSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaWRhZCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpZGFkIHBvciB0YXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdG9yIGRlIHRhcmpldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1RpcG8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnUmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZCBkZSByZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBkZSBjb25mZXJlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgY29uc3VsdG9yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdQw7NuZ2FzZSBlbiBjb250YWN0byBjb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3RhciBjb24gZWwgZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgY29udGVuZWRvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gZGVzZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGhhc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbMOpZm9ubyBpbmFsw6FtYnJpY28gKHRlbMOpZm9ubyBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdVbmlkYWQgZGUgY29zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdSZWN1ZW50byBkZSBsaWNlbmNpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0ZlY2hhIGRlIGNyZWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnRXN0YW50ZXLDrWEgcGVyc29uYWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRmVjaGEgZGUgbGEgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRmVjaGEgZGVsIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRmVjaGEgZGUgbGEgZ2FyYW50w61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0ZlY2hhIGRlIHB1YmxpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRXNjcml0b3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIChDZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbiBkZSBsYSBheXVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0ZlY2hhIGRlIGV4cGlyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyBkdXJvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdDb3J0YWZ1ZWdvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8gZGUgZW5lcmfDrWEgbWVkaWFudGUgdm9sYW50ZSBkZSBpbmVyY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFjdG9yIGRlIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGZyYW5xdWljaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZ2VuZXJhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1RhcmpldGFzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnVGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZGVsIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXJpY3VsYXJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0acOzbiBkZSBpZGVudGlkYWRlcyB5IGFjY2Vzb3MgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBpbnZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAocGFudGFsbGEgZGUgY3Jpc3RhbCBsw61xdWlkbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBlbWlzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZmlqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdDb21wdXRhZG9yIFBvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmljYW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpZGFkIGRlIGNhcmdhIG3DoXhpbWEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUaXBvIGRlIG1lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBtw7N2aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTcOzdmlsL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTcOzZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNb3VzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjacOzbiBkZSBsYSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZSBsYSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgbsOtcXVlbC1jYWRtaW8gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgbsOtcXVlbC1oaWRydXJvIG1ldMOhbGljbyAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWN1ZXJkbyBkZSBjb25maWRlbmNpYWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ3VhZGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOw7ptZXJvIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOw7ptZXJvIGRlIG3Ds2R1bG9zIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw7ptZXJvIGRlIHRhcmpldGFzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChkaW9kbyBvcmfDoW5pY28gZW1pc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQ29zdGVzIGRlIGV4cGxvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ090cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1NhbGlkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBhc29jaWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGVsw6lmb25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ07DumNsZW9zIGbDrXNpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3VtaW5pc3RybyBkZSBlbmVyZ8OtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0NvbXByYWRvIGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mdW5kaWRhZCBkZSBsYSBlc3RhbnRlcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaWRhZGVzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdST00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdJbmNsdXllIGVzdGFkb3MgZGUgaW5jaWRlbmNpYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpY2lvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aXF1ZXRhIGRlIHNlcnZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGUgZW5jaHVmZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0YXZvY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGljacOzbiBkZSBhbG1hY2VuYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmVzdW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudGUgbGlnZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdIaWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgZGUgbGEgdGFyamV0YSBncsOhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgdMOhY3RpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzY29zIGRlIFJWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdDw6FtYXJhIHdlYic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/et_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmV0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDnGxkaXNlZCB0ZWdldnVzYW5kbWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTaXNzZXR1bGV2YXRlIHRhb3RsdXN0ZSBhbmRtZXRlIHNlYWRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1bDpGxqYW1pbmV2YXRlIHZhc3R1c2FuZG1ldGUgc2VhZGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU2VydmVyIE9TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1ZGEga2xhc3NpIG3DpMOkcmF0bHVzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1ZGEgcm9sbGkgbcOkw6RyYXRsdXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IGtsYXNzaWtvbXBsZWt0aWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdTaWl0IHNhYXRlIGltcG9ydGlkYSBSZWFkeTJJbXBvcnQta2xhc3NpZGUgcGFrZXR0ZSwgbWlzIHR1dHZ1c3RhdmFkIG1laWUga8O1aWdlIHRhdmFsaXNlbWFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuIFBhbmdlIHTDpGhlbGUsIGV0IG3DtW5lZCB0w6RpZW5kYXZhZCBrb25maWd1cmF0c2lvb25pZCB2w7VpdmFkIG9sbGEgdmFqYWxpa3VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdPbGVtYXNvbGV2YXRlIMO8a3N1c3RlIGFqYWtvaGFzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3JkaSBSZWFkeTJBZG9wdCBrbGFzc2kgcGFrZXRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlIChzZWFkaXN0dXNlbGVtZW5kaSByb2xsKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdLbGFzc2lkZSBmaWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVXVlIENvbmZpZyBJdGVtXCdpIGxvb21pc2VrcyB2YWxpZ2UgbmltZWtpcmphc3Qga2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSBzZWlzdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW50c2lkZW50aWRlIG9sdWtvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0ZWlzZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaWdhbmUga29uZmlndXJhdHNpb29uaSBraXJqZSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RlaXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBudW1iZXIsIG1pbGxlZ2Egc2lkdWRhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1bDtXJrJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpIHBvb2x0IGrDpHJnbWlzZSh0ZSkgbnVtYnJpKGRlKWdhOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb29uaSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSB2ZXJzaW9vbmkgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lvb25pbnVtYmVyIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpcywgbWlsbGUgbnVtYmVyKGQpIG9uIGrDpHJnbWluZShkKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSByaWlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW50c2lkZW50aWRlIHJpaWsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtXCdpIGFqYWx1Z3U6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0FqYWx1Z3UgU2lzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdTdXVyZW5kdXN2YWFkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UgKHNlYWRpc3R1c2VsZW1lbmRpZCBsZWhla8O8bGplIGtvaHRhKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQ29uZmlnLWVsZW1lbmRpIGFuZG1laWQgZWkgbGVpdHVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGlnZSBzZWUga29uZmlndXJhdHNpb29uaWVsZW1lbnQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdLw6Rpdml0YSBvdHNpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnT3RzaSBrYSBlZWxtaXN0ZXMgdmVyc2lvb25pZGVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW1cJ2kgVHJlZVZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdTw7xnYXZ1c2UgdGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1N1dW1pbWluZSBzaXNzZS92w6RsamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbVwnaSBtYWtzaW1hYWxuZSBsaW5raWRlIHRhc2Ugb24gc2FhdnV0YXR1ZCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmVlcmltaXNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXJlZXJpbWlzZWxlbWVuZGkgdGVhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnUHJhZWd1bmUga2FzdXR1c2VsZXbDtXR1IG9sdWtvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1ByYWVndW5lIGp1aHR1bWl0ZSBvbHVrb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1ZpaW1hdGkgbXV1ZGV0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVmlpbWF0aSBtdXV0aXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdUZWllIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gb3RzaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdPYmpla3RpIHTDvMO8cCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0ltcG9yZGl0YWtzZSBqw6RyZ21pc2VkIGtsYXNzaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnSW1wb3JkaXRha3NlIGrDpHJnbWlzZWQgcm9sbGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1BhbmdlIHTDpGhlbGUsIGV0IGthIHZhc3RhdmFkIGTDvG5hYW1pbGlzZWQgdsOkbGphZCBqYSBHZW5lcmFsQ2F0YWxvZ2kga2xhc3NpZCBsdXVha3NlIGphIG5laWQgZWkgZWVtYWxkYXRhIGF1dG9tYWF0c2VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdLYXMgc29vdml0ZSBqw6R0a2F0YT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVmFqYWQgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ03DpMOkcmF0bHVzIGVpIG9sZSBrZWh0aXYgWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ8OcbGV2YWFkZTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVGVpbCBvbiB2YWphIHbDpGhlbWFsdCDDvGh0ZSB2YWxpdHVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdUZWlsIGVpIG9sZSBzZWxsZWxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWxlIGtpcmp1dGFtaXPDtWlndXN0OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc3NpbGUgJXMgZWkgb2xlIG3DpMOkcmF0bGV0dWQgZGVmaW5pdHNpb29uaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgZWkgb2xlIGFuZG1lYmFhc2lzIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdFaSDDtW5uZXN0dW51ZCBrdXN0dXRhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGphb2tzIGVpIGxlaXR1ZCB2ZXJzaW9vbmkhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgdsO1aSBDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0p1dXJkZXDDpMOkc3UgZWkgYW50YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIENvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIGp1dXJkZXDDpMOkc3XDtWlndXN0IGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ1V1cyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1V1cyB2ZXJzaW9vbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw5xsZGlzdGUga2F0YWxvb2dpIGF0cmlidXV0aWRlIG7DpGlkaXPDtWlndXN0ZSByw7xobWFkZSBwYXJhbWVldHJpZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSnVodHVtaXRlIHNlaXN1bmRpIHV1ZW5kYW1pbmUgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGlzYXR1ZCBsaW5rICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayAlcyAodHlwZT0lcykga3VzdHV0YXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBtw6TDpHJhdGx1cyB1dWVuZGF0dWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05pbWkgdXVlbmRhdHVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdFaSBzYWEgbsOkaWRhdGEgZWxlbWVudGksIENvbmZpZ0l0ZW1pbGUgZWkgb2xlIGFudHVkIGp1dXJkZXDDpMOkc3XDtWlndXNpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9vbiAlcyBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2w7VpIFZlcnNpb25JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0VpIHNhYSBrdXZhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpLCBlaSBvbGUgYW50dWQganV1cmRlcMOkw6RzdcO1aWd1c2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGVpIGxlaXR1ZCBhbmRtZWJhYXNpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Ryw7xraXR1ZCAlcyBwb29sdCBhYWRyZXNzaWwgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1ZpaXRlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1ZhbGUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdTZWxsZWxlIGtsYXNzaWxlIGVpIG9sZSBqdXVyZGVww6TDpHN1w7VpZ3VzdCBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1R1bGVtdXN0IGVpIG9sZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBvdHNpbmd1IHR1bGVtdXNlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnRWkgc2FhIG7DpGlkYXRhIGVsZW1lbnRpLCBDb25maWdJdGVtaWxlIGVpIG9sZSBhbnR1ZCBqdXVyZGVww6TDpHN1w7VpZ3VzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBlaSBsZWl0dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ8OcaHRlZ2kgdmVyc2lvb25pIGVpIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpaXZuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnaG9pYXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2p1aHR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGthc3V0dXNlbGV2w7V0dSBvbGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGludHNpZGVudG5lIG9sZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdMdWJhIHB1dWR1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIga2VodGV0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMga2VodGV0dSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdOw6RpZGF0dWQga29uZmlndXJhdHNpb29uaSBlbGVtZW5kaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnS2FzdXR1c2VsZXbDtXR1IHJpaWdpIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdQcmFlZ3VuZSDDtW5uZXR1c2p1aHR1bWkgc2Vpc3VuZGl0w7zDvHAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NpIHBpaXJhbmd1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgamFva3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2kgcGlpcmFuZ3VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqYW9rcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRMO8bmFhbWlsaW5lIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhYXRpbGluZSAodmVyc2lvb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmtpZGUgdmlpdGFtaXNlIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdLYXMgc2VlIGxpbmsga2VodGliIHZpaXRhdmEgb2JqZWt0aSBDb25maWdJdGVtXCdpIHbDtWkgc3RhYXRpbGlzZSB2ZXJzaW9vbmkga29odGEuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGVcJ2kgYXJ2dXRhbWluZSB0b2ltdWIgYWludWx0IGTDvG5hYW1pbGlzdGUgbGlua2lkZSBwdWh1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWYWxpZ2UgYXRyaWJ1dXQsIG1pbGxlIGrDpHJnaSBrb25maWd1cmF0c2lvb25pZWxlbWVudGUgb3RzaXRha3NlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0JhYXNzdHJ1a3R1dXIgZWkgb2xlIGtlaHRpdi4gUGFsdW4gZXNpdGFnZSBZQU1MLXZvcm1pbmd1cyBhbmRtZXRlIGhhc2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTC1zdHJpbmdpIGFsdXN0YW1pbmUgc8O1bmFnYSBcJy0tLVwnIG9uIG7DtXV0YXYuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ1RhYmVsaXQgY29uZmlnaXRlbV9saW5rIGVpIMO1bm5lc3R1bnVkIHB1aGFzdGFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0FzamFrb2hhc2VpZCBkw7xuYWFtaWxpc2kgdsOkbGp1IGVpIGxlaXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0VpIMO1bm5lc3R1bnVkIHNpc2VzdGFkYSB0YWJlbGlzc2UgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdTaXNlc3RhdHVkIDAgcmlkYSB0YWJlbGlzc2UgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ8OcaGUgZWxlbWVuZGkgbWFrc2ltYWFsbmUgYXJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9yZGkvZWtzcG9yZGkgbWFudXNlZCAodmlpbWFzZWQga2lyamVkIHJlYSBrb2h0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9vbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnVmlnYSBtw6TDpHJhdGx1c3RlIHPDvG5rcm9uaXNlZXJpbWlzZWwuIFBhbHVuIGtvbnRyb2xsaWdlIGxvZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGVpbCBvbiBJVFNNQ29uZmlnSXRlbSBtw6TDpHJhdGx1c2VkLCBtaXMgZWkgb2xlIHPDvG5rcm9uaXNlZXJpdHVkLiBQYWx1biB2w7V0a2Uga2FzdXR1c2VsZSBvbWEgSVRTTUNvbmZpZ0l0ZW0gZMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBtdXVkYXR1c2VkLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQWVndW51ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0hvb2xkdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5lZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2lvbmlsZSBqw6TDpG51ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDnGxldmFhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ8OcbGV2YWFkZSBqYSBraW5uaXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGFzc2lkZS9yb2xsaWRlIGphIG5lbmRlZ2Egc2VvdHVkIHbDpGxqYWRlIGltcG9ydGltaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnS2xhc3NpIGltcG9ydGltaXNlbCB0ZWtraXMgdmlnYS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIHBlaWRldHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBuw6RpZGF0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1bDtWltYWxkYWIgbGFpZW5kYXR1ZCBvdHNpbmd1dGluZ2ltdXNpIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBvdHNpbmd1cy4gU2VsbGUgZnVua3RzaW9vbmlnYSBzYWF0ZSBvdHNpZGEgbnQgY29uZmlnLWVsZW1lbmRpIG5pbWUgc2VsbGlzdGUgdGluZ2ltdXN0ZWdhIG5hZ3UgIigqa2V5MSomJiprZXkyKikiIHbDtWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdWw7VpbWFsZGFiIGxhaWVuZGF0dWQgb3RzaW5ndXRpbmdpbXVzaSBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXMuIFNlbGxlIGZ1bmt0c2lvb25pZ2Egc2FhdGUgb3RzaWRhIG50IGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBuaW1lIHNlbGxpc3RlIHRpbmdpbXVzdGVnYSBuYWd1ICIoKmtleTEqJiYqa2V5MiopIiB2w7VpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnTcOkw6RyYXR1ZCBlbHV0w6RodHNhZCBpbmZyYXN0cnVrdHV1cmlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS2xpZW50aWRlbGUgbcOkw6RyYXR1ZCBDSWQga2xpZW5kaWV0dGV2w7V0dGVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tsaWVuZGlrYXN1dGFqYWxlIG3DpMOkcmF0dWQgQ0lkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIHNlYWRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnS29udHJvbGxpZGEgdW5pa2FhbHNldCBuaW1lIGFpbnVsdCBzYW1hIENvbmZpZ0l0ZW0ga2xhc3NpIChcJ2NsYXNzXCcpIHbDtWkgZ2xvYmFhbHNlbHQgKFwnZ2xvYmFsXCcpLCBtaXMgdMOkaGVuZGFiLCBldCBkdWJsZWVyaW5ndXRlIG90c2ltaXNlbCB2w7VldGFrc2UgYXJ2ZXNzZSBpZ2Egb2xlbWFzb2xldmF0IENvbmZpZ0l0ZW1cJ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWYWxpZ2UgbW9vZHVsIG5pbWVza2VlbWkgasO1dXN0YW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1ZhbGlnZSBtb29kdWwgbnVtYnJpc2tlZW1pIGrDtXVzdGFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1ZhbGlnZSBtb29kdWwsIGV0IGtlaHRlc3RhZGEgdmVyc2lvb25pamFkYSBza2VlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdWYWxpZ2UgYXRyaWJ1dWRpZCwgbWlzIGvDpGl2aXRhdmFkIHV1ZSB2ZXJzaW9vbmkgbG9vbWlzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVmFsaWdlIGthdGVnb29yaWFkLCBtaXMgbcOkw6RyYXRha3NlIHNlbGxlbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGtsYXNzaWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb25maWdJdGVtIE92ZXJ2aWV3IHZlZXJndSBDb25maWdJdGVtIGVsZW1lbmRpIGZpbHRyaWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdWZWVydWQsIG1pZGEgc2FhYiBmaWx0cmVlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMuIE3DpHJrdXM6IEx1YmF0dWQgb24gYWludWx0IENvbmZpZyBJdGVtIGF0cmlidXVkaWQgamEgZMO8bmFhbWlsaXNlZCB2w6RsamFkIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmVlcmltaXNvYmpla3RpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9vZHVsLCBtaXMgdsO1aW1hbGRhYiBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcyBhamFsdWtrdSBsb2dpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZyBlbGVtZW50aWRlIHPDvG5kbXVzdGUgbW9vZHVsLCBtaXMgdXVlbmRhYiBjb25maWcgZWxlbWVudGUgbmVuZGUgcHJhZWd1c2UgbcOkw6RyYXRsdXNlIGrDpHJnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdWw6RsamFsYXNrZWF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWcgaXRlbSBwcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWcgaXRlbSB6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gVHJlZSBWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gdmVyc2lvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnSsOkcmdtaXN0ZSBrbGFzc2lkZSBDb25maWdJdGVtcyBlaSBzYWx2ZXN0YXRhIEVsYXN0aWNzZWFyY2hpIHNlcnZlcmlzc2UuIEV0IHNlZGEgb2xlbWFzb2xldmF0ZWxlIENJLWRlbGUgcmFrZW5kYWRhLCB0dWxlYiBww6RyYXN0IHNlbGxlIHZhbGlrdSBtdXV0bWlzdCBrw6Rpdml0YWRhIENJIG1pZ3JhdHNpb29uIGtvbnNvb2xpIGthdWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcywgbWlsbGVsIG9uIGrDpHJnbWlzZWQga2FzdXR1c2VsZXbDtXR1IG9sZWt1ZCwgZWkgc2FsdmVzdGF0YSBFbGFzdGljc2VhcmNoaSBzZXJ2ZXJpc3NlLiBTZWxsZSBrb2hhbGRhbWlzZWtzIG9sZW1hc29sZXZhdGVsZSBDSS1kZWxlIHR1bGViIHDDpHJhc3Qgc2VsbGUgdmFsaWt1IG11dXRtaXN0IGvDpGl2aXRhZGEgQ0ktbWlncmF0c2lvb24ga29uc29vbGkga2F1ZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3VyZWVyaW1pc8O8a3N1c2UgcGlpcmFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhdHNpb29uIEVsZW1lbnRpZGUgcGlpcmFydiBsZWhla8O8bGplIGtvaHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXJhdHNpb29uaSBqdWh0aW1pc2UgYW5kbWViYWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGxhaHRpbmUgbW9vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVlcmltaXNlbGVtZW5kaSBvdHNpbmcgYWdlbnRpZGUgbGlpZGVzZSB0YWdhc2lzaWRlIG1hcnNydXV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0x1dWEgamEgaGFsbGF0YSBrb25maWd1cmF0c2lvb25pb2JqZWt0aWRlIG3DpMOkcmF0bHVzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdMb29iIENvbmZpZ0l0ZW1zXCdpIHBpbGV0aWQgdGVhdHVkIGFqYWhldGtlZGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLbGllbmRpZCBzYWF2YWQgbsOkaGEgYWphbG9vbGlzaSBDSS12ZXJzaW9vbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0tsaWVudGlkZWwgb24gdsO1aW1hbHVzIGvDpHNpdHNpIHZhaGV0YWRhIHZhcmFzZW1hdGUgQ0ktdmVyc2lvb25pZGUgdmFoZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnVmFpa2ltaXNpIGFuZG1lZCwgbWlkYSBrYXN1dGF0YWtzZSBhdHJpYnV1dGlkZSBwdWh1bCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4gTsOkaWRlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ZhaWtpbWlzaSBhbmRtZWQsIG1pZGEga2FzdXRhdGFrc2UgYXRyaWJ1dXRpZGUgcHVodWwga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuIE7DpGlkZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ03DpMOkcmFrZSB0b2ltaW5ndWQsIG1pbGxlIHB1aHVsIG9uIHNlb3R1ZCBvYmpla3RpZGUgdmlkaW5hIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4Iikgc2FhZGF2YWwgc2VhZGV0ZSBudXBwIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBhbmdlIHTDpGhlbGUsIGV0IG5lZWQgdG9pbWluZ3VkIHBlYXZhZCBvbGVtYSByZWdpc3RyZWVyaXR1ZCBqw6RyZ21pc2VkIEpTLSBqYSBDU1MtZmFpbGlkOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBqYSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdNw6TDpHJha2UgbWFsbGk6OlRvb2xraXQgc2tlZW0gdmVyc2lvb25pIHN0cmluZ2lkZSBqYW9rcy4gS2FzdXRhdGFrc2UgYWludWx0IHNpaXMsIGt1aSBWZXJzaW9uIFN0cmluZyBNb2R1bGVcJ2lsZSBvbiBtw6TDpHJhdHVkIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdNw6TDpHJha2UgdGluZ2ltdXNlZCwgbWlsbGUgYWx1c2VsIGtsaWVuZGlsIG9uIGx1YmF0dWQga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIG7DpGhhLiBUaW5naW11c2kgc2FhYiB2YWxpa3VsaXNlbHQgcGlpcmF0YSB0ZWF0dWQga2xpZW5kaXLDvGhtYWRlbGUuIE5pbWkgb24gYWludXMga29odXN0dXNsaWsgYXRyaWJ1dXQuIEt1aSBtdWlkIHZhbGlrdWlkIGVpIG9sZSBhbnR1ZCwgb24ga8O1aWsga29uZmlndXJhdHNpb29uaWVsZW1lbmRpZCBzZWxsZSBrYXRlZ29vcmlhIGFsbCBuw6RodGF2YWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSBrdXN0dXRhbWlzZWtzIMO8bGRpc2UgbGlpZGVzZSBhYmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIHNhYW1pc2VrcyDDvGxkaXNlIGxpaWRlc2UgYWJpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIG7DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pb2JqZWt0aWRlIG90c2ltaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc2VhZGlzdGFtaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIMO8bGV2YWF0ZW1vb2R1bGksIG1pcyBuw6RpdGFiIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGxvZW5kaSB2w6Rpa2VzdCB2YWFkZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBrYXMgbGluZ2l0w7zDvGJpIHNpbGRpZCBwZWF2YWQgb2xlbWEga3V2YXR1ZCBzw7VsbWXDvGhlbmR1c3Rlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGlnYSBDb25maWdJdGVtLWtsYXNzaSBqYW9rcyBlcmFsZGkgcmVndWxhYXJhdmFsZGlzZWQgQ29uZmlnSXRlbS1uaW1lIGtvbnRyb2xsaW1pc2VrcyBqYSB2YXN0YXZhdGUgdmVhdGVhZGV0ZSBrdXZhbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIENJZGUgb2xlbWFzb2xldmFkIHZlZXJ1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcyBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgcGVhYiBrb29zbmVtYSBrbGFzc2kgbmltZXN0IGphIHZhc3RhdmEga2xhc3NpIGphb2tzIGvDpHR0ZXNhYWRhdmF0ZSB2w6RsamFkZSBtYXNzaWl2aS4gRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBraXJqZWQgcGVhdmFkIGrDpHJnaW1hIHNrZWVtaSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhdHJpYnV1ZGksIG1pcyBvbiB2YWphbGlrIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlIHNvcnRlZXJpbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhdHJpYnV1ZGkga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZSBzb3J0ZWVyaW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNw6TDpHJhYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGF0cmlidXVkaSBzZWxsZSBvcGVyYXRzaW9vbmkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZSBzb3J0ZWVyaW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgasOkcmpla29ycmEgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2VzLiDDnGxlczogdmFuaW0gb24gw7xsZXZhbC4gQWxsYTogdXVzaW0gw7xsZXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgasOkcmpla29ycmEga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZXMuIMOcbGVzOiB2YW5pbSBvbiDDvGxldmFsLiBBbGxhOiB1dXNpbSDDvGxldmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJhYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGrDpHJqZWtvcnJhIHNlbGxlIG9wZXJhdHNpb29uaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlcy4gw5xsZXM6IHZhbmltIHBlYWwuIEFsbGE6IHV1c2ltIMO8bGV2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSWRlIHZhaWtpbWlzaSBrdXZhdGF2YWQgdmVlcnVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzIHPDtWx0dXZhbHQgQ0kta2xhc3Npc3QuIElnYSBraXJqZSBwZWFiIGtvb3NuZW1hIGtsYXNzaSBuaW1lc3QgamEgdmFzdGF2YSBrbGFzc2kgamFva3Mga8OkdHRlc2FhZGF2YXRlIHbDpGxqYWRlIG1hc3NpaXZpLiBEw7xuYWFtaWxpc3RlIHbDpGxqYWRlIGtpcmplZCBwZWF2YWQgasOkcmdpbWEgc2tlZW1pIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ03DpMOkcmFiIHZhaWtpbWlzaSBrdXZhdGF2YXRlIHN1aGV0ZSBzw7xnYXZ1c2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIHZhaWtpbWlzaSBrdXZhdGF2YSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBhdHJpYnV1ZGkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiB2YWlraW1pc2kga3V2YXRhdmEga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgYXRyaWJ1dWRpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLiBOw6RpZGU6ICJLZXkiIHBlYWIgb2xlbWEgZMO8bmFhbWlsaXNlIHbDpGxqYSBuaW1pLCBhbnR1ZCBqdWh1bCBcJ1hcJywgIkNvbnRlbnQiIHBlYWIgb2xlbWEgZMO8bmFhbWlsaXNlIHbDpGxqYSB2w6TDpHJ0dXMgc8O1bHR1dmFsdCBkw7xuYWFtaWxpc2UgdsOkbGphIHTDvMO8YmlzdCwgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgamEgdsO1aSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBrbGFzc2kgXCdJVFNNQ29uZmlnSXRlbVwnIHZhaWtpbWlzaSBhbGFtb2JqZWt0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIENJZGUgb2xlbWFzb2xldmFkIHZlZXJ1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcyBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgcGVhYiBrb29zbmVtYSBrbGFzc2kgbmltZXN0IGphIHZhc3RhdmEga2xhc3NpIGphb2tzIGvDpHR0ZXNhYWRhdmF0ZSB2w6RsamFkZSBtYXNzaWl2aS4gRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBraXJqZWQgcGVhdmFkIGrDpHJnaW1hIHNrZWVtaSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdNw6TDpHJhYiBzZWxsZSBla3JhYW5pIHJpa2thbGlrdSB0ZWtzdGlyZWRha3Rvcmkga29tcG9uZW5kaSBrw7VyZ3VzZS4gU2lzZXN0YWdlIGFydiAocGlrc2xpZCkgdsO1aSBwcm90c2VudHVhYWxuZSB2w6TDpHJ0dXMgKHN1aHRlbGluZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIENJIG3DpMOkcmF0bHVzZSByZWRha3RvcmkgcmlkYWRlIGFydnUgaGFsZHVzbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGp1aHR1bWkgc2Vpc3VuZGl0ZSBqw6RyamVrb3JyYSBrw7VyZ2VzdCAobnQga3JpdHNpYWFsbmUpIGt1bmkgbWFkYWxhbmkgKG50IGZ1bmt0c2lvbmFhbG5lKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBhc2phb21hc2VkIGthc3V0dXNlbGV2w7V0dSBvbGVrdWQsIG1pbGxlIHB1aHVsIHNlb3R1ZCBwaWxldGlkIHbDtWl2YWQgbcO1anV0YWRhIENJIG9sZWt1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBhZ2VudElUU01Db25maWdJdGVtIGVrcmFhbmkgb3RzaW5ndXBpaXJhbmd1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIG90c2luZ3VwaWlyYW5ndSBla3JhYW5pIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYWIgb3RzaW5ndXBpaXJhbmd1IGVrcmFhbmkgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBqYW9rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhYiBvdHNpbmd1cGlpcmFuZ3UgZWtyYWFuaWwgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBrw7Vpa2lkZSBDSS1rbGFzc2lkZSBqYW9rcyBsaW5naXRhYmVsaXMga29tcGxla3N2YWF0ZXMgbsOkaWRhdHVkIENJZGUgdmVlcnVkLiBLdWkga2FubmUgcHV1ZHViLCBrdXZhdGFrc2UgdmFpa2ltaXNpIHZlZXJ1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGxpbmdpdGFiZWxpcyBrb21wbGVrc3ZhYXRlcyBuw6RpZGF0dWQgQ0lkZSB2ZWVydWQgc8O1bHR1dmFsdCBDSS1rbGFzc2lzdC4gSWdhIGtpcmplIGVlcyBwZWFiIG9sZW1hIGtsYXNzaSBuaW1pIGphIGtha3Mga29vbG9uaXQgKG50IENvbXB1dGVyOjopLiBPbiBvbGVtYXMgbcO1bmVkIENJLUF0dHJpYnV1ZGlkLCBtaXMgb24ga8O1aWdpbGUgQ0lkZWxlIMO8aGlzZWQgKG7DpGl0ZWtzIGtsYXNzaSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gw5xrc2lrdXRlIENJLUF0dHJpYnV1dGlkZSBuw6RpdGFtaXNla3MsIG5hZ3Ugb24gbcOkw6RyYXRsZXR1ZCBDSS1EZWZpbml0c2lvb25pcywgdHVsZWIga2FzdXRhZGEgasOkcmdtaXN0IHNrZWVtaSAobsOkaWRlIGtsYXNzaSBDb21wdXRlciBwdWh1bCk6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBLdWkgQ0kta2xhc3NpIGtvaHRhIHB1dWR1YiBrYW5uZSwga3V2YXRha3NlIHZhaWtpbWlzaSB2ZWVydWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc2VkIGVsZW1lbmRpZCBvbiBzYWFkYXZhbCAiQWN0aW9uIiBqYW9rcyBJVFNNIENvbmZpZyBJdGVtIEFDTGkgc3RydWt0dXVyaSBrb2xtYW5kYWwgdGFzYW5kaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc2VkIGVsZW1lbmRpZCBvbiBzYWFkYXZhbCBJVFNNIENvbmZpZyBJdGVtIEFDTGkgc3RydWt0dXVyaSBlc2ltZXNlbCB0YXNhbmRpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc2VkIGVsZW1lbmRpZCBvbiBzYWFkYXZhbCBJVFNNIENvbmZpZyBJdGVtIEFDTGkgc3RydWt0dXVyaSB0ZWlzZWwgdGFzYW5kaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBtaWxsaXN0IHTDvMO8cGkgbGluayAobmltZWdhIHBpbGV0aSB2YWF0ZW51cmdhc3QpIHbDtWliIG3DtWp1dGFkYSBzZW90dWQgQ0kgc3RhYXR1c3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc3QgdMO8w7xwaSBwaWxldGlkIHbDtWl2YWQgbcO1anV0YWRhIHNlb3R1ZCBDSSBzdGFhdHVzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdNw6TDpHJhdGx1c2UgYWpha29oYXN0YW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0t1c3R1dGEga29uZmlndXJhdHNpb29uaWVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdLYXN1dHVzZWxldsO1dHUgb2xlayBWw6Rydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBzw7xuZG11c3RlIG1vb2R1bCwgbWlzIG3DpHJnaWIga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG3DpMOkcmF0bHVzZWQgc8O8bmtyb29uaXN0IHbDpGxqYXMgb2xldmFrcywga3VpIGTDvG5hYW1pbGlzaSB2w6RsanUgc2lzYWxkYXZhZCBkw7xuYWFtaWxpc2VkIHbDpGxqYWQgbXV1dHV2YWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc2VkIHbDpGxqYWQsIG1pcyBrdXZhdGFrc2UgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIHTDpGllbmRhdmF0ZSBJVFNNLXbDpGxqYWRlIGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc2VkIHbDpGxqYWQsIG1pcyBrdXZhdGFrc2Uga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZSBla3JhYW5pbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDvG5hYW1pbGlzZWQgdsOkbGphZCwgbWlzIGt1dmF0YWtzZSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdWw7VpbWFsZGFiIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBtYXNzaXRlZ2V2dXNlIGZ1bmt0c2lvb25pLCBldCBhZ2VudGlkZSBmcm9udGVuZCBzYWFrcyB0w7bDtnRhZGEga29ycmFnYSByb2hrZW0ga3VpIMO8aGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpZ2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdTZWxsZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2FzdXR1c2VsZXbDtXR1IG9sZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnVsO1aW1hbGRhYi92w6RsamEgbMO8bGl0YWIgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUga29udHJvbGxpbWlzZSBmdW5rdHNpb29uaSB1bmlrYWFsc2V0ZSBuaW1lZGUgb3Nhcy4gRW5uZSBzZWxsZSBzdXZhbmRpIGx1YmFtaXN0IHBlYWtzaXRlIGtvbnRyb2xsaW1hIG9tYSBzw7xzdGVlbWkganViYSBvbGVtYXNvbGV2YXRlIGR1YmxlZXJpdmF0ZSBuaW1lZGVnYSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBzdWh0ZXMuIFNlZGEgc2FhdGUgdGVoYSBrb25zb29saSBrw6RzdWdhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnU8O8bmRtdXNlIG1vb2R1bCwgZXQgbcOkw6RyYXRhIGNvbmZpZ2l0ZW0tc3RhdHVzIHRpY2tldC1jb25maWdpdGVtLWxpbmtpbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpbmRla3NpIHbDpGxqYWQsIG1pZGEga2FzdXRhdGFrc2UgdMOkaXN0ZWtzdGlvdHNpbmd1a3MuIFbDpGxqYWQgb24gc2FtdXRpIHNhbHZlc3RhdHVkLCBrdWlkIGVpIG9sZSDDvGxkaXNlIGZ1bmt0c2lvbmFhbHN1c2UgamFva3Mga29odXN0dXNsaWt1ZC4gTWFudXN0ZSBsaXNhbWlzZSBzYWFiIGtlZWxhdGEsIGt1aSBtw6TDpHJhdGEga2lyamUgdsOkw6RydHVzZWtzIDAgdsO1aSBrdXN0dXRhZGEgc2VlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnS29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGluZGVrc2lzc2Ugc2FsdmVzdGF0dWQgdsOkbGphZCwgbWlkYSBrYXN1dGF0YWtzZSBsaXNha3MgdMOkaXN0ZWtzdG90c2luZ3V0ZWxlIGthIG11dWRla3MgYXNqYWRla3MuIFTDpGllbGlrdSBmdW5rdHNpb25hYWxzdXNlIHRhZ2FtaXNla3Mgb24ga8O1aWsgdsOkbGphZCBrb2h1c3R1c2xpa3VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0lnYSB2ZWViaXRlZW51c2UgKHbDtXRpKSBqYW9rcyBzYWFiIG3DpMOkcmF0bGVkYSBrbGFzc2lkZSBtYXNzaWl2aSAodsOkw6RydHVzKSwgbWlsbGUgcHVodWwgb24gaW1wb3J0IHBpaXJhdHVkLiBLw7VpZ2kgdmFsaXR1ZCBrbGFzc2lkZSB2w7VpIGvDtWlnaSBvbGVtYXNvbGV2YXRlIGtsYXNzaWRlIGphb2tzIHR1bGViIGludm9rZXJcJ2kga29uZmlndXJhdHNpb29uaXMgdmFsaWRhIGlkZW50aWZpdHNlZXJpdmFkIGF0cmlidXVkaWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2VcJ2kgbW9vZHVsaSByZWdpc3RyZWVyaW1pbmUgQ29uZmlnSXRlbUZldGNoIGt1dHN1dmEga2loaSBqYW9rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlXCdpIG1vb2R1bGkgcmVnaXN0cmVlcmltaW5lIENvbmZpZ0l0ZW1GZXRjaCBrdXRzdXZhIGtpaGkgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2VcJ2kgbW9vZHVsaSByZWdpc3RyZWVyaW1pbmUgQ29uZmlnSXRlbUZldGNoIGt1dHN1dmEga2loaSBqYW9rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc2FsZGFiIGtsaWVuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1c3NlIGthc3V0dXNlbGV2w7V0dSBvbGVrdWlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2lzYWxkYWIga2xpZW5kaWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3Vzc2UgaW50c2lkZW50aWRlIG9sZWt1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ1NlbGxlIG9wZXJhdHNpb29uaSB0dWxlbXVzZWwga3V2YXRhdmF0ZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBtYWtzaW1hYWxuZSBhcnYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9vZHVsLCBldCBrb250cm9sbGlkYSBrbGFzc2kgZWVzdCB2YXN0dXRhdmF0IHLDvGhtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb29kdWwsIGV0IGtvbnRyb2xsaWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBlZXN0IHZhc3R1dGF2YXQgcsO8aG1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vb2R1bCBJVFNNLWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc3RhdGlzdGlrYSBnZW5lcmVlcmltaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmltaSBNb29kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJyaW1vb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVlcmltaXNvYmpla3RpZGUgYXJ2LCBtaXMga3V2YXRha3NlIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzIGlnYWwgb3RzaW5ndXR1bGVtdXNlIGxlaGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLbGllbnRpZGUga2FzdXRhamFsaWlkZXNlcyBpZ2FsIG90c2luZ3V0dWxlbXVzZSBsZWhlbCBrdXZhdGF2YXRlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGFydi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdvYmpla3RpZCwgbWlkYSBvdHNpZGEsIGt1aSBwYWxqdSBraXJqZWlkIGphIG1pbGxpc2VpZCBhdHJpYnV1dGUgbsOkaWRhdGEuIENvbmZpZ0l0ZW0gYXRyaWJ1dWRpZCB0dWxlYiBzZWxnZXPDtW5hbGlzZWx0IHNhbHZlc3RhZGEgRWxhc3RpY3NlYXJjaGkga2F1ZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ8OcbGV2YWFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lkZSBrYXRlZ29vcmlhdGUgamFva3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIHbDpGlrZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGUgdmVlcmd1ZGUgZmlsdHJpdGUgamFva3MuIFBhbmdlIHTDpGhlbGU6IGt1aSBtw6TDpHJhdGEgXCdBY3RpdmVcJyB2w6TDpHJ0dXNla3MgMCwgdGFraXN0YWIgc2VlIGFpbnVsdCBhZ2VudGlkZWwgc2VsbGUgZ3J1cGkgc2VhZGV0ZSBtdXV0bWlzdCBvbWEgaXNpa2xpa2VzIGVlbGlzdHVzdGVzLCBrdWlkIGx1YmFiIGFkbWluaXN0cmFhdG9yaXRlbCBzaWlza2kgdGVpc2Uga2FzdXRhamEgbmltZWwgc2VhZGV0ZSBtdXV0bWlzdC4gS2FzdXRhZ2UgXCdQcmVmZXJlbmNlR3JvdXBcJywgZXQga29udHJvbGxpZGEsIG1pbGxpc2VzIHBpaXJrb25uYXMgbmVpZCBzZWFkZWlkIGthc3V0YWphbGlpZGVzZXMgbsOkaWRhdGFrc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0thc3V0dXNlbGV2w7V0dSBvbGVrdXRlIHBhcmFtZWV0cml0ZSB2w6RydiBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAna2FzdXR1c2VsZXbDtXR1IG9sZWt1dGUgcGFyYW1lZXRyaWQgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfDnGxkaXN0ZSBrYXRhbG9vZ2kgYXRyaWJ1dXRpZGUgbsOkaWRpc8O1aWd1c3RlIHLDvGhtYWRlIHBhcmFtZWV0cmlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05pbWVtb29kdWxpIHBhcmFtZWV0cmlkIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaWtsYXNzaWRlIGphb2tzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIG51bWJyaW1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdMZWhla8O8bGdlZGUgcGFyYW1lZXRyaWQgKGt1cyBrdXZhdGFrc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbnRlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIHN0cmluZ2kgbW9vZHVsaSBqYW9rcyBjb25maWcgZWxlbWVudGlkZSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIHZlcnNpb29uaSBzdHJpbmdpIG1hbGxpIHTDtsO2cmlpc3Rha29tcGxla3RpIG1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUgbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIGvDpGl2aXRhbWlzZWtzIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1Rlb3N0YWIgc2VhZGlzdGF0dWQgdG9pbWluZ3UgaWdhIHPDvG5kbXVzZSBqYW9rcyAoa3VpIGt1dHN1amEpIGlnYSBrb25maWd1cmVlcml0dWQgdmVlYml0ZWVudXNlIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnTG9hIGdydXBwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2lubml0YW1pc2UgdG9pbWluZ3Uga2FzdXRhbWlzZWtzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaSBrYXN1dGFtaXNla3Mga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgcHV1IHZhYXRlIGVrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgc3V1bWltaXNla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBsaXNhbWlzZSBla3JhYW5pIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkgbWFzc2tvbmZpZ3VyYXRzaW9vbmkgZWxlbWVuZGkgZWtyYWFuaSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSByZWRpZ2VlcmltaXNlIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkLCBldCBrYXN1dGFkYSBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYWphbG9vIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGVrcmFhbmkgcHJpbnRpbWluZSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnTsO1dXRhdmFkIMO1aWd1c2VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGt1c3R1dGFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnT3RzaSBrb25maWd1cmVlcml0dWQgZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZWFkaXN0YWdlIENJIGludHNpZGVuZGkgc3RhYXR1cyBhdXRvbWFhdHNlbHQsIGt1aSBwaWxldCBvbiBzZW90dWQgQ0lnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhYiBrYXN1dHVzZWxldsO1dHUgb2xla3UgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBodWxnaWFrbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhYiBpbnRzaWRlbmRpIG9sZWt1IGFnZW50aWRlIGxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGh1bGdpYWtuYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAncHJlcHJvZHVrdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgcMOkw6RzZWIga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGFqYWx1a2t1IGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBqdXVyZGVww6TDpHN1IGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhamFsb29sZSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlIHN1dW1pdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBtaWxsZSBhYmlsIHNhYWIga3VzdHV0YWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSBvbWEgYWdlbmRpIGthc3V0YWphbGlpZGVzZSBzdXVtaXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBldCBrdXZhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgbGluZ2lkIHB1dXZhYXRlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmVlcmltaXNvYmpla3RpIGR1YmxlZXJpZGEgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmlvYmpla3RpZGUgw7xsZXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmVlcmltaXNvYmpla3RpIGR1YmxlZXJpZGEgc2VsbGUgc3V1bWl2YWF0ZXMgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBtaWxsZSBhYmlsIHNhYWIgc2VhZGlzdHVzb2JqZWt0aSByZWRpZ2VlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Ugc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIG1lbsO8w7xzIGxpbmtpLCBtaWxsZSBhYmlsIHNhYWIgbWlubmEgdGFnYXNpIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIGV0IHByaW50aWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSBzZWxsZSBzdXVtaXZhYXRlcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIG1lbsO8w7xzIGxpbmtpLCBtaWxsZSBhYmlsIHNhYWIga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIHN1dXJlbmRhbWEgYXNqYW5kdXNsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkaXRhYiBrb25maWd1cmVlcml0dWQgZWxlbWVuZGkgYWphbHVndSAodmFzdHVwaWRpc2VzIGrDpHJqZWtvcnJhcykgYWdlbmRpIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1ZhaWtpbWlzaSBrYXRlZ29vcmlhLCBtaXMga3V2YXRha3NlLCBrdWkgw7xrc2tpIGthdGVnb29yaWEgZWkgb2xlIHZhbGl0dWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdLb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaWRlbnRpZmlrYWF0b3IsIG50IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBWYWlraW1pc2kgb24gQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnS8OkaXZpdGFiIENvbmZpZ0l0ZW1GZXRjaC1pIGt1dHN1amEgYXV0b21hYXRzZWx0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvb24gU3RyaW5nIFbDpGxqZW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb29uaSBzdHJpbmcgbW9vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb29uaSB2YWxsYW5kYWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdLYXMgQ29uZmlnSXRlbUFDTGkgdMOkaXRtaXN0IHNhYWIgdsOkbHRpZGEsIGtvbnRyb2xsaWRlcyB2YWhlbcOkbHUgdsOkbGphbGlzdGUgc8O1bHR1dnVzaS4gU2VlIHbDtWliIHBhcmFuZGFkYSB2b3JtaWRlIGxhYWRpbWlzYWVnYSwga3VpZCB0dWxlYiBrZWVsYXRhLCBrdWkgQUNMTW9kdWxlc1wnaSBrYXN1dGF0YWtzZSBJVFNNQ29uZmlnSXRlbS0gamEgRm9ybS1SZXR1cm5UeXBlc1wnaSBwdWh1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ01pbGxpc2VkIMO8bGRhbmRtZWQgb24gZXNpdGF0dWQgcMOkaXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWFsbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWt0aWl2bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3RpaXZuZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSB0b2xsaSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHRvbGxpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgdG9sbGkgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgdG9sbGkgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10b2xsaW5lIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSB0b2xsaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtdG9sbGluZSByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9sbGkgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10b2xsaW5lIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiB0b2xsaSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgdG9sbGkgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbGxpICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgdG9sbGkgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgdG9sbGkgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbGxpICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSB0b2xsaSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdG9sbGkgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9sbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgdG9sbGkgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSB0b2xsaSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSB0b2xsaSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0b2xsaSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbGxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHRvbGxpICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgdG9sbGkgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyB0b2xsaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgdG9sbGkgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHRvbGxpICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHRvbGxpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHRvbGxpICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSYWFtYXR1cGlkYW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBYWRyZXNzaSBlcmFsZGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb29ndGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnU2VhZG1lIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWt1IG1haHV0YXZ1cyAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0FrdSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdIb29uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2lsaWlkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUga2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ01haHQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ1bDtWltc3VzIMO8aGUgZ3JhYWZpa2FrYWFyZGkga29odGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYWFyZGkgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FhcmRpbHVnZWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thYXJkaSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudGlkZSBzZXJ0aWZpa2FhZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVuZGl0YXJrdmFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLbGllbmRpa2F0ZWdvb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLZWxsYWFlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29vZGkgYWxsa2lyamFzdGFtaXNlIHNlcnRpZmlrYWFkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbnZlcmVudHNpdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHRhdHNpb29uaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnVsO1dGtlIMO8aGVuZHVzdCBlZGFzaW3DvMO8amFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRlaW5lcml0ZSBoYWxkYW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdMZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0xlcGluZ3UgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnTGVwaW5ndXBlcmlvb2QgYWxhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0xlcGluZ3Uga2VzdHVzIGt1bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnSnVodG1ldGEgdGVsZWZvbiAoREVDVC10ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLdWx1w7xoaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdMaXRzZW50c2lkZSBhcnYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0xvb21pc2Uga3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0tvaGFuZGF0dWQgcmlpdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZWVyaXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnQXJ2ZSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnVGVsbGltdXNlIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdHYXJhbnRpaSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdWw6RsamFsYXNrbWlzZSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnVMO2w7ZsYXVhYXJ2dXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVuZGkgYWxsa2lyamFzdGFtaXNlIHNlcnRpZmlrYWFkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RpIHNlcnRpZmlrYWFkaWQgKFMvTUlNRSBzZXJ0aWZpa2FhZGlkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdUw7bDtmxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0zDtXBwLUlQLWFhZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdUb2V0dXNlIGzDtXBwZW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdLZWh0aXZ1c2t1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdWw6RsaW5lIGvDtXZha2V0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdUdWxlbcO8w7xyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdOw7VnYXJhdHRhIGVuZXJnaWFzYWx2ZXN0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdWb3JtaWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbnRzaWlzaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ1Rhc3V0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfDnGxkaW5lIHRlYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhYWZpa2FrYWFyZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFhZmlrYWthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnUmlpc3R2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnUmlpc3R2YXJhIG11ZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1JpaXN0dmFyYSBrYWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdQZWFrb21wbGVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZWVkaSBqYSBqdXVyZGVww6TDpHN1IGhhbGRhbWluZSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJpbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdG1lbnRpIGt1bHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnQXJ2ZSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF2aWF0dXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9yICh2ZWRlbGtyaXN0YWxsa3V2YXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvciAodmFsZ3VzZGlvb2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhdWF0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1PDvGxlYXJ2dXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGFpdXNrcmFhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0tpaHQgMTogZsO8w7xzaWxpbmUga2lodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdLaWh0IDI6IGFuZG1lc2lkZWtpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0tpaHQgMzogdsO1cmd1a2loaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdLaWh0IDM6IHbDtXJndWtpaGkgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdLaWh0IDQ6IFRyYW5zcG9yZGlraWh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdLaWh0IDU6IFNlYW5zaWtpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnS2lodCA2OiBFc2l0bHVza2loaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0tpaHQgNzogUmFrZW5kdXNraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ1JlbmRpbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGl0c2VudHNpbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXRzZW50c2kgdsO1dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGl0c2VudHNpdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaXRzZW50c2kga2VodGl2dXNhZWcgYWxhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGl0c2VudHNpIGtlaHRpdnVzYWVnIGt1bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpaXRpdW1yYXVkZm9zZmFhdCAoTGlGZVBPNCkgYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaWl0aXVtLWlvb24gYWt1IChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTGFlbnVsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0FzdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnUGlra3Vza3JhYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Rvb3RqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWFrc2ltYWFsbmUga2FuZGV2w7VpbWUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ03DpGx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTcOkbHUgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlpbGludW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWlsbmUvaW50ZWdyZWVyaXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ011ZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTXVkZWxpIGtpcmplbGR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yaSByZXNvbHV0c2lvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcmkgc3V1cnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnSGlpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnVsO1cmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnVsO1cmd1aW5mbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnVsO1cmd1dGVhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1bDtXJndWtvcnJhbGR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1rYWFkbWl1bSAoTmlDZCkgYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsLW1ldGFsbGjDvGRyaWlkIChOaU1IKSBha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnTWl0dGVhdmFsZGFtaXNlIGxlcGluZyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ03DpHJrbWlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUHJvdHNlc3Nvcml0ZSBhcnYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFNLW1vb2R1bGl0ZSBhcnYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnR3JhYWZpa2FrYWFydGlkZSBhcnYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQgbW9uaXRvciAob3JnYWFuaWxpbmUgdmFsZ3VzZGlvb2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1RlZ2V2dXNrdWx1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdUZWxsaW11c2UgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnTXV1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVsOkbGp1bmRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4tS09PRCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJsdXNsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9uaW51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbmkgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRsO8w7xzaWxpc2VkIHPDvGRhbWlrdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdUb2l0ZXZhcnVzdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnT3N0ZXR1ZCBhYWRyZXNzaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JpaXVsaSBzw7xnYXZ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JpaXVsacO8a3N1c2VkIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnVHViYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rYWFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgc2VydGlmaWthYWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ03DvMO8Z2lsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaWl0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTdWxldHVkIHBsaWktc29vbGhhcHBlIGFrdSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlZXJpYW51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJpIHRhcmt2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGVlbnVzZWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1RlZW51c2Ugc2lsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdQaXN0aWt1cGVzYSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdUYXJrdmFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0vDtW5lbGVqYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUC1hYWRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdMYWR1c3RhbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1NhbHZlc3R1c3J1dW1pIGVyYWxkaXNlaXN1bmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdUw7x0YXJldHRldsO1dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ0tva2t1dsO1dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfDlWh1a2Uga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdOaWlkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhYWZpa2FrYWFyZGkgUkFNIGtva2t1IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0ga29ra3UgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnUHV1dGVla3JhYW5pZ2EgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1Rvcm5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0IgcGVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIHBlYWtvbXBsZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnVmVlYmlrYWFtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/fa_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9mG2q/Yp9i02Kog2KjYsdin24wg2K/Ysdiu2YjYp9iz2Kog2K/Yp9iv2Ycg2YfYp9uMINmI2LHZiNiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfZhtqv2KfYtNiqINio2LHYp9uMINm+2KfYs9iuINiu2LHZiNis24wg2K/Yp9iv2YcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICfZhdiv24zYsduM2KogQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfYqti624zbjNixINiq2LnYsduM2YEg2qnZhNin2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrbjNuM2LEg2KrYudix24zZgSDaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfZgduM2YTYqtixINio2LHYp9uMINqp2YTYp9iz4oCM2YfYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICfaqdmE2KfYs9uMINix2Kcg2KjYsdin24wg2LPYp9iu2Kog24zaqSDYotuM2KrZhSDZvtio2qnYsdio2YbYr9uMINis2K/bjNivINin2YbYqtiu2Kcg2qnZhtuM2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAn2qnZhNin2LMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2YbYtdioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9ii24zYpyDYtNmF2Kcg2YjYp9mC2LnYpyDZhduMINiu2YjYp9mH24zYryAg2KfbjNmGINmB2LnYp9mE24zYqiDYsdinINit2LDZgSDaqdmG24zYryDYnyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfZhtin2YUg2KfbjNmGINii24zYqtmF4oCM2YfYp9uMINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ9i02YXYp9ix2Ycg2YbYs9iu2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9mG2KfZhSDYp9uM2YYg2KLbjNiq2YXigIzZh9in24wg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfZiNi22LnbjNiqINix2K7Yr9in2K8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfZhdit2KrZiNin24wg2LPYp9io2YLZhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn2LLZhdin2YYg2KfbjNis2KfYryAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn2YbZhdin24wg2qnYp9mF2YQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn2KrYudiv2KfYryDYotuM2KrZheKAjNmH2KfbjCDZvtuM2qnYsdio2YbYr9uMINiv2LEg2YfYsSDYtdmB2K3Zhyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn2KfYrNix2Kcg2KzYs9iq2KzZiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfYr9ixINmI24zYsdin24zYtOKAjNmH2KfbjCDZgtio2YTbjCDZh9mFINis2LPYqtis2Ygg2KfZhtis2KfZhSDYtNmI2K/Ynyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfZiNi22LnbjNiqINmB2LnZhNuMINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDYrNin2LHbjCDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9ii2K7YsduM2YYg2KrYutuM24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfYotiu2LHbjNmGINiq2LrbjNuM2LEg2KjZhyDZiNiz24zZhNmHJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn2YbZiNi5INmF2YjYttmI2LknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfZgduM2YTYqtixINio2LEg2KfYs9in2LMg2YbZiNi5JzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn2YbbjNin2LIgRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9mG2YXbjCDYqtmI2KfZhtivINiq2KfYsduM2K4g2LHYpyDZhti02KfZhiDYr9mH2K/YjCDZh9uM2oYgVGlja2V0SUQg2K/Yp9iv2Ycg2YbYtNiv2Ycg2KfYs9iqISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9mG2YXbjCDYqtmI2KfZhtivINiq2KfYsduM2K4g2LHYpyDZhti02KfZhiDYr9mH2K/YjCDZh9uM2oYgVGlja2V0SUQg2K/Yp9iv2Ycg2YbYtNiv2Ycg2KfYs9iqISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfZhdmG2KjYuSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9i52YXZhNuM2KfYqtuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfYp9iu2LfYp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfZiNi22LnbjNiqINmG2LXYqCDYp9uM2YYgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfZiNi22LnbjNiqINix2K7Yr9in2K8g2KfbjNmGIENJJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn2KjYr9mI2YYg2YXYrNmI2LIg2Ygg2KfYrNin2LLZhy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn2YbZiNi5INmI2LbYuduM2Kog2YbYtdioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDZiNi22LnbjNiqINis2KfYsduMINix2K7Yr9in2K8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn2KjbjNmGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfYrdiv2Kfaqdir2LEg2LTZhdin2LHZhyDbjNqpINi52YbYtdixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9mF2YbZgti224wg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn2b7YtNiq24zYqNin2YbbjCDZiCDZhtqv2YfYr9in2LHbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9mG2YXZiNmG2Ycg2KLYstmF2KfbjNi024wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9io2LHZhtin2YXZhyDYsduM2LLbjCDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn2KrYudmF24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn2KjYp9iy2YbYtNiz2KrZhyDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KjYp9iy2KjbjNmG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9iq2LPYqi/Yqti22YXbjNmGINqp24zZgduM2KonOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn2KfYrNin2LLZhyDZhduMINiv2YfYryDYqtinINi02LHYp9uM2Lcg2KzYs9iq2KzZiCDYtNiv2Ycg2K/YsSDYrNiz2KrYrNmI24wg2KjZhNuM2Lcg2KfYsiDYsdin2KjYtyDYudin2YXZhCDYudmF2YjZhduMINin2LPYqi4g2KjYpyDYp9uM2YYg2YjbjNqY2q/bjCDYtNmF2Kcg2YXbjCDYqtmI2KfZhtuM2K8g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEINi52YbZiNin2YYg2KjZhNuM2Lcg2KjYpyDYp9uM2YYg2YbZiNi5INin2LIg2LTYsdin24zYtyDZhdin2YbZhtivIFwg2KzYs9iq2KzZiCAiKCoga2V5MSAqICYmICoga2V5MiAqKSAiINuM2KcgXCAiKCoga2V5MSAqIHx8ICoga2V5MiAqKSAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfYp9is2KfYstmHINmF24wg2K/Zh9ivINiq2Kcg2LTYsdin24zYtyDYrNiz2KrYrNmIINi02K/ZhyDYr9ixINis2LPYqtis2YjbjCDYqNmE24zYtyDYp9iyINix2KfYqNi3INi52KfZhdmEINi52YXZiNmF24wg2KfYs9iqLiDYqNinINin24zZhiDZiNuM2pjar9uMINi02YXYpyDZhduMINiq2YjYp9mG24zYryDYqNmHINi52YbZiNin2YYg2YXYq9in2YQg2LnZhtmI2KfZhiDYqNmE24zYtyDYqNinINin24zZhiDZhtmI2Lkg2KfYsiDYtNix2KfbjNi3INmF2KfZhtmG2K8gXCDYrNiz2KrYrNmIICIoKiBrZXkxICogJiYgKiBrZXkyICopICIg24zYpyBcICIoKiBrZXkxICogfHwgKiBrZXkyICopICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYp9qY2YjZhCDYsdmI24zYr9in2K8g2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCDaqdmHINir2KjYqiDZiNmC2KfbjNi5INiv2LEg2KrYp9ix24zYrtqG2Ycg2LHYpyDYr9ixINmI2KfYs9i3INqp2KfYsdio2LHbjCDaqdin2LHYtNmG2KfYsyDZgdi52KfZhCDZhduM4oCM2LPYp9iy2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn2YXYrdiv2YjYr9uM2Kog2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti624zbjNixINmF2LPbjNix24zYp9ioINis2LPYqtis2Ygg2K/YsSDYsdin2KjYtyDaqdin2LHYqNix24wg2qnYp9ix2LTZhtin2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn2LPYp9iu2Kog2Ygg2YXYr9uM2LHbjNiqINiq2LnYp9ix24zZgSDYotuM2KrZheKAjNmH2KfbjCDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfYr9in2K/ZhyDZh9in24wg2b7bjNi0INmB2LHYtiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYqNixINix2YjbjCDZiNuM2pjar9uMINio2LHYp9uMINi12YHYrdmHINmG2YXYp9uM2LQg2KzYs9iq2KzZiCDYqNmE24zYty4g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEOiBcICJUaWNrZXRDcmVhdGVUaW1lUG9pbnRGb3JtYXQgPSDYs9in2YTYmyBUaWNrZXRDcmVhdGVUaW1lUG9pbnRTdGFydCA9INii2K7YsduM2YYuIFRpY2tldENyZWF0ZVRpbWVQb2ludCA9IDLYmyAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ9iv2KfYr9mHINmH2KfbjCDZvtuM2LQg2YHYsdi2INio2LHYp9uMINin2LPYqtmB2KfYr9mHINio2LEg2LHZiNuMINmI24zamNqv24wg2KjYsdin24wg2LXZgdit2Ycg2YbZhdin24zYtCDYrNiz2KrYrNmIINio2YTbjNi3LiDYqNmHINi52YbZiNin2YYg2YXYq9in2YQ6IFwgIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXIgPSAyMDEw2JsgVGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGggPSAxMNibIFRpY2tldENyZWF0ZVRpbWVTdGFydERheSA9IDTYmyBUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXIgPSAyMDEw2JsgVGlja2V0Q3JlYXRlVGltZVN0b3BNb250aCA9IDEx2JsgVGlja2V0Q3JlYXRlVGltZVN0b3BEYXkgPSAz2JsgIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2LnZhdmE24zYp9iqINqp2Ycg2K/YsSDYotmGINuM2qkg2K/aqdmF2Ycg2KrZhti424zZhdin2Kog2K/YsSDYr9iz2KrYsdizINin2LPYqiDYr9ixINin2LTbjNin2KEg2YXYsdiq2KjYtyDZiNuM2KzYqiAoTGlua09iamVjdCA6OiBWaWV3TW9kZSA9IFwgItm+24zahtuM2K/ZhyAiKS4g2YTYt9mB2Kcg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINqp2Ycg2KfbjNmGINin2YLYr9in2YXYp9iqINio2KfbjNivINiv2LEg2KjYsSDYr9in2LTYqiDYstuM2LEgSlMg2YggQ1NTINmB2KfbjNmEINmH2KfbjCDYq9io2Kog2YbYp9mFINqp2LHYr9mHINin2YbYrzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PYjCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz2IwgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz2IwgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF2KfamNmI2YQg2YbZhdin24wg2qnZhNuMINio2LHYp9uMINmG2YXYp9uM2LQg2YbZhdin24wg2qnZiNqG2qkg2KfYsiDZgdmH2LHYs9iqINiq2LrbjNuM2LHYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZiNuM2pjar9uMINio2YTbjNi3INio2LHYp9uMINmF2LHYqtioINiz2KfYstuMINio2YTbjNi3INin2LIg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2YjbjNqY2q/bjCDYqNmE24zYtyDYqNix2KfbjCDZhdix2KrYqCDYs9in2LLbjCDYqNmE24zYtyDYp9iyINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYqNmE24zYtyDYp9uM2YYg2LnZhdmE24zYp9iqLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2LPZgdin2LHYtCDYqNmE24zYtyDYr9ixINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4g2KrYpzog2YLYr9uM2YXbjCDYqtix24zZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuINm+2KfbjNuM2YY6INi02K/ZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDYs9mB2KfYsdi0INio2YTbjNi3INin2LIg24zaqSDZhtiq24zYrNmHINis2LPYqtis2Ygg2K/YsSDYsdin2KjYtyDZhdi02KrYsduMLiDYqtinOiDZgtiv24zZhduMINiq2LHbjNmGINiv2LEg2KjYp9mE2KfbjCDYtdmB2K3Zhy4g2b7Yp9uM24zZhjog2LTYr9mGINiv2LEg2KjYp9mE2KfbjCDYtdmB2K3Zhy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2LPZgdin2LHYtCDYqNmE24zYtyDYr9ixINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYqNmE24zYtyDYp9iyINin24zZhiDYudmF2YTbjNin2KouINiq2Kc6INmC2K/bjNmF24wg2KrYsduM2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLiDZvtin24zbjNmGOiDYtNiv2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZhti02KfZhiDYr9in2K/ZhyDYqNmE24zYtyDZiNuM2pjar9uMINis2LPYqtis2Ygg2KjYsdin24wg2LXZgdit2Ycg2YbZhdin24zYtCDYrNiz2KrYrNmIINio2YTbjNi3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2YbYtNin2YYg2K/Yp9iv2Ycg2KjZhNuM2Lcg2YjbjNqY2q/bjCDYrNiz2KrYrNmIINio2LHYp9uMINi12YHYrdmHINmG2YXYp9uM2LQg2KzYs9iq2KzZiCDYqNmE24zYty4g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEOiBcICLaqdmE24zYryAiINio2KfbjNivINmG2KfZhSDYstmF24zZhtmHINm+2YjbjNinINiv2LEg2KfbjNmGINmF2YjYsdivIFwnWFwn2IwgXCAi2YXYrdiq2YjYpyAi2Iwg2KjYp9uM2K8g2KfYsdiy2LQg2K/Ysdiz2Kog2b7ZiNuM2Kcg2KjYs9iq2Ycg2KjZhyDZhtmI2Lkg2b7ZiNuM2Kcg2K/Ysdiz2KrYjCDZhdiq2YYg2LHYpyDYr9in2LTYqtmHINio2KfYtNivOiDbjNqpINmF2KrZhtiMINqp2LHaqdix2YcgOiBcJzFcJ9iMINiq2KfYsduM2K4gLyDYstmF2KfZhjogU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc02JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoID0gMDHYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5ID0gMjbYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91ciA9IDAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZSA9IDAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZCA9IDAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhciA9IDIwMTPYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aCA9IDAx2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5ID0gMjbYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyID0gMjPYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGUgPSA1OdibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZCA9IDU52JsgXCcg2Ygg24zYpyAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0ID0g2YfZgdiq2YfYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydCA9INmC2KjZhCDYp9iyLiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZSA9IDcgXCfYmy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYp9ix2KrZgdin2Lkg2KjYsdin24wg2LrZhtuMINis2LLYoSDZiNuM2LHYp9uM2LTar9ixINmF2KrZhiDYqNix2KfbjCDYp9uM2YYg2LXZgdit2Ycg2YbZhdin24zYtC4g2KrYudiv2KfYryAo2b7bjNqp2LPZhCkg24zYpyDYp9ix2LLYtCDYr9ix2LXYryAo2YbYs9io24wpINix2Kcg2YjYp9ix2K8g2qnZhtuM2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYp9mC2YTYp9mFINio2LHYp9uMIFwn2LnZhdmEXCcg2K/YsSDYs9i32K0g2LPZiNmFINiz2KfYrtiq2KfYsSBBQ0wg2K/YsSDYr9iz2KrYsdizINmH2LPYqtmG2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2KfZiNmEINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2K/ZiNmFINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn2Kraqdir24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9it2KzZhSDYr9ix2K7ZiNin2LPYqiDYp9iyINmI24zamNqv24wg2YfYp9uMINi52YXZhCDYqNix2KfbjCDYuNin2YfYsSDYudin2YXZhCDYqNmHINqp2KfYsSDYqNixINix2YjbjCDYqNuM2LQg2KfYsiDYr9ix2K7ZiNin2LPYqiDYr9ixINuM2qkg2LLZhdin2YYg2YLYp9iv2LEg2YXbjCDYs9in2LLYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9mI24zamNqv24wg2YfYp9uMINi52YXZhCDYrdis2YUg2K/Ysdiu2YjYp9iz2Kog2KrZhtmH2Kcg2KjYsdin24wg2q/YsdmI2Ycg2YfYp9uMINiw2qnYsSDYtNiv2Ycg2LHYpyDZgtin2K/YsSDZhduMINiz2KfYstivIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSDYq9io2Kog2YbYp9mFINmF2KfamNmI2YQg2KjYsdin24wg2YTYp9uM2YcgaW52b2tlciDYp9iz2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfZiNi22LnbjNiqINix2K7Yr9in2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9it2K/Yp9qp2KvYsSDYqti52K/Yp9ivINiv2LHYrtmI2KfYs9iqINiv2LEg2YbYqtuM2KzZhyDYp9uM2YYg2qnYp9ixINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2YXbjCDYtNmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYudiv2KfYryDYqNmE24zYtyDYr9ixINmH2LEg2LXZgdit2Ycg2KfYsiDbjNqpINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYr9ixINix2KfYqNi3INi52KfZhdmEINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2LTZiNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52K/Yp9ivINio2YTbjNi3INiv2LEg2YfYsSDYtdmB2K3ZhyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2YXYtNiq2LHbjCDZhtmF2KfbjNi0INiv2KfYr9mHINmF24wg2LTZiNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfZvtuM2LQg2YbZhdin24zYtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ9m+2KfYsdin2YXYqtix2YfYp9uMINio2KfYt9mGINiv2KfYtNio2YjYsdivINmE24zYs9iqINqp2KfYsdio2LHYp9mGINmF2LTYqtix24wg2YXYsdmI2LHbjCDYqNixINix2KfYqNi3INi52KfZhdmELiBcICLZhdit2K/ZiNivICIg2KrYudiv2KfYryDZiNix2YjYr9uMINmG2LTYp9mGINiv2KfYr9mHINi02K/ZhyDYp9iz2Kog2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDYp9iz2KouIFwgItqv2LHZiNmHICIg2KfYs9iq2YHYp9iv2Ycg2LTYr9mHINin2LPYqiDYqNix2KfbjCDZhdit2K/ZiNivINqp2LHYr9mGINiv2LPYqtix2LPbjCDYqNmHINm+2YTYp9qv24zZhiAo2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEINqv2LHZiNmHOiDZhdiv24zYsduM2KouIEdST1VQMdibIEdST1VQMtibKS4gXCAi2b7bjNi0INmB2LHYtiAiINiq2LnbjNuM2YYg2Kfar9ixINin24zZhiDYp9mB2LLZiNmG2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZiCDbjNinINin2q/YsSDaqdin2LHYqNixINmG24zYp9iyINio2Ycg2KLZhiDYsdinINmB2LnYp9mEINqp2YbbjNivINio2Ycg2LXZiNix2Kog2K/Ys9iq24wg2YHYudin2YQg2qnZhtuM2K8uIFwgIkNhY2hlVFRMTG9jYWwgIiDYstmF2KfZhiDaqdi0INiv2LEg2K/ZgtuM2YLZhyDYqNix2KfbjCDZvtmE2Kfar9uM2YYg2KfYs9iqLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ9m+2KfYsdin2YXYqtix2YfYp9uMINio2KfYt9mGINiv2KfYtNio2YjYsdivINmE24zYs9iqINqp2KfYsdio2LHYp9mGINmF2LTYqtix24wg2YXYsdmI2LHbjCDYqNixINix2KfYqNi3INi52KfZhdmELiBcICLZhdit2K/ZiNivICIg2KrYudiv2KfYryDZiNix2YjYr9uMINmG2LTYp9mGINiv2KfYr9mHINi02K/ZhyDYp9iz2Kog2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDYp9iz2KouIFwgItqv2LHZiNmHICIg2KfYs9iq2YHYp9iv2Ycg2LTYr9mHINin2LPYqiDYqNix2KfbjCDZhdit2K/ZiNivINqp2LHYr9mGINiv2LPYqtix2LPbjCDYqNmHINm+2YTYp9qv24zZhiAo2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEINqv2LHZiNmHOiDZhdiv24zYsduM2KouIEdST1VQMdibIEdST1VQMtibKS4gXCAi2b7bjNi0INmB2LHYtiAiINiq2LnbjNuM2YYg2Kfar9ixINin24zZhiDYp9mB2LLZiNmG2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZiCDbjNinINin2q/YsSDaqdin2LHYqNixINmG24zYp9iyINio2Ycg2KLZhiDYsdinINmB2LnYp9mEINqp2YbbjNivINio2Ycg2LXZiNix2Kog2K/Ys9iq24wg2YHYudin2YQg2qnZhtuM2K8uIFwgIkNhY2hlVFRMTG9jYWwgIiDYstmF2KfZhiDaqdi0INiv2LEg2K/ZgtuM2YLZhyDYqNix2KfbjCDZvtmE2Kfar9uM2YYg2KfYs9iqLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfZvtin2LHYp9mF2KrYsdmH2KfbjNuMINio2LHYp9uMINqv2LHZiNmH4oCM2YfYp9uMINiv2LPYqtix2LPbjCDZhtmF2YjZhtmHINmF2LHYqNmI2Lcg2KjZhyDZiNuM2pjar9uM4oCM2YfYp9uMINmB2YfYsdiz2Kog2LnZhdmI2YXbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn2KfZhtis2KfZhSDYudmF2YQg2b7bjNqp2LHYqNmG2K/bjCDYqNix2KfbjCDZh9ixINix2YjbjNiv2KfYryAo2KjZhyDYudmG2YjYp9mGINuM2qkgSW52b2tlcikg2KjYsdin24wg2YfYsSDYp9iyIHdlYnNlcnZpY2Ug2b7bjNqp2LHYqNmG2K/bjCDYtNiv2Ycg2KfYs9iqLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iy2K/Ysdiu2YjYp9iz2Kog2LXZgdit2Ycg2YbZhdin24zYtCDZh9in24wg2YXYqtmG24wg2LHYp9uM2q/Yp9mGINiv2LEg2LXZgdit2Ycg24wg2qnYp9ix2LTZhtin2LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2K7YsdmI2KzbjCDYp9uM2YXbjNmEINiv2LEg2LXZgdit2Ycg24wg2qnYp9ix2LTZhtin2LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYrtix2YjYrNuMINin24zZhduM2YQg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYrtix2YjYrNuMINin24zZhduM2YQg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYrtix2YjYrNuMINin24zZhduM2YQg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhtmI2Lkg2KjZhNuM2Lcg2K/YsSDYtdmB2K3ZhyDZhtmF2KfbjNi0INmB2YTZhyDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhCDYqtmG2LjbjNmFINmF24wg2qnZhtivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2YbYtNin2YYg2YXbjCDYr9mH2K8g2KjYsdin24wg2K/bjNiv2YYg2KrYp9ix24zYriDbjNqpINio2YTbjNi3INiv2LEg2YfYsSDZhdix2YjYsduMINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9uM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDZhti02KfZhiDZhduMINiv2YfYryDYqNmHINiy2YjZhSDbjNqpINio2YTbjNi3INiv2LEg2YXYsdmI2LHbjCDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhti02KfZhiDZhduMINiv2YfYryDbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2KvYqNiqINmG2KfZhSDbjNqpINio2YTbjNi3INio2Ycg24zaqSDZgdix2KfbjNmG2K8g2K/YsSDZhti42LEg2LLZiNmFINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYp9ix24zYriDYqNmE24zYtyAo2YXYudqp2YjYsyDYr9iz2KrZiNixINiv2KfYrykg2K/YsSDYsdin2KjYtyDYudin2YXZhCDZhti02KfZhiDZhduMINiv2YfYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9qp2YTYp9izJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9iz2KfYrtiq2YXYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfZiNin2LPYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfYs9uM4oCM2b7bjOKAjNuM2YgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn2LHZiNmF24zYstuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9mG2LHZhSDYp9mB2LLYp9ixINmF2KzYp9mG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9i12YHYrdmHINqp2YTbjNivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfaqduM2YHbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfZhdiv2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9mF2KfZiNizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfYutuM2LHZhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn2YbZiNi5INmG2KrbjNis2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfYp9iq2KfZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9iq2YjYp9mB2YIg2LPYt9itINiz2LHZiNuM2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9in2LPYqtin2YbYr9in2LHYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/fi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdZbGVpc2V0IHRvaW1pbnRhdGllZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTYWFwdXZpZW4gcHl5bnTDtmplbiB0aWV0b2plbiBhc2V0dWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdMw6RodGV2aWVuIHZhc3RhdXN0aWV0b2plbiBhc2V0dWtzZXQnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1dGEgbHVva2FuIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1dGEgcm9vbGluIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1sdW9ra2Frb2tvbmFpc3V1ZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVMOkw6RsdMOkIHZvaXQgdHVvZGEgUmVhZHkySW1wb3J0LWx1b2trYWtva29uYWlzdXVrc2lhLCBqb3RrYSBlc2l0dGVsZXbDpHQgdGF2YWxsaXNpbXBpYSBrb25maWd1cm9pbnRpa29odGVpdGFtbWUuIEh1b21hYSwgZXR0w6Qgam9pdGFraW4gbGlzw6Rrb25maWd1cmFhdGlvaXRhIHNhYXRldGFhbiB0YXJ2aXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdQw6Rpdml0ZXTDpMOkbiBvbGVtYXNzYSBvbGV2YXQgeWtzaWvDtnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdUdW8gUmVhZHkyQWRvcHQtbHVva2FuIG5pcHB1amEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWcgSXRlbSAtbHVva2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSByb29saSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdMdW9ra2llbiBzdW9kYXRpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWYWxpdHNlIGx1b2trYSBsdWV0dGVsb3N0YSBsdW9kYWtzZXNpIHV1ZGVuIENvbmZpZyBJdGVtaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnTHVva2thJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGstdG9pbWludG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0vDpHl0dMO2w7Zub3RvbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVGFwYWh0dW1hbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpbmtraSB0b2lzZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaXJoZWVsbGluZW4ga29uZmlndXJvaW50aWtvaHRlZW4gbnVtZXJvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdUb2lzZW4ga29rb29ucGFub2tvaHRlZW4gbnVtZXJvLCBqb2hvbiBsaW5raXRldMOkw6RuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0hhbHVhdGtvIHRvZGVsbGEgcG9pc3RhYSB0w6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1TDpG3DpG4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGpvIGvDpHl0w7Zzc8OkIENvbmZpZ0l0ZW1zLWtvaHRlaXNzYSBzZXVyYWF2YWxsYSBudW1lcm9sbGEgKHNldXJhYXZpbGxhIG51bWVyb2lsbGEpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIG51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVMOkbcOkbiBrb25maWd1cmFhdGlvZWxlbWVudGluIHZlcnNpb251bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb2x1a3Ugb24gam8ga8OkeXTDtnNzw6QgQ29uZmlnSXRlbXNpc3NhLCBqb2lsbGEgb24gc2V1cmFhdmEodCkgbnVtZXJvKHQpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnS8OkeXR0w7bDtm5vdG9uIHRpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdUYXBhaHR1bWFuIHRpbGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtaW4gaGlzdG9yaWE6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0hpc3RvcmlhIFNpc8OkbHTDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdab29tYXVzbsOka3ltw6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIEtvaHRlZXQgcGVyIHNpdnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ3Vyb2ludGlrb2hkZXRpZXRvamEgZWkgbMO2eXR5bnl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGl0c2UgdMOkbcOkIGtvbmZpZ3Vyb2ludGlrb2h0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1N1b3JpdGEgaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdNecO2cyBoYWt1IGFpZW1taXNzYSB2ZXJzaW9pc3NhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0tcHV1bsOka3ltw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdTeXZ5eXN0YXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbWF1cyBzaXPDpMOkbi91bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW1pbiBlbmltbcOkaXNsaW5ra2llbiB0YXNvIHNhYXZ1dGV0dHUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJvaW50aSBLb2hkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdLb25maWd1cm9pbnRpa29odGVlbiB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnlreWluZW4ga8OkeXR0w7bDtm5vdHRvdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnlreWluZW4gdGFwYWh0dW1hdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdWaWltZWtzaSBtdXV0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdWaWltZWtzaSBtdXV0dGFudXQnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTaW51biBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtLWhha3UnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ0tvaHRlZW4gdHl5cHBpJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2V1cmFhdmF0IGx1b2thdCB0dW9kYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NldXJhYXZhdCByb29saXQgdHVvZGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdIdW9tYWEsIGV0dMOkIG15w7ZzIHZhc3RhYXZhdCBkeW5hYW1pc2V0IGtlbnTDpHQgamEgR2VuZXJhbENhdGFsb2ctbHVva2F0IGx1b2RhYW4sIGVpa8OkIG5paXTDpCBwb2lzdGV0YSBhdXRvbWFhdHRpc2VzdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnSGFsdWF0dGVrbyBqYXRrYWE/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1RhcnZpdGFhbiBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTcOkw6RyaXRlbG3DpCBlaSBvbGUga2Vsdm9sbGluZW4gWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1lsZWlza2F0c2F1czogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRDp0w6QgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVGFydml0c2V0IHbDpGhpbnTDpMOkbiB5aGRlbiB2YWxpdHVuIG3DpMOkcml0eXNrb2h0ZWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1NpbnVsbGEgZWkgb2xlIGtpcmpvaXR1c29pa2V1dHRhIHTDpGjDpG4gbcOkw6RyaXR5c2tvaHRlZXNlZW46ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdMdW9rYWxsZSAlcyBlaSBvbGUgbcOkw6RyaXRlbHR5IG3DpMOkcml0ZWxtw6TDpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ3VyYWF0aW9lbGVtZW50dGnDpCAiJXMiIGVpIGzDtnlkeSB0aWV0b2thbm5hc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0tvbmZpZ2lrb2hkZXR1bm51c3RhICVzIGVpIHB5c3R5dHR5IHBvaXN0YW1hYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXM6bGxlIGVpIGzDtnl0eW55dCB2ZXJzaW90YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlELSwgRHVwbGljYXRlSUQtIHRhaSBDbGFzc0lELW51bWVyb2EgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdQw6TDpHN5w6QgZWkgYW5uZXRhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdIaXN0b3JpYWEgZWkgdm9pIG7DpHl0dMOkw6QsIGtvc2thIENvbmZpZ0l0ZW1JRDp0w6QgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSGlzdG9yaWFhIGVpIHZvaSBuw6R5dHTDpMOkLCBrb3NrYSBrw6R5dHTDtm9pa2V1a3NpYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ1V1c2kgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdVdXNpIHZlcnNpbyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnWWxlaXNlbiBsdWV0dGVsb24gYXR0cmlidXV0dGllbiBlc2ltZXJra2lvaWtldXNyeWhtaWVuIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1RhcGFodHVtYW4gdGlsYSBww6Rpdml0ZXR0eSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHBvaXN0ZXR0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5ra2kgJXMgKHR5cGU9JXMpIGxpc8OkdHR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGlua2tpICVzICh0eXBlPSVzKSBwb2lzdGV0dHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tbcOkw6RyaXRlbG3DpCBww6Rpdml0ZXR0eSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmltaSBww6Rpdml0ZXR0eSAodXVzaT0lcywgdmFuaGE9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXV0dGkgJXMgcMOkaXZpdGV0dHkgIiVzIi1hcnZvc3RhICIlcyIgYXJ2b29uICIlcyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpbyAlcyBwb2lzdGV0dHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlELSB0YWkgVmVyc2lvbklELW51bWVyb2EgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0tvbmZpZ3VyYWF0aW9lbGVtZW50dGnDpCBlaSB2b2kgbsOkeXR0w6TDpCwga29za2Ega8OkeXR0w7ZvaWtldWtzaWEgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGVpIGzDtnlkeSB0aWV0b2thbm5hc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndHVsb3N0YW51dCAlcyBvc29pdHRlZXNzYSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnVmlpdGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdWw6TDpHLDpCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQ6dMOkIGVpIG9sZSBhbm5ldHR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1TDpGxsZSBsdW9rYWxsZSBlaSBvbGUgYW5uZXR0dSBrw6R5dHTDtm9pa2V1a3NpYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0VpIHR1bG9zdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlnIEl0ZW0gaGFrdXR1bG9rc2V0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdFbGVtZW50dGnDpCBlaSB2b2kgbsOkeXR0w6TDpCwgQ29uZmlnSXRlbWlsbGUgZWkgb2xlIGFubmV0dHUga8OkeXR0w7ZvaWtldWtzaWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gZWkgbMO2eXR5bnl0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdWZXJzaW9pdGEgZWkgbMO2eXR5bnl0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3RvaW1pbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd2YXJvaXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ3RhcGFodHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVMOkbcOkbiBrb25maWd1cmFhdGlvZWxlbWVudGluIGvDpHl0dMO2w7Zub3R0b3RpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUw6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4gdGFwYWh0dW1hdGlsYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0VpIGx1cGFhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ1N1b2RhdGluIG9uIHZpcmhlZWxsaW5lbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdOw6R5dGV0eXQga29uZmlndXJvaW50aWtvaHRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnS8OkeXR0w7bDtm5vdHRvdGlsYW4gdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ055a3lpbmVuIHRhcGFodHVtYXRpbGEgVHl5cHBpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1bDpGxpbGzDpCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnTHVva2thcmFqb2l0dWtzZXQga29uZmlndXJvaW50aWtvaGRldHRhIHZhcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVmFsaXRzZSB5a3NpIHRhaSB1c2VhbXBpIGx1b2trYSByYWpvaXR0YWFrc2VzaSB2YWxpdHRhdmlzc2Egb2xldmlhIGtvbmZpZ3VyYWF0aW9rb2h0ZWl0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0x1b2trYXJham9pdHVrc2V0IGtvbmZpZ3Vyb2ludGlrb2hkZXR0YSB2YXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWYWxpdHNlIHlrc2kgdGFpIHVzZWFtcGkgbHVva2thIHJham9pdHRhYWtzZXNpIHZhbGl0dGF2aXNzYSBvbGV2aWEga29uZmlndXJhYXRpb2tvaHRlaXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFhbWluZW4gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHZlcnNpbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGlua2tpIFZpaXR0YXVzdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0tvc2tlZWtvIHTDpG3DpCBsaW5ra2kgQ29uZmlnSXRlbS1vYmpla3RpYSB2YWkgdmlpdHRhYXZhbiBvYmpla3RpbiBzdGFhdHRpc3RhIHZlcnNpb3RhLiBDdXJyZW50IEluY2lkZW50IFN0YXRlIC1sYXNrZW50YSBzdW9yaXRldGFhbiB2YWluIGR5bmFhbWlzaWxsZSBsaW5rZWlsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVmFsaXRzZSBhdHRyaWJ1dXR0aSwgam9ua2EgbXVrYWFuIGtvbmZpZ3Vyb2ludGlrb2h0ZWl0YSBldHNpdMOkw6RuLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdQZXJ1c3Jha2VubmUgZWkgb2xlIGtlbHZvbGxpbmVuLiBUb2ltaXRhIGhhc2gsIGpvc3NhIG9uIHRpZXRvamEgWUFNTC1tdW9kb3NzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MLW1lcmtraWpvbm8gb24gYWxvaXRldHRhdmEga2lyamFpbWVsbGEgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGF1bHVra29hIGNvbmZpZ2l0ZW1fbGluayBlaSB2b2l0dSB0eWhqZW50w6TDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ01lcmtpdHlrc2VsbGlzacOkIGR5bmFhbWlzaWEga2VudHRpw6QgZWkgbMO2eXR5bnl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGF1bHVra29vbiBjb25maWdpdGVtX2xpbmsgZWkgdm9pdHUgbGlzw6R0w6QgdGlldG9qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0xpc8OkdHR5IDAgcml2acOkIHRhdWx1a2tvb24gY29uZmlnaXRlbV9saW5ra2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnWWhkZW4gZWxlbWVudGluIGVuaW1tw6Rpc23DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ1R1by92aWUgbGlpdGV0aWVkb3N0b2phIChyaXZpbiB2aWltZWlzaW7DpCBtZXJraW50w7ZpbsOkKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW8gbWVya2tpam9ubyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdWaXJoZSBtw6TDpHJpdGVsbWllbiBzeW5rcm9ub2lubmlzc2EuIFRhcmtpc3RhIGxva2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnU2ludWxsYSBvbiBJVFNNQ29uZmlnSXRlbS1tw6TDpHJpdHlrc2nDpCwgam9pdGEgZWkgb2xlIHN5bmtyb25vaXR1LiBPdGEga8OkeXR0w7bDtm4gSVRTTUNvbmZpZ0l0ZW0tZHluYWFtaXN0ZW4ga2VudHRpZW4gbXV1dG9rc2V0Lic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVmFuaGVudHVudXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdIdW9sdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdHRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdTdXVubml0ZWx0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdLb3JqYXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdFbMOka2tlZWxsw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnQXJ2b3N0ZWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0aS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnWWxlaXNrYXRzYXVzIGphIHZhaHZpc3R1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdMdW9ra2llbi9yb29saWVuIGphIG5paWhpbiBsaWl0dHl2aWVuIGtlbnR0aWVuIHR1b21pbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnTHVva2FuIHR1b25uaW4gYWlrYW5hIHRhcGFodHVpIHZpcmhlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gUGlpbG90ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gS3V2YXNzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFoZG9sbGlzdGFhIGxhYWplbm5ldHV0IGhha3VlaGRvdCBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYXVzc2EuIFTDpG3DpG4gb21pbmFpc3V1ZGVuIGF2dWxsYSB2b2l0IGhha2VhIGVzaW0uIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4gbmltZcOkIHTDpGxsYWlzaWxsYSBlaGRvaWxsYSBrdXRlbiAiKCprZXkxKiYmKmtleTIqKSIgdGFpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFoZG9sbGlzdGFhIGxhYWplbm5ldHV0IGhha3VlaGRvdCBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGF1c3NhLiBUw6Rtw6RuIG9taW5haXN1dWRlbiBhdnVsbGEgdm9pdCBoYWtlYSBlc2ltLiBrb25maWd1cmFhdGlvZWxlbWVudGluIG5pbWXDpCB0w6RsbGFpc2lsbGEgZWhkb2lsbGEga3V0ZW4gIigqa2V5MSomJiprZXkyKikiIHRhaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ015w7ZubmV0eXQgQ0k6dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0FzaWFrYXN5cml0eWtzZWxsZSBvc29pdGV0dXQgQ0k6dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0FzaWFrYXNrw6R5dHTDpGrDpGxsZSBtw6TDpHJpdGV0eXQgQ0k6dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1hc2V0dWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1Rhcmtpc3RhLCBldHTDpCBuaW1pIG9uIHlrc2lsw7ZsbGluZW4gdmFpbiBzYW1hbiBDb25maWdJdGVtLWx1b2thbiAoXCdjbGFzc1wnKSBzaXPDpGxsw6QgdGFpIGdsb2JhYWxpc3RpIChcJ2dsb2JhbFwnKSwgbWlrw6QgdGFya29pdHRhYSwgZXR0w6Qgam9rYWluZW4gb2xlbWFzc2Egb2xldmEgQ29uZmlnSXRlbSBvdGV0YWFuIGh1b21pb29uLCBrdW4gZXRzaXTDpMOkbiBrYWtzb2lza2FwcGFsZWl0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1ZhbGl0c2UgbW9kdXVsaSBuaW1lw6RtaXNzdXVubml0ZWxtYW4ga8OkeXR0w7bDtm5vdHRvYSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWYWxpdHNlIG1vZHV1bGkgbnVtZXJvasOkcmplc3RlbG3DpG4ga8OkeXR0w7bDtm5vdHRvYSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1ZhbGl0c2UgbW9kdXVsaSwgam9rYSBvdHRhYSBrw6R5dHTDtsO2biB2ZXJzaW9qb25vasOkcmplc3RlbG3DpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVmFsaXRzZSBhdHRyaWJ1dXRpdCwgam90a2Ega8OkeW5uaXN0w6R2w6R0IHV1ZGVuIHZlcnNpb24gbHVvbWlzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1ZhbGl0c2UgbHVva2F0LCBqb3RrYSBvc29pdGV0YWFuIHTDpGxsZSBtw6TDpHJpdHlza29oZGVsdW9rYWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnU2FyYWtrZWVuIENvbmZpZ0l0ZW0ta29odGVlbiBzdW9kYXR0aW1ldCBDb25maWdJdGVtIE92ZXJ2aWV3IC1rb2h0ZWVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTYXJha2tlZXQsIGpvaXRhIHZvaWRhYW4gc3VvZGF0dGFhIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2Vzc2EuIEh1b21hdXR1czogVmFpbiBDb25maWcgSXRlbSAtYXR0cmlidXV0aXQgamEgZHluYWFtaXNldCBrZW50w6R0IChEeW5hbWljRmllbGRfTmFtZVgpIG92YXQgc2FsbGl0dHVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnTcOkw6RyaXR5c2tvaHRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ03DpMOkcml0eXNrb2h0ZWVuIGxpc8Okw6RtaW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdNw6TDpHJpdHlza29odGVlbiBtdW9ra2F1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIGtvaHRlZW4gdGFwYWh0dW1hbW9kdXVsaSwgam9rYSBtYWhkb2xsaXN0YWEga2lyamFhbWlzZW4gaGlzdG9yaWFhbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnS29uZmlnLWtvaHRlZW4gdGFwYWh0dW1hbW9kdXVsaSwgam9rYSBww6Rpdml0dMOkw6Qga29uZmlnLWtvaHRlZXQgbmlpZGVuIG55a3lpc2VlbiBtw6TDpHJpdGVsbcOkw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ03DpMOkcml0w6Qga29odGVlbiBoaXN0b3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnTcOkw6RyaXR5c2tvaHRlZW4gdHVsb3N0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnTcOkw6RyaXTDpCBrb2h0ZWVuIHpvb21hdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbS1wdXVuw6RreW3DpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnU2V1cmFhdmllbiBsdW9ra2llbiBDb25maWdJdGVtcy1lbGVtZW50dGVqw6QgZWkgdGFsbGVubmV0YSBFbGFzdGljc2VhcmNoLXBhbHZlbGltZWxsZS4gSm90dGEgdMOkdMOkIHZvaWRhYW4gc292ZWx0YWEgb2xlbWFzc2Egb2xldmlpbiBDSTpoaW4sIENJLXNpaXJ0byBvbiBzdW9yaXRldHRhdmEga29uc29saW4ga2F1dHRhIHTDpG3DpG4gdmFpaHRvZWhkb24gbXV1dHRhbWlzZW4gasOkbGtlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zLWtvaHRlaXRhLCBqb2lsbGEgb24gc2V1cmFhdmF0IGvDpHl0dMO2w7Zub3R0b3RpbGF0LCBlaSB0YWxsZW5uZXRhIEVsYXN0aWNzZWFyY2gtcGFsdmVsaW1lbGxlLiBKb3R0YSB0w6R0w6Qgdm9pZGFhbiBzb3ZlbHRhYSBvbGVtYXNzYSBvbGV2aWluIENJOmhpbiwgQ0ktc2lpcnRvIG9uIHN1b3JpdGV0dGF2YSBrb25zb2xpbiBrYXV0dGEgdMOkbcOkbiB2YWlodG9laGRvbiBtdXV0dGFtaXNlbiBqw6Rsa2Vlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXJvaW50aSBLb2h0ZWVuIHJhamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3Vyb2ludGkgS29odGVlbiByYWphIHNpdnVhIGtvaHRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXJhYXRpb25oYWxsaW5uYW4gdGlldG9rYW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03DpMOkcml0eXNrb2h0ZWVuIGlydG90YXZhcmFtb2R1dWxpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHlza29odGVlbiBoYWt1IGFnZW50dGlsaWl0dHltw6RuIHRhdXN0YXJlaXRpdHRpbWVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnTHVvIGphIGhhbGxpdHNlIG3DpMOkcml0dGVseWrDpCBtw6TDpHJpdHlza29odGVpbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0x1byBsaXBwdWphIENvbmZpZ0l0ZW1zLWtvaHRlaWxsZSB0aWV0dHlpbsOkIGFqYW5rb2h0aW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdBc2lha2thYXQgdm9pdmF0IG7DpGhkw6QgaGlzdG9yaWFsbGlzZXQgQ0ktdmVyc2lvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQXNpYWtrYWlsbGEgb24gbWFoZG9sbGlzdXVzIHZhaWh0YWEgbWFudWFhbGlzZXN0aSBoaXN0b3JpYWxsaXN0ZW4gQ0ktdmVyc2lvaWRlbiB2w6RsaWxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIHRvaW1pbm5vdCwgam9pc3NhIGFzZXR1c3BhaW5pa2Ugb24ga8OkeXRldHTDpHZpc3PDpCBsaW5raXRldHR5amVuIG9iamVrdGllbiB3aWRnZXRpc3PDpCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIdW9tYWEsIGV0dMOkIG7DpGlsbMOkIHRvaW1pbm5vaWxsYSBvbiBvbHRhdmEgcmVraXN0ZXLDtmlkeXQgc2V1cmFhdmF0IEpTLSBqYSBDU1MtdGllZG9zdG90OiBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGphIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ03DpMOkcml0w6QgVGVtcGxhdGU6OlRvb2xraXQtc2tlZW1hIHZlcnNpb2pvbm9qYSB2YXJ0ZW4uIEvDpHl0ZXTDpMOkbiB2YWluLCBqb3MgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIC1tb2R1dWxpbiBhcnZva3NpIG9uIGFzZXRldHR1IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIGpvdWtrbyBlaHRvamEsIGpvaWRlbiBtdWthaXNlc3RpIGFzaWFrYXMgc2FhIG7DpGhkw6Qga29uZmlndXJvaW50aWtvaHRlZW4uIEVoZG90IHZvaWRhYW4gdmFsaW5uYWlzZXN0aSByYWpvaXR0YWEgdGlldHR5aWhpbiBhc2lha2FzcnlobWlpbi4gTmltaSBvbiBhaW5vYSBwYWtvbGxpbmVuIG3DpMOkcml0ZS4gSm9zIG11aXRhIHZhaWh0b2VodG9qYSBlaSBhbm5ldGEsIGthaWtraSBrb25maWd1cm9pbnRpa29odGVldCBuw6RreXbDpHQga3lzZWlzZXNzw6QgbHVva2Fzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBwb2lzdGFtaXNlZW4geWxlaXNlbiBrw6R5dHTDtmxpaXR0eW3DpG4gYXZ1bGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCB2YWFkaXR1dCBvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gaGFrZW1pc2VlbiB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBoYWt1dW4geWxlaXNlbiBrw6R5dHTDtmxpaXR0eW3DpG4gYXZ1bGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCB2YWFkaXR1dCBvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gbcOkw6RyaXR0w6RtaXNlZW4geWxlaXNlbiBrw6R5dHTDtmxpaXR0eW3DpG4gYXZ1bGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHlsZWlza2F0c2F1c21vZHV1bGluLCBqb2thIG7DpHl0dMOkw6Qga29rb29ucGFub2tvaGRlbHVldHRlbG9uIHBpZW5lbiBuw6RreW3DpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG9ua28gbGlua2luIHR5eXBpbiBtZXJraW5uw6R0IG7DpHl0ZXR0w6R2w6Qgc29sbXVqZW4geWh0ZXlrc2lzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBzw6TDpG5uw7ZsbGlzZXQgbGF1c2Vra2VldCBlcmlrc2VlbiBrdWxsZWtpbiBDb25maWdJdGVtLWx1b2thbGxlIENvbmZpZ0l0ZW0tbmltZW4gdGFya2lzdGFtaXNla3NpIGphIHZhc3RhYXZpZW4gdmlyaGVpbG1vaXR1c3RlbiBuw6R5dHTDpG1pc2Vrc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrw6R5dGV0dMOkdmlzc8OkIG9sZXZhdCBDSS1zYXJha2tlZXQga29uZmlndXJvaW50aWtvaHRlZW4geWxlaXNrYXRzYXVrc2Vzc2EgQ0ktbHVva2FuIG11a2Fhbi4gSm9rYWlzZW4gbWVya2lubsOkbiBvbiBrb29zdHV0dGF2YSBsdW9rYW4gbmltZXN0w6QgamEga3lzZWlzZW4gbHVva2FuIGvDpHl0ZXR0w6R2aXNzw6Qgb2xldmllbiBrZW50dGllbiBqb3Vrb3N0YS4gRHluYWFtaXN0ZW4ga2VudHRpZW4gbWVya2ludMO2amVuIG9uIG5vdWRhdGV0dGF2YSBrYWF2YWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgb2xldHVzYXJ2b2lzZW4ga29uZmlndXJvaW50aWtvaGRldHRhIGtvc2tldmFuIGF0dHJpYnV1dGluIGFnZW50dGlsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhha3V0dWxva3NlbiBsYWppdHRlbHVhIHZhcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgb2xldHVzYXJ2b2lzZW4ga29uZmlndXJhYXRpb2tvaGRlYXR0cmlidXV0aW4gYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3NlbiBsYWppdHRlbHVhIHZhcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIG9sZXR1c2Fydm9pc2VuIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGF0dHJpYnV1dGluIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGxhaml0dGVsdWEgdmFydGVuIHTDpG3DpG4gdG9pbWlubm9uIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3V0dWxva3Nlc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrb25maWd1cmFhdGlva29odGVpZGVuIG9sZXR1c2rDpHJqZXN0eWtzZW4gYWdlbnR0aWxpaXR0eW3DpG4ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1dHVsb2tzaXNzYS4gWWzDtnM6IHZhbmhpbiBww6TDpGxsaW1tw6Rpc2Vuw6QuIEFsYXM6IHV1c2luIG9uIHDDpMOkbGxpbW3DpGlzZW7DpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga29uZmlndXJhYXRpb2tvaHRlaWRlbiBvbGV0dXNqw6RyamVzdHlrc2VuIGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1dHVsb2tzaXNzYS4gWWzDtnM6IHZhbmhpbiBww6TDpGxsaW1tw6Rpc2Vuw6QuIEFsYXM6IHV1c2luIG9uIHlsaMOkw6RsbMOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gb2xldHVzasOkcmplc3R5a3NlbiB0w6Rtw6RuIHRvaW1pbm5vbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3Nlc3NhLiBZbMO2czogVmFuaGluIG9uIHlsaMOkw6RsbMOkLiBBbGFzOiB1dXNpbiBvbiB5bGjDpMOkbGzDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgQ0k6aWRlbiBvbGV0dXNzYXJha2tlZXQsIGpvdGthIG7DpGt5dsOkdCBrb25maWd1cm9pbnRpa29odGVlbiB5bGVpc2thdHNhdWtzZXNzYSBDSS1sdW9rYXN0YSByaWlwcHVlbi4gSm9rYWlzZW4gbWVya2lubsOkbiBvbiBrb29zdHV0dGF2YSBsdW9rYW4gbmltZXN0w6QgamEga3lzZWlzZW4gbHVva2FuIGvDpHl0ZXR0w6R2aXNzw6Qgb2xldmllbiBrZW50dGllbiBqb3Vrb3N0YS4gRHluYWFtaXN0ZW4ga2VudHRpZW4gbWVya2ludMO2amVuIG9uIG5vdWRhdGV0dGF2YSBrYWF2YWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTcOkw6RyaXR0w6TDpCBuw6R5dGV0dMOkdmllbiBzdWh0ZWlkZW4gb2xldHVzc3l2eXlkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgb2xldHVzYXJ2b2lzZXN0aSBuw6R5dGV0dMOkdsOkbiBrb25maWd1cmFhdGlva29odGVlbiBoYWt1YXR0cmlidXV0aW4ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdW7DpHl0w7ZsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIG9sZXR1c2Fydm9pc2VzdGkgbsOkeXRldHTDpHbDpG4ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdWF0dHJpYnV1dGluIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3Vuw6R5dMO2bGxlLiBFc2ltZXJra2k6ICJBdmFpbiIgb24gb2x0YXZhIGR5bmFhbWlzZW4ga2VudMOkbiBuaW1pIHTDpHNzw6QgdGFwYXVrc2Vzc2EgXCdYXCcsICJTaXPDpGx0w7YiIG9uIG9sdGF2YSBkeW5hYW1pc2VuIGtlbnTDpG4gYXJ2byBkeW5hYW1pc2VuIGtlbnTDpG4gdHl5cGlzdMOkIHJpaXBwdWVuLCBUZWtzdGk6IFwndGVrc3RpXCcsIFB1ZG90dXN2YWxpa2tvOiBcJzFcJywgUMOkaXbDpG3DpMOkcsOkL0Fpa2E6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBqYSB0YWkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBsdW9rYW4gXCdJVFNNQ29uZmlnSXRlbVwnIG9sZXR1c2Fydm9pc2VuIGFsaW9iamVrdGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrw6R5dGV0dMOkdmlzc8OkIG9sZXZhdCBDSS1zYXJha2tlZXQga29uZmlndXJvaW50aWtvaHRlZW4geWxlaXNrYXRzYXVrc2Vzc2EgQ0ktbHVva2FuIG11a2Fhbi4gSm9rYWlzZW4gbWVya2lubsOkbiBvbiBrb29zdHV0dGF2YSBsdW9rYW4gbmltZXN0w6QgamEga3lzZWlzZW4gbHVva2FuIGvDpHl0ZXR0w6R2aXNzw6Qgb2xldmllbiBrZW50dGllbiBqb3Vrb3N0YS4gRHluYWFtaXN0ZW4ga2VudHRpZW4gbWVya2ludMO2amVuIG9uIG5vdWRhdGV0dGF2YSBrYWF2YWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCB0w6Rtw6RuIG7DpHl0w7ZuIHRla3N0aWVkaXRvcmlrb21wb25lbnRpbiBrb3JrZXVkZW4uIFN5w7Z0w6QgbnVtZXJvIChwaWtzZWxpw6QpIHRhaSBwcm9zZW50dGlsdWt1IChzdWh0ZWVsbGluZW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGhhbGxpbnRha8OkeXR0w7ZsaWl0dHltw6RuIENJLW3DpMOkcml0dGVseWVkaXRvcmluIHJpdmllbiBtw6TDpHLDpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdGFwYWh0dW1hdGlsb2plbiBqw6RyamVzdHlrc2VuIGtvcmtlYXN0YSAoZXNpbS4gc3lkw6Rua29odGF1cykgbWF0YWxhYW4gKGVzaW0uIHRvaW1pbm5hbGxpbmVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGFzaWFhbmt1dWx1dmF0IGvDpHl0dMO2w7Zub3R0b3RpbGF0LCBqb2lzc2EgbGlua2l0ZXR5dCBsaXB1dCB2b2l2YXQgdmFpa3V0dGFhIENJOm4gdGlsYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgQWdlbnRJVFNNQ29uZmlnSXRlbS1uw6R5dMO2biBoYWt1cmFqYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLW7DpHl0w7ZuIGhha3VyYWphbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0tbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC1uw6R5dMO2biBoYWt1cmFqYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrYWlra2llbiBDSS1sdW9ra2llbiB5aHRleXN0aWV0b3RhdWx1a29uIG1vbml0YWhvaXNlc3NhIG7DpGt5bcOkc3PDpCBuw6RreXbDpHQgQ0ktc2FyYWtrZWV0LiBKb3MgbWVya2ludMOkw6QgZWkgb2xlLCBuw6R5dGV0w6TDpG4gb2xldHVzc2FyYWtrZWV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBsaW5ra2l0YXVsdWtvbiBtb25pdGFob2lzZXNzYSBuw6RreW3DpHNzw6QgbsOka3l2w6R0IENJLXNhcmFra2VldCBDSS1sdW9rYXN0YSByaWlwcHVlbi4gSm9rYWlzZW4gbWVya2lubsOkbiBldHVsaWl0dGVlbsOkIG9uIG9sdGF2YSBsdW9rYW4gbmltaSBqYSBrYWtzb2lzcGlzdGUgKGVzaW0uIENvbXB1dGVyOjopLiBPbiBvbGVtYXNzYSBtdXV0YW1pYSBDSS1hdHRyaWJ1dXR0ZWphLCBqb3RrYSBvdmF0IHlodGVpc2nDpCBrYWlraWxsZSBDSTppbGxlIChlc2ltZXJra2kgbHVva2FuIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBZa3NpdHTDpGlzdGVuIENJLWF0dHJpYnV1dHRpZW4gbsOkeXR0w6RtaXNla3NpIENJLW3DpMOkcml0dGVseXNzw6QgbcOkw6RyaXRlbGx5bGzDpCB0YXZhbGxhIG9uIGvDpHl0ZXR0w6R2w6Qgc2V1cmFhdmFhIGthYXZhYSAoZXNpbWVya2tpIGx1b2thbiBDb21wdXRlciBvc2FsdGEpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSm9zIENJLWx1b2thbGxlIGVpIG9sZSBtZXJraW50w6TDpCwgbsOkeXRldMOkw6RuIG9sZXR1c3NhcmFra2VldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaXRrw6Qga29odGVldCBvdmF0IGvDpHl0ZXR0w6R2aXNzw6QgIkFjdGlvbiIgLXRvaW1pbnRvYSB2YXJ0ZW4gSVRTTSBDb25maWcgSXRlbSBBQ0wgLXJha2VudGVlbiBrb2xtYW5uZWxsYSB0YXNvbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pdGvDpCBrb2h0ZWV0IG92YXQga8OkeXRldHTDpHZpc3PDpCBJVFNNIENvbmZpZyBJdGVtIEFDTCAtcmFrZW50ZWVuIGVuc2ltbcOkaXNlbGzDpCB0YXNvbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaXRrw6Qga29odGVldCBvdmF0IGvDpHl0ZXR0w6R2aXNzw6QgSVRTTSBDb25maWcgSXRlbSBBQ0wgLXJha2VudGVlbiB0b2lzZWxsYSB0YXNvbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaW5rw6QgdHl5cHBpbmVuIGxpbmtraSAobmltZXR0eSB0aWtldGluIG7DpGvDtmt1bG1hc3RhKSB2b2kgdmFpa3V0dGFhIGxpbmtpdGV0eW4gQ0k6biB0aWxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgbWlua8OkIHR5eXBwaW5lbiBsaXBwdSB2b2kgdmFpa3V0dGFhIGxpbmtpdGV0eW4gQ0k6biB0aWxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTcOkw6RyaXRlbG3DpG4gcMOkaXZpdHlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQb2lzdGEga29uZmlndXJhYXRpb2VsZW1lbnR0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0vDpHl0dMO2w7Zub3RvbiB0aWxhIFbDpHJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdLYWtzb2lza2FwcGFsZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYWFtaXN0ZW4ga2VudHRpZW4gdGFwYWh0dW1hbW9kdXVsaSwgam9rYSBtZXJraXRzZWUga29uZmlndXJhYXRpb2tvaHRlZW4gbcOkw6RyaXRlbG3DpHQgZXDDpHN5bmtyb25pc2lrc2ksIGpvcyBkeW5hYW1pc2lhIGtlbnR0acOkIHNpc8OkbHTDpHbDpHQga2VudMOkdCBtdXV0dHV2YXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hYW1pc2V0IGtlbnTDpHQsIGpvdGthIG7DpGt5dsOkdCBhc2lhbWllaGVuIGvDpHl0dMO2bGlpdHR5bcOkbiBJVFNNLWxpc8Oka2VudHTDpG7DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hYW1pc2V0IGtlbnTDpHQsIGpvdGthIG7DpGt5dsOkdCBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHlsZWlza2F0c2F1c27DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYWFtaXNldCBrZW50w6R0LCBqb3RrYSBuw6RreXbDpHQgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdPdHRhYSBrw6R5dHTDtsO2biBrb25maWd1cmFhdGlva29odGVlbiBtYXNzYXRvaW1pbnRvLW9taW5haXN1dWRlbiwgam9ua2EgYXZ1bGxhIGFnZW50aW4gZXR1c2l2dSB2b2kga8Okc2l0ZWxsw6QgdXNlYW1wYWEga3VpbiB5aHTDpCBrb25maWd1cmFhdGlva29oZGV0dGEga2VycmFsbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ090dGFhIGvDpHl0dMO2w7ZuIG3DpMOkcml0eXNrb2h0ZWlkZW4gbWFzc2F0b2ltaW50YXRvaW1pbm5vbiB2YWluIGx1ZXRlbGx1aWxsZSByeWhtaWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnT3R0YWEga8OkeXR0w7bDtm4gdGFpIHBvaXN0YWEga8OkeXTDtnN0w6QgdG9pbWlubm9uLCBqb2xsYSB0YXJraXN0ZXRhYW4gSVRTTSBvbmZpZ3VyYXRpb24gLWtvaHRlaWRlbiB5a3NpbMO2bGxpc2V0IG5pbWV0LiBFbm5lbiB0w6Rtw6RuIHZhaWh0b2VoZG9uIG90dGFtaXN0YSBrw6R5dHTDtsO2biBzaW51biB0dWxpc2kgdGFya2lzdGFhIGrDpHJqZXN0ZWxtw6RzaSBqbyBvbGVtYXNzYSBvbGV2aWVuIGtvbmZpZ3Vyb2ludGllbGVtZW50dGllbiBrYWtzb2lza2FwcGFsZWlkZW4gbmltZXQuIFZvaXQgdGVoZMOkIHTDpG3DpG4ga29uc29saW4ga29tZW5ub2xsYSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ1RhcGFodHVtYW1vZHV1bGksIGpva2EgYXNldHRhYSBrb25maWdpdGVtLXRpbGFuIHRpY2tldC1jb25maWdpdGVtLWxpbmtpbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb2tvdGVrc3RpaGF1c3NhIGvDpHl0ZXR0w6R2w6R0IGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGluZGVrc2luIGtlbnTDpHQuIEtlbnTDpHQgdGFsbGVubmV0YWFuIG15w7ZzLCBtdXR0YSBuZSBlaXbDpHQgb2xlIHBha29sbGlzaWEgeWxlaXNlbiB0b2ltaW5uYWxsaXN1dWRlbiBrYW5uYWx0YS4gTGlpdGV0aWVkb3N0b2plbiBzaXPDpGxseXR0w6RtaW5lbiB2b2lkYWFuIGVzdMOkw6QgYXNldHRhbWFsbGEgbWVya2lubsOkbiBhcnZva3NpIDAgdGFpIHBvaXN0YW1hbGxhIHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnTcOkw6RyaXR5c2tvaGRlaW5kZWtzaWluIHRhbGxlbm5ldHV0IGtlbnTDpHQsIGpvaXRhIGvDpHl0ZXTDpMOkbiBtdXVodW4ga3VpbiBrb2tvdGVrc3RpaGFrdXVuLiBUw6R5ZGVsbGlzZW4gdG9pbWlubmFsbGlzdXVkZW4ga2FubmFsdGEga2Fpa2tpIGtlbnTDpHQgb3ZhdCBwYWtvbGxpc2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0pva2Fpc2VsbGUgdmVya2tvcGFsdmVsdWxsZSAoYXZhaW4pIHZvaWRhYW4gbcOkw6RyaXRlbGzDpCBqb3Vra28gbHVva2tpYSAoYXJ2byksIGpvaWhpbiB0dW9udGkgb24gcmFqb2l0ZXR0dS4gS2Fpa2lsbGUgdmFsaXR1aWxsZSBsdW9raWxsZSB0YWkga2Fpa2lsbGUgb2xlbWFzc2Egb2xldmlsbGUgbHVva2lsbGUgb24gdmFsaXR0YXZhIHR1bm5pc3RhdmF0IGF0dHJpYnV1dGl0IGt1dHN1amFuIGtvbmZpZ3VyYWF0aW9zc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtbW9kdXVsaW4gcmVraXN0ZXLDtmludGkgQ29uZmlnSXRlbUZldGNoLWt1dHN1a2Vycm9zdGEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtbW9kdXVsaW4gcmVraXN0ZXLDtmludGkgQ29uZmlnSXRlbUZldGNoLWt1dHN1a2Vycm9zdGEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLW1vZHV1bGluIHJla2lzdGVyw7ZpbnRpIENvbmZpZ0l0ZW1GZXRjaC1rdXRzdWtlcnJvc3RhIHZhcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTS1tw6TDpHJpdHlza29odGVlbiB5bGVpc2thdHNhdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaXPDpGx0w6TDpCBrw6R5dHTDtsO2bm90dG90aWxhdCBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhhdXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc8OkbHTDpMOkIHZhYXJhdGlsYW50ZWlkZW4gdGlsYXQgYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYXVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdUw6Rtw6RuIHRvaW1pbm5vbiB0dWxva3NlbmEgbsOkeXRldHTDpHZpZW4ga29uZmlndXJvaW50aWVsZW1lbnR0aWVuIGVuaW1tw6Rpc23DpMOkcsOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHV1bGkgbHVva2FzdGEgdmFzdGFhdmFuIHJ5aG3DpG4gdGFya2lzdGFtaXNla3NpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHV1bGksIGpvbGxhIHZvaXQgdGFya2lzdGFhIGtvbmZpZ3VyYWF0aW9lbGVtZW50aXN0w6QgdmFzdGFhdmFuIHJ5aG3DpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdXVsaSBJVFNNLWtvbmZpZ3VyYWF0aW90aWxhc3RvamVuIHR1b3R0YW1pc2Vlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOaW1pIE1vZHV1bGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWVyb21vZHV1bGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6Qga3VsbGFraW4gaGFrdXR1bG9zc2l2dWxsYSBuw6R5dGV0dMOkdmllbiBtw6TDpHJpdHlza29odGVpZGVuIG3DpMOkcsOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkIGt1bGxha2luIGhha3V0dWxvc3NpdnVsbGEgbsOkeXRldHTDpHZpZW4gbcOkw6RyaXR5c2tvaHRlaWRlbiBtw6TDpHLDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdFdHNpdHTDpHbDpHQga29odGVldCwga3VpbmthIG1vbnRhIG1lcmtpbnTDpMOkIGphIG1pdGvDpCBvbWluYWlzdXVkZXQgbsOkeXRldMOkw6RuLiBDb25maWdJdGVtLWF0dHJpYnV1dGl0IG9uIHRhbGxlbm5ldHRhdmEgbmltZW5vbWFpc2VzdGkgRWxhc3RpY3NlYXJjaGluIGthdXR0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnWWxlaXNrYXRzYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpG4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbHVva2tpZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cml0IHBpZW50ZW4ga29uZmlndXJvaW50aWtvaHRlaWRlbiB5bGVpc2thdHNhdWtzZW4gc2FyYWtlc3VvZGF0dGltaWEgdmFydGVuLiBIdW9tYWE6IFwnQWt0aWl2aW5lblwnLWFzZXR1a3NlbiBhc2V0dGFtaW5lbiBhcnZvb24gMCBlc3TDpMOkIHZhaW4gYWdlbnR0ZWphIG11b2trYWFtYXN0YSB0w6Rtw6RuIHJ5aG3DpG4gYXNldHVrc2lhIGhlbmtpbMO2a29odGFpc2lzc2EgYXNldHVrc2lzc2FhbiwgbXV0dGEgc2FsbGlpIHNpbHRpIGrDpHJqZXN0ZWxtw6RudmFsdm9qaWVuIG11b2thdGEgdG9pc2VuIGvDpHl0dMOkasOkbiBhc2V0dWtzaWEuIEvDpHl0w6QgXCdQcmVmZXJlbmNlR3JvdXBcJy1rb2h0YWEsIGt1biBoYWx1YXQgaGFsbGl0YSwgbWlsbMOkIGFsdWVlbGxhIG7DpG3DpCBhc2V0dWtzZXQgbsOkeXRldMOkw6RuIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS8OkeXR0w7bDtm5vdHRvdGlsb2plbiB2w6RyaW4gcGFyYW1ldHJpdCBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS8OkeXR0w7bDtm5vdHRvdGlsb2plbiBwYXJhbWV0cml0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnWWxlaXNlbiBsdWV0dGVsb24gYXR0cmlidXV0dGllbiBlc2ltZXJra2lvaWtldXNyeWhtaWVuIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbmltaW1vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkc3PDpCBvbGV2aWVuIGtvbmZpZ3Vyb2ludGlrb2hkZWx1b2traWVuIG51bWVyb21vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1NpdnVqZW4gcGFyYW1ldHJpdCAoam9pc3NhIGFzZXR1c2tvaHRlZXQgbsOkeXRldMOkw6RuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWx1b2traWVuIHZlcnNpb24gbWVya2tpam9ub21vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gdmVyc2lvbiBtZXJra2lqb25vbWFsbGktdHnDtmthbHVwYWtraW1vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWx1b2traWVuIHZlcnNpb2xhdWthaXNpbWVuIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnU3Vvcml0dGFhIG3DpMOkcml0ZXR5biB0b2ltaW5ub24ga3VsbGVraW4gdGFwYWh0dW1hbGxlIChrdXRzdWphbmEpIGt1bmtpbiBtw6TDpHJpdGV0eW4gdmVya2tvcGFsdmVsdW4gb3NhbHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnTHVwYXJ5aG3DpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlZW4ga2lpbm5pdHlzdG9pbWlubm9uIGvDpHl0dMOkbWlzZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQgb2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVpZGVuIG7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVpZGVuIGhha3Vuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIHB1dW7DpGt5bcOkbiBuw6R5dHTDtsO2biBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlZW4gem9vbWF1c27DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gLW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU006biBtw6TDpHJpdHlza29odGVpZGVuIGlydG90YXZhcmFuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlZW4gbXVva2thdXNuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlaWRlbiBoaXN0b3JpYS1uw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIHR1bG9zdGFtaW5lbiAtbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ03DpMOkcml0eXNrb2h0ZWlkZW4gcG9pc3RhbWlzZWVuIHRhcnZpdHRhdmF0IG9pa2V1ZGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0hha3Uga29uZmlndXJvaW50aWVsZW1lbnRpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0FzZXRhIENJOm4gdGFwYWh0dW1hdGlsYSBhdXRvbWFhdHRpc2VzdGksIGt1biBsaXBwdSBsaW5raXRldMOkw6RuIENJOmhlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBc2V0dGFhIGvDpHl0dMO2w7Zub3RvbiB0aWxhbiBhZ2VudHRpbGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVlbiBidWxrLW7DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBc2V0dGFhIHRhcGFodHVtYXRpbGFuIGFnZW50dGlsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIGJ1bGstbsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEga29uZmlndXJvaW50aWtvaGRlIHZvaWRhYW4geWhkaXN0w6TDpCB0b2lzZWVuIGtvaHRlZXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJvaW50aWtvaHRlZW4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSBww6TDpHNlZSBtw6TDpHJpdHlza29odGVlbiBoaXN0b3JpYWFuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlaWRlbiB5bGVpc2thdHNhdWtzZXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgcMOkw6RzZWUgbcOkw6RyaXR5c2tvaHRlZW4gaGlzdG9yaWFhbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQgcG9pc3RhYSBtw6TDpHJpdHlza29odGVlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb2thIG7DpHl0dMOkw6QgbcOkw6RyaXR5c2tvaHRlaWRlbiBsaW5raXQgcHV1bsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9sbGEgdm9pdCBrb3Bpb2lkYSBtw6TDpHJpdHlza29odGVlbiBhZ2VudHRpbGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVpZGVuIHlsZWlza2F0c2F1a3Nlc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IGtvcGlvaWRhIG3DpMOkcml0eXNrb2h0ZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIGxpbmtpbiB2YWxpa2tvb24sIGpvbmthIGF2dWxsYSB2b2l0IG11b2thdGEgbcOkw6RyaXR5c2tvaGRldHRhIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IHBhbGF0YSB0YWthaXNpbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVlbiB6b29tYXVzbsOka3ltw6TDpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCB0dWxvc3RhYSBtw6TDpHJpdHlza29odGVlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQgem9vbWF0YSBtw6TDpHJpdHlza29odGVlc2VlbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIG3DpMOkcml0eXNrb2h0ZWlkZW4gaGlzdG9yaWFuIChrw6TDpG50ZWlzZXNzw6QgasOkcmplc3R5a3Nlc3PDpCkgYWdlbnR0aWxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ09sZXR1c2x1b2trYSwgam9rYSBuw6R5dGV0w6TDpG4sIGpvcyBtaXTDpMOkbiBlaSBvbGUgdmFsaXR0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYWF0aW9lbGVtZW50aW4gdHVubmlzdGUsIGVzaW0uIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBPbGV0dXNhcnZvIG9uIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0vDpHlubmlzdMOkw6QgQ29uZmlnSXRlbUZldGNoLWt1dHN1YWphbiBhdXRvbWFhdHRpc2VzdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW8gU3RyaW5nIEV4cHJlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvIG1lcmtraWpvbm8gTW9kdXVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW8gTGF1a2Fpc2luJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdWb2lkYWFua28gQ29uZmlnSXRlbUFDTDpuIHN1b3JpdHRhbWluZW4gdsOkbHR0w6TDpCB0YXJraXN0YW1hbGxhIHbDpGxpbXVpc3RpaW4gdGFsbGVubmV0dHVqZW4ga2VudHRpZW4gcmlpcHB1dnV1ZGV0LiBUw6Rtw6Qgdm9pIHBhcmFudGFhIGxvbWFra2VpZGVuIGxhdGF1c2Fpa29qYSwgbXV0dGEgc2Ugb24gcG9pc3RldHRhdmEga8OkeXTDtnN0w6QsIGpvcyBBQ0xNb2R1bGVqYSBrw6R5dGV0w6TDpG4gSVRTTUNvbmZpZ0l0ZW0tIGphIEZvcm0tUmV0dXJuVHlwZXMtdHl5cGVpc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ01pdGvDpCB5bGVpc2V0IHRpZWRvdCBuw6RreXbDpHQgb3RzaWtvc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2x1b2trYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdtYWFpbG1hbmxhYWp1aW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICd0dW90dGF2YSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSB0dXVtYWEgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDgwLDAxIGNtICgzMSw1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktdHV1bWFpbmVuIHRlbGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtdHV1bWFpbmVuIHRlbGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdHV1bWFhICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtdHV1bWFpbmVuIHRlbGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdHV1bWFhICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiB0dXVtYWEgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHR1dW1hYSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHR1dW1hYSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgdHV1bWFhICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0dXVtYWEgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHR1dW1hYSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDE4Niw2OSBjbSAoNzMsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHR1dW1hYSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0dXVtYWEgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogMTcsNzggY20gKDcgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAzNSw1NiBjbSAoMTQgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdLaXJqYW5waXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnT3NvaXR0ZWVuIGpha2FtaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnWWxsw6RwaXTDpGrDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2dpbmVuIHB1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0xhaXR0ZWVuIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWt1biBrYXBhc2l0ZWV0dGkgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdQYXJpc3RvdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnUmFrZW5udXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1bDpHlsw6RsaWl0w6RudMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWx1b2trYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGVldHRpIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0ZWV0dGkgbsOkeXTDtm5vaGphaW50YSBrb2h0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRpbiBudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0aW5sdWtpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS29ydGluIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQXNpYWthc3Zhcm1lbnRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnQXNpYWthc29oamVsbWlzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQXNpYWthc2x1b2trYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLZWxsb3RhYWp1dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvb2RpbiBhbGxla2lyam9pdHVzdmFybWVudGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29rb3VzcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHR0aXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ090YSB5aHRleXR0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ090YSB5aHRleXR0w6QgamFrZWxpamFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnR0aWVuIGhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnU29waW11c3R5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1NvcGltdXNrYXVzaSBhbGthZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU29waW11c2thdXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0xhbmdhdG9uIHB1aGVsaW4gKERFQ1QtcHVoZWxpbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS3VzdGFubnVzeWtzaWtrw7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdMaXNlbnNzaWVuIGx1a3Vtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTHVvbnRpcMOkaXbDpG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdDdXN0b20gUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBWYXJhdHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtcGFsdmVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0xhc2t1biBww6RpdsOkbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1RpbGF1c3DDpGl2w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ1Rha3V1YWphbiBww6RpdsOkbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnSnVsa2Fpc3Vww6RpdsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdUecO2cMO2eXTDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQXNpYWtpcmpvamVuIGFsbGVraXJqb2l0dXN2YXJtZW50ZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSS1oeWxseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnU8OkaGvDtnBvc3RpdmFybWVudGVldCAoUy9NSU1FLXZhcm1lbnRlZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1R5w7Zzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnTG9wdW4gSVAtb3NvaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVHVlbiBww6TDpHR0eW1pbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVmlpbWVpbmVuIHZvaW1hc3Nhb2xvcMOkaXbDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnVWxrb2luZW4ga2lpbnRvbGV2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1BhbG9tdXVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRmx5d2hlZWwtZW5lcmdpYW4gdmFyYXN0b2ludGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdNdW9kb24gdGVraWrDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNpbmctc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1lsZWlzdMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnTsOkeXTDtm5vaGphaW1ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnTsOkeXTDtm5vaGphaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdMYWl0dGVpc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTGFpdHRlaXN0b21hbGxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0xhaXR0ZWlzdG9uIHBhaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLdXVsb2trZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZWV0aW4tIGphIHDDpMOkc3luaGFsbGludGEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ1ZhcmFzdG9udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0b2ludGlrdXN0YW5udWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdMYXNrdW4gbnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnTsOkcHDDpGltaXN0w7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELW7DpHl0dMO2IChuZXN0ZWtpZGVuw6R5dHTDtiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yaSAodmFsb2Rpb2RpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdMYW5rYXB1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnS2FubmV0dGF2YSB0aWV0b2tvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMZXZleXNhc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnS2Vycm9zIDE6IEZ5eXNpbmVuIGtlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdLZXJyb3MgMjogVGllZG9uc2lpcnRva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdLZXJyb3MgMzogVmVya2tva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0tlcnJvcyAzOiBWZXJra29rZXJyb3MgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdLZXJyb3MgNDogS3VsamV0dXNrZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0tlcnJvcyA1OiBJc3R1bnRva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0tlcnJvcyA2OiBFc2l0eXNrZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLZXJyb3MgNzogU292ZWxsdXNrZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnVnVva3Jhc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpc2Vuc3Npc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGlzZW5zc2lhdmFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaXNlbnNzaW4gdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaXNlbnNzaWFpa2EgYWxrYWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGlzZW5zc2lhaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRpdW0tcmF1dGFmb3NmYWF0dGlha2t1IChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aXVtLWlvbmlha2t1IChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTGFpbmFzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaWphaXRzZWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnUGl0dXVzYXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVmFsbWlzdGFqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnU3V1cmluIGt1b3JtaXR1c2thcGFzaXRlZXR0aSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTXVpc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTXVpc3RpdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01hdGthcHVoZWxpbm51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpaWxpL3Npc8Okw6RucmFrZW5uZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01hbGxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTWFsbGluIGt1dmF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdOw6R5dMO2biB0YXJra3V1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdOw6R5dMO2biBrb2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnSGlpcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1Zlcmtrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdWZXJra290aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1Zlcmtrb3RpZWRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVmVya2tva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsaS1rYWRtaXVtLWFra3UgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsaS1tZXRhbGxpaHlkcmlkaSAoTmlNSCkgLWFra3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU2FsYXNzYXBpdG9zb3BpbXVzIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTXVpc3Rpa2lyamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdTdW9yaXRpbnlrc2lrw7ZpZGVuIG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTS1tb2R1dWxpZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsOkeXTDtm5vaGphaW50ZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvcmkgKG9yZ2FhbmluZW4gdmFsb2Rpb2RpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdUb2ltaW50YWt1c3Rhbm51a3NldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdUaWxhdXNudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdNdXV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdMw6RoZMO2dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdLdW1wcGFudXVzc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1B1aGVsaW5udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1B1aGVsaW1lbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXlzaXNldCB5dGltZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdWaXJyYW5qYWtlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdPc3RldHR1IG9zb2l0dGVlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdUZWxpbmVlbiBzeXZ5eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdUZWxpbmV5a3Npa8O2dCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0h1b25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWtvcnR0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtc2VydGlmaWthYXRpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ015eW50aXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaWl0dGlwdWhlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1N1bGpldHR1IGx5aWp5aGFwcG9ha2t1IChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2FyamFudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnUGFsdmVsaW5vaGplbG1pc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGFsdmVsdXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdQYWx2ZWx1bWVya2tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Bpc3RvcmFzaWEgdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnT2hqZWxtaXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1B1aHVqYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnVmFraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0Fsb2l0YSBJUC1vc29pdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1ZhcmFzdG9pbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnVGFsbGVubnVzb3Npbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1R5dMOkcnlodGnDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWWh0ZWVudmV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ09odXQgYXNpYWthcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnS2llcnRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnTsOkeXTDtm5vaGphaW1lbiBSQU0tbXVpc3RpIHlodGVlbnPDpCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNLW11aXN0aWEgeWh0ZWVuc8OkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0tvc2tldHVzbsOkeXTDtm4gbsOkeXR0w7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWtlc2tpdGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXB1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/fr_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGUgbGEgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmllciBsYSBkw6lmaW5pdGlvbiBkZXMgcsO0bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnTGVzIGVuc2VtYmxlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0ljaSwgdm91cyBwb3V2ZXogaW1wb3J0ZXIgZGVzIGNsYXNzZXMgUmVhZHkySW1wb3J0IHF1aSBwcsOpc2VudGVudCBub3Mgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGxlcyBwbHVzIGNvdXJhbnRzLiBWZXVpbGxleiBub3RlciBxdWUgY2VydGFpbmVzIGNvbmZpZ3VyYXRpb25zIHN1cHBsw6ltZW50YWlyZXMgcGV1dmVudCDDqnRyZSBuw6ljZXNzYWlyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01pc2Ugw6Agam91ciBkZXMgZW50aXTDqXMgZXhpc3RhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIGxlcyBwYXF1ZXRzIGRlIGNsYXNzZXMgZGUgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDbGFzc2UgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1LDtGxlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZSBwb3VyIGxlcyBjbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1PDqWxlY3Rpb25uZXogdW5lIGNsYXNzZSBkYW5zIGxhIGxpc3RlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZW4gdmVycyB1biBhdXRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtw6lybyBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTGUgbnVtw6lybyBkXCd1biBhdXRyZSDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlcXVlbCDDqXRhYmxpciB1biBsaWVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMZSBub20gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBub20gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcOpcm8gZGUgdmVyc2lvbiBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBudW3DqXJvIGRlIHZlcnNpb24gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpcXVlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnQ29udGVudSBoaXN0b3JpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcsOpZXIgdW4gdGVtcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVnVlIGRlIGxhIHN5bnRow6hzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgw4lsw6ltZW50cyBwYXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQXVjdW5lIGRvbm7DqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSB0cm91dsOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTw6lsZWN0aW9ubmVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBkXCdleMOpY3V0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1JlY2hlcmNoZSDDqWdhbGVtZW50IGRhbnMgbGVzIHZlcnNpb25zIHByw6ljw6lkZW50ZXMgPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBvdXIgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVhdSBkZSBwcm9mb25kZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBhdmFudC9hcnJpw6hyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdOaXZlYXUgZGUgbGllbnMgbWF4aW11bSBhdHRlaW50IHBvdXIgQ29uZmlnSXRlbSAhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGFjdHVlbCBkdSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ8OJdGF0IGFjdHVlbCBkZSBsXCdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdEZXJuacOocmUgbW9kaWZpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0Rlcm5pw6hyZSBtb2RpZmljYXRpb24gcGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUeXBlIGRcJ29iamV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJlciBwYXIgdHlwZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0xlcyBjbGFzc2VzIHN1aXZhbnRlcyBzZXJvbnQgaW1wb3J0w6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdMZXMgcsO0bGVzIHN1aXZhbnRzIHNlcm9udCBpbXBvcnTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTm90ZXogcXVlIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBldCBsZXMgY2xhc3NlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kYW50cyBzZXJvbnQgw6lnYWxlbWVudCBjcsOpw6lzIGV0IHF1XCdpbCBuXCd5IGEgcGFzIGRlIHN1cHByZXNzaW9uIGF1dG9tYXRpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZvdWxlei12b3VzIGNvbnRpbnVlciA/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0Jlc29pbiBkZSBjbGFzc2VzIGRcJ2V4ZW1wbGVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTGEgZMOpZmluaXRpb24gblwnZXN0IHBhcyB1biBoYWNoYWdlIFlBTUwgdmFsaWRlLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSA6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBDb25maWdJdGVtSUQgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVm91cyBhdmV6IGJlc29pbiBkXCdhdSBtb2lucyB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBzw6lsZWN0aW9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdWb3VzIG5cJ2F2ZXogcGFzIGRcJ2FjY8OocyBlbiDDqWNyaXR1cmUgw6AgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0F1Y3VuZSBkw6lmaW5pdGlvbiBuXCdhIMOpdMOpIGTDqWZpbmllIHBvdXIgbGEgY2xhc3NlICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0xcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICIlcyIgblwnYSBwYXMgw6l0w6kgdHJvdXbDqSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0lsIG5cJ2EgcGFzIMOpdMOpIHBvc3NpYmxlIGRlIHN1cHByaW1lciBsZSBjb25maWdpdGVtIElEICVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0F1Y3VuZSB2ZXJzaW9uIHRyb3V2w6llIHBvdXIgQ29uZmlnSXRlbUlEICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvdSBDbGFzc0lEIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gYWNjw6hzIG5cJ2VzdCBkb25uw6kgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIENvbmZpZ0l0ZW1JRCBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIGRyb2l0IGRcJ2FjY8OocyBuXCdhIMOpdMOpIGFjY29yZMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdXZlYXUgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3V2ZWxsZSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdNaXNlIMOgIGpvdXIgZGUgbFwnw6l0YXQgZHUgZMOpcGxvaWVtZW50IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnQWpvdXQgZFwndW4gbGllbiB2ZXJzICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGllbiB2ZXJzICVzICh0eXBlPSVzKSBzdXBwcmltw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsYSBkw6lmaW5pdGlvbiBkZSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb20gbWlzIMOgIGpvdXIgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIHN1cHByaW3DqWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gQ29uZmlnSXRlbUlEIG91IFZlcnNpb25JRCBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgYXVjdW4gZHJvaXQgZFwnYWNjw6hzIG5cJ2Egw6l0w6kgYWNjb3Jkw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBpbnRyb3V2YWJsZSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJpbcOpIHBhciAlcyDDoCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUsOpZsOpcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lEIGludmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBpZGVudGlmaWFudCBkZSBjbGFzc2UgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnQXVjdW4gZHJvaXQgZFwnYWNjw6hzIMOgIGNldHRlIGNsYXNzZSBuXCdhIMOpdMOpIGFjY29yZMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1BhcyBkZSByw6lzdWx0YXQgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1LDqXN1bHRhdHMgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQsIGF1Y3VuIGRyb2l0IGRcJ2FjY8OocyBuXCdlc3QgYWNjb3Jkw6kgcG91ciBDb25maWdJdGVtICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBpbnRyb3V2YWJsZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0F1Y3VuZSB2ZXJzaW9uIHRyb3V2w6llICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcMOpcmF0aW9ubmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGlzc2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMXCfDqXRhdCBkZSBsXCdpbmNpZGVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQYXMgZFwnYXV0b3Jpc2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRyZSBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtw6h0cmVzIGRlIHJlY2hlcmNoZSBub24gdmFsaWRlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnw4lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ2luY2lkZW50IGFjdHVlbCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdlbnRyZSBsZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTw6lsZWN0aW9ubmVyIHVuZSBvdSBwbHVzaWV1cnMgY2xhc3NlcyBwb3VyIHJlc3RyZWluZHJlIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc8OpbGVjdGlvbm5hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlxdWUgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgZGUgcsOpZsOpcmVuY2VtZW50IGRlcyBsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBjZSBsaWVuIHNcJ2FwcGxpcXVlIMOgIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG91IMOgIGxhIHZlcnNpb24gc3RhdGlxdWUgZGUgbFwnb2JqZXQgZGUgcsOpZsOpcmVuY2UuIExlIGNhbGN1bCBkZSBsXCfDqXRhdCBhY3R1ZWwgZGUgbFwnaW5jaWRlbnQgblwnZXN0IGVmZmVjdHXDqSBxdWUgcG91ciBsZXMgbGllbnMgZHluYW1pcXVlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTw6lsZWN0aW9ubmV6IGxcJ2F0dHJpYnV0IHBhciBsZXF1ZWwgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgcmVjaGVyY2jDqXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIHN0cnVjdHVyZSBkZSBiYXNlIG5cJ2VzdCBwYXMgdmFsaWRlLiBWZXVpbGxleiBmb3VybmlyIHVuIGhhY2hhZ2UgYXZlYyBkZXMgZG9ubsOpZXMgYXUgZm9ybWF0IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnSWwgZXN0IG7DqWNlc3NhaXJlIGRlIGNvbW1lbmNlciBsYSBjaGHDrm5lIFlBTUwgcGFyICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdJbXBvc3NpYmxlIGRlIHB1cmdlciBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdBdWN1biBjaGFtcCBkeW5hbWlxdWUgcGVydGluZW50IG5cJ2Egw6l0w6kgdHJvdXbDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0ltcG9zc2libGUgZFwnaW5zw6lyZXIgZGFucyBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc8OpcsOpIDAgbGlnbmVzIGRhbnMgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ05vbWJyZSBtYXhpbWFsIGRcJ3VuIMOpbMOpbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnRlci9leHBvcnRlciBkZXMgcGnDqGNlcyBqb2ludGVzIChlbiB0YW50IHF1ZSBkZXJuacOocmVzIGVudHLDqWVzIHBhciBsaWduZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdDaGHDrm5lIGRlIHZlcnNpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyZXVyIGRlIHN5bmNocm9uaXNhdGlvbiBkZXMgZMOpZmluaXRpb25zLiBWZXVpbGxleiB2w6lyaWZpZXIgbGUgam91cm5hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdWb3VzIGF2ZXogZGVzIGTDqWZpbml0aW9ucyBJVFNNQ29uZmlnSXRlbSBxdWkgbmUgc29udCBwYXMgc3luY2hyb25pc8OpZXMuIFZldWlsbGV6IGTDqXBsb3llciB2b3MgY2hhbmdlbWVudHMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFpbnRlbmFuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1Byw6l2dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSw6lwYXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0cmFpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1LDqXZpc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlIGV0IGNvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhdGlvbiBkZSBjbGFzc2VzL3LDtGxlcyBldCBkZSBsZXVycyBjaGFtcHMgY29ubmV4ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdVbmUgZXJyZXVyIHNcJ2VzdCBwcm9kdWl0ZSBsb3JzIGRlIGxcJ2ltcG9ydGF0aW9uIGRlIGxhIGNsYXNzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIENhY2jDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9udHLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWV0IGRcJ8OpdGVuZHJlIGxlcyBjb25kaXRpb25zIGRlIHJlY2hlcmNoZSBkYW5zIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50LiBHcsOiY2Ugw6AgY2V0dGUgZm9uY3Rpb25uYWxpdMOpLCB2b3VzIHBvdXZleiByZWNoZXJjaGVyLCBwYXIgZXhlbXBsZSwgbGUgbm9tIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGF2ZWMgZGVzIGNvbmRpdGlvbnMgdGVsbGVzIHF1ZSAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtZXQgZFwnw6l0ZW5kcmUgbGVzIGNvbmRpdGlvbnMgZGUgcmVjaGVyY2hlIGRhbnMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBBdmVjIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBwb3V2ZXogcmVjaGVyY2hlciBwYXIgZXhlbXBsZSBsZSBub20gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYXZlYyBkZXMgY29uZGl0aW9ucyB0ZWxsZXMgcXVlICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDIGFzc2lnbsOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIGFmZmVjdMOpcyDDoCBsXCdlbnRyZXByaXNlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSBhdHRyaWJ1w6lzIMOgIGxcJ3V0aWxpc2F0ZXVyIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnUGFyYW3DqHRyZXMgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVsOpcmlmaWVyIGxhIHByw6lzZW5jZSBkXCd1biBub20gdW5pcXVlIHVuaXF1ZW1lbnQgZGFucyBsYSBtw6ptZSBjbGFzc2UgZGUgQ29uZmlnSXRlbSAoImNsYXNzIikgb3UgZ2xvYmFsZW1lbnQgKCJnbG9iYWwiKSwgY2UgcXVpIHNpZ25pZmllIHF1ZSBjaGFxdWUgQ29uZmlnSXRlbSBleGlzdGFudCBlc3QgcHJpcyBlbiBjb21wdGUgbG9ycyBkZSBsYSByZWNoZXJjaGUgZGUgZG91YmxvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGTDqW5vbWluYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzeXN0w6htZSBkZSBudW3DqXJvdGF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGNoYcOubmUgZGUgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBhdHRyaWJ1dHMgcXVpIGTDqWNsZW5jaGVudCBsYSBjcsOpYXRpb24gZFwndW5lIG5vdXZlbGxlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1PDqWxlY3Rpb25uZXogbGVzIGNhdMOpZ29yaWVzIMOgIGFmZmVjdGVyIMOgIGNldHRlIGNsYXNzZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGNvbG9ubmUgcG91ciBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2xvbm5lcyBwb3V2YW50IMOqdHJlIGZpbHRyw6llcyBkYW5zIGxhIHZ1ZSBkXCdlbnNlbWJsZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4gUmVtYXJxdWUgOiBzZXVscyBsZXMgYXR0cmlidXRzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZXQgbGVzIGNoYW1wcyBkeW5hbWlxdWVzIChEeW5hbWljRmllbGRfTmFtZVgpIHNvbnQgYXV0b3Jpc8Opcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnw4lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBam91dCBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfDiWRpdGlvbiBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcXVpIHBlcm1ldCBsXCdlbnJlZ2lzdHJlbWVudCBkYW5zIGxcJ2hpc3RvcmlxdWUgZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBwb3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcXVpIG1ldCDDoCBqb3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGV1ciBkw6lmaW5pdGlvbiBhY3R1ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpcXVlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3Npb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWcgaXRlbSB6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0FyYm9yZXNjZW5jZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMZXMgQ29uZmlnSXRlbXMgZGVzIGNsYXNzZXMgc3VpdmFudGVzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMZXMgQ29uZmlnSXRlbXMgYXZlYyBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBzdWl2YW50cyBuZSBzZXJvbnQgcGFzIHN0b2Nrw6lzIHN1ciBsZSBzZXJ2ZXVyIEVsYXN0aWNzZWFyY2guIFBvdXIgYXBwbGlxdWVyIGNlbGEgYXV4IENJIGV4aXN0YW50cywgbGEgbWlncmF0aW9uIGRlcyBDSSBkb2l0IMOqdHJlIGV4w6ljdXTDqWUgdmlhIGxhIGNvbnNvbGUsIGFwcsOocyBhdm9pciBjaGFuZ8OpIGNldHRlIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmF0aW9uIExpbWl0ZSBkXCfDqWzDqW1lbnRzIHBhciBwYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkb25uw6llcyBkZSBnZXN0aW9uIGRlIGxhIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBtb2R1bGUgZW4gdnJhYy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcmVjaGVyY2hlIHJvdXRldXIgYmFja2VuZCBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0Nyw6llciBldCBnw6lyZXIgbGVzIGTDqWZpbml0aW9ucyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0Nyw6llIGRlcyB0aWNrZXRzIHBvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBkZXMgbW9tZW50cyBwcsOpY2lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMZXMgY2xpZW50cyBwZXV2ZW50IGNvbnN1bHRlciBsXCdoaXN0b3JpcXVlIGRlcyB2ZXJzaW9ucyBkZSBsXCdJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnTGVzIGNsaWVudHMgb250IGxhIHBvc3NpYmlsaXTDqSBkZSBwYXNzZXIgbWFudWVsbGVtZW50IGRcJ3VuZSB2ZXJzaW9uIGhpc3RvcmlxdWUgZGUgQ0kgw6AgbFwnYXV0cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRG9ubsOpZXMgcGFyIGTDqWZhdXQgw6AgdXRpbGlzZXIgc3VyIGxcJ2F0dHJpYnV0IGRlIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yIDsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0Rvbm7DqWVzIHBhciBkw6lmYXV0IMOgIHV0aWxpc2VyIHN1ciBsXCdhdHRyaWJ1dCBkZSBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MyA7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGxlcyBhY3Rpb25zIHBvdXIgbGVzcXVlbGxlcyB1biBib3V0b24gZGUgY29uZmlndXJhdGlvbiBlc3QgZGlzcG9uaWJsZSBkYW5zIGxlIHdpZGdldCBkZXMgb2JqZXRzIGxpw6lzIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFZldWlsbGV6IG5vdGVyIHF1ZSBjZXMgYWN0aW9ucyBkb2l2ZW50IGF2b2lyIGVucmVnaXN0csOpIGxlcyBmaWNoaWVycyBKUyBldCBDU1Mgc3VpdmFudHMgOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBldCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBzY2jDqW1hIFRlbXBsYXRlOjpUb29sa2l0IHBvdXIgbGVzIGNoYcOubmVzIGRlIHZlcnNpb24uIFV0aWxpc8OpIHVuaXF1ZW1lbnQgc2kgbGUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBlc3QgZMOpZmluaSBzdXIgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIGVuc2VtYmxlIGRlIGNvbmRpdGlvbnMgc291cyBsZXNxdWVsbGVzIHVuIGNsaWVudCBlc3QgYXV0b3Jpc8OpIMOgIHZvaXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uIExlcyBjb25kaXRpb25zIHBldXZlbnQgw6l2ZW50dWVsbGVtZW50IMOqdHJlIGxpbWl0w6llcyDDoCBjZXJ0YWlucyBncm91cGVzIGRlIGNsaWVudHMuIExlIG5vbSBlc3QgbGUgc2V1bCBhdHRyaWJ1dCBvYmxpZ2F0b2lyZS4gU2kgYXVjdW5lIGF1dHJlIG9wdGlvbiBuXCdlc3QgZG9ubsOpZSwgdG91cyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHNlcm9udCB2aXNpYmxlcyBkYW5zIGNldHRlIGNhdMOpZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIG9idGVuaXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciByZWNoZXJjaGVyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgZMOpZmluaXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEw6lmaW5pdCB1biBtb2R1bGUgZGUgdnVlIGRcJ2Vuc2VtYmxlIHBvdXIgYWZmaWNoZXIgbGEgcGV0aXRlIHZ1ZSBkXCd1bmUgbGlzdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEw6lmaW5pdCBzaSBsZXMgw6l0aXF1ZXR0ZXMgZGUgdHlwZSBkZSBsaWVuIGRvaXZlbnQgw6p0cmUgYWZmaWNow6llcyBkYW5zIGxlcyBjb25uZXhpb25zIGRlIG7Fk3Vkcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGRlcyBleHByZXNzaW9ucyByw6lndWxpw6hyZXMgaW5kaXZpZHVlbGxlbWVudCBwb3VyIGNoYXF1ZSBjbGFzc2UgQ29uZmlnSXRlbSBhZmluIGRlIHbDqXJpZmllciBsZSBub20gZHUgQ29uZmlnSXRlbSBldCBkXCdhZmZpY2hlciBsZXMgbWVzc2FnZXMgZFwnZXJyZXVyIGNvcnJlc3BvbmRhbnRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBkaXNwb25pYmxlcyBwb3VyIGxlcyBDSSBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgY2V0dGUgb3DDqXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuIFVwIDogbGUgcGx1cyBhbmNpZW4gZXN0IGVuIGhhdXQuIEVuIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgcGFyIGTDqWZhdXQgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuIEVuIGhhdXQgOiBsZSBwbHVzIGFuY2llbiBlc3QgZW4gaGF1dC4gRW4gYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBjZXR0ZSBvcMOpcmF0aW9uLiBFbiBoYXV0IDogbGUgcGx1cyBhbmNpZW4gZW4gaGF1dC4gVmVycyBsZSBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIHBhciBkw6lmYXV0IGRlcyBDSSBkYW5zIGxhIHZ1ZSBkXCdlbnNlbWJsZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEw6lmaW5pdCBsYSBwcm9mb25kZXVyIHBhciBkw6lmYXV0IGRlcyByZWxhdGlvbnMgw6AgYWZmaWNoZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6kgcGFyIGTDqWZhdXQgcG91ciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqSBwYXIgZMOpZmF1dCBwb3VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiS2V5IiBkb2l0IGNvbnRlbmlyIGxlIG5vbSBkdSBjaGFtcCBkeW5hbWlxdWUsIGRhbnMgY2UgY2FzICJYIiwgIkNvbnRlbnQiIGRvaXQgY29udGVuaXIgbGEgdmFsZXVyIGR1IGNoYW1wIGR5bmFtaXF1ZSBlbiBmb25jdGlvbiBkdSB0eXBlIGRlIGNoYW1wIGR5bmFtaXF1ZSwgVGV4dCA6ICJ1biB0ZXh0ZSIsIERyb3Bkb3duIDogIjEiLCBEYXRlL1RpbWUgOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQiIDogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTkgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTkgO2V0IG91ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlayA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTciIDsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZSBzb3VzLW9iamV0IHBhciBkw6lmYXV0IGRlIGxhIGNsYXNzZSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGRpc3BvbmlibGVzIHBvdXIgbGVzIENJIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBoYXV0ZXVyIGR1IGNvbXBvc2FudCBkZSBsXCfDqWRpdGV1ciBkZSB0ZXh0ZSBlbnJpY2hpIHBvdXIgY2V0IMOpY3Jhbi4gRW50cmV6IHVuIG5vbWJyZSAocGl4ZWxzKSBvdSB1bmUgdmFsZXVyIGVuIHBvdXJjZW50YWdlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlIG5vbWJyZSBkZSBsaWduZXMgcG91ciBsXCfDqWRpdGV1ciBkZSBkw6lmaW5pdGlvbiBkZSBDSSBkYW5zIGxcJ2ludGVyZmFjZSBkXCdhZG1pbmlzdHJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgZGVzIMOpdGF0cyBpbmNpZGVudHMsIGRlIGhhdXQgKHBhciBleGVtcGxlLCBjcmljaXRhbCkgw6AgYmFzIChwYXIgZXhlbXBsZSwgZm9uY3Rpb25uZWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHBlcnRpbmVudHMgZGFucyBsZXNxdWVscyBsZXMgdGlja2V0cyBsacOpcyBwZXV2ZW50IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgZGVzIENJIGRhbnMgbGEgdnVlIGNvbXBsZXhlIGRlIGxhIHRhYmxlIGRlcyBsaWVucyBwb3VyIHRvdXRlcyBsZXMgY2xhc3NlcyBkZSBDSS4gU1wnaWwgblwneSBhIHBhcyBkXCdlbnRyw6llLCBsZXMgY29sb25uZXMgcGFyIGTDqWZhdXQgc29udCBhZmZpY2jDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgZGVzIENJIGRhbnMgbGEgdnVlIGNvbXBsZXhlIGRlIGxhIHRhYmxlIGRlcyBsaWVucywgZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIHByw6ljw6lkw6llIGR1IG5vbSBkZSBsYSBjbGFzc2UgZXQgZGUgZGV1eCBwb2ludHMgKHBhciBleGVtcGxlIDogT3JkaW5hdGV1cjogOikuIFF1ZWxxdWVzIGF0dHJpYnV0cyBkZSBDSSBzb250IGNvbW11bnMgw6AgdG91cyBsZXMgQ0kgKGV4ZW1wbGUgcG91ciBsYSBjbGFzc2UgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20pIDogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUG91ciBhZmZpY2hlciBsZXMgYXR0cmlidXRzIGRlIENJIGluZGl2aWR1ZWxzIHRlbHMgcXVlIGTDqWZpbmlzIGRhbnMgbGEgZMOpZmluaXRpb24gZGUgQ0ksIGlsIGNvbnZpZW50IGRcJ3V0aWxpc2VyIGxlIHNjaMOpbWEgc3VpdmFudCAoZXhlbXBsZSBwb3VyIGxhIGNsYXNzZSBPcmRpbmF0ZXVyKSA6IE9yZGluYXRldXI6OkhhcmREaXNrOjoxLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIE9yZGluYXRldXI6OkhhcmREaXNrOjoyLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFNcJ2lsIG5cJ3kgYSBwYXMgZFwnZW50csOpZSBwb3VyIHVuZSBjbGFzc2UgQ0ksIGxlcyBjb2xvbm5lcyBwYXIgZMOpZmF1dCBzb250IGFmZmljaMOpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgcG91ciAiQWN0aW9uIiBhdSB0cm9pc2nDqG1lIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgYXUgcHJlbWllciBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIGRlIGxcJ0FDTCBkZXMgw6lsw6ltZW50cyBkZSBsYSBDb25maWcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgYXUgZGV1eGnDqG1lIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHF1ZWwgdHlwZSBkZSBsaWVuIChub21tw6kgZHUgcG9pbnQgZGUgdnVlIGR1IHRpY2tldCkgcGV1dCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kgbGnDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBxdWVsIHR5cGUgZGUgdGlja2V0IHBldXQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJIGxpw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxhIGTDqWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTdXBwcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3VsZXVyIGRlIGxcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGNoYW1wIGR5bmFtaXF1ZSBxdWkgbWFycXVlIGxlcyBkw6lmaW5pdGlvbnMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGNvbW1lIMOpdGFudCBkw6lzeW5jaHJvbmlzw6llcywgc2kgbGVzIGNoYW1wcyBkeW5hbWlxdWVzIHF1XCdlbGxlcyBjb250aWVubmVudCBjaGFuZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZXMgY2hhbXBzIElUU00gc3VwcGzDqW1lbnRhaXJlcyBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZSBzeW50aMOoc2UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2hhbXBzIGR5bmFtaXF1ZXMgYWZmaWNow6lzIGRhbnMgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcG91ciBxdWUgbGUgZnJvbnRlbmQgZGUgbFwnYWdlbnQgcHVpc3NlIHRyYXZhaWxsZXIgc3VyIHBsdXMgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gw6AgbGEgZm9pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHVuaXF1ZW1lbnQgcG91ciBsZXMgZ3JvdXBlcyByw6lwZXJ0b3Jpw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBY3RpdmUvZMOpc2FjdGl2ZSBsYSBmb25jdGlvbm5hbGl0w6kgZGUgdsOpcmlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gcG91ciBsZXMgbm9tcyB1bmlxdWVzLiBBdmFudCBkXCdhY3RpdmVyIGNldHRlIG9wdGlvbiwgdm91cyBkZXZleiB2w6lyaWZpZXIgc2kgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBleGlzdGFudHMgb250IGRlcyBub21zIGVuIGRvdWJsZS4gVm91cyBwb3V2ZXogbGUgZmFpcmUgYXZlYyBsYSBjb21tYW5kZSBkZSBsYSBjb25zb2xlIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IHBvdXIgZMOpZmluaXIgbGUgc3RhdHV0IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHN1ciBsZSBsaWVuIHRpY2tldC1jb25maWdpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDaGFtcHMgZGUgbFwnaW5kZXggZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiwgdXRpbGlzw6lzIHBvdXIgbGEgcmVjaGVyY2hlIGVuIHRleHRlIGludMOpZ3JhbC4gTGVzIGNoYW1wcyBzb250IMOpZ2FsZW1lbnQgc3RvY2vDqXMsIG1haXMgbmUgc29udCBwYXMgb2JsaWdhdG9pcmVzIHBvdXIgbGEgZm9uY3Rpb25uYWxpdMOpIGdsb2JhbGUuIExcJ2luY2x1c2lvbiBkZXMgcGnDqGNlcyBqb2ludGVzIHBldXQgw6p0cmUgZMOpc2FjdGl2w6llIGVuIG1ldHRhbnQgbFwnZW50csOpZSDDoCAwIG91IGVuIGxhIHN1cHByaW1hbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDaGFtcHMgc3RvY2vDqXMgZGFucyBsXCdpbmRleCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHF1aSBzb250IHV0aWxpc8OpcyBwb3VyIGRcJ2F1dHJlcyBjaG9zZXMgcXVlIGxlcyByZWNoZXJjaGVzIGVuIHRleHRlIGludMOpZ3JhbC4gUG91ciB1bmUgZm9uY3Rpb25uYWxpdMOpIGNvbXBsw6h0ZSwgdG91cyBsZXMgY2hhbXBzIHNvbnQgb2JsaWdhdG9pcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BvdXIgY2hhcXVlIHNlcnZpY2Ugd2ViIChjbMOpKSwgdW4gdGFibGVhdSBkZSBjbGFzc2VzICh2YWxldXIpIHBldXQgw6p0cmUgZMOpZmluaSBzdXIgbGVxdWVsIGxcJ2ltcG9ydGF0aW9uIGVzdCByZXN0cmVpbnRlLiBQb3VyIHRvdXRlcyBsZXMgY2xhc3NlcyBjaG9pc2llcywgb3UgcG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgZXhpc3RhbnRlcywgbGVzIGF0dHJpYnV0cyBkXCdpZGVudGlmaWNhdGlvbiBkZXZyb250IMOqdHJlIGNob2lzaXMgZGFucyBsYSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludm9jYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0VucmVnaXN0cmVtZW50IGR1IG1vZHVsZSBHZW5lcmljSW50ZXJmYWNlIHBvdXIgbGEgY291Y2hlIGRcJ2ludm9jYXRpb24gQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0VucmVnaXN0cmVtZW50IGR1IG1vZHVsZSBHZW5lcmljSW50ZXJmYWNlIHBvdXIgbGEgY291Y2hlIGRcJ2ludm9jYXRpb24gQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnQXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnw4l0YXQgZGUgbFwnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV0IGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV0IGxlcyDDqXRhdHMgZFwnaW5jaWRlbnRzIGRhbnMgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTm9tYnJlIG1heGltdW0gZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgdsOpcmlmaWVyIGxlIGdyb3VwZSByZXNwb25zYWJsZSBkXCd1bmUgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgZ8OpbsOpcmVyIGRlcyBzdGF0aXN0aXF1ZXMgc3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb20gZHUgbW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW3DqXJvIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb21icmUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgY2hhcXVlIHBhZ2UgZFwndW4gcsOpc3VsdGF0IGRlIHJlY2hlcmNoZSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0xlcyBvYmpldHMgw6AgcmVjaGVyY2hlciwgbGUgbm9tYnJlIGRcJ2VudHLDqWVzIGV0IGxlcyBhdHRyaWJ1dHMgw6AgYWZmaWNoZXIuIExlcyBhdHRyaWJ1dHMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkb2l2ZW50IMOqdHJlIGV4cGxpY2l0ZW1lbnQgc3RvY2vDqXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIGNhdMOpZ29yaWVzIGRlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZmlsdHJlcyBkZSBjb2xvbm5lIGRlIGxcJ2FwZXLDp3UgZGVzIHBldGl0cyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIFJlbWFycXVlIDogc2kgbGEgdmFsZXVyICJBY3RpZiIgZXN0IGZpeMOpZSDDoCAwLCBsZXMgYWdlbnRzIG5lIHBvdXJyb250IHBhcyBtb2RpZmllciBsZXMgcGFyYW3DqHRyZXMgZGUgY2UgZ3JvdXBlIGRhbnMgbGV1cnMgcHLDqWbDqXJlbmNlcyBwZXJzb25uZWxsZXMsIG1haXMgbGVzIGFkbWluaXN0cmF0ZXVycyBwb3Vycm9udCB0b3Vqb3VycyBtb2RpZmllciBsZXMgcGFyYW3DqHRyZXMgYXUgbm9tIGRcJ3VuIGF1dHJlIHV0aWxpc2F0ZXVyLiBVdGlsaXNleiBcJ1ByZWZlcmVuY2VHcm91cFwnIHBvdXIgY29udHLDtGxlciBkYW5zIHF1ZWxsZSB6b25lIGNlcyBwYXJhbcOodHJlcyBkb2l2ZW50IMOqdHJlIGFmZmljaMOpcyBkYW5zIGxcJ2ludGVyZmFjZSB1dGlsaXNhdGV1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsYSBjb3VsZXVyIGRlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsXCdleGVtcGxlIGRlIGdyb3VwZXMgZGUgcGVybWlzc2lvbiBkZXMgYXR0cmlidXRzIGfDqW7DqXJhdXggZHUgY2F0YWxvZ3VlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBub21zIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBudW3DqXJvdGF0aW9uIGRlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHVuaXF1ZW1lbnQgcG91ciBsZXMgZ3JvdXBlcyByw6lwZXJ0b3Jpw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbGEgYm/DrnRlIMOgIG91dGlscyBkdSBtb2TDqGxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGUgZMOpY2xlbmNoZXVyIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0V4w6ljdXRlIGxcJ2FjdGlvbiBjb25maWd1csOpZSBwb3VyIGNoYXF1ZSDDqXbDqG5lbWVudCAow6AgdGl0cmUgZGUgZGVtYW5kZXVyKSBwb3VyIGxlcyBzZXJ2aWNlcyBXZWIgY29uZmlndXLDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcm91cGUgZGUgcGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnYWN0aW9uIGRcJ2F0dGFjaGVtZW50IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2FyYm9yZXNjZW5jZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdham91dCBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZW4gdnJhYyBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSBtb2RpZmljYXRpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdHRyaWJ1dCAlcyBtaXMgw6Agam91ciBkZSAiJXMiIMOgICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnaW1wcmVzc2lvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWzDqGdlcyByZXF1aXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdSZWNoZXJjaGVyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pciBhdXRvbWF0aXF1ZW1lbnQgbFwnw6l0YXQgZFwnaW5jaWRlbnQgZFwndW4gQ0kgbG9yc3F1XCd1biB0aWNrZXQgZXN0IGxpw6kgw6AgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50IGRhbnMgbFwnw6ljcmFuIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBsXCdpbmNpZGVudCBkYW5zIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHF1aSBwZXJtZXQgZGUgbGllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCB1biBhdXRyZSBvYmpldCBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWNjw6lkZXIgw6AgbFwnaGlzdG9yaXF1ZSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBzdXBwcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBzYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWZmaWNoZXIgbGVzIGxpZW5zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc291cyBmb3JtZSBkXCdhcmJvcmVzY2VuY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBkdXBsaXF1ZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgbW9kaWZpZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgcmV2ZW5pciDDoCBsYSB2dWUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgaW1wcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwZXJtZXR0YW50IGRlIHpvb21lciBzdXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSBsXCdoaXN0b3JpcXVlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gKG9yZHJlIGludmVyc2UpIGRhbnMgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXTDqWdvcmllIHBhciBkw6lmYXV0IHF1aSBlc3QgYWZmaWNow6llIHNpIGF1Y3VuZSBuXCdlc3Qgc8OpbGVjdGlvbm7DqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWFudCBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgcGFyIGV4ZW1wbGUgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExhIHZhbGV1ciBwYXIgZMOpZmF1dCBlc3QgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRMOpY2xlbmNoZSBhdXRvbWF0aXF1ZW1lbnQgbFwnaW52b2tlciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNzaW9uIGRlIGxhIGNoYcOubmUgZGUgbGEgdmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIENoYcOubmUgZGUgY2FyYWN0w6hyZXMgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0TDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBsXCdleMOpY3V0aW9uIGRlIENvbmZpZ0l0ZW1BQ0wgcGV1dCDDqnRyZSDDqXZpdMOpZSBlbiB2w6lyaWZpYW50IGxlcyBkw6lwZW5kYW5jZXMgZGVzIGNoYW1wcyBtaXMgZW4gY2FjaGUuIENlbGEgcGV1dCBhbcOpbGlvcmVyIGxlcyB0ZW1wcyBkZSBjaGFyZ2VtZW50IGRlcyBmb3JtdWxhaXJlcywgbWFpcyBkb2l0IMOqdHJlIGTDqXNhY3RpdsOpIHNpIGxlcyBtb2R1bGVzIEFDTE0gZG9pdmVudCDDqnRyZSB1dGlsaXPDqXMgcG91ciBsZXMgdHlwZXMgSVRTTUNvbmZpZ0l0ZW0gZXQgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1ZWxsZXMgc29udCBsZXMgaW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzIHF1aSBmaWd1cmVudCBkYW5zIGxcJ2VuLXTDqnRlID8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnbW9uZGlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3Byw6lwcm9kdWN0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpZic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVSA6IDE3LDUgcG91Y2VzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVSA6IDIxIHBvdWNlcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVUgOiAyNiwyNSBwb3VjZXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFUgOiAzMSw1IHBvdWNlcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgMTkgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVSA6IDEsNzUgcG91Y2VzICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFUgOiAzNSBwb3VjZXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0Nyw6ltYWlsbMOocmUgZGUgMjEgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVSA6IDM4LDUgcG91Y2VzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnQ3LDqW1haWxsw6hyZSBkZSAyMyBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvdWNlcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VSA6IDQyIHBvdWNlcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VSA6IDQ3LDI1IHBvdWNlcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVSA6IDMsNSBwb3VjZXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFUgOiA1Mi41IHBvdWNlcyAoMTMzLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG91Y2VzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVIDogNTcsNzUgcG91Y2VzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwb3VjZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlUgOiA2MyBwb3VjZXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb3VjZXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVIDogNjguMjUgcG91Y2VzICgxNzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1UgOiA1LDI1IHBvdWNlcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlUgOiA3Myw1IHBvdWNlcyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb3VjZXMgKDExMDAgbW0pIDonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVUgOiA3OC43NSBwb3VjZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwb3VjZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVIDogODQgcG91Y2VzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFUgOiA3IHBvdWNlcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVUgOiA4LDc1IHBvdWNlcyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlUgOiAxMCw1IHBvdWNlcyAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVIDogMTIsMjUgcG91Y2VzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFUgOiAxNCBwb3VjZXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VSA6IDE1LDc1IHBvdWNlcyAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29tcHRhYmlsaXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0F0dHJpYnV0aW9uIGRcJ2FkcmVzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBhbmFsb2dpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXBlIGRcJ2FwcGFyZWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2l0w6kgZGUgbGEgYmF0dGVyaWUgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUeXBlIGRlIGJhdHRlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQsOidGltZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UgZGUgYnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdVTklUw4kgQ0VOVFJBTEUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc3NlIGRcJ3VuaXTDqSBjZW50cmFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdMOpIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2l0w6kgcGFyIGNhcnRlIGdyYXBoaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ051bcOpcm8gZGUgbGEgY2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWN0ZXVyIGRlIGNhcnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXBlIGRlIGNhcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnTG9naWNpZWwgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdMOpZ29yaWUgZGUgY2xpZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdIb3Jsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWaXRlc3NlIGRcJ2hvcmxvZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIHNpZ25hdHVyZSBkZSBjb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBkZSBjb25mw6lyZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBjb25zdWx0YXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3RlciBsZSBkaXN0cmlidXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uIGRlcyBjb250ZW5ldXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVHlwZSBkZSBjb250cmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnRHVyw6llIGR1IGNvbnRyYXQgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnRHVyw6llIGR1IGNvbnRyYXQganVzcXVcJ8OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1TDqWzDqXBob25lIHNhbnMgZmlsICh0w6lsw6lwaG9uZSBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdVbml0w6kgZGUgY2/Du3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdOb21icmUgZGUgbGljZW5jZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdGUgZGUgY3LDqWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdTdXBwb3J0IHN1ciBtZXN1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUsOpc2VydsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2ZXVyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0ZSBkZSBsYSBmYWN0dXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRlIGRlIGxcJ2FycsOqdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRlIGR1IG1hbmRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRlIGRlIHB1YmxpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdCdXJlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIHNpZ25hdHVyZSBkZSBkb2N1bWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYXRzIGRlIGNvdXJyaWVyIMOpbGVjdHJvbmlxdWUgKGNlcnRpZmljYXRzIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB0cmF2YWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBmaW5hbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbFwnYWlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGUgZFwnZXhwaXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzcXVlIGR1ciBleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnUGFyZS1mZXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1N0b2NrYWdlIGRcJ8OpbmVyZ2llIHBhciB2b2xhbnQgZFwnaW5lcnRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RldXIgZGUgZm9ybWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBmcmFuY2hpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMb2dpY2llbHMgZ3JhdHVpdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnQ2FydGVzIGdyYXBoaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0NhcnRlIGdyYXBoaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ01hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZMOobGUgZGUgbWF0w6lyaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1BvaWRzIGR1IG1hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQ2FzcXVlIGRcJ8OpY291dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbGUgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGlvbiBkZXMgaWRlbnRpdMOpcyBldCBkZXMgYWNjw6hzIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW3DqXJvIGRcJ2ludmVudGFpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDb8O7dHMgZFwnaW52ZXN0aXNzZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdDbGF2aWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0ZXVyIExDRCAow6ljcmFuIMOgIGNyaXN0YXV4IGxpcXVpZGVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRldXIgw6AgTEVEIChkaW9kZSDDqWxlY3Ryb2x1bWluZXNjZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZml4ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdPcmRpbmF0ZXVyIHBvcnRhYmxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDb3VjaGUgMSA6IENvdWNoZSBwaHlzaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDb3VjaGUgMiA6IENvdWNoZSBsaWFpc29uIGRlIGRvbm7DqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDb3VjaGUgMyA6IENvdWNoZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NvdWNoZSAzIDogQ291Y2hlIHLDqXNlYXUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDb3VjaGUgNCA6IENvdWNoZSB0cmFuc3BvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0NvdWNoZSA1IDogY291Y2hlIHNlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ291Y2hlIDYgOiBjb3VjaGUgZGUgcHLDqXNlbnRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NvdWNoZSA3IDogQ291Y2hlIGFwcGxpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXQgZGUgYmFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDbMOpIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwZSBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQw6lyaW9kZSBkZSBsaWNlbmNlIGR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUMOpcmlvZGUgZGUgbGljZW5jZSBqdXNxdVwnw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IHBob3NwaGF0ZSBkZSBmZXIgbGl0aGnDqSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IGxpdGhpdW0taW9uIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnQ29udHJhdCBkZSBwcsOqdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dcOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmljYW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2l0w6kgZGUgY2hhcmdlIG1heGltYWxlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNw6ltb2lyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cGUgZGUgbcOpbW9pcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB0w6lsw6lwaG9uZSBtb2JpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kw6hsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIGR1IG1vZMOobGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUsOpc29sdXRpb24gZHUgbW9uaXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFpbGxlIGR1IG1vbml0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnU291cmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWF0aW9ucyBzdXIgbGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDb3VjaGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIG5pY2tlbC1jYWRtaXVtIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIG5pY2tlbC1oeWRydXJlIG3DqXRhbGxpcXVlIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY2NvcmQgZGUgbm9uLWRpdnVsZ2F0aW9uIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FybmV0IGRlIG5vdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTm9tYnJlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOb21icmUgZGUgbW9kdWxlcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTm9tYnJlIGRlIGNhcnRlcyBncmFwaGlxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdGV1ciBPTEVEIChkaW9kZSDDqWxlY3Ryb2x1bWluZXNjZW50ZSBvcmdhbmlxdWUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0ZyYWlzIGRlIGZvbmN0aW9ubmVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ051bcOpcm8gZGUgY29tbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBdXRyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1NvcnRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIHBhcnRlbmFyaWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB0w6lsw6lwaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwZSBkZSB0w6lsw6lwaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0PFk3VycyBwaHlzaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3Vybml0dXJlIGRcJ8OpbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQWNoZXTDqSDDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZm9uZGV1ciBkdSByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pdMOpcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnQ2hhbWJyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0NhcnRlIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdDb250cmF0IGRlIHZlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIHNhdGVsbGl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBwbG9tYi1hY2lkZSBzY2VsbMOpZSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ051bcOpcm8gZGUgc8OpcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsIHNlcnZldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgc2VydmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ8OJdGlxdWV0dGUgZGUgc2VydmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXBlIGRlIHByaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnTG9naWNpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdJbnRlcnZlbmFudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0FkcmVzc2UgSVAgZGUgZMOpcGFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnU3RvY2thZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aXRpb24gZGUgc3RvY2thZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdGaWxpYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSw6lzdW3DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudCBsw6lnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0ZpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIGRlIGxhIGNhcnRlIGdyYXBoaXF1ZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0ZXVyIMOgIMOpY3JhbiB0YWN0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG91cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0Nhc3F1ZSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/fr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZFwndW5lIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGVzIHLDtGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0xlcyBlbnNlbWJsZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdJY2ksIHZvdXMgcG91dmV6IGltcG9ydGVyIGRlcyBjbGFzc2VzIFJlYWR5MkltcG9ydCBxdWkgcHLDqXNlbnRlbnQgbm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBsZXMgcGx1cyBjb3VyYW50cy4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcnRhaW5lcyBjb25maWd1cmF0aW9ucyBzdXBwbMOpbWVudGFpcmVzIHBldXZlbnQgw6p0cmUgbsOpY2Vzc2FpcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNaXNlIMOgIGpvdXIgZGVzIGVudGl0w6lzIGV4aXN0YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRlciBsZXMgcGFxdWV0cyBkZSBjbGFzc2VzIGRlIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSw7RsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmVzIHBvdXIgbGVzIGNsYXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnQ2hvaXNpc3NleiB1bmUgY2xhc3NlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZXIgw6AgdW4gYXV0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ051bcOpcm8gZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gaW52YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdMZSBudW3DqXJvIGRcJ3VuIGF1dHJlIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIGxpZXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiA/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xlIG5vbSBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0xlIG5vbSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlIG51bcOpcm8gc3VpdmFudCA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTGUgbnVtw6lybyBkZSB2ZXJzaW9uIGVzdCBkw6lqw6AgdXRpbGlzw6kgcGFyIGxlcyBDb25maWdJdGVtcyBhdmVjIGxlKHMpIG51bcOpcm8ocykgc3VpdmFudChzKSA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfDiXRhdCBkXCdpbmNpZGVudCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW51IGRlIGxcJ2hpc3RvcmlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0RhdGUgZGUgY3LDqWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Z1ZSBkw6l0YWlsbMOpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0F1Y3VuZSBkb25uw6llIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgdHJvdXbDqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU8OpbGVjdGlvbm5lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdMYW5jZXIgbGEgcmVjaGVyY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0NoZXJjaGVyIMOpZ2FsZW1lbnQgZGFucyBsZXMgdmVyc2lvbnMgcHLDqWPDqWRlbnRlcyA/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcG91ciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWF1IGRlIHByb2ZvbmRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGF2YW50L2FycmnDqHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVhdSBkZSBsaWVucyBtYXhpbXVtIGF0dGVpbnQgcG91ciBDb25maWdJdGVtICEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0Rlcm5pw6hyZXMgbW9kaWZpY2F0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdEZXJuacOocmVzIG1vZGlmaWNhdGlvbnMgZWZmZWN0dcOpZXMgcGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUeXBlIGRcJ29iamV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJlciBwYXIgdHlwZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0xlcyBjbGFzc2VzIHN1aXZhbnRlcyBzZXJvbnQgaW1wb3J0w6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdMZXMgcsO0bGVzIHN1aXZhbnRzIHNlcm9udCBpbXBvcnTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTm90ZXogcXVlIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBldCBsZXMgY2xhc3NlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kYW50cyBzZXJvbnQgw6lnYWxlbWVudCBjcsOpw6lzIGV0IHF1XCdpbCBuXCd5IGEgcGFzIGRlIHN1cHByZXNzaW9uIGF1dG9tYXRpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZvdWxlei12b3VzIHBvdXJzdWl2cmUgPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCZXNvaW4gZGUgY2xhc3NlcyBkXCdleGVtcGxlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGTDqWZpbml0aW9uIG5cJ2VzdCBwYXMgdW4gaGFjaGFnZSBZQU1MIHZhbGlkZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWdWUgZFwnZW5zZW1ibGU6IMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVm91cyBkZXZleiBzw6lsZWN0aW9ubmVyIGF1IG1vaW5zIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdWb3VzIG5cJ2F2ZXogcGFzIGxlIGRyb2l0IGRlIG1vZGlmaWVyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdBdWN1bmUgZMOpZmluaXRpb24gZMOpZmluaWUgcG91ciBsYSBjbGFzc2UgJXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnTFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gIiVzIiBuXCdhIHBhcyDDqXTDqSB0cm91dsOpIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnSW1wb3NzaWJsZSBkZSBzdXBwcmltZXIgbFwnSUQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQXVjdW5lIHZlcnNpb24gdHJvdXbDqWUgcG91ciBsXCdJRCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIElEIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLCBkZSBkdXBsaWNhdGlvbiBvdSBkZSBjbGFzc2UgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gYWNjw6hzIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBJRCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBhY2PDqHMgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm91dmVsIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdXZlbGxlIHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCBtaXMgw6Agam91ciAobm91dmVhdT0lcywgYW5jaWVuPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfDiXRhdCBkZSBsXCdpbmNpZGVudCBtaXMgw6Agam91ciAobm91dmVhdT0lcywgYW5jaWVuPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIChJRD0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGllciDDoCAlcyAodHlwZT0lcykgYWpvdXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGllciDDoCAlcyAodHlwZT0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEw6lmaW5pdGlvbiBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBtaXNlIMOgIGpvdXIgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbSBtaXMgw6Agam91ciAobm91dmVhdT0lcywgYW5jaWVuPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnVlICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIHN1cHByaW3DqWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gb3UgZGUgdmVyc2lvbiBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIGF1Y3VuIGFjY8OocyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnTFwnSUQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMgblwnYSBwYXMgw6l0w6kgdHJvdXbDqSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ0ltcHJpbcOpIHBhciAlcyDDoCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUsOpZsOpcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdJRCBkZSBjbGFzc2UgaW52YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIElEIGRlIGNsYXNzZSBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnQXVjdW5zIGRyb2l0cyBkXCdhY2PDqHMgcG91ciBjZXR0ZSBjbGFzc2UgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQXVjdW5zIHLDqXN1bHRhdHMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1LDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQsIGF1Y3VucyBkcm9pdHMgZFwnYWNjw6hzIHBvdXIgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBpbnRyb3V2YWJsZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0F1Y3VuZSB2ZXJzaW9uIHRyb3V2w6llICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcMOpcmF0aW9ubmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGlzc2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMXCfDqXRhdCBkXCdpbmNpZGVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQYXMgZGUgcGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cmUgbm9uIHZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbcOodHJlcyBkZSByZWNoZXJjaGUgbm9uIHZhbGlkZXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0FmZmljaGVyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCfDqXRhdCBkdSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCfDqXRhdCBhY3R1ZWwgZGUgbFwnaW5jaWRlbnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1PDqWxlY3Rpb25uZXIgdW5lIG91IHBsdXNpZXVycyBjbGFzc2VzIHBvdXIgcmVzdHJlaW5kcmUgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzw6lsZWN0aW9ubmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pcXVlIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGRlIHLDqWbDqXJlbmNlbWVudCBkZXMgbGllbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2kgY2UgbGllbiBzXCdhcHBsaXF1ZSDDoCBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBvdSDDoCBsYSB2ZXJzaW9uIHN0YXRpcXVlIGRlIGxcJ29iamV0IGRlIHLDqWbDqXJlbmNlLiBMZSBjYWxjdWwgZGUgbFwnw6l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50IG5cJ2VzdCBlZmZlY3R1w6kgcXVlIHBvdXIgbGVzIGxpZW5zIGR5bmFtaXF1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU8OpbGVjdGlvbm5leiBsXCdhdHRyaWJ1dCBwYXIgbGVxdWVsIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc2Vyb250IHJlY2hlcmNow6lzLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdMYSBzdHJ1Y3R1cmUgZGUgYmFzZSBuXCdlc3QgcGFzIHZhbGlkZS4gVmV1aWxsZXogZm91cm5pciB1biBoYWNoYWdlIGF2ZWMgZGVzIGRvbm7DqWVzIGF1IGZvcm1hdCBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0lsIGVzdCBuw6ljZXNzYWlyZSBkZSBjb21tZW5jZXIgbGEgY2hhw65uZSBZQU1MIHBhciAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnSW1wb3NzaWJsZSBkZSBwdXJnZXIgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnQXVjdW4gY2hhbXAgZHluYW1pcXVlIHBlcnRpbmVudCBuXCdhIMOpdMOpIHRyb3V2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbXBvc3NpYmxlIGRcJ2luc8OpcmVyIGRhbnMgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnPDqXLDqSAwIGxpZ25lcyBkYW5zIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdRdWFudGl0w6kgbWF4aW1hbGUgcG91ciB1biDDqWzDqW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0ZXIvZXhwb3J0ZXIgZGVzIHBpw6hjZXMgam9pbnRlcyAoZW4gdGFudCBxdWUgZGVybmnDqHJlcyBlbnRyw6llcyBwYXIgbGlnbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnQ2hhw65uZSBkZSB2ZXJzaW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0VycmV1ciBkZSBzeW5jaHJvbmlzYXRpb24gZGVzIGTDqWZpbml0aW9ucy4gVmV1aWxsZXogdsOpcmlmaWVyIGxlIGpvdXJuYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVm91cyBhdmV6IGRlcyBkw6lmaW5pdGlvbnMgSVRTTUNvbmZpZ0l0ZW0gcXVpIG5lIHNvbnQgcGFzIHN5bmNocm9uaXPDqWVzLiBWZXVpbGxleiBkw6lwbG95ZXIgdm9zIGNoYW5nZW1lbnRzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01haW50ZW5hbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnRW4gcsOpcGFyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2dWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBldCBjb25maXJtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXRpb24gZGUgY2xhc3Nlcy9yw7RsZXMgZXQgZGUgbGV1cnMgY2hhbXBzIGNvbm5leGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnVW5lIGVycmV1ciBzXCdlc3QgcHJvZHVpdGUgbG9ycyBkZSBsXCdpbXBvcnRhdGlvbiBkZSBsYSBjbGFzc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBDYWNow6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1vbnRyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1ldCBkXCfDqXRlbmRyZSBsZXMgY29uZGl0aW9ucyBkZSByZWNoZXJjaGUgZGFucyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4gR3LDomNlIMOgIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBwb3V2ZXogcmVjaGVyY2hlciwgcGFyIGV4ZW1wbGUsIGxlIG5vbSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGRlcyBjb25kaXRpb25zIHRlbGxlcyBxdWUgIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWV0IGRcJ8OpdGVuZHJlIGxlcyBjb25kaXRpb25zIGRlIHJlY2hlcmNoZSBkYW5zIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4gQXZlYyBjZXR0ZSBmb25jdGlvbm5hbGl0w6ksIHZvdXMgcG91dmV6IHJlY2hlcmNoZXIgcGFyIGV4ZW1wbGUgbGUgbm9tIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGF2ZWMgZGVzIGNvbmRpdGlvbnMgdGVsbGVzIHF1ZSAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhdHRyaWJ1w6lzIMOgIHVuIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhdHRyaWJ1w6lzIMOgIHVuIHV0aWxpc2F0ZXVyIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnUGFyYW3DqHRyZXMgZGUgbGEgQ01EQiAoYmFzZSBkZSBkb25uw6llcyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVsOpcmlmaWVyIGxhIHByw6lzZW5jZSBkXCd1biBub20gdW5pcXVlIHVuaXF1ZW1lbnQgZGFucyBsYSBtw6ptZSBjbGFzc2UgZGUgQ29uZmlnSXRlbSAoImNsYXNzIikgb3UgZ2xvYmFsZW1lbnQgKCJnbG9iYWwiKSwgY2UgcXVpIHNpZ25pZmllIHF1ZSBjaGFxdWUgQ29uZmlnSXRlbSBleGlzdGFudCBlc3QgcHJpcyBlbiBjb21wdGUgbG9ycyBkZSBsYSByZWNoZXJjaGUgZGUgZG91YmxvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGTDqW5vbWluYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzeXN0w6htZSBkZSBudW3DqXJvdGF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGNoYcOubmUgZGUgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBhdHRyaWJ1dHMgcXVpIGTDqWNsZW5jaGVudCBsYSBjcsOpYXRpb24gZFwndW5lIG5vdXZlbGxlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1PDqWxlY3Rpb25uZXogbGVzIGNhdMOpZ29yaWVzIMOgIGFmZmVjdGVyIMOgIGNldHRlIGNsYXNzZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsYSBjb2xvbm5lIHBvdXIgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb25uZXMgcG91dmFudCDDqnRyZSBmaWx0csOpZXMgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuIFJlbWFycXVlIDogc2V1bHMgbGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGV0IGxlcyBjaGFtcHMgZHluYW1pcXVlcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBzb250IGF1dG9yaXPDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYWpvdXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDqWRpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHF1aSBwZXJtZXQgbFwnZW5yZWdpc3RyZW1lbnQgZGFucyBsXCdoaXN0b3JpcXVlIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHF1aSBtZXQgw6Agam91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxldXIgZMOpZmluaXRpb24gYWN0dWVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdWdWUgZMOpdGFpbGzDqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBkZXMgY2xhc3NlcyBzdWl2YW50ZXMgbmUgc2Vyb250IHBhcyBzdG9ja8OpcyBzdXIgbGUgc2VydmV1ciBFbGFzdGljc2VhcmNoLiBQb3VyIGFwcGxpcXVlciBjZWxhIGF1eCBDSSBleGlzdGFudHMsIGxhIG1pZ3JhdGlvbiBkZXMgQ0kgZG9pdCDDqnRyZSBleMOpY3V0w6llIHZpYSBsYSBjb25zb2xlLCBhcHLDqHMgYXZvaXIgY2hhbmfDqSBjZXR0ZSBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBhdmVjIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHN1aXZhbnRzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdMaW1pdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHBhciBwYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkb25uw6llcyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIGVuIHZyYWMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHJlY2hlcmNoZSByb3V0ZXVyIGJhY2tlbmQgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcsOpZXIgZXQgZ8OpcmVyIGxlcyBkw6lmaW5pdGlvbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcsOpZSBkZXMgdGlja2V0cyBwb3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgZGVzIG1vbWVudHMgcHLDqWNpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnTGVzIGNsaWVudHMgcGV1dmVudCBjb25zdWx0ZXIgbFwnaGlzdG9yaXF1ZSBkZXMgdmVyc2lvbnMgZGUgbFwnSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0xlcyBjbGllbnRzIG9udCBsYSBwb3NzaWJpbGl0w6kgZGUgcGFzc2VyIG1hbnVlbGxlbWVudCBkXCd1bmUgdmVyc2lvbiBoaXN0b3JpcXVlIGRlIENJIMOgIGxcJ2F1dHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0Rvbm7DqWVzIHBhciBkw6lmYXV0IMOgIHV0aWxpc2VyIHN1ciBsXCdhdHRyaWJ1dCBkZSBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MiA7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEb25uw6llcyBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBzdXIgbFwnYXR0cmlidXQgZGUgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTMgOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEw6lmaW5pciBsZXMgYWN0aW9ucyBwb3VyIGxlc3F1ZWxsZXMgdW4gYm91dG9uIGRlIGNvbmZpZ3VyYXRpb24gZXN0IGRpc3BvbmlibGUgZGFucyBsZSB3aWRnZXQgZGVzIG9iamV0cyBsacOpcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBWZXVpbGxleiBub3RlciBxdWUgY2VzIGFjdGlvbnMgZG9pdmVudCBhdm9pciBlbnJlZ2lzdHLDqSBsZXMgZmljaGllcnMgSlMgZXQgQ1NTIHN1aXZhbnRzIDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZXQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRMOpZmluaXIgdW4gc2Now6ltYSBUZW1wbGF0ZTo6VG9vbGtpdCBwb3VyIGxlcyBjaGHDrm5lcyBkZSB2ZXJzaW9uLiBVdGlsaXPDqSB1bmlxdWVtZW50IHNpIGxlIG1vZHVsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gZXN0IGTDqWZpbmkgc3VyIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBlbnNlbWJsZSBkZSBjb25kaXRpb25zIHNvdXMgbGVzcXVlbGxlcyB1biBjbGllbnQgZXN0IGF1dG9yaXPDqSDDoCB2b2lyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBMZXMgY29uZGl0aW9ucyBwZXV2ZW50IMOpdmVudHVlbGxlbWVudCDDqnRyZSBsaW1pdMOpZXMgw6AgY2VydGFpbnMgZ3JvdXBlcyBkZSBjbGllbnRzLiBMZSBub20gZXN0IGxlIHNldWwgYXR0cmlidXQgb2JsaWdhdG9pcmUuIFNpIGF1Y3VuZSBhdXRyZSBvcHRpb24gblwnZXN0IGRvbm7DqWUsIHRvdXMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgdmlzaWJsZXMgZGFucyBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBvYnRlbmlyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgcmVjaGVyY2hlciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIGTDqWZpbmlyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRMOpZmluaXQgdW4gbW9kdWxlIGRlIHZ1ZSBkXCdlbnNlbWJsZSBwb3VyIGFmZmljaGVyIGxhIHBldGl0ZSB2dWUgZFwndW5lIGxpc3RlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRMOpZmluaXQgc2kgbGVzIMOpdGlxdWV0dGVzIGRlIHR5cGUgZGUgbGllbiBkb2l2ZW50IMOqdHJlIGFmZmljaMOpZXMgZGFucyBsZXMgY29ubmV4aW9ucyBkZSBuxZN1ZHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEw6lmaW5pdCBkZXMgZXhwcmVzc2lvbnMgcsOpZ3VsacOocmVzIGluZGl2aWR1ZWxsZW1lbnQgcG91ciBjaGFxdWUgY2xhc3NlIENvbmZpZ0l0ZW0gYWZpbiBkZSB2w6lyaWZpZXIgbGUgbm9tIGR1IENvbmZpZ0l0ZW0gZXQgZFwnYWZmaWNoZXIgbGVzIG1lc3NhZ2VzIGRcJ2VycmV1ciBjb3JyZXNwb25kYW50cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBVcCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBFbiBoYXV0IDogbGUgcGx1cyBhbmNpZW4gZXN0IGVuIGhhdXQuIEVuIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgY2V0dGUgb3DDqXJhdGlvbi4gRW4gaGF1dCA6IGxlIHBsdXMgYW5jaWVuIGVuIGhhdXQuIFZlcnMgbGUgYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgYWZmaWNow6llcyBwYXIgZMOpZmF1dCBkZXMgQ0kgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRMOpZmluaXQgbGEgcHJvZm9uZGV1ciBwYXIgZMOpZmF1dCBkZXMgcmVsYXRpb25zIMOgIGFmZmljaGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpIHBhciBkw6lmYXV0IHBvdXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSByZWNoZXJjaGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6kgcGFyIGTDqWZhdXQgcG91ciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIktleSIgZG9pdCBjb250ZW5pciBsZSBub20gZHUgY2hhbXAgZHluYW1pcXVlLCBkYW5zIGNlIGNhcyAiWCIsICJDb250ZW50IiBkb2l0IGNvbnRlbmlyIGxhIHZhbGV1ciBkdSBjaGFtcCBkeW5hbWlxdWUgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjaGFtcCBkeW5hbWlxdWUsIFRleHQgOiAidW4gdGV4dGUiLCBEcm9wZG93biA6ICIxIiwgRGF0ZS9UaW1lIDogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IiA6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjYgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDEgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjYgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5IDtldCBvdSAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWsgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmUgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03IiA7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRMOpZmluaXQgbGUgc291cy1vYmpldCBwYXIgZMOpZmF1dCBkZSBsYSBjbGFzc2UgIklUU01Db25maWdJdGVtIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBkaXNwb25pYmxlcyBwb3VyIGxlcyBDSSBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgaGF1dGV1ciBkdSBjb21wb3NhbnQgZGUgbFwnw6lkaXRldXIgZGUgdGV4dGUgZW5yaWNoaSBwb3VyIGNldCDDqWNyYW4uIEVudHJleiB1biBub21icmUgKHBpeGVscykgb3UgdW5lIHZhbGV1ciBlbiBwb3VyY2VudGFnZSAocmVsYXRpdmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZSBub21icmUgZGUgbGlnbmVzIHBvdXIgbFwnw6lkaXRldXIgZGUgZMOpZmluaXRpb24gZGUgQ0kgZGFucyBsXCdpbnRlcmZhY2UgZFwnYWRtaW5pc3RyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIGRlcyDDqXRhdHMgaW5jaWRlbnRzLCBkZSBoYXV0IChwYXIgZXhlbXBsZSwgY3JpY2l0YWwpIMOgIGJhcyAocGFyIGV4ZW1wbGUsIGZvbmN0aW9ubmVsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBwZXJ0aW5lbnRzIGRhbnMgbGVzcXVlbHMgbGVzIHRpY2tldHMgbGnDqXMgcGV1dmVudCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMgcG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgZGUgQ0kuIFNcJ2lsIG5cJ3kgYSBwYXMgZFwnZW50csOpZSwgbGVzIGNvbG9ubmVzIHBhciBkw6lmYXV0IHNvbnQgYWZmaWNow6llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMsIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBwcsOpY8OpZMOpZSBkdSBub20gZGUgbGEgY2xhc3NlIGV0IGRlIGRldXggcG9pbnRzIChwYXIgZXhlbXBsZSA6IE9yZGluYXRldXI6IDopLiBRdWVscXVlcyBhdHRyaWJ1dHMgZGUgQ0kgc29udCBjb21tdW5zIMOgIHRvdXMgbGVzIENJIChleGVtcGxlIHBvdXIgbGEgY2xhc3NlIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tKSA6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBvdXIgYWZmaWNoZXIgbGVzIGF0dHJpYnV0cyBkZSBDSSBpbmRpdmlkdWVscyB0ZWxzIHF1ZSBkw6lmaW5pcyBkYW5zIGxhIGTDqWZpbml0aW9uIGRlIENJLCBpbCBjb252aWVudCBkXCd1dGlsaXNlciBsZSBzY2jDqW1hIHN1aXZhbnQgKGV4ZW1wbGUgcG91ciBsYSBjbGFzc2UgT3JkaW5hdGV1cikgOiBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MSwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MiwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTXCdpbCBuXCd5IGEgcGFzIGRcJ2VudHLDqWUgcG91ciB1bmUgY2xhc3NlIENJLCBsZXMgY29sb25uZXMgcGFyIGTDqWZhdXQgc29udCBhZmZpY2jDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIHBvdXIgIkFjdGlvbiIgYXUgdHJvaXNpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IHByZW1pZXIgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBkZSBsXCdBQ0wgZGVzIMOpbMOpbWVudHMgZGUgbGEgQ29uZmlnIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IGRldXhpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBxdWVsIHR5cGUgZGUgbGllbiAobm9tbcOpIGR1IHBvaW50IGRlIHZ1ZSBkdSB0aWNrZXQpIHBldXQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJIGxpw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgcXVlbCB0eXBlIGRlIHRpY2tldCBwZXV0IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSSBsacOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsYSBkw6lmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnU3VwcHJpbWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ291bGV1ciBkZSBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnw4l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpcXVlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBjaGFtcCBkeW5hbWlxdWUgcXVpIG1hcnF1ZSBsZXMgZMOpZmluaXRpb25zIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBjb21tZSDDqXRhbnQgZMOpc3luY2hyb25pc8OpZXMsIHNpIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBxdVwnZWxsZXMgY29udGllbm5lbnQgY2hhbmdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGVzIGNoYW1wcyBJVFNNIHN1cHBsw6ltZW50YWlyZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGUgc3ludGjDqHNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHBvdXIgcXVlIGxlIGZyb250ZW5kIGRlIGxcJ2FnZW50IHB1aXNzZSB0cmF2YWlsbGVyIHN1ciBwbHVzIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIGxhIGZvaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZlL2TDqXNhY3RpdmUgbGEgZm9uY3Rpb25uYWxpdMOpIGRlIHbDqXJpZmljYXRpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIHBvdXIgbGVzIG5vbXMgdW5pcXVlcy4gQXZhbnQgZFwnYWN0aXZlciBjZXR0ZSBvcHRpb24sIHZvdXMgZGV2ZXogdsOpcmlmaWVyIHNpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZXhpc3RhbnRzIG9udCBkZXMgbm9tcyBlbiBkb3VibGUuIFZvdXMgcG91dmV6IGxlIGZhaXJlIGF2ZWMgbGEgY29tbWFuZGUgZGUgbGEgY29uc29sZSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBwb3VyIGTDqWZpbmlyIGxlIHN0YXR1dCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBzdXIgbGUgbGllbiB0aWNrZXQtY29uZmlnaXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2hhbXBzIGRlIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24sIHV0aWxpc8OpcyBwb3VyIGxhIHJlY2hlcmNoZSBlbiB0ZXh0ZSBpbnTDqWdyYWwuIExlcyBjaGFtcHMgc29udCDDqWdhbGVtZW50IHN0b2Nrw6lzLCBtYWlzIG5lIHNvbnQgcGFzIG9ibGlnYXRvaXJlcyBwb3VyIGxhIGZvbmN0aW9ubmFsaXTDqSBnbG9iYWxlLiBMXCdpbmNsdXNpb24gZGVzIHBpw6hjZXMgam9pbnRlcyBwZXV0IMOqdHJlIGTDqXNhY3RpdsOpZSBlbiBtZXR0YW50IGxcJ2VudHLDqWUgw6AgMCBvdSBlbiBsYSBzdXBwcmltYW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2hhbXBzIHN0b2Nrw6lzIGRhbnMgbFwnaW5kZXggZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgc29udCB1dGlsaXPDqXMgcG91ciBkXCdhdXRyZXMgY2hvc2VzIHF1ZSBsZXMgcmVjaGVyY2hlcyBlbiB0ZXh0ZSBpbnTDqWdyYWwuIFBvdXIgdW5lIGZvbmN0aW9ubmFsaXTDqSBjb21wbMOodGUsIHRvdXMgbGVzIGNoYW1wcyBzb250IG9ibGlnYXRvaXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQb3VyIGNoYXF1ZSBzZXJ2aWNlIHdlYiAoY2zDqSksIHVuIHRhYmxlYXUgZGUgY2xhc3NlcyAodmFsZXVyKSBwZXV0IMOqdHJlIGTDqWZpbmkgc3VyIGxlcXVlbCBsXCdpbXBvcnRhdGlvbiBlc3QgcmVzdHJlaW50ZS4gUG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgY2hvaXNpZXMsIG91IHBvdXIgdG91dGVzIGxlcyBjbGFzc2VzIGV4aXN0YW50ZXMsIGxlcyBhdHRyaWJ1dHMgZFwnaWRlbnRpZmljYXRpb24gZGV2cm9udCDDqnRyZSBjaG9pc2lzIGRhbnMgbGEgY29uZmlndXJhdGlvbiBkZSBsXCdpbnZvY2F0ZXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRcJ2luY2lkZW50cyBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ05vbWJyZSBtYXhpbXVtIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGxlIHLDqXN1bHRhdCBkZSBjZXR0ZSBvcMOpcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW5lIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgcGVybWV0dGFudCBkZSB2w6lyaWZpZXIgbGUgZ3JvdXBlIHJlc3BvbnNhYmxlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIGfDqW7DqXJlciBkZXMgc3RhdGlzdGlxdWVzIHN1ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tIGR1IG1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtw6lybyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vbWJyZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBjaGFxdWUgcGFnZSBkXCd1biByw6lzdWx0YXQgZGUgcmVjaGVyY2hlIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdMZXMgb2JqZXRzIMOgIHJlY2hlcmNoZXIsIGxlIG5vbWJyZSBkXCdlbnRyw6llcyBldCBsZXMgYXR0cmlidXRzIMOgIGFmZmljaGVyLiBMZXMgYXR0cmlidXRzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZG9pdmVudCDDqnRyZSBleHBsaWNpdGVtZW50IHN0b2Nrw6lzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWdWUgZFwnZW5zZW1ibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBjYXTDqWdvcmllcyBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIGZpbHRyZXMgZGUgY29sb25uZSBkZSBsXCdhcGVyw6d1IGRlcyBwZXRpdHMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBSZW1hcnF1ZSA6IHNpIGxhIHZhbGV1ciAiQWN0aWYiIGVzdCBmaXjDqWUgw6AgMCwgbGVzIGFnZW50cyBuZSBwb3Vycm9udCBwYXMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGRlIGNlIGdyb3VwZSBkYW5zIGxldXJzIHByw6lmw6lyZW5jZXMgcGVyc29ubmVsbGVzLCBtYWlzIGxlcyBhZG1pbmlzdHJhdGV1cnMgcG91cnJvbnQgdG91am91cnMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGF1IG5vbSBkXCd1biBhdXRyZSB1dGlsaXNhdGV1ci4gVXRpbGlzZXogXCdQcmVmZXJlbmNlR3JvdXBcJyBwb3VyIGNvbnRyw7RsZXIgZGFucyBxdWVsbGUgem9uZSBjZXMgcGFyYW3DqHRyZXMgZG9pdmVudCDDqnRyZSBhZmZpY2jDqXMgZGFucyBsXCdpbnRlcmZhY2UgdXRpbGlzYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGEgY291bGV1ciBkZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbFwnZXhlbXBsZSBkZXMgcGVybWlzc2lvbnMgZGUgZ3JvdXBlcyBkZXMgYXR0cmlidXRzIGR1IGNhdGFsb2d1ZSBnw6luw6lyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIG5vbXMgcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIG51bcOpcm90YXRpb24gZGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gdW5pcXVlbWVudCBwb3VyIGxlcyBncm91cGVzIHLDqXBlcnRvcmnDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBsYSBib8OudGUgw6Agb3V0aWxzIGR1IG1vZMOobGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZSBkw6ljbGVuY2hldXIgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRWZmZWN0dWUgbFwnYWN0aW9uIGNvbmZpZ3Vyw6llIHBvdXIgY2hhcXVlIMOpdsOpbmVtZW50IChlbiB0YW50IHF1XCdpbnZvY2F0ZXVyKSBwb3VyIGNoYXF1ZSBXZWJzZXJ2aWNlIGNvbmZpZ3Vyw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIGR1IGdyb3VwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnYWN0aW9uIGRcJ2F0dGFjaGVtZW50IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2FyYm9yZXNjZW5jZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdham91dCBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZW4gdnJhYyBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSBtb2RpZmljYXRpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdHRyaWJ1dCAlcyBtaXMgw6Agam91ciBkZSAiJXMiIMOgICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnaW1wcmVzc2lvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWzDqGdlcyByZXF1aXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdSZWNoZXJjaGVyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pciBhdXRvbWF0aXF1ZW1lbnQgbFwnw6l0YXQgZFwnaW5jaWRlbnQgZFwndW4gQ0kgbG9yc3F1XCd1biB0aWNrZXQgZXN0IGxpw6kgw6AgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50IGRhbnMgbFwnw6ljcmFuIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBsXCdpbmNpZGVudCBkYW5zIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHF1aSBwZXJtZXQgZGUgbGllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCB1biBhdXRyZSBvYmpldCBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWNjw6lkZXIgw6AgbFwnaGlzdG9yaXF1ZSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBzdXBwcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBzYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWZmaWNoZXIgbGVzIGxpZW5zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc291cyBmb3JtZSBkXCdhcmJvcmVzY2VuY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBkdXBsaXF1ZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgbW9kaWZpZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgcmV2ZW5pciDDoCBsYSB2dWUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgaW1wcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwZXJtZXR0YW50IGRlIHpvb21lciBzdXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSBsXCdoaXN0b3JpcXVlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gKG9yZHJlIGludmVyc2UpIGRhbnMgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXTDqWdvcmllIHBhciBkw6lmYXV0IHF1aSBlc3QgYWZmaWNow6llIHNpIGF1Y3VuZSBuXCdlc3Qgc8OpbGVjdGlvbm7DqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWFudCBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgcGFyIGV4ZW1wbGUgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExhIHZhbGV1ciBwYXIgZMOpZmF1dCBlc3QgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRMOpY2xlbmNoZSBhdXRvbWF0aXF1ZW1lbnQgbFwnaW52b2tlciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNzaW9uIGRlIGxhIGNoYcOubmUgZGUgbGEgdmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIENoYcOubmUgZGUgY2FyYWN0w6hyZXMgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0TDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBsXCdleMOpY3V0aW9uIGRlIENvbmZpZ0l0ZW1BQ0wgcGV1dCDDqnRyZSDDqXZpdMOpZSBlbiB2w6lyaWZpYW50IGxlcyBkw6lwZW5kYW5jZXMgZGVzIGNoYW1wcyBtaXMgZW4gY2FjaGUuIENlbGEgcGV1dCBhbcOpbGlvcmVyIGxlcyB0ZW1wcyBkZSBjaGFyZ2VtZW50IGRlcyBmb3JtdWxhaXJlcywgbWFpcyBkb2l0IMOqdHJlIGTDqXNhY3RpdsOpIHNpIGxlcyBtb2R1bGVzIEFDTE0gZG9pdmVudCDDqnRyZSB1dGlsaXPDqXMgcG91ciBsZXMgdHlwZXMgSVRTTUNvbmZpZ0l0ZW0gZXQgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1ZWxsZXMgc29udCBsZXMgaW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzIHF1aSBmaWd1cmVudCBkYW5zIGxcJ2VuLXTDqnRlID8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdC1wcm9kdWN0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3Byw6ktcHJvZHVjdGlmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aWYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFUgOiAxNyw1IHBvdWNlcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlUgOiAyMSBwb3VjZXMgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVIDogMjYsMjUgcG91Y2VzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVIDogMzEsNSBwb3VjZXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIDE5IHBvdWNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVUgOiAxLDc1IHBvdWNlcyAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVIDogMzUgcG91Y2VzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdDcsOpbWFpbGzDqHJlIGRlIDIxIHBvdWNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlUgOiAzOCw1IHBvdWNlcyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0Nyw6ltYWlsbMOocmUgZGUgMjMgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb3VjZXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFUgOiA0MiBwb3VjZXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1UgOiA0NywyNSBwb3VjZXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlUgOiAzLDUgcG91Y2VzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVIDogNTIuNSBwb3VjZXMgKDEzMy4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBvdWNlcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVSA6IDU3LDc1IHBvdWNlcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcG91Y2VzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVIDogNjMgcG91Y2VzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG91Y2VzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VSA6IDY4LjI1IHBvdWNlcyAoMTczLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVIDogNSwyNSBwb3VjZXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVIDogNzMsNSBwb3VjZXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcG91Y2VzICgxMTAwIG1tKSA6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVIDogNzguNzUgcG91Y2VzICgyMDAuMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcG91Y2VzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VSA6IDg0IHBvdWNlcyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVIDogNyBwb3VjZXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVIDogOCw3NSBwb3VjZXMgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVIDogMTAsNSBwb3VjZXMgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VSA6IDEyLDI1IHBvdWNlcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVIDogMTQgcG91Y2VzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVUgOiAxNSw3NSBwb3VjZXMgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbXB0YWJpbGl0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBdHRyaWJ1dGlvbiBkXCdhZHJlc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgYW5hbG9naXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBkXCdhcHBhcmVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpdMOpIGRlIGxhIGJhdHRlcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwZSBkZSBiYXR0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0LDonRpbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNlIGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNzZSBkXCd1bml0w6kgY2VudHJhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaXTDqSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdMOpIHBhciBjYXJ0ZSBncmFwaGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGNhcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdGV1ciBkZSBjYXJ0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwZSBkZSBjYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXTDqWdvcmllIGRlIGNsaWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnSG9ybG9nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVml0ZXNzZSBkXCdob3Jsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBzaWduYXR1cmUgZGUgY29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZGUgY29uZsOpcmVuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgY29uc3VsdGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0ZXIgbGUgZGlzdHJpYnV0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgY29udGVuZXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cGUgZGUgY29udHJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGp1c3F1XCfDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUw6lsw6lwaG9uZSBzYW5zIGZpbCAodMOpbMOpcGhvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pdMOpIGRlIGNvw7t0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTm9tYnJlIGRlIGxpY2VuY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRlIGRlIGNyw6lhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnU3VwcG9ydCBzdXIgbWVzdXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFLDqXNlcnbDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmV1ciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGUgZGUgbGEgZmFjdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0ZSBkZSBsXCdhcnLDqnTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0ZSBkdSBtYW5kYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0ZSBkZSBwdWJsaWNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnT3JkaW5hdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgc2lnbmF0dXJlIGRlIGRvY3VtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ1JhY2sgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnQ2VydGlmaWNhdHMgZGUgY291cnJpZXIgw6lsZWN0cm9uaXF1ZSAoY2VydGlmaWNhdHMgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0IGRlIHRyYXZhaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdBZHJlc3NlIElQIGZpbmFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbiBkZSBsXCdhaWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0ZSBkXCdleHBpcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNxdWUgZHVyIGV4dGVybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdQYXJlLWZldSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU3RvY2thZ2UgZFwnw6luZXJnaWUgcGFyIHZvbGFudCBkXCdpbmVydGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFjdGV1ciBkZSBmb3JtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIGZyYW5jaGlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0xvZ2ljaWVsIGdyYXR1aXQgKGZyZWV3YXJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgZ8OpbsOpcmFsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdDYXJ0ZXMgZ3JhcGhpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnQ2FydGUgZ3JhcGhpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnTWF0w6lyaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kw6hsZSBkZSBtYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUG9pZHMgZHUgbWF0w6lyaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdDYXNxdWUgZFwnw6ljb3V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sZSBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0aW9uIGRlcyBpZGVudGl0w6lzIGV0IGRlcyBhY2PDqHMgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ051bcOpcm8gZFwnaW52ZW50YWlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0Nvw7t0cyBkXCdpbnZlc3Rpc3NlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bcOpcm8gZGUgbGEgZmFjdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0NsYXZpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRldXIgTENEICjDqWNyYW4gw6AgY3Jpc3RhdXggbGlxdWlkZXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdGV1ciDDoCBMRUQgKGRpb2RlIMOpbGVjdHJvbHVtaW5lc2NlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBmaXhlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ09yZGluYXRldXIgcG9ydGFibGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NvdWNoZSAxIDogQ291Y2hlIHBoeXNpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NvdWNoZSAyIDogQ291Y2hlIGxpYWlzb24gZGUgZG9ubsOpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NvdWNoZSAzIDogQ291Y2hlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ291Y2hlIDMgOiBDb3VjaGUgcsOpc2VhdSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NvdWNoZSA0IDogQ291Y2hlIHRyYW5zcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ291Y2hlIDUgOiBjb3VjaGUgc2Vzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDb3VjaGUgNiA6IGNvdWNoZSBkZSBwcsOpc2VudGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnQ291Y2hlIDcgOiBDb3VjaGUgYXBwbGljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdCBkZSBiYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0Nsw6kgZGUgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUeXBlIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1DDqXJpb2RlIGRlIGxpY2VuY2UgZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQw6lyaW9kZSBkZSBsaWNlbmNlIGp1c3F1XCfDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgYXUgcGhvc3BoYXRlIGRlIGZlciBsaXRoacOpIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgYXUgbGl0aGl1bS1pb24gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0IGRlIHByw6p0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaXR1w6kgw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaXTDqSBkZSBjaGFyZ2UgbWF4aW1hbGUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ03DqW1vaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwZSBkZSBtw6ltb2lyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHTDqWzDqXBob25lIG1vYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2TDqGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcHRpb24gZHUgbW9kw6hsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSw6lzb2x1dGlvbiBkdSBtb25pdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYWlsbGUgZHUgbW9uaXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdTb3VyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1LDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NvdWNoZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgbmlja2VsLWNhZG1pdW0gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgbmlja2VsLWh5ZHJ1cmUgbcOpdGFsbGlxdWUgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjY29yZCBkZSBub24tZGl2dWxnYXRpb24gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdDYXJuZXQgZGUgbm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOb21icmUgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ05vbWJyZSBkZSBtb2R1bGVzIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOb21icmUgZGUgY2FydGVzIGdyYXBoaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0ZXVyIE9MRUQgKGRpb2RlIMOpbGVjdHJvbHVtaW5lc2NlbnRlIG9yZ2FuaXF1ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRnJhaXMgZGUgZm9uY3Rpb25uZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBjb21tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0F1dHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTb3J0aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBwYXJ0ZW5hcmlhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ051bcOpcm8gZGUgdMOpbMOpcGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cGUgZGUgdMOpbMOpcGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdDxZN1cnMgcGh5c2lxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRm91cm5pdHVyZSBkXCfDqW5lcmdpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0FjaGV0w6kgw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2ZvbmRldXIgZHUgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaXTDqXMgZGUgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1Bpw6hjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0NhcnRlIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdDb250cmF0IGRlIHZlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIHNhdGVsbGl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBwbG9tYi1hY2lkZSBzY2VsbMOpZSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ051bcOpcm8gZGUgc8OpcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsIHNlcnZldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgc2VydmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ8OJdGlxdWV0dGUgZGUgc2VydmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXBlIGRlIHByaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnTG9naWNpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdJbnRlcnZlbmFudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0FkcmVzc2UgSVAgZGUgZMOpcGFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnU3RvY2thZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aXRpb24gZGUgc3RvY2thZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdGaWxpYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSw6lzdW3DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudCBsw6lnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0ZpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIGRlIGxhIGNhcnRlIGdyYXBoaXF1ZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0ZXVyIMOgIMOpY3JhbiB0YWN0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG91cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0Nhc3F1ZSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/gl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmdsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ01hcGVhZG8gcGFyYSBhcyBwZXRpY2nDs25zIGRlIGRhdG9zIGRlIGVudHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwZWFkbyBwYXJhIG9zIGRhdG9zIGRlIHJlc3Bvc3RhIGRlIHNhw61kYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmFyIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUXVlcmUgcmVhbG1lbnRlIGJvcnJhciBlc3RhIEFjdGl2aWRhZGU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhciB0ZW1wbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSB6b29tJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQ29tZXphciBidXNjYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnSW1wb3J0YXIgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBhY3R1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBjYW1iaW8gZmVpdG8gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVGlwbyBkZSBvYnhlY3RvJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJvIHBvciB0aXBvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXNleGEgcHJvc2VndWlyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdGdW5jaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ0F2aXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQZXJtaXNvIGRlbmVnYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBhY3R1YWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ07Dum1lcm8gbcOheGltbyBkdW4gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQ2FkdWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW50ZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIHBhcmEgdXNhciBubyBhdHJpYnV0byBwYXJhIGEgcGFudGFsbGEgYnVzY2EgZGUgdGlja2V0LiBFeGVtcGxvOiAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIHBhcmEgdXNhciBubyBhdHJpYnV0byBwYXJhIGEgcGFudGFsbGEgYnVzY2EgZGUgdGlja2V0LiBFeGVtcGxvOiAiVGlja2V0Q3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO1RpY2tldENyZWF0ZVRpbWVTdGFydERheT00O1RpY2tldENyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdG9wTW9udGg9MTE7VGlja2V0Q3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSB4ZXJhbCBwYXJhIG1vc3RyYXIgYSB2aXN0YSBwZXF1ZW5hIGR1bmhhIGxpc3RhIGRlIGVucXVpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGF0cmlidXRvcyBkZSB0aWNrZXQgcG9yIGRlZmVjdG8gcGFyYSBhIG9yZGVuYWNpw7NuIGRlIHRpY2tldCBkbyByZXN1bHRhZG8gZGEgYnVzY2EgZGUgdGlja2V0IGRhIGludGVyZmFjZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgb3JkZW5hY2nDs24gZGUgdGlja2V0IGRvIHJlc3VsdGFkbyBkYSBidXNjYSBkZSB0aWNrZXQgZGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGUgcG9yIGRlZmVjdG8gZGUgdGlja2V0IG5vcyByZXN1bHRhZG9zIGRlIGJ1c2NhIGRlIHRpY2tldCBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLiBBcnJpYmE6IG9zIG1haXMgYW50aWdvcyBubyBhbHRvLiBBYmFpeG86IG9zIMO6bHRpbW9zIG5vIGFsdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlIHBvciBkZWZlY3RvIGRlIHRpY2tldCBub3MgcmVzdWx0YWRvcyBkZSBidXNjYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLiBBcnJpYmE6IG9zIG1haXMgYW50aWdvcyBubyBhbHRvLiBBYmFpeG86IG9zIMO6bHRpbW9zIG5vIGFsdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGUgcG9yIGRlZmVjdG8gZGUgdGlja2V0IG5vcyByZXN1bHRhZG9zIGRlIGJ1c2NhIGRlIHRpY2tldCBkZXN0YSBvcGVyYWNpw7NuLiBBcnJpYmE6IG9zIG1haXMgYW50aWdvcyBubyBhbHRvLiBBYmFpeG86IG9zIMO6bHRpbW9zIG5vIGFsdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgYnVzY2EgbW9zdHJhZG9zIG5vIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgcGFudGFsbGEgYnVzY2EgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIG9zIGF0cmlidXRvcyBkZSBidXNjYSBtb3N0cmFkb3Mgbm8gdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBwYW50YWxsYSBidXNjYSBkZSB0aWNrZXQuIEV4ZW1wbG86ICJDaGF2ZSIgZGViZSB0ZXIgbyBub21lIGRvIENhbXBvIERpbsOhbWljbyBuZXN0ZSBjYXNvIFwnWFwnLCAiQ29udGlkbyIgZGViZSB0ZXIgbyB2YWxvciBkbyBDYW1wbyBEaW7DoW1pY28gZGVwZW5kZW5kbyBkbyB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwndW4gdGV4dG9cJywgRHJvcGRvd246XCcxXCcsIERhdGEvVGVtcG86ICBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBwYXJhIG8gY29tcG/DsWVudGUgZGUgZWRpdG9yIGRlIHRleHRvIHJpY28gcGFyYSBlc3RhIHBhbnRhbGxhLiBJbnRyb2R1emEgZW4gbsO6bWVybyAocGl4ZWlzKSBvdSB2YWxvciBwb3JjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBjYWxlcyBlbGVtZW50b3MgZXN0w6FuIGRpc3Bvw7FpYmxlcyBwYXJhIFwnQWNjacOzblwnIG5vIHRlcmNlaXJvIG5pdmVsIGRhIGVzdHJ1Y3R1cmEgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBjYWxlcyBlbGVtZW50b3MgZXN0w6FuIGRpc3Bvw7FpYmxlcyBubyBwcmltZWlybyBuaXZlbCBkYSBlc3RydWN0dXJhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIGNhbGVzIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG/DsWlibGVzIG5vIHNlZ3VuZG8gbml2ZWwgZGEgZXN0cnVjdHVyYSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBjYW1wb3MgZGUgdMOtdHVsbyBuYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdQZXJtaXRlIGZ1bmNpw7NuIGRlIGFjY2nDs24gZW4gbWFzYSBkbyB0aWNrZXQgcGFyYSBvIGZyb250ZW5kIGRlIGF4ZW50ZSBwYXJhIHRyYWJhbGxhciBlbiBtw6FpcyBkdW4gdGlja2V0IMOhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1Blcm1pdGUgZnVuY2nDs24gZGUgYWNjacOzbiBlbiBtYXNhIGRlIHRpY2tldCBzb2FtZW50ZSBwYXJhIG9zIGdydXBvcyBlbnVtZXJhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0ludGVyZmFjZVhlbsOpcmljYSBtw7NkdWxvIHJleGlzdHJvIHBhcmEgYSBjYXBhIGRvIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdJbnRlcmZhY2VYZW7DqXJpY2EgbcOzZHVsbyByZXhpc3RybyBwYXJhIGEgY2FwYSBkbyBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0ludGVyZmFjZVhlbsOpcmljYSBtw7NkdWxvIHJleGlzdHJvIHBhcmEgYSBjYXBhIGRvIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIHRpY2tldHMgcGFyYSBzZXIgbW9zdHJhZG9zIG5vIHJlc3VsdGFkbyBkZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdGlja2V0cyBwYXJhIHNlciBtb3N0cmFkb3MgZW4gY2FkYSBww6F4aW5hIGR1biByZXN1bHRhZG8gZGUgYnVzY2EgbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSB0aWNrZXRzIHBhcmEgc2VyIG1vc3RyYWRvcyBlbiBjYWRhIHDDoXhpbmEgZHVuIHJlc3VsdGFkbyBkZSBidXNjYSBuYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgeGVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdPcyBwYXLDoW1ldHJvcyBwYXJhIG8gY2Fkcm8gZGUgbWFuZG8gZG8gYmFja2VuZCBkYSB2aXN0YSB4ZXJhbCBkYSBsaXN0YSBkbyBjbGllbnRlIHVzdWFyaW8gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4gIkxpbWl0ZSIgZSBvIG7Dum1lcm8gZGUgZW50cmFkYXMgbW9zdHJhZGFzIHBvciBkZWZlY3RvLiAiR3J1cG8iIMOpIHV0aWxpemFkbyBwYXJhIHJlc3RyaW54aXIgbyBhY2Nlc28gYW8gcGx1Z2luIChlLiBnLiBHcnVwbzogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmZWN0byIgZGV0ZXJtaW5hIHNlIG8gcGx1Z2luIHNlIHBlcm1pdGUgcG9yIGRlZmVjdG8gb3Ugc2UgbyB1c3VhcmlvIG5lY2VzaXRhIGFjdGl2YWxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6kgbyB0ZW1wbyBkZSBjYWNoZSBlbiBtaW51dG9zIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnT3MgcGFyw6FtZXRyb3MgcGFyYSBvIGNhZHJvIGRlIG1hbmRvIGRvIGJhY2tlbmQgZGEgdmlzdGEgeGVyYWwgZGEgbGlzdGEgZG8gY2xpZW50ZSB1c3VhcmlvIGRhIGludGVyZmFjZSBkZSBheGVudGUuICJMaW1pdGUiIGUgbyBuw7ptZXJvIGRlIGVudHJhZGFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0by4gIkdydXBvIiDDqSB1dGlsaXphZG8gcGFyYSByZXN0cmlueGlyIG8gYWNjZXNvIGFvIHBsdWdpbiAoZS4gZy4gR3J1cG86IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmVjdG8iIGRldGVybWluYSBzZSBvIHBsdWdpbiBzZSBwZXJtaXRlIHBvciBkZWZlY3RvIG91IHNlIG8gdXN1YXJpbyBuZWNlc2l0YSBhY3RpdmFsbyBtYW51YWxtZW50ZS4gIkNhY2hlVFRMTG9jYWwiIMOpIG8gdGVtcG8gZGUgY2FjaGUgZW4gbWludXRvcyBwYXJhIG8gcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIG9zIGdydXBvcyBkZSBwZXJtaXNvcyBkZSBleGVtcGxvIGRvcyBhdHJpYnV0b3MgZG8gY2F0w6Fsb2dvIHhlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRXhlY3V0YSBhIGFjY2nDs24gY29uZmlndXJhZGEgcGFyYSBjYWRhIGV2ZW50byAoY29tYSB1biBJbnZvY2Fkb3IpIHBhcmEgY2FkYSBTZXJ2aXpvIFdlYiBjb25maWd1cmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgZW1wcmVnYXIgYSBwYW50YWxsYSBkZSB0ZXh0byBsaWJyZSBkZSB0w61ja2V0cyBkYSBpbnRlcmZhY2UgZG8gYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgY2FtcG8gSVRTTSBhZGljaW9uYWwgbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIG8gdGlwbyBkZSB0aWNrZXQgbmEgcGFudGFsbGEgZGUgdGlja2V0IG1hc2l2byBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBjYW1iaWFyIGEgZGVjaXNpw7NuIGR1biB0aWNrZXQgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIHZvbHRhciBhdHLDoXMgbmEgdmlzdGEgem9vbSBkZSBlbnF1aXNhIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBvIGhpc3RvcmljbyBkbyB0aWNrZXQgKG9yZGVhZG8gbyByZXbDqSkgbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ0NsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb250YWJpbGl6YXIgVGVtcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1JhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ091dHJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU2HDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQWNvcmRvIGRlIG5pdmVsIGRlIHNlcnZpem8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/he_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn15TXkNedINeQ16rXnSDXkdeQ157XqiDXqNeV16bXmdedINec157Xl9eV16cg15jXqNeZ15LXqCDXkNeZ16jXldeiINeW15Q/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn15bXntefINeU15nXpteZ16jXlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfXnteR15gg15bXldedJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn15TXqNelINeX15nXpNeV16knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9eU15LXk9eo15XXqiDXmdeZ15HXldeQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn16HXldeSINeU15DXldeR15nXmden15gnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfXodeg158g15zXpNeZINeh15XXkic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn15TXpNeg15nXmdeUJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfXkNeW15TXqNeUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfXkNeZ158g15TXqNep15DXlCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfXkdeZ158nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfXpNeSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9ee15HXmC3XotecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9ee157XqdenJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfXpNec15gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfXlNeh15vXnSDXqNee16og16nXmdeo15XXqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn16HXmNeg15PXqNeY15knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/hi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn4KS44KSu4KSvIOCkrOCkqOCkvuCkj+CkgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfgpJzgpLzgpYLgpK4g4KSm4KWD4KS24KWN4KSvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+CkuOCkguCkpuCksOCljeCkrSDgpK7gpYfgpIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+CkmuClh+CkpOCkvuCkteCkqOClgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn4KSF4KSo4KWB4KSu4KSk4KS/IOCkqOCkueClgOCkgiDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfgpJXgpYcg4KSs4KWA4KSaJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn4KS44KSu4KSvIOCkuOClgOCkruCkviDgpLjgpK7gpL7gpKrgpY3gpKQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkleClhyDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkruClh+CkgiDgpKTgpK/gpLbgpYHgpKbgpL4g4KSf4KS/4KSV4KSfIOCkleClgCDgpJvgpIHgpJ/gpL7gpIgg4KSV4KWHIOCksuCkv+CkjyDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkteCkv+CktuClh+Ckt+CkpOCkviDgpJXgpYsg4KSq4KSw4KS/4KSt4KS+4KS34KS/4KSkIOCkleCksOCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYAg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYcg4KSV4KWN4KSw4KSuIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCDgpIrgpKrgpLA64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpLjgpKzgpLjgpYcg4KSq4KWB4KSw4KS+4KSo4KWA4KWkIOCkqOClgOCkmuClhzrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkqOCkteClgOCkqOCkpOCkruClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4KSX4KWN4KSw4KS+4KS54KSVIOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSP4KSVIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSk4KSv4KS24KWB4KSm4KS+IOCkleCljeCksOCkriDgpJXgpYsg4KSq4KSw4KS/4KSt4KS+4KS34KS/4KSkIOCkleCksOCkpOCkviDgpLngpYjgpaQg4KSK4KSq4KSwOuCktuClgOCksOCljeCktyDgpKrgpLAg4KS44KSs4KS44KWHIOCkquClgeCksOCkvuCkqOClgOClpCDgpKjgpYDgpJrgpYc64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpKjgpLXgpYDgpKjgpKTgpK7gpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYAg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYcg4KSV4KWN4KSw4KSuIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCDgpIrgpKrgpLA64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpLjgpKzgpLjgpYcg4KSq4KWB4KSw4KS+4KSo4KWA4KWkIOCkqOClgOCkmuClhzrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkqOCkteClgOCkqOCkpOCkruClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkluCli+CknCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KWHIOCksuCkv+CkjyDgpKbgpL/gpJbgpL7gpIgg4KSf4KS/4KSV4KSfIOCkleClgCDgpKTgpK/gpLbgpYHgpKbgpL4g4KSW4KWL4KScIOCkteCkv+CktuClh+Ckt+CkpOCkviDgpJXgpYsg4KSq4KSw4KS/4KSt4KS+4KS34KS/4KSkIOCkleCksOCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn4KS44KSu4KWD4KSm4KWN4KSnIOCkquCkvuCkoCDgpLjgpILgpKrgpL7gpKbgpJUg4KSY4KSf4KSVIOCkleClhyDgpLLgpL/gpI8g4KSa4KWM4KSh4KS84KS+4KSIIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCjgpKrgpL/gpJXgpY3gpLjgpYfgpLIpIOCkuOCkguCkluCljeCkr+CkviDgpK/gpL4g4KSq4KWN4KSw4KSk4KS/4KS24KSkIOCkruCkvuCkqCAo4KS44KS+4KSq4KWH4KSV4KWN4KS3KSDgpJXgpYsg4KSy4KS/4KSW4KWH4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+Ckj+CklSDgpLjgpK7gpK8g4KSu4KWH4KSCIOCkj+CklSDgpLjgpYcg4KSF4KSn4KS/4KSVIOCkn+Ckv+CkleCkn+Cli+CkgiDgpKrgpLAg4KSV4KS+4KSuIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpKbgpYPgpLbgpY3gpK/gpKrgpJ/gpLIg4KSV4KWAIOCkn+Ckv+CkleCknyDgpKXgpYvgpJUg4KSV4KS+4KSw4KWN4KSw4KS14KS+4KSIIOCkuOClgeCkteCkv+Ckp+CkviDgpJXgpYsg4KS44KSV4KWN4KS34KSuIOCkrOCkqOCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+CkleClh+CkteCksiDgpLjgpYLgpJrgpYDgpKzgpKbgpY3gpKcg4KS44KSu4KWC4KS54KWL4KSCIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkpeCli+CklSDgpJXgpL7gpLDgpY3gpLDgpLXgpL7gpIgg4KS44KWB4KS14KS/4KSn4KS+IOCkleCliyDgpLjgpJXgpY3gpLfgpK4g4KSs4KSo4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpI/gpJUg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpJXgpYcg4KSq4KWN4KSw4KSk4KWN4KSv4KWH4KSVIOCkquClg+Ckt+CljeCkoCDgpK7gpYfgpIIg4KSq4KWN4KSw4KSm4KSw4KWN4KS24KS/4KSkIOCkueCli+CkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCkn+Cli+CkgiDgpJXgpYAg4KS44KSC4KSW4KWN4KSv4KS+4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+Ckl+CljeCksOCkvuCkueCklSDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkj+CklSDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkleClhyDgpKrgpY3gpLDgpKTgpY3gpK/gpYfgpJUg4KSq4KWD4KS34KWN4KSgIOCkruClh+CkgiDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KS54KWL4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSf4KWL4KSCIOCkleClgCDgpLjgpILgpJbgpY3gpK/gpL7gpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn4KSF4KS14KSy4KWL4KSV4KSoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSu4KWB4KSV4KWN4KSkIOCkquCkvuCkoCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KS54KSwIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSH4KSk4KS/4KS54KS+4KS4IOCkpuClh+CkluCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpI/gpJUg4KSf4KS/4KSV4KSfIOCknOCkvOClguCkriDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgo4KS14KS/4KSq4KSw4KWA4KSkIOCkhuCkpuClh+Cktikg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn4KSF4KSC4KSk4KSw4KSr4KSy4KSVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfgpIbgpIngpJ/gpKrgpYHgpJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfgpLjgpYfgpLXgpL4g4KSy4KWH4KS14KSyIOCkuOCkruCkneCljOCkpOCkvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn4KSu4KS+4KSo4KSVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/hr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnU2lndXJubyDFvmVsaXRlIG9icmlzYXRpIG92YWogcHJlZGxvxb5haz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdWcmVtZW5hIG90dmFyYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdEZXRhbGpuaSBwcmVnbGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUG9rcmVuaSBwcmV0cmFndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnVXZveiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ1Vwb3pvcmVuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05lbWF0ZSBkb3p2b2x1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdJc3RpxI1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBhIGRvenZvbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgc2xvYm9kbm9nIHRla3N0YSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnU3XEjWVsamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1ByZWdsZWQgcmV6dWx0YXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU3BvcmF6dW0gbyByYXppbmkgdXNsdWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdVb2JpxI1hamVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/hu_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDgWx0YWzDoW5vcyBtxbFrw7Zkw6lzaSBhZGF0b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0JlasO2dsWRIGvDqXLDqXNpIGFkYXRvayBiZcOhbGzDrXTDoXNhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0Ega2ltZW7FkSB2w6FsYXN6YWRhdG9rIGJlw6FsbMOtdMOhc2FpJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLW1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnT3N6dMOhbHktbWVnaGF0w6Fyb3rDoXMgbcOzZG9zw610w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnU3plcmVwZGVmaW7DrWNpw7MgbcOzZG9zw610w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydCBvc3p0w6FseWNzb21hZ29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnSXR0IGltcG9ydMOhbGhhdGphIGEgUmVhZHkySW1wb3J0IG9zenTDoWx5Y3NvbWFnb2thdCwgYW1lbHllayBhIGxlZ8OhbHRhbMOhbm9zYWJiIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWtldCBtdXRhdGrDoWsgYmUuIEvDqXJqw7xrLCB2ZWd5ZSBmaWd5ZWxlbWJlLCBob2d5IG7DqWjDoW55IHRvdsOhYmJpIGtvbmZpZ3Vyw6FjacOzcmEgbGVoZXQgc3rDvGtzw6lnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNZWdsw6l2xZEgZW50aXTDoXNvayBmcmlzc8OtdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdCBvc3p0w6FseWNzb21hZ29rIGltcG9ydMOhbMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3Vyw6FjacOzcyBlbGVtIHN6ZXJlcGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1N6xbFyxZEgYXogb3N6dMOhbHlva2hveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6FsYXNzem9uIGVneSBvc3p0w6FseXQgYSBsaXN0w6Fiw7NsIGVneSDDumoga29uZmlndXLDoWNpw7NlbGVtIGzDqXRyZWhvesOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ09zenTDoWx5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0hpdmF0a296w6FzIGVneSBtw6FzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8OJcnbDqW55dGVsZW4ga29uZmlndXLDoWNpw7NlbGVtLXN6w6FtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFZ3kgbcOhc2lrIGtvbmZpZ3Vyw6FjacOzZWxlbSBzesOhbWEsIGFtZWxseWVsIMO2c3N6ZSBrZWxsIGvDtnRuaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIGtvbmZpZ3Vyw6FjacOzZWxlbWV0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBIG5ldmV0IG3DoXIgaGFzem7DoWxqw6FrIGEga29uZmlndXLDoWNpw7NlbGVtZWsgYSBrw7Z2ZXRrZXrFkSBzesOhbW9ra2FsOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1Zlcnppw7NzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQSBrb25maWd1csOhY2nDs3MgZWxlbSB2ZXJ6acOzc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnQSB2ZXJ6acOzc3rDoW0gbcOhciBoYXN6bsOhbGF0YmFuIHZhbiBhIENvbmZpZ0l0ZW1zIMOhbHRhbCBhIGvDtnZldGtlesWRIHN6w6FtbWFsIChzesOhbW9ra2FsKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdOYWd5w610w6FzaSBuw6l6ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsdHVuayBrb25maWd1csOhY2nDs3MgZWxlbWFkYXRvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWw6FsYXNzemEga2kgZXp0IGEga29uZmlndXLDoWNpw7NzIGVsZW1ldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0tlcmVzw6lzIGZ1dHRhdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnS2VyZXNzZW4gYXogZWzFkXrFkSB2ZXJ6acOza2JhbiBpcz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBhIENvbmZpZ0l0ZW0gc3rDoW3DoXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTcOpbHlzw6lnaSBzemludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ05hZ3nDrXTDoXMvIGtpY3NpbnnDrXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQSBDb25maWdJdGVtIG1heGltw6FsaXMgaGl2YXRrb3rDoXNpIHN6aW50amUgZWzDqXJ0ZSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSmVsZW5sZWdpIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0plbGVubGVnaSBpbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1V0b2xzw7MgbcOzZG9zw610w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXRvdHRhJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnQXogw5ZuIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0ga2VyZXPDqXMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ09iamVrdHVtIHTDrXB1c2EnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdNZXrFkSBzesWxcsOpc2Ugb2JqZWt0dW10w61wdXMgc3plcmludCc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0Ega8O2dmV0a2V6xZEgb3N6dMOhbHlvayBrZXLDvGxuZWsgaW1wb3J0w6Fsw6FzcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQSBrw7Z2ZXRrZXrFkSBzemVyZXBrw7Zyw7ZrIGtlcsO8bG5layBpbXBvcnTDoWzDoXNyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdWZWd5ZSBmaWd5ZWxlbWJlLCBob2d5IGEgbWVnZmVsZWzFkSBkaW5hbWlrdXMgbWV6xZFrIMOpcyBHZW5lcmFsQ2F0YWxvZyBvc3p0w6FseW9rIGlzIGzDqXRyZWrDtm5uZWssIMOpcyBuaW5jcyBhdXRvbWF0aWt1cyBlbHTDoXZvbMOtdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdTemVyZXRuw6kgZm9seXRhdG5pPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdTesO8a3PDqWcgdmFuIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBIGRlZmluw61jacOzIG5lbSDDqXJ2w6lueWVzIFlBTUwgaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfDgXR0ZWtpbnTDqXM6IElUU00ga29uZmlndXLDoWNpw7NlbGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1N6w7xrc8OpZ2UgdmFuIGxlZ2Fsw6FiYiBlZ3kga2l2w6FsYXN6dG90dCBrb25maWd1csOhY2nDs2VsZW1yZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOaW5jcyDDrXLDoXNpIGhvenrDoWbDqXLDqXNlIGVoaGV6IGEga29uZmlndXLDoWNpw7NlbGVtaGV6OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTmluY3MgbWVnaGF0w6Fyb3rDoXMgbWVnaGF0w6Fyb3p2YSBhKHopICVzIG9zenTDoWx5aG96ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQSh6KSDigJ4lc+KAnSBrb25maWd1csOhY2nDs2VsZW0gbmVtIHRhbMOhbGhhdMOzIGF6IGFkYXRiw6F6aXNiYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmVtIHZvbHQgbGVoZXRzw6lnZXMgYSh6KSAlcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7MgdMO2cmzDqXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmVtIHRhbMOhbGhhdMOzIHZlcnppw7MgYSh6KSAlcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7Nuw6FsISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7MsIGtldHTFkXrDqXNhem9ub3PDrXTDsyB2YWd5IG9zenTDoWx5YXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05pbmNzIGhvenrDoWbDqXLDqXMgbWVnYWR2YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGF6IGVsxZF6bcOpbnlla2V0LCBuaW5jcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG5pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnw5pqIGtvbmZpZ3Vyw6FjacOzZWxlbSAoYXpvbm9zw610w7MgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ8OaaiB2ZXJ6acOzIChhem9ub3PDrXTDsyA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QgZnJpc3PDrXR2ZSAow7pqID0gJXMsIHLDqWdpID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QgZnJpc3PDrXR2ZSAow7pqID0gJXMsIHLDqWdpID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIChhem9ub3PDrXTDsyA9ICVzKSB0w7Zyw7ZsdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdLYXBjc29sYXQgZWhoZXo6ICVzICh0w61wdXMgPSAlcykgaG96esOhYWR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnS2FwY3NvbGF0IGVoaGV6OiAlcyAodMOtcHVzID0gJXMpIHTDtnLDtmx2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLW1lZ2hhdMOhcm96w6FzIGZyaXNzw610dmUgKGF6b25vc8OtdMOzID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTsOpdiBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWLDunR1bSAoJXMpIGZyaXNzw610dmUgZXJyxZFsOiDigJ4lc+KAnSwgZXJyZTog4oCeJXPigJ0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJXMuIHZlcnppw7MgdMO2csO2bHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyB2YWd5IHZlcnppw7Nhem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYSBrb25maWd1csOhY2nDs2VsZW1ldCwgbmluY3NlbmVrIGhvenrDoWbDqXLDqXNpIGpvZ29rIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQSh6KSAlcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7MgbmVtIHRhbMOhbGhhdMOzIGF6IGFkYXRiw6F6aXNiYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ255b210YXR0YTogJXMg4oCTICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdIaXZhdGtvesOhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ8OJcnbDqW55dGVsZW4gb3N6dMOhbHlhem9ub3PDrXTDsyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBvc3p0w6FseWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTmluY3NlbmVrIGhvenrDoWbDqXLDqXNpIGpvZ29rIG1lZ2FkdmEgZWhoZXogYXogb3N6dMOhbHlob3ohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOaW5jcyB0YWzDoWxhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGVyZWRtw6lueWVrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWxlbWV0LCBuaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWhleiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuZW0gdGFsw6FsaGF0w7MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbSB0YWzDoWx0dW5rIHZlcnppw7N0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ8O8emVta8OpcGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdmaWd5ZWxtZXp0ZXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQSBrb25maWd1csOhY2nDs2VsZW0gw7x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBpbmNpZGVuc8OhbGxhcG90YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05pbmNzIGpvZ29zdWx0c8OhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdTesWxcsWRIMOpcnbDqW55dGVsZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTZWFyY2ggcGFyYW1zIMOpcnbDqW55dGVsZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnTWVnamVsZW7DrXRldHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdHTDrXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdKZWxlbmxlZ2kgaW5jaWRlbnPDoWxsYXBvdCB0w61wdXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnS8O2esO2dHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09zenTDoWx5a29ybMOhdG96w6Fzb2sgYSBrb25maWd1csOhY2nDs3MgZWxlbWhleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnRWd5IHZhZ3kgdMO2YmIgb3N6dMOhbHkga2l2w6FsYXN6dMOhc2EgYSB2w6FsYXN6dGhhdMOzIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsga29ybMOhdG96w6Fzw6Fob3onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09zenTDoWx5a29ybMOhdG96w6Fzb2sgYSBrb25maWd1csOhY2nDs3MgZWxlbWhleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0VneSB2YWd5IHTDtmJiIG9zenTDoWx5IGtpdsOhbGFzenTDoXNhIGEgdsOhbGFzenRoYXTDsyBrb25maWd1csOhY2nDs3MgZWxlbWVrIGtvcmzDoXRvesOhc8OhaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pa3VzIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljICh2w6FsdG96YXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmsgaGl2YXRrb3rDoXNpIHTDrXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdBIGhpdmF0a296w6FzIGEgaGl2YXRrb3rDsyBvYmpla3R1bSBDb25maWdJdGVtIHZhZ3kgc3RhdGlrdXMgdsOhbHRvemF0w6FyYSB2b25hdGtvemlrLWUuIEF6IGFrdHXDoWxpcyBpbmNpZGVuc8OhbGxhcG90IHN6w6Ftw610w6FzYSBjc2FrIGRpbmFtaWt1cyBoaXZhdGtvesOhc29rIGVzZXTDqW4gdMO2cnTDqW5pay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWw6FsYXNzemEga2kgYXp0IGF6IGF0dHJpYsO6dHVtb3QsIGFtZWx5IGFsYXBqw6FuIGEga29uZmlndXLDoWNpw7NzIGVsZW1la2V0IGtlcmVzbmkgZm9nasOhay4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQXogYWxhcHN6ZXJrZXpldCBuZW0gw6lydsOpbnllcy4gS8OpcmrDvGssIGFkam9uIG1lZyBlZ3kgaGFzaC10IGF6IGFkYXRva2thbCBZQU1MIGZvcm3DoXR1bWJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdBIFlBTUwga2FyYWt0ZXJsw6FuY290IFwnLS0tXCctdmFsIGtlbGwga2V6ZGVuaS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVtIHNpa2Vyw7xsdCB0w7Zyw7ZsbmkgYSBjb25maWdpdGVtX2xpbmsgdMOhYmzDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZW0gdGFsw6FsdHVuayByZWxldsOhbnMgZGluYW1pa3VzIG1lesWRa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVtIHNpa2Vyw7xsdCBiZXN6w7pybmkgYSBjb25maWdpdGVtX2xpbmsgdMOhYmzDoXphdGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIHNvciBiZXN6w7pyw6FzYSBhIGNvbmZpZ2l0ZW1fbGluayB0w6FibMOhYmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRWd5IGVsZW0gbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnTWVsbMOpa2xldGVrIGltcG9ydMOhbMOhc2EvZXhwb3J0w6Fsw6FzYSAoc29yb25rw6ludCBheiB1dG9sc8OzIGJlamVneXrDqXNrw6ludCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6acOzIGthcmFrdGVybMOhbmMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnSGliYSBhIGRlZmluw61jacOzayBzemlua3Jvbml6w6Fsw6Fzw6FiYW4uIEvDqXJqw7xrLCBlbGxlbsWRcml6emUgYSBuYXBsw7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0lUU01Db25maWdJdGVtIGRlZmluw61jacOzaSBuaW5jc2VuZWsgc3ppbmtyb25pesOhbHZhLiBLw6lyasO8aywgdGVsZXDDrXRzZSBheiBJVFNNQ29uZmlnSXRlbSBkaW5hbWlrdXMgbWV6xZFpbmVrIG3Ds2Rvc8OtdMOhc2FpdC4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0xlasOhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdLYXJiYW50YXJ0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUHLDs2Jhw7x6ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RlcnZlemV0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdKYXbDrXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1Zpc3N6YXZvbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnVml6c2fDoWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzenRlbMOpcy9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw4F0dGVraW50w6lzIMOpcyBtZWdlcsWRc8OtdMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdPc3p0w6FseW9rL3N6ZXJlcGvDtnLDtmsgw6lzIGthcGNzb2zDs2TDsyBtZXrFkWlrIGltcG9ydMOhbMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdIaWJhIHTDtnJ0w6ludCBheiBvc3p0w6FseSBpbXBvcnTDoWzDoXNhIHNvcsOhbi4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFJlanRldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1lZ2plbGVuw610dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaGV0xZF2w6kgdGVzemkgYSBraXRlcmplc3p0ZXR0IGtlcmVzw6lzaSBmZWx0w6l0ZWxla2V0IGF6IMO8Z3luw7ZraSBmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbWtlcmVzw6lzw6liZW4uIEV6emVsIGEgZnVua2Npw7N2YWwga2VyZXNoZXQgcMOpbGTDoXVsIGEga29uZmlndXLDoWNpw7NzIGVsZW0gbmV2w6lyZSBvbHlhbiBmZWx0w6l0ZWxla2tlbCwgbWludCAiKCprZXkxKiYmKmtleTIqKSIgdmFneSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaGV0xZF2w6kgdGVzemkgYSBraXRlcmplc3p0ZXR0IGtlcmVzw6lzaSBmZWx0w6l0ZWxla2V0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8Opc8OpYmVuLiBFenplbCBhIGZ1bmtjacOzdmFsIGtlcmVzaGV0IHDDqWxkw6F1bCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIG5ldsOpcmUgb2x5YW4gZmVsdMOpdGVsZWtrZWwsIG1pbnQgIigqa2V5MSomJiprZXkyKikiIHZhZ3kgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdIb3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnw5xneWbDqWwtdsOhbGxhbGF0aG96IGhvenrDoXJlbmRlbHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfDnGd5ZsOpbC1mZWxoYXN6bsOhbMOzaG96IGhvenrDoXJlbmRlbHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgYmXDoWxsw610w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0VneWVkaSBuw6l2IGVsbGVuxZFyesOpc2Uga2l6w6Fyw7NsYWcgdWd5YW5hYmJhbiBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBvc3p0w6FseWJhbiAo4oCeb3N6dMOhbHnigJ0pIHZhZ3kgZ2xvYsOhbGlzYW4gKOKAnmdsb2LDoWxpc+KAnSksIGFtZWx5IGF6dCBqZWxlbnRpLCBob2d5IG1pbmRlbiBtZWdsw6l2xZEga29uZmlndXLDoWNpw7NlbGVtIGVneSBmacOza2JhIGxlc3ogZmVsdsOpdmUgYSBrZXR0xZF6w6lzZWsga2VyZXPDqXNla29yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVsOhbGFzc3pvbiBlZ3kgbW9kdWx0IGEgbsOpdnPDqW1hIMOpcnbDqW55ZXPDrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1bDoWxhc3N6b24gZWd5IG1vZHVsdCBhIHN6w6Ftc8OpbWEgw6lydsOpbnllc8OtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWw6FsYXNzem9uIGtpIGVneSBtb2R1bHQgYSB2ZXJ6acOzcyBrYXJha3RlcmzDoW5jLXPDqW1hIMOpcnbDqW55ZXPDrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdWw6FsYXNzemEga2kgYXogw7pqIHZlcnppw7MgbMOpdHJlaG96w6Fzw6F0IGtpdsOhbHTDsyBhdHRyaWLDunR1bW9rYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1bDoWxhc3N6YSBraSBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlob3ogcmVuZGVsZW5kxZEga2F0ZWfDs3Jpw6FrYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0EgQ29uZmlnSXRlbSBPdmVydmlldyBvc3psb3Aga29uZmlndXLDoWNpw7NzIGVsZW1zesWxcsWRaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0F6IMO8Z3luw7ZraSBmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbWVpbmVrIMOhdHRla2ludMOpc8OpYmVuIHN6xbFyaGV0xZEgb3N6bG9wb2suIE1lZ2plZ3l6w6lzOiBDc2FrIGEga29uZmlndXLDoWNpw7NzIGVsZW0gYXR0cmliw7p0dW1haSDDqXMgYSBkaW5hbWlrdXMgbWV6xZFrIChEeW5hbWljRmllbGRfTmFtZVgpIGVuZ2Vkw6lseWV6ZXR0ZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gaG96esOhYWTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBzemVya2VzenTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3Vyw6FjacOzZWxlbSBlc2Vtw6lueSBtb2R1bCwgYW1lbHkgZW5nZWTDqWx5ZXppIGEgbmFwbMOzesOhc3QgYXogZWzFkXptw6lueWVrYmUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWd1csOhY2nDs3MgZWxlbSBlc2Vtw6lueW1vZHVsLCBhbWVseSBmcmlzc8OtdGkgYSBrb25maWd1csOhY2nDs3MgZWxlbWVrZXQgYXogYWt0dcOhbGlzIGRlZmluw61jacOzanVrcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIG55b210YXTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIGZhIG7DqXpldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIHZlcnppw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQSBrw7Z2ZXRrZXrFkSBvc3p0w6FseW9rIENvbmZpZ0l0ZW1zIG5lbSBrZXLDvGxuZWsgdMOhcm9sw6FzcmEgYXogRWxhc3RpY3NlYXJjaCBraXN6b2xnw6Fsw7NuLiBBaGhveiwgaG9neSBlenQgYSBtZWdsw6l2xZEgQ0kta3JlIGFsa2FsbWF6enVrLCBhIENJIG1pZ3LDoWNpw7N0IGEga29uem9sb24ga2VyZXN6dMO8bCBrZWxsIGZ1dHRhdG5pLCBtaXV0w6FuIG1lZ3bDoWx0b3p0YXR0dWsgZXp0IGF6IG9wY2nDs3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0Ega8O2dmV0a2V6xZEgdGVsZXDDrXTDqXNpIMOhbGxhcG90b2trYWwgcmVuZGVsa2V6xZEgQ29uZmlnSXRlbXMgbmVtIGtlcsO8bCB0w6Fyb2zDoXNyYSBheiBFbGFzdGljc2VhcmNoLWtpc3pvbGfDoWzDs24uIEEgbWVnbMOpdsWRIENJLWtyZSB2YWzDsyBhbGthbG1hesOhc2hveiBhIENJLW1pZ3LDoWNpw7N0IGEga29uem9sb24ga2VyZXN6dMO8bCBrZWxsIGZ1dHRhdG5pLCBtaXV0w6FuIG1lZ3bDoWx0b3p0YXR0dWsgZXp0IGF6IG9wY2nDs3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1rb3Jsw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0ta29ybMOhdCBvbGRhbGFua8OpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWd1csOhY2nDs21lbmVkenNtZW50LWFkYXRiw6F6aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzaSBow6F0dMOpcnByb2dyYW0gw7p0dsOhbGFzenTDs2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdNZWdoYXTDoXJvesOhc29rIGzDqXRyZWhvesOhc2Egw6lzIGtlemVsw6lzZSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdCaXpvbnlvcyBpZMWRcG9udG9rYmFuIGplZ3lla2V0IGhveiBsw6l0cmUgYSBDb25maWdJdGVtcyBzesOhbcOhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0F6IMO8Z3lmZWxlayBsw6F0aGF0asOhayBhIGtvcsOhYmJpIENJLXZlcnppw7NrYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmZWxla25layBsZWhldMWRc8OpZ8O8ayB2YW4gbWFudcOhbGlzYW4gdsOhbHRhbmkgYSBrb3LDoWJiaSBDSS12ZXJ6acOzayBrw7Z6w7Z0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBrw6lwZXJuecWRasOpbmVrIGF0dHJpYsO6dHVtw6FuIGhhc3puw6FsYW5kw7MgYWxhcMOpcnRlbG1lemV0dCBhZGF0b2suIFDDqWxkYTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBrw6lwZXJuecWRasOpbmVrIGF0dHJpYsO6dHVtw6FuIGhhc3puw6FsYW5kw7MgYWxhcMOpcnRlbG1lemV0dCBhZGF0b2suIFDDqWxkYTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ03FsXZlbGV0ZWsgbWVnaGF0w6Fyb3rDoXNhLCBhaG9sIGVneSBiZcOhbGzDrXTDoXNvayBnb21iIMOpcmhldMWRIGVsIGEga2FwY3NvbHQgb2JqZWt0dW1vayBmZWzDvGxldGkgZWxlbWVuIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9IOKAnsO2c3N6ZXRldHTigJ0pLiBOZSBmZWxlZGplLCBob2d5IGV6ZWtuZWsgYSBtxbF2ZWxldGVrbmVrIHJlbmRlbGtlem5pw7xrIGtlbGwgYSBrw7Z2ZXRrZXrFkSBKUyDDqXMgQ1NTIGbDoWpsb2sgcmVnaXN6dHLDoWzDoXPDoXZhbDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgw6lzIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ1RlbXBsYXRlOjpUb29sa2l0IHPDqW1hIGRlZmluacOhbMOhc2EgYSB2ZXJ6acOzc3p0cmluZ2VraGV6LiBDc2FrIGFra29yIGhhc3puw6FsYXRvcywgaGEgYSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgw6lydMOpa2UgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0hhdMOhcm96emEgbWVnIGF6b24gZmVsdMOpdGVsZWsga8O2csOpdCwgYW1lbHllayBtZWxsZXR0IGF6IMO8Z3lmw6lsIGzDoXRoYXQgZWd5IGtvbmZpZ3Vyw6FjacOzcyBlbGVtZXQuIEEgZmVsdMOpdGVsZWsgb3BjaW9uw6FsaXNhbiBrb3Jsw6F0b3poYXTDs2sgYml6b255b3Mgw7xneWbDqWxjc29wb3J0b2tyYS4gQSBuw6l2IGF6IGVneWV0bGVuIGvDtnRlbGV6xZEgYXR0cmliw7p0dW0uIEhhIG5pbmNzIG3DoXMgb3BjacOzIG1lZ2FkdmEsIGFra29yIGF6IMO2c3N6ZXMga29uZmlndXLDoWNpw7NzIGVsZW0gbMOhdGhhdMOzIGxlc3ogYXogYWRvdHQga2F0ZWfDs3JpYSBhbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdva2F0IGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtZWsgdMO2cmzDqXPDqWhleiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGxla8OpcsOpc8OpaGV6IGF6IMOhbHRhbMOhbm9zIGZlbMO8bGV0IGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdva2F0IGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtZWsga2VyZXPDqXPDqWhleiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IElUU00ga29uZmlndXLDoWNpw7NzIGVsZW1layBiZcOhbGzDrXTDoXPDoWhveiBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdva2F0IGF6IMOhbHRhbMOhbm9zIGZlbMO8bGV0IGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRWd5IMOhdHRla2ludMWRIG1vZHVsdCBoYXTDoXJveiBtZWcgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBsaXN0YSBraXMgbsOpemV0w6luZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBhIGNzb23Ds3BvbnRrYXBjc29sYXRva2JhbiBtZWcga2VsbC1lIGplbGVuw610ZW5pIGEga2FwY3NvbGF0dMOtcHVzIGPDrW1rw6lpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ1JlZ3Vsw6FyaXMga2lmZWplesOpc2VrZXQgaGF0w6Fyb3ogbWVnIGVnecOpbmlsZWcgbWluZGVuIGVneWVzIGtvbmZpZ3Vyw6FjacOzZWxlbSBvc3p0w6FseW7DoWwgYSBrb25maWd1csOhY2nDs2VsZW0gbmV2w6luZWsgZWxsZW7FkXJ6w6lzw6loZXosIHZhbGFtaW50IGEgbWVnZmVsZWzFkSBoaWJhw7x6ZW5ldGVrIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJLWsgZWzDqXJoZXTFkSBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs3MgZWxlbSDDoXR0ZWtpbnTDqXPDqWJlbiBhIENJLW9zenTDoWx5dMOzbCBmw7xnZ8WRZW4uIE1pbmRlbiBlZ3llcyBiZWplZ3l6w6lzbmVrIGVneSBvc3p0w6FseW7DqXZixZFsIMOpcyBhIG1lZ2ZlbGVsxZEgb3N6dMOhbHlob3ogcmVuZGVsa2V6w6lzcmUgw6FsbMOzIG1lesWRayB0w7ZtYmrDqWLFkWwga2VsbCDDoWxsbmlhLiBBIGRpbmFtaWt1cyBtZXrFkWJlamVneXrDqXNla25layBhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgc8OpbcOhdCBrZWxsIGvDtnZldG5pw7xrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGF0dHJpYsO6dHVtb3QgYXogw7xneW7DtmtpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBlcmVkbcOpbnnDqW5layBrb25maWd1csOhY2nDs3MgZWxlbSByZW5kZXrDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogw7xneWbDqWxmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kgZXJlZG3DqW55w6luZWsga29uZmlndXLDoWNpw7NzIGVsZW0gcmVuZGV6w6lzw6loZXogaGFzem7DoWx0IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NzIGVsZW0gYXR0cmliw7p0dW1vdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NzIGVsZW0gYXR0cmliw7p0dW1vdCBhIG3FsXZlbGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBlcmVkbcOpbnnDqW5layBrb25maWd1csOhY2nDs3MgZWxlbSByZW5kZXrDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs3MgZWxlbWVrIGFsYXDDqXJ0ZWxtZXpldHQgc29ycmVuZGrDqXQgYXogw7xneW7DtmtpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVta2VyZXPDqXNpIGVyZWRtw6luecOpYmVuLiBGZWxmZWzDqTogYSBsZWdyw6lnZWJiaSBhIHRldGVqw6luLiBMZWZlbMOpOiBhIGxlZ2ZyaXNzZWJiIHZhbiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga29uZmlndXLDoWNpw7NzIGVsZW1layBhbGFww6lydGVsbWV6ZXR0IHNvcnJlbmRqw6l0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGVyZWRtw6luecOpYmVuLiBGZWxmZWzDqTogYSBsZWdyw6lnZWJiaSBmZWzDvGwuIExlZmVsw6k6IGEgbGVnZnJpc3NlYmIgdmFuIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgYWxhcMOpcnRlbG1lemV0dCBzb3JyZW5kasOpdCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsga2VyZXPDqXNpIGVyZWRtw6luecOpYmVuLiBGZWxmZWzDqTogYSBsZWdyw6lnZWJiaSBmZWzDvGwuIExlZmVsw6k6IGEgbGVnZnJpc3NlYmIgYSB0ZXRlasOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBDSS1rIGFsYXDDqXJ0ZWxtZXpldHQgbWVnamVsZW7DrXRldHQgb3N6bG9wYWl0IGEga29uZmlndXLDoWNpw7NzIGVsZW0gw6F0dGVraW50w6lzw6liZW4gYSBDSS1vc3p0w6FseXTDs2wgZsO8Z2fFkWVuLiBNaW5kZW4gYmVqZWd5esOpc25layBlZ3kgb3N6dMOhbHluw6l2YsWRbCDDqXMgYSBtZWdmZWxlbMWRIG9zenTDoWx5aG96IHJlbmRlbGtlesOpc3JlIMOhbGzDsyBtZXrFkWsgdMO2bWJqw6lixZFsIGtlbGwgw6FsbG5pYS4gQSBkaW5hbWlrdXMgbWV6xZFiZWplZ3l6w6lzZWtuZWsgYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHPDqW3DoXQga2VsbCBrw7Z2ZXRuacO8ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZW5kxZEga2FwY3NvbGF0b2sgYWxhcMOpcnRlbG1lemV0dCBtw6lseXPDqWfDqXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBtZWdqZWxlbsOtdGV0dCBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kgYXR0cmliw7p0dW1vdCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBrw6lwZXJuecWRbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBtZWdqZWxlbsOtdGV0dCBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kgYXR0cmliw7p0dW1vdCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBrw6lwZXJuecWRbi4gUMOpbGRhOiAiS2V5IiBhIGRpbmFtaWt1cyBtZXrFkSBuZXZlLCBlYmJlbiBheiBlc2V0YmVuIFwnWFwnLCAiQ29udGVudCIgYSBkaW5hbWlrdXMgbWV6xZEgw6lydMOpa2UgYSBkaW5hbWlrdXMgbWV6xZEgdMOtcHVzw6F0w7NsIGbDvGdnxZFlbiwgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyDDqXMgdmFneSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IOKAnklUU01Db25maWdJdGVt4oCdIG9zenTDoWx5IGFsYXDDqXJ0ZWxtZXpldHQgYWxvYmpla3R1bcOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBDSS1rIGVsw6lyaGV0xZEgb3N6bG9wYWl0IGEga29uZmlndXLDoWNpw7NzIGVsZW0gw6F0dGVraW50w6lzw6liZW4gYSBDSS1vc3p0w6FseXTDs2wgZsO8Z2fFkWVuLiBNaW5kZW4gZWd5ZXMgYmVqZWd5esOpc25layBlZ3kgb3N6dMOhbHluw6l2YsWRbCDDqXMgYSBtZWdmZWxlbMWRIG9zenTDoWx5aG96IHJlbmRlbGtlesOpc3JlIMOhbGzDsyBtZXrFkWsgdMO2bWJqw6lixZFsIGtlbGwgw6FsbG5pYS4gQSBkaW5hbWlrdXMgbWV6xZFiZWplZ3l6w6lzZWtuZWsgYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHPDqW3DoXQga2VsbCBrw7Z2ZXRuacO8ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIFJpY2hUZXh0IHN6ZXJrZXN6dMWRIGtvbXBvbmVucyBtYWdhc3PDoWfDoXQgZW5uw6lsIGEga8OpcGVybnnFkW7DqWwuIFN6w6FtIChrw6lwcG9udCkgdmFneSBzesOhemFsw6lrIChyZWxhdMOtdikgw6lydMOpa2V0IGFkam9uIG1lZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJIG1lZ2hhdMOhcm96w6FzLXN6ZXJrZXN6dMWRIHNvcmFpbmFrIHN6w6Ftw6F0IGF6IGFkbWluaXN6dHLDoWNpw7NzIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogaW5jaWRlbnPDoWxsYXBvdG9rIHNvcnJlbmRqw6l0IGEgbGVnbWFnYXNhYmJ0w7NsIChww6lsZMOhdWwga3JpdGlrdXMpIGEgbGVnYWxhY3NvbnlhYmJpZyAocMOpbGTDoXVsIGZ1bmtjaW9uw6FsaXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrYXBjc29sw7Nkw7Mgw7x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdG9rYXQsIGFob2wgYSBrYXBjc29sdCBqZWd5ZWsgYmVmb2x5w6Fzb2xoYXRqw6FrIGVneSBrb25maWd1csOhY2nDs2VsZW0gw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtlcmVzw6lzaSBrb3Jsw6F0b3QgYXogQWdlbnRJVFNNQ29uZmlnSXRlbSBrw6lwZXJuecWRbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2VyZXPDqXNpIGtvcmzDoXRvdCBheiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBDdXN0b21lcklUU01Db25maWdJdGVtIGvDqXBlcm55xZEga2VyZXPDqXNpIGhhdMOhcsOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBrw6lwZXJuecWRIGtlcmVzw6lzaSBrb3Jsw6F0asOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga29uZmlndXLDoWNpw7NlbGVtZWsgbWVnamVsZW7DrXRldHQgb3N6bG9wYWl0IGEga2FwY3NvbGF0aSB0w6FibGEga29tcGxleCBuw6l6ZXTDqWJlbiBheiDDtnNzemVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1vc3p0w6FseW7DoWwuIEhhIG5pbmNzIGJlamVneXrDqXMsIGFra29yIGF6IGFsYXDDqXJ0ZWxtZXpldHQgb3N6bG9wb2sgbGVzem5layBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJLWsgbWVnamVsZW7DrXRldHQgb3N6bG9wYWl0IGEga2FwY3NvbGF0aSB0w6FibGEga29tcGxleCBuw6l6ZXTDqWJlbiBhIENJIG9zenTDoWx5dMOzbCBmw7xnZ8WRZW4uIE1pbmRlbiBiZWplZ3l6w6lzdCBheiBvc3psb3AgbmV2ZSDDqXMgZHVwbGEga2V0dMWRc3BvbnQgZWzFkXRhZ2dhbCBrZWxsIGVsbMOhdG5pIChhemF6IENvbXB1dGVyOjopLiBWYW4gbsOpaMOhbnkgb2x5YW4gQ0ktYXR0cmliw7p0dW0sIGFtZWx5IGvDtnrDtnMgbWluZGVuIENJLXZlbCAocMOpbGTDoXVsIGEgQ29tcHV0ZXIgb3N6dMOhbHluw6FsOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBBeiBlZ3nDqW5pIENJLWF0dHJpYsO6dHVtb2sgbWVnamVsZW7DrXTDqXPDqWhleiwgYWhvZ3kgYXpvayBhIENJLW1lZ2hhdMOhcm96w6FzYmFuIG1lZyB2YW5uYWsgYWR2YSwgYSBrw7Z2ZXRrZXrFkSBzw6ltw6F0IGtlbGwgaGFzem7DoWxuaSAocMOpbGTDoXVsIGEgQ29tcHV0ZXIgb3N6dMOhbHluw6FsKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEhhIGVneSBDSSBvc3p0w6FseWhveiBuaW5jcyBiZWplZ3l6w6lzLCBha2tvciBheiBhbGFww6lydGVsbWV6ZXR0IG9zemxvcG9rIGxlc3puZWsgbWVnamVsZW7DrXR2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IGF6IElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMO6cmEgaGFybWFkaWsgc3ppbnRqw6luIG1lbHkgZWxlbWVrIMOhbGxuYWsgcmVuZGVsa2V6w6lzcmUgYXogIkFjdGlvbiIgKE3FsXZlbGV0KSBzesOhbcOhcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBtZWx5IGVsZW1layDDoWxsbmFrIHJlbmRlbGtlesOpc3JlIGF6IElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMO6cmEgZWxzxZEgc3ppbnRqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IG1lbHkgZWxlbWVrIMOhbGxuYWsgcmVuZGVsa2V6w6lzcmUgYXogSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0w7pyYSBtw6Fzb2RpayBzemludGrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBrYXBjc29sYXR0w61wdXNvayAoYSBqZWd5IG7DqXrFkXBvbnRqw6Fiw7NsIGVsbmV2ZXp2ZSkgYmVmb2x5w6Fzb2xoYXRqw6FrIGVneSBrYXBjc29sdCBrb25maWd1csOhY2nDs2VsZW0gw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBtZWx5IGplZ3l0w61wdXMgYmVmb2x5w6Fzb2xoYXRqYSBlZ3kga2FwY3NvbHQga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ01lZ2hhdMOhcm96w6FzIGZyaXNzw610w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIHTDtnJsw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Qgc3rDrW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdLZXR0xZF6w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRGluYW1pa3VzIG1lesWRIGVzZW3DqW55bW9kdWwsIGFtZWx5IGEga29uZmlndXLDoWNpw7NzIGVsZW0gZGVmaW7DrWNpw7NpdCBzemlua3Jvbml6w6FsYXRsYW5uYWsgamVsw7ZsaSwgaGEgYSBkaW5hbWlrdXMgbWV6xZFrIG1lZ3bDoWx0b3puYWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IHRvdsOhYmJpIElUU00gbWV6xZEga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbSDDoXR0ZWtpbnTFkSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsWRIGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5bsO2a2kgZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8WRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuxZEgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGZ1bmtjacOzdCBheiDDvGd5aW50w6l6xZFpIGVsxZF0w6l0cHJvZ3JhbW7DoWwsIGhvZ3kgZWd5c3plcnJlIGVneW7DqWwgdMO2YmIga29uZmlndXLDoWNpw7NlbGVtbWVsIGRvbGdvemhhc3Nvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0NzYWsgYSBmZWxzb3JvbHQgY3NvcG9ydG9rbmFrIGVuZ2Vkw6lseWV6aSBhIGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCBmdW5rY2nDs3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0F6IElUU00gb25maWd1cmF0aW9uIGVsZW1layBlZ3llZGkgbmV2w6luZWsgZWxsZW7FkXJ6w6lzw6lyZSBzem9sZ8OhbMOzIGZ1bmtjacOzIGVuZ2Vkw6lseWV6w6lzZS9sZXRpbHTDoXNhLiBNaWVsxZF0dCBlbmdlZMOpbHllem7DqSBlenQgYSBiZcOhbGzDrXTDoXN0LCBlbGxlbsWRcml6emUgYSByZW5kc3plcsOpdCBhIG3DoXIgbWVnbMOpdsWRLCBkdXBsaWvDoWx0IG5ldsWxIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgdGVraW50ZXTDqWJlbi4gRXp0IGF6IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyBrb256b2xwYXJhbmNjc2FsIHRlaGV0aSBtZWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0VzZW3DqW55bW9kdWwgYSBrb25maWd1csOhY2nDs2VsZW0gw6FsbGFwb3TDoW5hayBiZcOhbGzDrXTDoXPDoWhveiBlZ3kgamVneSBrb25maWd1csOhY2nDs2VsZW0gaGl2YXRrb3rDoXPDoW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW1pbmRleCBtZXrFkWksIGFtZWx5ZWtldCBhIHRlbGplcyBzesO2dmVnZXMga2VyZXPDqXNoZXogaGFzem7DoWxuYWsuIEEgbWV6xZFrIHN6aW50w6luIHTDoXJvbMOhc3JhIGtlcsO8bG5laywgZGUgYXogw6FsdGFsw6Fub3MgZnVua2Npb25hbGl0w6FzIHN6ZW1wb250asOhYsOzbCBuZW0ga8O2dGVsZXrFkWVrLiBBIG1lbGzDqWtsZXRlayBiZXZvbsOhc2EgbGV0aWx0aGF0w7MgYSBiZWplZ3l6w6lzIDAtcmEgw6FsbMOtdMOhc8OhdmFsIHZhZ3kgdMO2cmzDqXPDqXZlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW1pbmRleGJlbiB0w6Fyb2x0IG1lesWRaywgYW1lbHlla2V0IGEgdGVsamVzIHN6w7Z2ZWdlcyBrZXJlc8Opc2VuIGvDrXbDvGwgbcOhc3JhIGlzIGhhc3puw6FsbmFrLiBBIHRlbGplcyBmdW5rY2lvbmFsaXTDoXMgw6lyZGVrw6liZW4gbWluZGVuIG1lesWRIGvDtnRlbGV6xZEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnTWluZGVuIGVneWVzIHdlYnN6b2xnw6FsdGF0w6FzaG96IChrdWxjcykgbWVnYWRoYXTDsyBlZ3kgc29yIG9zenTDoWx5ICjDqXJ0w6lrKSwgYW1lbHlla3JlIGF6IGltcG9ydMOhbMOhcyBrb3Jsw6F0b3p2YSB2YW4uIEF6IMO2c3N6ZXMga2l2w6FsYXN6dG90dCBvc3p0w6FseWhveiB2YWd5IGF6IMO2c3N6ZXMgbMOpdGV6xZEgb3N6dMOhbHlob3ogYXogYXpvbm9zw610w7MgYXR0cmliw7p0dW1va2F0IGtlbGwga2l2w6FsYXN6dGFuaSBheiBpbnZva2VyIGtvbmZpZ3Vyw6FjacOzYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsIHJlZ2lzenRyw6FjacOzIGEgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgcsOpdGVnaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWwgcmVnaXN6dHLDoWNpw7MgYSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciByw6l0ZWdoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWwgcmVnaXN6dHLDoWNpw7MgYSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciByw6l0ZWdoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00ga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgdGVsZXDDrXTDqXNpIMOhbGxhcG90b2thdCB0YXJ0YWxtYXp6YSBheiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVta2VyZXPFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlbGXDqXJ0dmUgYXogaW5jaWRlbnPDoWxsYXBvdG9rYXQgYXogw7xneWbDqWxmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbWtlcmVzxZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdBIG3FsXZlbGV0IGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEga29uZmlndXLDoWNpw7NzIGVsZW1layBtYXhpbcOhbGlzIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdFZ3kgbW9kdWwgZWd5IG9zenTDoWx5w6lydCBmZWxlbMWRcyBjc29wb3J0IGVsbGVuxZFyesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ0VneSBtb2R1bCBlZ3kga29uZmlndXLDoWNpw7NlbGVtw6lydCBmZWxlbMWRcyBjc29wb3J0IGVsbGVuxZFyesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ0VneSBtb2R1bCBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBzdGF0aXN6dGlrw6FrIGVsxZHDoWxsw610w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTsOpdiBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnU3rDoW0gbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneW7DtmtpIGZlbMO8bGV0ZW4gYSBrZXJlc8Opc2kgZXJlZG3DqW55ZWsgZWd5ZXMgb2xkYWxhaW4gbWVnamVsZW7DrXRlbmTFkSBrb25maWd1csOhY2nDs3MgZWxlbWVrIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldGVuIGEga2VyZXPDqXNpIGVyZWRtw6lueWVrIG1pbmRlbiBlZ3llcyBvbGRhbMOhbiBtZWdqZWxlbsOtdGVuZMWRIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0Ega2VyZXNlbmTFkSBvYmpla3R1bW9rLCBow6FueSBiZWplZ3l6w6lzIMOpcyBtaWx5ZW4gYXR0cmliw7p0dW1vayBqZWxlbmplbmVrIG1lZy4gQSBDb25maWdJdGVtIGF0dHJpYsO6dHVtb2thdCBraWZlamV6ZXR0ZW4gYXogRWxhc3RpY3NlYXJjaCBzZWfDrXRzw6lnw6l2ZWwga2VsbCB0w6Fyb2xuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw4F0dGVraW50w6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs3MgZWxlbW9zenTDoWx5b2sga2F0ZWfDs3Jpw6FpbmFrIHBhcmFtw6l0ZXJlaSBheiDDvGd5bsO2a2kgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBraXMga29uZmlndXLDoWNpw7NzIGVsZW1layDDoXR0ZWtpbnTDqXPDqW5layBvc3psb3BzesWxcsWRaW5layBwYXJhbcOpdGVyZWkuIE1lZ2plZ3l6w6lzOiBheiAiQWt0w612IiAwLXJhIMOhbGzDrXTDoXNhIGNzYWsgYXp0IGFrYWTDoWx5b3p6YSBtZWcsIGhvZ3kgYXogw7xneW7DtmvDtmsgc3plcmtlc3N6w6lrIGEgY3NvcG9ydCBiZcOhbGzDrXTDoXNhaXQgYSBzemVtw6lseWVzIGJlw6FsbMOtdMOhc2Fpa2JhbiwgZGUgYSByZW5kc3plcmdhemTDoWtuYWsgdG92w6FiYnJhIGlzIGxlaGV0xZF2w6kgdGVzemksIGhvZ3kgZWd5IG3DoXNpayBmZWxoYXN6bsOhbMOzIG5ldsOpYmVuIHN6ZXJrZXNzesOpayBhIGJlw6FsbMOtdMOhc29rYXQuIEEgXCdQcmVmZXJlbmNlR3JvdXBcJyBzZWfDrXRzw6lnw6l2ZWwgc3phYsOhbHlvemhhdGphLCBob2d5IGV6ZWsgYSBiZcOhbGzDrXTDoXNvayBtZWx5aWsgdGVyw7xsZXRlbiBqZWxlbmplbmVrIG1lZyBhIGZlbGhhc3puw6Fsw7NpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IMO8Z3lmw6lsLWZlbGhhc3puw6Fsw7MgbGlzdGEgw6F0dGVraW50w6lzw6luZWsgdmV6w6lybMWRcHVsdCBow6F0dMOpcnByb2dyYW1qw6Fob3ouIEEg4oCeTGltaXTigJ0gYXogYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610ZXR0IGJlamVneXrDqXNlayBzesOhbWEuIEEg4oCeR3JvdXDigJ0gaGFzem7DoWxoYXTDsyBhIGhvenrDoWbDqXLDqXMga29ybMOhdG96w6Fzw6Fob3ogYSBixZF2w610bcOpbnlyZSAocMOpbGTDoXVsIEdyb3VwOiBhZG1pbjtjc29wb3J0MTtjc29wb3J0MjspLiBBIOKAnkRlZmF1bHTigJ0gYXp0IGhhdMOhcm96emEgbWVnLCBob2d5IGEgYsWRdsOtdG3DqW55IGFsYXDDqXJ0ZWxtZXpldHRlbiBlbmdlZMOpbHllenZlIHZhbiwgdmFneSBob2d5IGEgZmVsaGFzem7DoWzDs25hayBrw6l6emVsIGtlbGwgZW5nZWTDqWx5ZXpuaWUgYXp0LiBBIOKAnkNhY2hlVFRMTG9jYWzigJ0gYSBixZF2w610bcOpbnkgZ3lvcnPDrXTDs3TDoXIgaWRlamUgcGVyY2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw7xneWludMOpesWRaSBmZWzDvGxldCDDvGd5ZsOpbC1mZWxoYXN6bsOhbMOzIGxpc3RhIMOhdHRla2ludMOpc8OpbmVrIHZlesOpcmzFkXB1bHQgaMOhdHTDqXJwcm9ncmFtasOhaG96LiBBIOKAnkxpbWl04oCdIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBiZWplZ3l6w6lzZWsgc3rDoW1hLiBBIOKAnkdyb3Vw4oCdIGhhc3puw6FsaGF0w7MgYSBob3p6w6Fmw6lyw6lzIGtvcmzDoXRvesOhc8OhaG96IGEgYsWRdsOtdG3DqW55cmUgKHDDqWxkw6F1bCBHcm91cDogYWRtaW47Y3NvcG9ydDE7Y3NvcG9ydDI7KS4gQSDigJ5EZWZhdWx04oCdIGF6dCBoYXTDoXJvenphIG1lZywgaG9neSBhIGLFkXbDrXRtw6lueSBhbGFww6lydGVsbWV6ZXR0ZW4gZW5nZWTDqWx5ZXp2ZSB2YW4sIHZhZ3kgaG9neSBhIGZlbGhhc3puw6Fsw7NuYWsga8OpenplbCBrZWxsIGVuZ2Vkw6lseWV6bmllIGF6dC4gQSDigJ5DYWNoZVRUTExvY2Fs4oCdIGEgYsWRdsOtdG3DqW55IGd5b3Jzw610w7N0w6FyIGlkZWplIHBlcmNiZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3RvayBzesOtbmVpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2hveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw6FsdGFsw6Fub3Mga2F0YWzDs2d1cyBhdHRyaWLDunR1bWFpbmFrIHDDqWxkYSBqb2dvc3VsdHPDoWcgY3NvcG9ydGphaWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayBuw6l2bW9kdWxqw6FuYWsgcGFyYW3DqXRlcmVpIGF6IMO8Z3luw7ZrZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayBzesOhbW1vZHVsasOhbmFrIHBhcmFtw6l0ZXJlaSBheiDDvGd5bsO2a2ZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogb2xkYWxha2hveiAoYW1lbHlla2VuIGEga29uZmlndXLDoWNpw7NlbGVtZWsgbWVnamVsZW5uZWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayB2ZXJ6acOzc3p0cmluZyBtb2R1bGrDoW5hayBwYXJhbcOpdGVyZWkgYXogw7xneW7DtmtpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3luw7ZraSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbiBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayBrb25maWd1csOhY2nDs3MgZWxlbW9zenTDoWx5YWlob3ogdGFydG96w7MgdmVyemnDs3N6dHJpbmcgc2FibG9uIGVzemvDtnprw6lzemxldCBtb2R1bGrDoW5hayBwYXJhbcOpdGVyZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW1vc3p0w6FseW9rIHZlcnppw7NpbmTDrXTDs2rDoW5hayBwYXJhbcOpdGVyZWkgYXogw7xneW7DtmtpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1bDqWdyZWhhanRqYSBhIGJlw6FsbMOtdG90dCBtxbF2ZWxldGV0IG1pbmRlbiBlc2Vtw6lueW7DqWwgKG1pbnQgZWd5IG1lZ2jDrXbDsykgbWluZGVuIGVneWVzIGJlw6FsbMOtdG90dCB3ZWJzem9sZ8OhbHRhdMOhc2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0pvZ29zdWx0c8OhZ2kgY3NvcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiBJVFNNIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGNzYXRvbMOhc2kgbcWxdmVsZXQgaGFzem7DoWxhdMOhaG96IHN6w7xrc8OpZ2VzIGVuZ2Vkw6lseWVrIGF6IMO8Z3luw7ZraSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IElUU00ga29uZmlndXLDoWNpw7NzIGVsZW1layBrZXJlc8Opc2kga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IElUU00ga29uZmlndXLDoWNpw7NzIGVsZW1mw6F0IG1lZ2plbGVuw610xZEga8OpcGVybnnFkSBoYXN6bsOhbGF0w6Fob3ogc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogw7xneW7DtmtpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gbmFnecOtdMOhc2kga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gaG96esOhYWTDoXNhIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogSVRTTSBrb25maWd1csOhY2nDs3MgZWxlbWVrIMO2bWxlc3p0ZXR0IGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IMO8Z3luw7ZraSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtIHN6ZXJrZXN6dMOpc2Uga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllayBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtIG55b210YXTDoXNhIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYSBrb25maWd1csOhY2nDs2VsZW1layB0w7ZybMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbWVrIGtlcmVzw6lzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0VneSBrb25maWd1csOhY2nDs2VsZW0gaW5jaWRlbnPDoWxsYXBvdMOhbmFrIGF1dG9tYXRpa3VzIGJlw6FsbMOtdMOhc2EsIGFtaWtvciBlZ3kgamVneWV0IGthcGNzb2xuYWsgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b3QgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQga8OpcGVybnnFkWrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGF6IGluY2lkZW5zw6FsbGFwb3RvdCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCBrw6lwZXJuecWRasOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuLCBhbWVseSBsZWhldMWRdsOpIHRlc3ppIGVneSBrb25maWd1csOhY2nDs2VsZW0gw7Zzc3pla2FwY3NvbMOhc8OhdCBlZ3kgbcOhc2lrIG9iamVrdHVtbWFsIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpbmVrIGVsw6lyw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBlbMWRem3DqW55ZWluZWsgZWzDqXLDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gdMO2cmzDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610IGVneSBsaW5rZXQgYSBtZW7DvGJlbiBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgaGl2YXRrb3rDoXNhaW5hayBmYSBuw6l6ZXRiZW4gdMO2cnTDqW7FkSBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXR0xZF6w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXR0xZF6w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gc3plcmtlc3p0w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldGhleiB2YWzDsyB2aXNzemF0w6lyw6lzaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBueW9tdGF0w6Fzw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtYmUgdMO2cnTDqW7FkSBuYWd5w610w6FzaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnamVsZW7DrXRpIGEga29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaXQgKGZvcmTDrXRvdHQgc29ycmVuZGJlbikgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdBeiBhbGFww6lydGVsbWV6ZXR0IGthdGVnw7NyaWEsIGFtZWx5IG1lZ2plbGVuaWssIGhhIG5pbmNzIGtpdsOhbGFzenR2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VneSBrb25maWd1csOhY2nDs2VsZW0gYXpvbm9zw610w7NqYSwgcMOpbGTDoXVsOiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gQXogYWxhcMOpcnRlbG1lemV0dDogQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQXV0b21hdGlrdXNhbiBraXbDoWx0amEgYSBDb25maWdJdGVtRmV0Y2ggaMOtdsOzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1Zlcnppw7Mga2FyYWt0ZXJsw6FuYyBraWZlamV6w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1Zlcnppw7Mga2l2w6FsdMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJ0EgbWV6xZFrIGF1dG9tYXRpa3VzYW4ga2kgbGVneWVuZWstZSB0w7ZsdHZlICgxKSwgw6lzIGViYmVuIGF6IGVzZXRiZW4gZWwgbGVneWVuZWstZSByZWp0dmUgYSBqZWd5xbFybGFwb2tyw7NsICgyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnRWxrZXLDvGxoZXTFkS1lIGEgQ29uZmlnSXRlbUFDTCB2w6lncmVoYWp0w6FzYSBhIGd5b3Jzw610w7N0w6FyYmFuIHTDoXJvbHQgbWV6xZFmw7xnZ8WRc8OpZ2VrIGVsbGVuxZFyesOpc8OpdmVsLiBFeiBqYXbDrXRoYXRqYSBheiDFsXJsYXBvayBiZXTDtmx0w6lzaSBpZGVqw6l0LCBkZSBraSBrZWxsIGthcGNzb2xuaSwgaGEgYXogQUNMTW9kdWxva2F0IGF6IElUU01Db25maWdJdGVtLSDDqXMgRm9ybS1SZXR1cm5UeXBlIHTDrXB1c29rIGVzZXTDqWJlbiBrZWxsIGhhc3puw6FsbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdNaWx5ZW4gw6FsdGFsw6Fub3MgaW5mb3Jtw6FjacOzayBqZWxlbm5layBtZWcgYSBmZWpsw6ljYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ29zenTDoWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbMOpcyB1dMOhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnYmXDvHplbWVsw6lzIGVsxZF0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnYmXDvHplbWVsdmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgaMO8dmVseWtlcyDDoWxsdsOhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSBow7x2ZWx5a2VzIMOhbGx2w6FueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgaMO8dmVseWsgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBow7x2ZWx5a2VzIMOhbGx2w6FueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaMO8dmVseWsgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDEwNiw2OCBjbSAoNDIgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBow7x2ZWx5ayAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiAxMzMsMzUgY20gKDUyLDUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBow7x2ZWx5ayAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaMO8dmVseWsgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGjDvHZlbHlrICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGjDvHZlbHlrICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgaMO8dmVseWsgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDE4Niw2OSBjbSAoNzMsNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgaMO8dmVseWsgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBow7x2ZWx5ayAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDE3LDc4IGNtICg3IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAzNSw1NiBjbSAoMTQgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnU3rDoW12aXRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0PDrW1raW9zenTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN6dHLDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsw7NnIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0vDqXN6w7xsw6lrIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0Fra3VtdWzDoXRvciBrYXBhY2l0w6FzIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWtrdW11bMOhdG9yIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfDiXDDvGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzeiBpbnRlcmbDqXN6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIG9zenTDoWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0w6FzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWt1cyBrw6FydHnDoW5rw6ludGkga2FwYWNpdMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0vDoXJ0eWEgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS8OhcnR5YW9sdmFzw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS8OhcnR5YSB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfDnGd5ZsOpbHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnw5xneWbDqWxzem9mdHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfDnGd5ZsOpbCBrYXRlZ8OzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS8OzZGFsw6HDrXLDsyB0YW7DunPDrXR2w6FueW9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbmNpYXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdUYW7DoWNzYWTDoXNpIG1lZ8OhbGxhcG9kw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLYXBjc29sYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0thcGNzb2xhdCBhIGZvcmdhbG1hesOzdmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udMOpbmVyIG1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1N6ZXJ6xZFkw6lzIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdBIHN6ZXJ6xZFkw6lzIGlkxZF0YXJ0YW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0Egc3plcnrFkWTDqXMgaWTFkXRhcnRhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVmV6ZXTDqWsgbsOpbGvDvGxpIHRlbGVmb24gKERFQ1QgdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS8O2bHRzw6lndmlzZWzFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0F6IGVuZ2Vkw6lseWVrIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTMOpdHJlaG96w6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VneWVkaSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIEZlbm50YXJ0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1raXN6b2xnw6Fsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0Egc3rDoW1sYSBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdBIG1lZ3JlbmRlbMOpcyBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdBIGdhcmFuY2lhIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnQSBraWFkw6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0FzenRhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50dW0gYWzDocOtcsOzIHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbCB0YW7DunPDrXR2w6FueW9rIChTL01JTUUgdGFuw7pzw610dsOhbnlvayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnTXVua2FzemVyesWRZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1bDqWcgSVAtY8OtbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0EgdMOhbW9nYXTDoXMgbWVnc3rFsW7DqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnTGVqw6FyYXRpIGTDoXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnS8O8bHPFkSBtZXJldmxlbWV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVMWxemZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnTGVuZGtlcmVrZXMgZW5lcmdpYXTDoXJvbMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1hZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgbWVnw6FsbGFwb2TDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfDgWx0YWzDoW5vcyBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlrdXMga8OhcnR5w6FrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWt1cyBrw6FydHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR2ZXJlcyBtb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHZlciBzw7pseWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0ZlamhhbGxnYXTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIHByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0w6FzLSDDqXMgaG96esOhZsOpcsOpcy1rZXplbMOpcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTGVsdMOhcmkgc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnRlcmvDtmx0c8OpZ2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnU3rDoW1sYSBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCaWxsZW50ecWxemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9yIChmb2x5YWTDqWtrcmlzdMOhbHlvcyBraWplbHrFkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBtb25pdG9yIChmw6lueWtpYm9jc8OhdMOzIGRpw7NkYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVmV6ZXTDqWtlcyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1N6w6lsZXNzw6lnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnMS4gcsOpdGVnOiBGaXppa2FpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcyLiByw6l0ZWc6IGFkYXRrYXBjc29sYXRpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMy4gcsOpdGVnOiBIw6Fsw7N6YXRpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICczLiByw6l0ZWc6IEjDoWzDs3phdGkgcsOpdGVnIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnNC4gcsOpdGVnOiBTesOhbGzDrXTDoXNpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnNS4gcsOpdGVnOiBNdW5rYW1lbmV0csOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJzYuIHLDqXRlZzogQmVtdXRhdMOhc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gcsOpdGVnOiBBbGthbG1hesOhc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0LDqXJsZXRpIHN6ZXJ6xZFkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuYyBrdWxjcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbmMgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWTFkXN6YWsgYSBrw7Z2ZXRrZXrFkSBpZMWRcG9udHTDs2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbmNpZMWRc3phayBhIGvDtnZldGtlesWRIGlkxZFwb250aWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0zDrXRpdW0gdmFzLWZvc3pmw6F0IChMaUZlUE80KSBha2t1bXVsw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0zDrXRpdW0taW9uIChMaS1pb24pIGFra3VtdWzDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0hpdGVsc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1RhbMOhbGhhdMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0hvc3N6w7pzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdHecOhcnTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWF4aW3DoWxpcyB0ZXJoZWxoZXTFkXPDqWcgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWVtw7NyaWEgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbHN6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsL2Jlw6FneWF6b3R0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWxsIExlw61yw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3IgZmVsYm9udMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIG3DqXJldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdFZ8Opcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnSMOhbMOzemF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0jDoWzDs3phdGkgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSMOhbMOzemF0aSBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdIw6Fsw7N6YXRpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1rYWRtaXVtIChOaUNkKSBha2t1bXVsw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0w6FsaGlkcmlkIChOaU1IKSBha2t1bXVsw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnVGl0b2t0YXJ0w6FzaSBtZWfDoWxsYXBvZMOhcyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVLWsgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTSBtb2R1bG9rIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFmaWt1cyBrw6FydHnDoWsgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIG1vbml0b3IgKHN6ZXJ2ZXMgZsOpbnlraWJvY3PDoXTDsyBkacOzZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ03FsWvDtmTDqXNpIGvDtmx0c8OpZ2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1JlbmRlbMOpc2kgc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdFZ3nDqWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0tpbWVuZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4tS8OTRCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzw6lnaSBtZWfDoWxsYXBvZMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25zesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbiB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6aWthaSBtYWdvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1RlbGplc8OtdG3DqW55c3pvbGfDoWx0YXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdWw6Fzw6Fyb2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdSYWNrIG3DqWx5c8OpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2sgZWd5c8OpZ2VrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnU3pvYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta8OhcnR5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgdGFuw7pzw610dsOhbnlvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ8OJcnTDqWtlc8OtdMOpc2kgc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnTcWxaG9sZGFzIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnWsOhcnQgw7Nsb21ha2t1bXVsw6F0b3IgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTb3JzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTemVydmVyIHN6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU3pvbGfDoWx0YXTDoXNpIG1lZ8OhbGxhcG9kw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU3plcnZpemPDrW1rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdBbGp6YXQgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1N6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSGFuZ3N6w7Nyw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N6YWJ2w6FueW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdJUC1jw61tIGluZMOtdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1TDoXJvbMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1TDoXJvbMOhc2kgcGFydMOtY2nDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0xlw6FueXbDoWxsYWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnw5Zzc3plZm9nbGFsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnU3rDoWxhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaWt1cyBrw6FydHlhIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVGVsamVzIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfDiXJpbnTFkWvDqXBlcm55xZFzIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JvbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBodWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBoZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Via2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/id_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRhIG9wZXJhc2kgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGVuZ2F0dXJhbiB1bnR1ayBkYXRhIHBlcm1pbnRhYW4geWFuZyBtYXN1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1BlbmdhdHVyYW4gdW50dWsgZGF0YSByZXNwb25zIGtlbHVhcic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1BlbmdlbG9sYWFuIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICd1YmFoIGRlZmluaXNpIGtlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNZW5ndWJhaCBkZWZpbmlzaSBwZXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0J1bmRlbCBLZWxhcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdEaSBzaW5pIEFuZGEgZGFwYXQgbWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJJbXBvcnQgeWFuZyBtZW5hbXBpbGthbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgcGFsaW5nIHVtdW0uIEhhcmFwIGRpY2F0YXQgYmFod2EgYmViZXJhcGEga29uZmlndXJhc2kgdGFtYmFoYW4gbXVuZ2tpbiBkaXBlcmx1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNZW1wZXJiYXJ1aSBlbnRpdGFzIHlhbmcgYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnTWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tlbGFzIEl0ZW0gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1BlcmFuIEl0ZW0gS29uZmlndXJhc2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdTYXJpbmdhbiB1bnR1ayBrZWxhcy1rZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBzYXR1IGtlbGFzIGRhcmkgZGF0YXIgdW50dWsgbWVtYnVhdCBzZWJ1YWggaXRlbSBrb25maWd1cmFzaSBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2VsYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdUaW5kYWthbiBtYXNhbCBJdGVtS29uZmlndXJhc2kgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhdHVzIHBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGF0dXMgaW5zaWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdUYXV0YW4gdW50dWsga2UgbGFpbm55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTm9tb3IgaXRlbSBrb25maWd1cmFzaSB0aWRhayBzYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnSnVtbGFoIGl0ZW0ga29uZmlndXJhc2kgbGFpbm55YSB5YW5nIGFrYW4gZGkgaHVidW5na2FuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQXBha2FoIEFuZGEgYmVuYXItYmVuYXIgaW5naW4gbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYW1hIGluaSB0ZWxhaCBkaSBndW5ha2FuIG9sZWggSXRlbUtvbmZpZ3VyYXNpIGRlbmdhbiBub21vcihub21vci1ub21vcikgYmVyaWt1dDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOb21vciB2ZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTm9tb3IgdmVyc2kgaXRlbSBrb25maWd1cmFzaSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOb21vciBWZXJzaSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tb3IgYmVyaWt1dCBpbmk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMgcGVueWViYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0tvbmRpc2kgaW5zaWRlbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnUml3YXlhdCBJdGVtIEtvbmZpZ3VyYXNpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc2kgc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQnVhdFdha3R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1BhbmRhbmdhbiBkZWthdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpIHBlciBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdUaWRhayBkaXRlbXVrYW4gZGF0YSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1BpbGloIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnTXVsYWkgUGVuY2FyaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0NhcmkgZGkgdmVyc2kgc2ViZWx1bW55YSBqdWdhID8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyB1bnR1ayBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnVGluZ2thdCBLZWRhbGFtYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdNZW1wZXJiZXNhci9NZW1wZXJrZWNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdUaW5na2F0IHRhdXRhbiBtYWtzaW11bSB0ZXJjYXBhaSB1bnR1ayBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdHVzIHBlbnllYmFyYWFuIHNhYXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdLb25kaXNpIGluc2lkZW4gc2FhdCBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVGVyYWtoaXIgZGl1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpcnViYWggb2xlaCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0l0ZW0gS29uZmlndXJhc2kgQW5kYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gSXRlbSBLb25maWd1cmFzaSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnSmVuaXMgT2JqZWsnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdQZW55YXJpbmdhbiBtZW51cnV0IGplbmlzJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnS2VsYXMta2VsYXMgYmVyaWt1dCBha2FuIGRpaW1wb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnUGVyYW4tcGVyYW4gYmVyaWt1dCBpbmkgYWthbiBkaWltcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1BlcmhhdGlrYW4gYmFod2EgYmlkYW5nIGRpbmFtaXMgZGFuIGtlbGFzIEdlbmVyYWxDYXRhbG9nIHlhbmcgc2VzdWFpIGp1Z2EgYWthbiBkaWJ1YXQgZGFuIHRpZGFrIGFkYSBwZW5naGFwdXNhbiBvdG9tYXRpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdBcGFrYWggQW5kYSBpbmdpbiBtZWxhbmp1dGthbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQnV0dWggRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXNpIHRpZGFrIGFkYSBoYXNoIFlBTUwgeWFuZyB2YWxpZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdHYW1iYXJhbiB1bXVtOiBJdGVtIEtvbmZpZ3VyYXNpIElUU00nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIENvbmZpZ0l0ZW1JRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdBbmRhIG1lbWVybHVrYW4gc2V0aWRha255YSBzYXR1IEl0ZW0gS29uZmlndXJhc2kgeWFuZyBkaXBpbGloISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0FuZGEgdGlkYWsgbWVtaWxpa2kgYWtzZXMgdHVsaXMga2UgaXRlbSBrb25maWd1cmFzaSBpbmk6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdUaWRhayBhZGEgZGVmaW5pc2kgeWFuZyBkaWRlZmluaXNpa2FuIHVudHVrIGtlbGFzICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnSXRlbSBrb25maWd1cmFzaSAiJXMiIHRpZGFrIGRpdGVtdWthbiBkYWxhbSBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdUaWRhayBkYXBhdCBtZW5naGFwdXMgSUQga29uZmlndXJhc2kgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdUaWRhayBkaXRlbXVrYW4gdmVyc2kgdW50dWsgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhdGF1IENsYXNzSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgYWtzZXMgeWFuZyBkaWJlcmlrYW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGRhcGF0IG1lbmFtcGlsa2FuIHJpd2F5YXQsIHRpZGFrIGFkYSBDb25maWdJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gcml3YXlhdCwgdGlkYWsgYWRhIGhhayBha3NlcyB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ0l0ZW0gS29uZmlndXJhc2kgQmFydSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdWZXJzaSBiYXJ1IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0dXMgcGVuZXJhcGFuIGRpcGVyYmFydWkgKGJhcnUgPSAlcywgbGFtYSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0dXMgaW5zaWRlbiBkaXBlcmJhcnVpIChiYXJ1ID0gJXMsIGxhbWEgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZGloYXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1RhdXRhbiBrZSAlcyAodGlwZSA9ICVzKSBkaXRhbWJhaGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnVGF1dGFuIGtlICVzICh0aXBlID0gJXMpIGRpaGFwdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluaXNpIENvbmZpZ0l0ZW0gZGlwZXJiYXJ1aSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmFtYSBkaXBlcmJhcnVpIChiYXJ1ID0gJXMsIGxhbWEgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0ICVzIGRpcGVyYmFydWkgZGFyaSAiJXMiIG1lbmphZGkgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaSAlcyBkaWhhcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBDb25maWdJdGVtSUQgYXRhdSBWZXJzaW9uSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGRhcGF0IG1lbmFtcGlsa2FuIGl0ZW0ga29uZmlndXJhc2ksIHRpZGFrIGFkYSBoYWsgYWtzZXMgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEJSB0aWRhayBkaXRlbXVrYW4gZGFsYW0gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdJdGVtS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2RpY2V0YWsgb2xlaCVzIHBhZGElcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbnNpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCB0aWRhayB2YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgQ2xhc3NJRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgaGFrIGFrc2VzIHVudHVrIGtlbGFzIGluaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpZGFrIGFkYSBoYXNpbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWd1cmFzaSBwZW5jYXJpYW4gbmlsYWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ1RpZGFrIGRhcGF0IG1lbmFtcGlsa2FuIGl0ZW0sIHRpZGFrIGFkYSBoYWsgYWtzZXMgdW50dWsgQ29uZmlnSXRlbSB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSB0aWRhayBkaXRlbXVrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1RpZGFrIGFkYSB2ZXJzaSB5YW5nIGRpdGVtdWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAncGVyaW5nYXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXR1cyBwZW55ZWJhcmFuIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdHVzIGluc2lkZW4gaXRlbSBrb25maWd1cmFzaSBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdUaWRhayBhZGEgaXppbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdGlkYWsgdmFsaWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbWV0ZXIgcGVuY2FyaWFuIHRpZGFrIHZhbGlkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0l0ZW0ga29uZmlndXJhc2kgeWFuZyBkaXRhbXBpbGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBlIHN0YXR1cyBwZW55ZWJhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcGUgU3RhdHVzIGluc2lkZW4gc2FhdCBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRGlhbnRhcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1BlbWJhdGFzYW4ga2VsYXMgdW50dWsgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGlsaWggc2F0dSBrZWxhcyBhdGF1IGxlYmloIHVudHVrIG1lbWJhdGFzaSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGFwYXQgZGlwaWxpaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUGVtYmF0YXNhbiBrZWxhcyB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGlsaWggc2F0dSBrZWxhcyBhdGF1IGxlYmloIHVudHVrIG1lbWJhdGFzaSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGFwYXQgZGlwaWxpaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaXMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXMgKFZlcnNpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdKZW5pcyBSZWZlcmVuc2kgVGF1dGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0FwYWthaCB0YXV0YW4gaW5pIGJlcmxha3UgdW50dWsgQ29uZmlnSXRlbSBhdGF1IHZlcnNpIHN0YXRpcyBkYXJpIG9iamVrIHJlZmVyZW5zaS4gUGVyaGl0dW5nYW4gU3RhdHVzIEluc2lkZW4gc2FhdCBpbmkgaGFueWEgZGlsYWt1a2FuIHBhZGEgdGF1dGFuIGRpbmFtaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnUGlsaWggYXRyaWJ1dCB5YW5nIGFrYW4gZGljYXJpIGJlcmRhc2Fya2FuIGl0ZW0ga29uZmlndXJhc2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWt0dXIgZGFzYXIgdGlkYWsgdmFsaWQuIEJlcmlrYW4gaGFzaCBkZW5nYW4gZGF0YSBkYWxhbSBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdNZW11bGFpIHN0cmluZyBZQU1MIGRlbmdhbiBcJy0tLVwnIGRpcGVybHVrYW4uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ1RpZGFrIGRhcGF0IG1lbWJlcnNpaGthbiB0YWJlbCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdUaWRhayBhZGEgYmlkYW5nIGRpbmFtaXMgeWFuZyByZWxldmFuIHlhbmcgZGl0ZW11a2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGlkYWsgZGFwYXQgbWVueWlzaXBrYW4ga2UgZGFsYW0gdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdNZW55aXNpcGthbiAwIGJhcmlzIGtlIGRhbGFtIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdKdW1sYWggbWFrc2ltdW0gZGFyaSAxIGVsZW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdMYW1waXJhbiBJbXBvci9Fa3Nwb3IgKHNlYmFnYWkgZW50cmkgdGVyYWtoaXIgcGVyIGJhcmlzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1N0cmluZyBWZXJzaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdLZXNhbGFoYW4gbWVueWlua3JvbmthbiBkZWZpbmlzaS4gU2lsYWthbiBwZXJpa3NhIGxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdBbmRhIG1lbWlsaWtpIGRlZmluaXNpIElUU01Db25maWdJdGVtIHlhbmcgdGlkYWsgdGVyc2lua3JvbmlzYXNpLiBUZXJhcGthbiBwZXJ1YmFoYW4gYmlkYW5nIGRpbmFtaXMgSVRTTUNvbmZpZ0l0ZW0gQW5kYS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1RlbGFoIGthZGFsdWFyc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdQZW1lbGloYXJhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnVGVsYWggZGlyZW5jYW5ha2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1BlcmJhaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaXVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1VsYXNhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVWppL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdJa2h0aXNhciBkYW4gS29uZmlybWFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdNZW5naW1wb3Iga2VsYXMvcGVyYW4gZGFuIGJpZGFuZyB0ZXJrYWl0bnlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnVGVyamFkaSBrZXNhbGFoYW4gc2FhdCBtZW5naW1wb3Iga2VsYXMuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBUZXJzZW1idW55aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gRGl0YW1waWxrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBrb25kaXNpIHBlbmNhcmlhbiB5YW5nIGRpcGVybHVhcyBkYWxhbSBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBEZW5nYW4gZml0dXIgaW5pLCBBbmRhIGRhcGF0IG1lbmNhcmksIG1pc2FsbnlhIG5hbWEgaXRlbSBrb25maWd1cmFzaSBkZW5nYW4ga29uZGlzaSBzZXBlcnRpIGluaSwgc2VwZXJ0aSAiKCprZXkxKiYmKmtleTIqKSIgYXRhdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBrb25kaXNpIHBlbmNhcmlhbiB5YW5nIGRpcGVybHVhcyBkYWxhbSBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIERlbmdhbiBmaXR1ciBpbmksIEFuZGEgZGFwYXQgbWVuY2FyaSwgbWlzYWxueWEgbmFtYSBpdGVtIGtvbmZpZ3VyYXNpIGRlbmdhbiBrb25kaXNpIHNlcGVydGkgaW5pIHNlcGVydGkgIigqa2V5MSomJiprZXkyKikiIGF0YXUgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSSB5YW5nIGRpdHVnYXNrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSSB5YW5nIGRpdHVnYXNrYW4ga2UgcGVydXNhaGFhbiBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSB5YW5nIGRpYmVyaWthbiBrZXBhZGEgcGVuZ2d1bmEgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdQZW5nYXR1cmFuIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1Blcmlrc2EgaGFueWEgbmFtYSB1bmlrIHNhamEgZGkgZGFsYW0ga2VsYXMoXCdrZWxhc1wnKSBpdGVta29uZmlndXJhc2kgeWFuZyBzYW1hIGF0YXUgc2VjYXJhIGdsb2JhbCAoXCdnbG9iYWwpLCB5YW5nIGJlcmFydGkgc2V0aWFwIEl0ZW1Lb25maWd1cmFzaSB5YW5nIGFkYSBha2FuIGRpcGVyaGl0dW5na2FuIGtldGlrYSBtZW5jYXJpIGR1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdQaWxpaCBtb2R1bCB1bnR1ayBtZW5lcmFwa2FuIHNrZW1hIHBlbmFtYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnUGlsaWggbW9kdWwgdW50dWsgbWVuZXJhcGthbiBza2VtYSBhbmdrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnUGlsaWggbW9kdWwgdW50dWsgbWVuZXJhcGthbiBza2VtYSBzdHJpbmcgdmVyc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnUGlsaWggYXRyaWJ1dCB1bnR1ayBtZW1pY3UgcGVtYnVhdGFuIHZlcnNpIGJhcnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1BpbGloIGthdGVnb3JpIHlhbmcgYWthbiBkaXRldGFwa2FuIGtlIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0ZXIgaXRlbSBrb25maWd1cmFzaSBrb2xvbSB1bnR1ayBJa2h0aXNhciBJdGVtIEtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sb20geWFuZyBkYXBhdCBkaWZpbHRlciBkYWxhbSBpa2h0aXNhciBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIGFnZW4uIENhdGF0YW46IEhhbnlhIGF0cmlidXQgSXRlbSBLb25maWd1cmFzaSBkYW4gQmlkYW5nIERpbmFtaXMgKER5bmFtaWNGaWVsZF9OYW1lWCkgeWFuZyBkaXBlcmJvbGVoa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdUYW1iYWggaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0IGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBtZW5nYWt0aWZrYW4gbG9nZ2luZyBrZSByaXdheWF0IHBhZGEgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBtZW1wZXJiYXJ1aSBpdGVtIGtvbmZpZ3VyYXNpIGtlIGRlZmluaXNpIHNhYXQgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ1Jpd2F5YXQgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ2V0YWsgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdab29tIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVGFtcGlsYW4gUG9ob24gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdWZXJzaSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGRhcmkga2VsYXMta2VsYXMgYmVyaWt1dCBpbmkgdGlkYWsgYWthbiBkaXNpbXBhbiBkaSBzZXJ2ZXIgRWxhc3RpY3NlYXJjaC4gVW50dWsgbWVuZXJhcGthbiBpbmkgcGFkYSBDSSB5YW5nIHN1ZGFoIGFkYSwgbWlncmFzaSBDSSBoYXJ1cyBkaWphbGFua2FuIG1lbGFsdWkga29uc29sLCBzZXRlbGFoIG1lbmd1YmFoIG9wc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkZW5nYW4gc3RhdHVzIHBlbnllYmFyYW4gYmVyaWt1dCB0aWRhayBha2FuIGRpc2ltcGFuIGRpIHNlcnZlciBFbGFzdGljc2VhcmNoLiBVbnR1ayBtZW5lcmFwa2FuIGluaSBwYWRhIENJIHlhbmcgc3VkYWggYWRhLCBtaWdyYXNpIENJIGhhcnVzIGRpamFsYW5rYW4gbWVsYWx1aSBrb25zb2wsIHNldGVsYWggbWVuZ3ViYWggb3BzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0JhdGFzIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyYXNpIEJhdGFzIGl0ZW0gcGVyIGhhbGFtYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXNpcyBEYXRhIE1hbmFqZW1lbiBLb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHVsIG1hc3NhbCBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3V0ZXIgcGVuY2FyaWFuIGJhY2tlbmQgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0J1YXQgZGFuIGF0dXIgZGVmaW5pc2kgLSBkZWZpbmlzaSB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnTWVtYnVhdCBUaWtldCB1bnR1ayBDb25maWdJdGVtcyBwYWRhIHRpdGlrIHdha3R1IHRlcnRlbnR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdQZWxhbmdnYW4gZGFwYXQgbWVsaWhhdCB2ZXJzaSBDSSBoaXN0b3Jpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnUGVsYW5nZ2FuIGRhcGF0IGJlcmFsaWggc2VjYXJhIG1hbnVhbCBkaSBhbnRhcmEgdmVyc2kgQ0kgdGVyZGFodWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGEgZGVmYXVsdCB5YW5nIGFrYW4gZGlndW5ha2FuIHBhZGEgYXRyaWJ1dCB1bnR1ayBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaS4gQ29udG9oOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgPSB0YWh1bjsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCA9IFRlcmFraGlyOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludCA9IDI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRhIGRlZmF1bHQgeWFuZyBha2FuIGRpZ3VuYWthbiBwYWRhIGF0cmlidXQgdW50dWsgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kuIENvbnRvaDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhciA9IDIwMTA7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGggPSAxMDsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXkgPSA0OyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhciA9IDIwMTA7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aCA9IDExOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5ID0gMzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnVGVudHVrYW4gVGluZGFrYW4gYWRhbGFoIHRvbWJvbCBwZW5nYXR1cmFuIHRlcnNlZGlhIGRpIG9iamVrIHdpZGdldCB0ZXJrYWl0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIEhhcmFwIGRpY2F0YXQgYmFod2EgVGluZGFrYW4gaW5pIGhhcnVzIHRlbGFoIG1lbmRhZnRhcmthbiBiZXJpa3V0IEpTIGRhbiBDU1MgZmlsZTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBza2VtYSBUZW1wbGF0ZTo6VG9vbGtpdCB1bnR1ayBzdHJpbmcgdmVyc2kuIEhhbnlhIGRpZ3VuYWthbiBqaWthIE1vZHVsIFN0cmluZyBWZXJzaSBkaWF0dXIga2UgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHNlcmFuZ2thaWFuIGtvbmRpc2kgZGkgbWFuYSBwZWxhbmdnYW4gZGlpemlua2FuIHVudHVrIG1lbGloYXQgaXRlbSBrb25maWd1cmFzaS4gS29uZGlzaSBkYXBhdCBzZWNhcmEgb3BzaW9uYWwgZGliYXRhc2kgdW50dWsgZ3J1cCBwZWxhbmdnYW4gdGVydGVudHUuIE5hbWEgYWRhbGFoIHNhdHUtc2F0dW55YSBhdHJpYnV0IHdhamliLiBKaWthIHRpZGFrIGFkYSBwaWxpaGFuIGxhaW4geWFuZyBkaWJlcmlrYW4sIHNlbXVhIGl0ZW0ga29uZmlndXJhc2kgYWthbiB0ZXJsaWhhdCBkaSBiYXdhaCBrYXRlZ29yaSB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGl6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdoYXB1cyBpdGVtIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJtdWthIEdlbmVyaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBpemluIHlhbmcgZGkgYnV0dWhrYW4gdW50dWsgbWVuZGFwYXRrYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRlbmdhbiBtZW5nZ3VuYWthbiBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGl6aW4geWFuZyBkaSBidXR1aGthbiB1bnR1ayBtZW5jYXJpIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkZW5nYW4gbWVuZ2d1bmFrYW4gYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nYXR1ciBpdGVtIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJtdWthIEdlbmVyaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIG1vZHVsIGdhbWJhcmFuIHVudHVrIG1lbnVuanVrYW4gdGFtcGlsYW4ga2VjaWwgZGFyaSBzZWJ1YWggZGFmdGFyIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhcGFrYWggbGFiZWwgamVuaXMgdGF1dGFuIGhhcnVzIGRpdGFtcGlsa2FuIGRpIGtvbmVrc2kgbm9kZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGVrc3ByZXNpIHJlZ3VsYXIgc2VjYXJhIGluZGl2aWR1YWwgdW50dWsgc2V0aWFwIGtlbGFzIEl0ZW1Lb25maWd1cmFzaSB1bnR1ayBtZW1lcmlrc2EgbmFtYSBJdGVtS29uZmlndXJhc2kgdW50dWsgbWVudW5qdWthbiBwZXNhbiBlcnJvciB5YW5nIHNlc3VhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGtvbG9tIENJIHlhbmcgdGVyc2VkaWEgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSB0ZXJnYW50dW5nIHBhZGEga2VsYXMgQ0kuIFNldGlhcCBlbnRyaSBoYXJ1cyB0ZXJkaXJpIGRhcmkgbmFtYSBrZWxhcyBkYW4gbGFyaWsga29sb20geWFuZyB0ZXJzZWRpYSB1bnR1ayBrZWxhcyB5YW5nIGJlcnNhbmdrdXRhbi4gRW50cmkgYmlkYW5nIGRpbmFtaXMgaGFydXMgc2VzdWFpIGRlbmdhbiBza2VtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gYXRyaWJ1dCBpdGVtIGtvbmZpZ3VyYXNpIGRlZmF1bHQgdW50dWsgcGVuZ3VydXRhbiBpdGVtIGtvbmZpZ3VyYXNpIGRhcmkgaGFzaWwgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGF0cmlidXQgaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IHVudHVrIHBlbmd1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGF0cmlidXQgaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IHVudHVrIHBlbmd1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIG9wZXJhc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVuZW50dWthbiB1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIGFnZW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBUdXJ1bjogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVuZW50dWthbiB1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4gQXRhczogdGVydHVhIGRpIGF0YXMuIFR1cnVuOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIG9wZXJhc2kgaW5pLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gVHVydW46IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4ga29sb20gQ0kgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdCBkYWxhbSBpa2h0aXNhciBpdGVtIGtvbmZpZ3VyYXNpIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIHRlcmRpcmkgZGFyaSBuYW1hIGtlbGFzIGRhbiBsYXJpayBiaWRhbmcgeWFuZyB0ZXJzZWRpYSB1bnR1ayBrZWxhcyB5YW5nIHNlc3VhaS4gRW50cmkgYmlkYW5nIGRpbmFtaXMgaGFydXMgc2VzdWFpIGRlbmdhbiBza2VtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdNZW5lbnR1a2FuIGtlZGFsYW1hbiByZWxhc2kgZGVmYXVsdCB5YW5nIGFrYW4gZGl0YW1waWxrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYXRyaWJ1dCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSB5YW5nIGRpdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0IHVudHVrIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQgdW50dWsgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kuIENvbnRvaDogIktleSIgaGFydXMgbWVtaWxpa2kgbmFtYSBCaWRhbmcgRGluYW1pcyBkYWxhbSBoYWwgaW5pIFwnWFwnLCAiQ29udGVudCIgaGFydXMgbWVtaWxpa2kgbmlsYWkgQmlkYW5nIERpbmFtaXMgdGVyZ2FudHVuZyBwYWRhIGplbmlzIEJpZGFuZyBEaW5hbWlzLCBUZWtzOiBcJ3Rla3NcJywgRHJvcGRvd246IFwnMVwnLCBUYW5nZ2FsL1dha3R1OiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyID0gMTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoID0gMDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXkgPSAyNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXIgPSAwMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZSA9IDAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kID0gMDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXIgPSAyMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aCA9IDAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXkgPSAyNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91ciA9IDIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGUgPSA1OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kID0gNTk7XCcgZGFuIGF0YXUgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQgPSBtaW5nZ3U7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0ID0gU2ViZWx1bTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWUgPSA3XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gc3Vib2JqZWsgZGVmYXVsdCBkYXJpIGtlbGFzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGtvbG9tIENJIHlhbmcgdGVyc2VkaWEgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSB0ZXJnYW50dW5nIHBhZGEga2VsYXMgQ0kuIFNldGlhcCBlbnRyaSBoYXJ1cyB0ZXJkaXJpIGRhcmkgbmFtYSBrZWxhcyBkYW4gbGFyaWsga29sb20geWFuZyB0ZXJzZWRpYSB1bnR1ayBrZWxhcyB5YW5nIGJlcnNhbmdrdXRhbi4gRW50cmkgYmlkYW5nIGRpbmFtaXMgaGFydXMgc2VzdWFpIGRlbmdhbiBza2VtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiB0aW5nZ2kgdW50dWsga29tcG9uZW4gZWRpdG9yIHRla3Mga2F5YSB1bnR1ayBsYXlhciBpbmkuIE1hc3Vra2FuIG5vbW9yIChwaWtzZWwpIGF0YXUgbmlsYWkgcGVyc2VuIChyZWxhdGlmKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4ganVtbGFoIGJhcmlzIHVudHVrIHBlbmd1YmFoIGRlZmluaXNpQ0kgcGFkYSBhbnRhcm11a2EgQWRtaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTWVuZW50dWthbiB1cnV0YW4gc3RhdHVzIGluc2lkZW4gZGFyaSB0aW5nZ2kgKG1pcy4ga3J1c2lhbCkga2UgcmVuZGFoIChtaXMuIGZ1bmdzaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHN0YXR1cyBwZW55ZWJhcmFuIHlhbmcgcmVsZXZhbiBkaSBtYW5hIHRpa2V0IHlhbmcgZGl0YXV0a2FuIGRhcGF0IG1lbWVuZ2FydWhpIHN0YXR1cyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgbGF5YXIgQWdlbnRJVFNNQ29uZmlnSXRlbSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgTGF5YXIgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGJhdGFzIHBlbmNhcmlhbiB1bnR1ayBsYXlhciBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYmF0YXMgcGVuY2FyaWFuIHVudHVrIGxheWFyIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVuZW50dWthbiBrb2xvbSBDSSB5YW5nIGRpdGFtcGlsa2FuIGRhbGFtIHRhbXBpbGFuIGtvbXBsZWtzIHRhYmVsIHRhdXRhbiB1bnR1ayBzZW11YSBrZWxhcyBDSS4gSmlrYSB0aWRhayBhZGEgZW50cmksIG1ha2Ega29sb20gZGVmYXVsdCBha2FuIGRpdGFtcGlsa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29sb20geWFuZyBkaXRhbXBpbGthbiBkYXJpIENJIGRpIGxpbmsgdGFiZWwgdGFtcGlsYW4geWFuZyBrb21wbGVrcywgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgZGlhd2FsaSBkZW5nYW4gbmFtYSBrZWxhcyBkYW4gdGl0aWsgZHVhIGdhbmRhIChpLmUuIENvbXB1dGVyOjopLiBBZGEgYmViZXJhcGEgQ0ktQXRyaWJ1dCB5YW5nIHVtdW0gdW50dWsgc2VtdWEgQ0kgKENvbnRvaCB1bnR1ayBLb21wdXRlciBrZWxhczogS29tcHV0ZXIgOjogTmFtYSwgS29tcHV0ZXIgOjogQ3VyRGVwbFN0YXRlLCBLb21wdXRlciA6OiBDcmVhdGVUaW1lKS4gVW50dWsgbWVudW5qdWtrYW4gaW5kaXZpZHUgQ0ktQXRyaWJ1dCBzZWJhZ2FpbWFuYSBkaWRlZmluaXNpa2FuIGRhbGFtIENJLURlZmluaXRpb24sIHNrZW1hIGJlcmlrdXQgaGFydXMgZGlndW5ha2FuIChtaXNhbG55YSB1bnR1ayBLb21wdXRlciBrZWxhcyk6ICBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmlrYSB0aWRhayBhZGEgZW50cmkgdW50dWsga2VsYXMgQ0ksIG1ha2Ega29sb20gc3RhbmRhciBkaXRhbXBpbGthbiBzZWJhZ2FpbWFuYSBkaWRlZmluaXNpa2FuIGRhbGFtIHBlbmdhdHVyYW4gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgdW50dWsgXCdUaW5kYWthblwnIGRpIHRpbmdrYXQga2V0aWdhIGRhcmkgc3RydWt0dXIgQUNMIEl0ZW0gS29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpdGVtIG1hbmEgeWFuZyB0ZXJzZWRpYSBkaSB0aW5na2F0IHBlcnRhbWEgc3RydWt0dXIgQUNMIEl0ZW0gS29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgZGkgdGluZ2thdCBrZWR1YSBkYXJpIHN0cnVrdHVyIEFDTCBJdGVtIEtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGplbmlzIHRhdXRhbiBtYW5hIChkaW5hbWFpIGRhcmkgcGVyc3Bla3RpZiB0aWtldCkgeWFuZyBkYXBhdCBtZW1lbmdhcnVoaSBzdGF0dXMgQ0kgeWFuZyBkaXRhdXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gamVuaXMgdGlrZXQgbWFuYSB5YW5nIGRhcGF0IG1lbWVuZ2FydWhpIHN0YXR1cyBDSSB5YW5nIGRpdGF1dGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdQZW1iYXJ1YW4gRGVmaW5pc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ01lbmdoYXB1cyBJdGVtIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnV2FybmEgU3RhdHVzIFBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIGJpZGFuZyBkaW5hbWlzIHlhbmcgbWVuYW5kYWkgZGVmaW5pc2kgaXRlbSBrb25maWd1cmFzaSBzZWJhZ2FpIHRpZGFrIHNpbmtyb24sIGppa2EgbWVuZ2FuZHVuZyBwZXJ1YmFoYW4gYmlkYW5nIGRpbmFtaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGxheWFyIGJpZGFuZyBJVFNNIHRhbWJhaGFuIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgbGF5YXIgaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciBpdGVtIGtvbmZpZ3VyYXNpIHRpbmRha2FuIG1hc3NhbCB1bnR1ayBhZ2VuIGZyb250ZW5kIHVudHVrIGJla2VyamEgcGFkYSBsZWJpaCBkYXJpIHNhdHUgaXRlbSBrb25maWd1cmFzaSBwYWRhIHN1YXR1IHdha3R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIHRpbmRha2FuIG1hc3NhbCBpdGVtIGtvbmZpZ3VyYXNpIGhhbnlhIHVudHVrIGtlbG9tcG9rIHRlcmRhZnRhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnTWVuZ2FrdGlma2FuL21lbm9uYWt0aWZrYW4gZnVuZ3Npb25hbGl0YXMgdW50dWsgbWVtZXJpa3NhIGl0ZW0ga29uZmlndXJhc2kgSVRTTSB1bnR1ayBuYW1hIHlhbmcgdW5pay4gU2ViZWx1bSBtZW5nYWt0aWZrYW4gb3BzaSBpbmksIEFuZGEgaGFydXMgbWVtZXJpa3NhIHNpc3RlbSBBbmRhIHVudHVrIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBzdWRhaCBhZGEgZGVuZ2FuIG5hbWEgZ2FuZGEuIEFuZGEgZGFwYXQgbWVsYWt1a2FuIGluaSBkZW5nYW4gcGVyaW50YWgga29uc29sIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIHVudHVrIG1lbmdhdHVyIHN0YXR1cyBrb25maWd1cmFzaSBwYWRhIHRhdXRhbiBrb25maWd1cmFzaSB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQmlkYW5nIGluZGVrcyBpdGVtIGtvbmZpZ3VyYXNpLCBkaWd1bmFrYW4gdW50dWsgcGVuY2FyaWFuIHRla3MgbGVuZ2thcC4gQmlkYW5nIGp1Z2EgZGlzaW1wYW4sIHRldGFwaSB0aWRhayB3YWppYiB1bnR1ayBmdW5nc2lvbmFsaXRhcyBrZXNlbHVydWhhbi4gUGVueWVydGFhbiBsYW1waXJhbiBkYXBhdCBkaW5vbmFrdGlma2FuIGRlbmdhbiBtZW5nYXR1ciBlbnRyaSBrZSAwIGF0YXUgbWVuZ2hhcHVzbnlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQmlkYW5nIHlhbmcgZGlzaW1wYW4gZGFsYW0gaW5kZWtzIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkaWd1bmFrYW4gdW50dWsgaGFsLWhhbCBsYWluIHNlbGFpbiBwZW5jYXJpYW4gdGVrcyBsZW5na2FwLiBVbnR1ayBmdW5nc2lvbmFsaXRhcyB5YW5nIGxlbmdrYXAsIHNlbXVhIGJpZGFuZyB3YWppYiBkaWlzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdVbnR1ayBzZXRpYXAgbGF5YW5hbiB3ZWIgKGtleSksIHNlYnVhaCBsYXJpayBrZWxhcyAodmFsdWUpIGRhcGF0IGRpZGVmaW5pc2lrYW4gZGkgbWFuYSBpbXBvciBkaWJhdGFzaS4gVW50dWsgc2VtdWEga2VsYXMgeWFuZyBkaXBpbGloLCBhdGF1IHNlbXVhIGtlbGFzIHlhbmcgYWRhLCBhdHJpYnV0IHBlbmdlbmFsIGhhcnVzIGRpcGlsaWggZGFsYW0ga29uZmlndXJhc2kgcGVtYW5nZ2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYXNpIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW1hbmdnaWwgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhc2kgbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhc2kgbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0l0ZW0gS29uZmlndXJhc2kgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdTdGF0dXNJbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rlcm1hc3VrIHN0YXR1cyBwZW5lcmFwYW4gZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVybWFzdWsgc3RhdHVzIGluc2lkZW4gZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnSnVtbGFoIG1ha3NpbXVtIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRhbGFtIGhhc2lsIG9wZXJhc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHVudHVrIG1lbWVyaWtzYSBrZWxvbXBvayB5YW5nIGJlcnRhbmdndW5nIGphd2FiIHVudHVrIGtlbGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHVudHVrIG1lbWVyaWtzYSBrZWxvbXBvayB5YW5nIGJlcnRhbmdndW5nIGphd2FiIHVudHVrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgdW50dWsgbWVuZ2hhc2lsa2FuIHN0YXRpc3RpayBjb25maWcgYmFyYW5nIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTW9kdWwgTmFtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdWwgQW5na2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIHNldGlhcCBoYWxhbWFuIGhhc2lsIHBlbmNhcmlhbiBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIHNldGlhcCBoYWxhbWFuIGhhc2lsIHBlbmNhcmlhbiBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrIHlhbmcgYWthbiBkaWNhcmksIGJlcmFwYSBiYW55YWsgZW50cmkgZGFuIGF0cmlidXQgbWFuYSB5YW5nIGFrYW4gZGl0YW1waWxrYW4uIEF0cmlidXQgQ29uZmlnSXRlbSBoYXJ1cyBzZWNhcmEgZWtzcGxpc2l0IGRpc2ltcGFuIG1lbGFsdWkgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnR2FtYmFyYW4gdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrYXRlZ29yaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRpIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGZpbHRlciBrb2xvbSBwYWRhIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kga2VjaWwuIEhhcmFwIGRpcGVyaGF0aWthbjogbWVuZ2F0dXIgXCdBY3RpdmVcJyBrZSAwIGhhbnlhIGFrYW4gbWVuY2VnYWggYWdlbiBtZW5nZWRpdCBwZW5nYXR1cmFuIGdydXAgaW5pIGRhbGFtIHByZWZlcmVuc2kgcHJpYmFkaSBtZXJla2EsIHRldGFwaSBtYXNpaCBtZW11bmdraW5rYW4gYWRtaW5pc3RyYXRvciB1bnR1ayBtZW5nZWRpdCBwZW5nYXR1cmFuIGF0YXMgbmFtYSBwZW5nZ3VuYSBsYWluLiBHdW5ha2FuIFwnUHJlZmVyZW5jZUdyb3VwXCcgdW50dWsgbWVuZ29udHJvbCBkaSBhcmVhIG1hbmEgcGVuZ2F0dXJhbiBpbmkgaGFydXMgZGl0YW1waWxrYW4gZGkgYW50YXJtdWthIHBlbmdndW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgYmFja2VuZCBkYXNoYm9hcmQgcGVsYW5nZ2FuIHBlbmdndW5hIGRhZnRhciBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLiAiQmF0YXMiIGFkYWxhaCBqdW1sYWggZW50cmkgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdC4gIkdydXAiIGRpZ3VuYWthbiB1bnR1ayBtZW1iYXRhc2kgYWtzZXMga2UgcGx1Z2luIChlIGcgR3J1cDouLiBBZG1pbjsgZ3JvdXAxLCBncm91cDI7KS4gIkRlZmF1bHQiIG1lbmVudHVrYW4gYXBha2FoIHBsdWdpbiBkaWFrdGlma2FuIHNlY2FyYSBkZWZhdWx0IGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSBtZW5nYWt0aWZrYW5ueWEgc2VjYXJhIG1hbnVhbC4gIkNhY2hlVFRMTG9jYWwiIGFkYWxhaCB3YWt0dSBjYWNoZSBkaSBtZW5pdCB1bnR1ayBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGJhY2tlbmQgZGFzaGJvYXJkIHBlbGFuZ2dhbiBwZW5nZ3VuYSBkYWZ0YXIgZ2FtYmFyYW4gZGFyaSBhbnRhcm11a2EgYWdlbi4gIkJhdGFzIiBhZGFsYWgganVtbGFoIGVudHJpIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQuICJHcnVwIiBkaWd1bmFrYW4gdW50dWsgbWVtYmF0YXNpIGFrc2VzIGtlIHBsdWdpbiAoZSBnIEdydXA6Li4gQWRtaW47IGdyb3VwMSwgZ3JvdXAyOykuICJEZWZhdWx0IiBtZW5lbnR1a2FuIGFwYWthaCBwbHVnaW4gZGlha3RpZmthbiBzZWNhcmEgZGVmYXVsdCBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgbWVuZ2FrdGlma2FubnlhIHNlY2FyYSBtYW51YWwuICJDYWNoZVRUTExvY2FsIiBhZGFsYWggd2FrdHUgY2FjaGUgZGkgbWVuaXQgdW50dWsgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayB3YXJuYSBzdGF0ZSBwZW55ZWJhcmFuIGRhbGFtIHByZWZlcmVuc2kgbWVsaWhhdCBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgc3RhdGUgcGVueWViYXJhbiBkYWxhbSBwcmVmZXJlbnNpIG1lbGloYXQgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBncnVwIGNvbm90aCBwZXJpemluYW4gZGFyaSBhdHJpYnV0IGthdGFsb2cgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCBuYW1hIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCBub21vciB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaSBtYW5hIGl0ZW0ga29uZmlndXJhc2kgYWthbiBkaXRhbXBpbGthbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCBzdHJpbmcgdmVyc2kgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCB0b29sa2l0IHRlbXBsYXRlIHN0cmluZyB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRpIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBwZW1pY3UgdmVyc2kgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ01lbGFrdWthbiB0aW5kYWthbiBkaWtvbmZpZ3VyYXNpIHVudHVrIHNldGlhcCBhY2FyYSAoc2ViYWdhaSBJbnZva2VyKSB1bnR1ayBzZXRpYXAgTGF5YW5hbiBXZWIgZGlrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXAgSXppbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiB0aW5kYWthbiBsYW1waXJhbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4ga29uZmlndXJhc2kgSVRTTSBsYXlhciBwZW5jYXJpYW4gaXRlbSBkYWxhbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgdGFtcGlsYW4gcG9ob24gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBrb25maWd1cmFzaSBJVFNNIGl0ZW0gbGF5YXIgem9vbSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBhZGQgSVRTTSBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIElUU00gbWFzc2FsIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBtZW5nZWRpdCBJVFNNIGxheWFyIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIHNlamFyYWggSVRTTSBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiBZYW5nIGRpcGVybHVrYW4gdW50dWsgcmV2aWV3IHVzaW5nIFNlamFyYWggSVRTTSBMYXlhciBJdGVtIEtvbmZpZ3VyYXNpIEFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnSGFrIGlzdGltZXdhIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5naGFwdXMgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdNZW5jYXJpIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdNZW5nYXR1ciBzdGF0dXMgaW5zaWRlbiBDSSBzZWNhcmEgb3RvbWF0aXMga2V0aWthIFRpa2V0IGRpdGF1dGthbiBrZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdHVyIHN0YXR1cyBwZW55ZWJhcmFuIGRpIGl0ZW0ga29uZmlndXJhc2kgbGF5YXIgdGVyYmVzYXIgZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXR1ciBzdGF0dXMga2VqYWRpYW4gcGFkYSBpdGVtIGtvbmZpZ3VyYXNpIGxheWFyIHRlcmJlc2FyIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHlhbmcgbWVtdW5na2lua2FuIG1lbmdodWJ1bmdrYW4gaXRlbSBrb25maWd1cmFzaSBkZW5nYW4gb2JqZWsgbGFpbiBkaSBjb25maWcgYmFyYW5nIHBhbmRhbmdhbiB6b29tIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmdha3NlcyBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBpdGVtIGtvbmZpZ3VyYXNpIGdhbWJhcmFuIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuYW1waWxrYW4gdGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gem9vbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01lbmFtcGlsa2FuIHRhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmFtcGlsa2FuIHRhdXRhbiBpdGVtIGtvbmZpZ3VyYXNpIHNlYmFnYWkgVGFtcGlsYW4gUG9ob24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmR1cGxpa2FzaSBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgaXRlbSBrb25maWd1cmFzaSBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZHVwbGlrYXNpIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gem9vbS1ueWEgZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nZWRpdCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5jZXRhayBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBzZWphcmFoIGNvbmZpZyBpdGVtICh1cnV0YW4gdGVyYmFsaWspIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdLYXRlZ29yaSBkZWZhdWx0IHlhbmcgZGl0YW1waWxrYW4sIGppa2EgdGlkYWsgYWRhIHlhbmcgZGlwaWxpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1BlbmdlbmFsIHVudHVrIGl0ZW0ga29uZmlndXJhc2ksIG1pc2FsbnlhIENvbmZpZ0l0ZW0gIywgTXlDb25maWcgSXRlbSAjLiBkZWZhdWx0IGFkYWxhaCBDb25maWdJdGVtICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnTWVtaWN1IHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2ggc2VjYXJhIG90b21hdGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRWtzcHJlc2kgU3RyaW5nIFZlcnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHVsIFN0cmluZyBWZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdQZW1pY3UgVmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0FwYWthaCBla3Nla3VzaSBDb25maWdJdGVtQUNMIGRhcGF0IGRpaGluZGFyaSBkZW5nYW4gbWVtZXJpa3NhIGtldGVyZ2FudHVuZ2FuIGJpZGFuZyB5YW5nIGRpLWNhY2hlLiBIYWwgaW5pIGRhcGF0IG1lbmluZ2thdGthbiB3YWt0dSBwZW11YXRhbiBmb3JtdWxhciwgdGV0YXBpIGhhcnVzIGRpbm9uYWt0aWZrYW4sIGppa2EgQUNMTW9kdWxlcyBha2FuIGRpZ3VuYWthbiB1bnR1ayBJVFNNQ29uZmlnSXRlbSBkYW4gRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0luZm9ybWFzaSB1bXVtIG1hbmEgeWFuZyBkaXRhbXBpbGthbiBkaSBoZWFkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncGFzY2Fwcm9kdWt0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByYXByb2R1a3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGlmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluY2kgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbmNpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW5jaSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbmNpICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFrIDE5IGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGluY2kgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW5jaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFrIDIxIGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluY2kgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdSYWsgMjMgaW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW5jaSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW5jaSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluY2kgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW5jaSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW5jaSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW5jaSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW5jaSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaSAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluY2kgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBpbmNpICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgaW5jaSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW5jaSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbmNpICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGluY2kgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbmNpICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW5jaSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2kgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluY2kgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluY2kgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW5jaSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluY2kgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0FrdW50YW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0Fsb2thc2kgQWxhbWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVwb24gQW5hbG9nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdKZW5pcyBBbGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhc2l0YXMgQmF0ZXJhaSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0plbmlzIEJhdGVyYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdNZW1iYW5ndW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0FudGFybXVrYSBCdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdLZWxhcyBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFzaXRhcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXNpdGFzIHBlciBrYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOb21vciBLYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ1BlbWJhY2EgS2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnSmVuaXMgS2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ1NlcnRpZmlrYXQgS2xpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnUGVyYW5na2F0IEx1bmFrIEtsaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpIGtsaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnS2VjZXBhdGFuIGphbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnU2VydGlmaWthdCBQZW5hbmRhdGFuZ2FuYW4gS29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZXBvbiBLb25mZXJlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBLb25zdWx0YXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0h1YnVuZ2kgRGlzdHJpYnV0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS29udGFpbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnS29udHJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnSmVuaXMgS29udHJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0phbmdrYSB3YWt0dSBrb250cmFrIGRhcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnSmFuZ2thIHdha3R1IGtvbnRyYWsgc2FtcGFpIGRlbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWxlcG9uIFRhbnBhIEthYmVsIChUZWxlcG9uIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXQgYmlheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdKdW1sYWggbGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnVGFuZ2dhbCBQZW1idWF0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JhayBLaHVzdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgRGljYWRhbmdrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ1RhbmdnYWwgRmFrdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdUYW5nZ2FsIFBlbWVzYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnVGFuZ2dhbCBXYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdUYW5nZ2FsIHJpbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFBlbmFuZGF0YW5nYW5hbiBEb2t1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ1NlcnRpZmlrYXQgRW1haWwgKFNlcnRpZmlrYXQgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdLb250cmFrIEtlcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnQWxhbWF0IElQIEFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnQWtoaXIgZHVrdW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdUYW5nZ2FsIEtlZGFsdXdhcnNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdIYXJkIERyaXZlIEVrc3Rlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdQZW55aW1wYW5hbiBFbmVyZ2kgUm9kYSBHaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFrdG9yIEJlbnR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBXYXJhbGFiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBVbXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnS2FydHUgR3JhZmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdLYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdQZXJhbmdrYXQga2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBQZXJhbmdrYXQgS2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnQmVyYXQgUGVyYW5na2F0IEtlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnTWFuYWplbWVuIElkZW50aXRhcyBkYW4gQWtzZXMgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ05vbW9yIFBlcnNlZGlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdCaWF5YSBwZW1iYWxpa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTm9tb3IgRmFrdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2V5Ym9hcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKExheWFyIEtyaXN0YWwgQ2FpciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChMaWdodCBFbWl0dGluZyBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZXBvbiBydW1haCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMaW50YW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGFwaXNhbiAxOiBMYXBpc2FuIEZpc2lrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhcGlzYW4gMjogTGFwaXNhbiBUYXV0YW4gRGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnTGFwaXNhbiAzOiBMYXBpc2FuIEphcmluZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhcGlzYW4gMzogTGFwaXNhbiBKYXJpbmdhbiAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhcGlzYW4gNDogTGFwaXNhbiBUcmFuc3BvcnRhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhcGlzYW4gNTogTGFwaXNhbiBTZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhcGlzYW4gNjogTGFwaXNhbiBQcmVzZW50YXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFwaXNhbiA3OiBMYXBpc2FuIEFwbGlrYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gU2V3YSBNZW55ZXdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBMaXNlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdLdW5jaSBMaXNlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0plbmlzIExpc2Vuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcmlvZGUgbGlzZW5zaSBkYXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTWFzYSBiZXJsYWt1IGxpc2Vuc2kgc2FtcGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXRlcmFpIExpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXRlcmFpIExpdGhpdW0tSW9uIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBQaW5qYW1hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnQmVybG9rYXNpIGRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0J1anVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdXNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnS2FwYXNpdGFzIEJlYmFuIE1ha3NpbXVtIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdKZW5pcyBNZW1vcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ1JhayBNaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOb21vciBwb25zZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnU2VsdWxlciAvIFRlcnRhbmFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNrcmlwc2kgTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUmVzb2x1c2kgTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdVa3VyYW4gTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvIEphcmluZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0xhcGlzYW4gSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcmFpIE5pa2VsLUthZG1pdW0gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXJhaSBOaWtlbC1Mb2dhbSBIaWRyaWRhIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdQZXJqYW5qaWFuIEtlcmFoYXNpYWFuIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQnVrdSBjYXRhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnSnVtbGFoIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdKdW1sYWggbW9kdWwgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0p1bWxhaCBrYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoRGlvZGEgUGVtYW5jYXIgQ2FoYXlhIE9yZ2FuaWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0JpYXlhIG9wZXJhc2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ05vbW9yIFBlc2FuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdMYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0tlbHVhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gS2VtaXRyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTm9tb3IgVGVsZXBvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnSmVuaXMgVGVsZXBvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0ludGkgRmlzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdQZW5naXJpbWFuIERheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdEaWJlbGkgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0tlZGFsYW1hbiBSYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0IFJhayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1J1YW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0dSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFNTTCAvIFRMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0tvbnRyYWsgUGVuanVhbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVwb24gU2F0ZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXRlcmFpIEFzYW0gVGltYmFsIFRlcnNlZ2VsIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTm9tb3Igc2VyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgTHVuYWsgU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBMYXlhbmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnVGFnIExheWFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnSmVuaXMgU29rZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgbHVuYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdQZW1iaWNhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnTXVsYWkgQWxhbWF0IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdQZW55aW1wYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpc2kgUGVueWltcGFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdBbmFrIFBlcnVzYWhhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1JpbmdrYXNhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0tsaWVuIFRpcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdCZW5hbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdQZXRpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIGthcnR1IGdyYWZpcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgTGF5YXIgU2VudHVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnTWVuYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnSGVhZHNldCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlcG9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0thbWVyYSB3ZWInOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/it_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRpIGdlbmVyYWxpIGRpIGZ1bnppb25hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0ltcG9zdGF6aW9uaSBwZXIgaSBkYXRpIGRpIHJpY2hpZXN0YSBpbiBlbnRyYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW1wb3N0YXppb25pIHBlciBpIGRhdGkgZGkgcmlzcG9zdGEgaW4gdXNjaXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbmUgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYSBsYSBkZWZpbml6aW9uZSBkZWxsYSBjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhIGRlbGxhIGRlZmluaXppb25lIGRlbCBydW9sbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2NoZXR0aSBkaSBjbGFzc2kgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnUXVpIMOoIHBvc3NpYmlsZSBpbXBvcnRhcmUgaSBwYWNjaGV0dGkgZGkgY2xhc3NpIFJlYWR5MkltcG9ydCwgY2hlIHByZXNlbnRhbm8gZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBpw7kgY29tdW5pLiBTaSBub3RpIGNoZSBwb3RyZWJiZXJvIGVzc2VyZSBuZWNlc3NhcmllIGFsY3VuZSBjb25maWd1cmF6aW9uaSBhZ2dpdW50aXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBZ2dpb3JuYXJlIGxlIGVudGl0w6AgZXNpc3RlbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXJlIGkgYnVuZGxlIGRlbGxhIGNsYXNzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgVm9jZSBSdW9sbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGVyIGNsYXNzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlemlvbmFyZSB1bmEgY2xhc3NlIGRhbGxcJ2VsZW5jbyBwZXIgY3JlYXJlIHVuIG51b3ZvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0F6aW9uZSBpbiBibG9jY28gZGkgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0byBkaSBkaXN0cmlidXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0NvbGxlZ2EgYSB1biBhbHRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtZXJvIGFydGljb2xvIGRpIGNvbmZpZ3VyYXppb25lIG5vbiB2YWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0lsIG51bWVybyBkaSB1biBhbHRybyBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY3VpIGNvbGxlZ2Fyc2kuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVnVvaSBkYXZ2ZXJvIGVsaW1pbmFyZSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0lsIG5vbWUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdJbCBub21lIMOoIGdpw6AgaW4gdXNvIGRhIENvbmZpZ0l0ZW1zIGNvbiBpIHNlZ3VlbnRlL2kgbnVtZXIobylpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ051bWVybyBkaSB2ZXJzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZXJvIGRpIHZlcnNpb25lIGRpIHF1ZXN0byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0lsIG51bWVybyBkaSB2ZXJzaW9uZSDDqCBnacOgIHV0aWxpenphdG8gZGFpIENvbmZpZ0l0ZW0gY29uIGlsIHNlZ3VlbnRlIG51bWVybzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRpIGltcGxlbWVudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnU3RvcmlhIGRlbGxhIHZvY2UgZGkgY29uZmlndXJhemlvbmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnV0byBkZWxsbyBzdG9yaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdJc3RhbnRlIGRpIGNyZWF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSBkaSBEZXR0YWdsaW8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnLiBhcnRpY29saSBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZXNzdW4gZGF0byBkaSBjb25maWd1cmF6aW9uZSB0cm92YXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGV6aW9uYXJlIHF1ZXN0YSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRXNlZ3VpIHJpY2VyY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnQ2VyY2FyZSBhbmNoZSBpbiB2ZXJzaW9uaSBwcmVjZWRlbnRpPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1Zpc3VhbGl6emF6aW9uZSBhZCBhbGJlcm8gcGVyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdMaXZlbGxvIGRpIHByb2ZvbmRpdMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBhdmFudGkvaW5kaWV0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTGl2ZWxsbyBtYXNzaW1vIGRpIGNvbGxlZ2FtZW50aSByYWdnaXVudG8gcGVyIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGF0dHVhbGUgZGkgaW1wbGVtZW50YXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF0byBhdHR1YWxlIGRlbGxcJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdVbHRpbWEgbW9kaWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVWx0aW1hIG1vZGlmaWNhIGRpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSSB2b3N0cmkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUmljZXJjYSBkaSBDb25maWdJdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUaXBvIGRpIG9nZ2V0dG8nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmEgY2FtcG8gcGVyIHRpcG8gZGkgb2dnZXR0byc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1ZlcnJhbm5vIGltcG9ydGF0ZSBsZSBzZWd1ZW50aSBjbGFzc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVmVycmFubm8gaW1wb3J0YXRpIGkgc2VndWVudGkgcnVvbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnU2kgbm90aSBjaGUgdmVycmFubm8gY3JlYXRpIGFuY2hlIGkgY2FtcGkgZGluYW1pY2kgZSBsZSBjbGFzc2kgR2VuZXJhbENhdGFsb2cgY29ycmlzcG9uZGVudGkgZSBub24gw6ggcHJldmlzdGEgbGEgcmltb3ppb25lIGF1dG9tYXRpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVnVvaSBjb250aW51YXJlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdTZXJ2b25vIGNsYXNzaSBkaSBlc2VtcGlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbml6aW9uZSBub24gw6ggdW4gaGFzaCBZQU1MIHZhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQYW5vcmFtaWNhOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm9uIHZpZW5lIGZvcm5pdG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8OIIG5lY2Vzc2FyaW8gYWxtZW5vIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vbiBoYWkgYWNjZXNzbyBpbiBzY3JpdHR1cmEgYSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOZXNzdW5hIGRlZmluaXppb25lIMOoIHN0YXRhIGRlZmluaXRhIHBlciBsYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdWb2NlIGRpIGNvbmZpZ3VyYXppb25lICIlcyIgbm9uIHRyb3ZhdGEgbmVsIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0ltcG9zc2liaWxlIGVsaW1pbmFyZSBsXCdJRCBkaSBjb25maWd1cmF6aW9uZSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lc3N1bmEgdmVyc2lvbmUgdHJvdmF0YSBwZXIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05lc3N1biBhY2Nlc3NvIMOoIGNvbmNlc3NvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmlsZSBtb3N0cmFyZSBsYSBjcm9ub2xvZ2lhLCBub24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJpbGUgbW9zdHJhcmUgbGEgY3Jvbm9sb2dpYSwgbmVzc3VuIGRpcml0dG8gZGkgYWNjZXNzbyBjb25jZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ051b3ZvIENvbmZpZ0l0ZW0gKElEID0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ051b3ZhIHZlcnNpb25lIChJRCA9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSBhZ2dpb3JuYXRvIChudW92bz0lcywgdmVjY2hpbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZWxpbWluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0NvbGxlZ2FtZW50byBhICVzICh0aXBvPSVzKSBhZ2dpdW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnQ29sbGVnYW1lbnRvIGEgJXMgKHRpcG89JXMpIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pemlvbmUgZGkgQ29uZmlnSXRlbSBhZ2dpb3JuYXRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0byAlcyBhZ2dpb3JuYXRvIGRhICIlcyIgYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb25lICVzIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBuZXNzdW4gZGlyaXR0byBkaSBhY2Nlc3NvIGNvbmNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub24gdHJvdmF0byBuZWwgZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdzdGFtcGF0byBkYSAlcyBhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSaWZlcmltZW50byc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgbm9uIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZXNzdW4gQ2xhc3NJRCDDqCBkYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05lc3N1biBkaXJpdHRvIGRpIGFjY2Vzc28gcGVyIHF1ZXN0YSBjbGFzc2UgZGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lc3N1biByaXN1bHRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlndXJhIGkgcmlzdWx0YXRpIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvLCBub24gdmllbmUgY29uY2Vzc28gYWxjdW4gZGlyaXR0byBkaSBhY2Nlc3NvIHBlciBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vbiB0cm92YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOZXNzdW5hIHZlcnNpb25lIHRyb3ZhdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdnZlcnRpbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xvIHN0YXRvIGRpIGltcGxlbWVudGF6aW9uZSBkaSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMbyBzdGF0byBkaSBpbmNpZGVudGUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmVzc3VuIHBlcm1lc3NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBub24gdmFsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyYW1ldHJpIGRpIHJpY2VyY2Egbm9uIHZhbGlkaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBtb3N0cmF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRpIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkaSBzdGF0byBkZWxsXCdpbmNpZGVudGUgY29ycmVudGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnZnJhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cml6aW9uaSBkaSBjbGFzc2UgcGVyIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaXppb25pIGRpIGNsYXNzZSBwZXIgbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpY2EgKHZlcnNpb25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRpIHJpZmVyaW1lbnRvIGRlbCBjb2xsZWdhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgcXVlc3RvIGNvbGxlZ2FtZW50byBzaSBhcHBsaWNhIGFsIENvbmZpZ0l0ZW0gbyBhbGxhIHZlcnNpb25lIHN0YXRpY2EgZGVsbFwnb2dnZXR0byBkaSByaWZlcmltZW50by4gSWwgY2FsY29sbyBkZWxsbyBTdGF0byBjb3JyZW50ZSBkZWxsXCdpbmNpZGVudGUgdmllbmUgZXNlZ3VpdG8gc29sbyBzdWkgY29sbGVnYW1lbnRpIGRpbmFtaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGV6aW9uYXJlIGxcJ2F0dHJpYnV0byBpbiBiYXNlIGFsIHF1YWxlIGdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSB2ZXJyYW5ubyByaWNlcmNhdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgc3RydXR0dXJhIGRpIGJhc2Ugbm9uIMOoIHZhbGlkYS4gRm9ybmlyZSB1biBoYXNoIGNvbiBpIGRhdGkgaW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ8OIIG5lY2Vzc2FyaW8gaW5pemlhcmUgbGEgc3RyaW5nYSBZQU1MIGNvbiBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdJbXBvc3NpYmlsZSBlbGltaW5hcmUgbGEgdGFiZWxsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOb24gc29ubyBzdGF0aSB0cm92YXRpIGNhbXBpIGRpbmFtaWNpIHJpbGV2YW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0ltcG9zc2liaWxlIGluc2VyaXJlIG5lbGxhIHRhYmVsbGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcml0ZSAwIHJpZ2hlIG5lbGxhIHRhYmVsbGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ051bWVybyBtYXNzaW1vIGRpIHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGF6aW9uZS9lc3BvcnRhemlvbmUgZGkgYWxsZWdhdGkgKGNvbWUgdWx0aW1lIHZvY2kgcGVyIHJpZ2EpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbmUgU3RyaW5nYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvcmUgbmVsbGEgc2luY3Jvbml6emF6aW9uZSBkZWxsZSBkZWZpbml6aW9uaS4gQ29udHJvbGxhcmUgaWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnTGUgZGVmaW5pemlvbmkgZGkgSVRTTUNvbmZpZ0l0ZW0gbm9uIHNvbm8gc2luY3Jvbml6emF0ZS4gRGlzdHJpYnVpcmUgbGUgbW9kaWZpY2hlIGFpIGNhbXBpIGRpbmFtaWNpIGRpIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnU2NhZHV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW56aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQaWFuaWZpY2F0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSaXBhcmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUml0aXJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXNpb25hdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Bhbm9yYW1pY2EgZSBjb25mZXJtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhemlvbmUgZGkgY2xhc3NpL3J1b2xpIGUgZGVpIHJlbGF0aXZpIGNhbXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2kgw6ggdmVyaWZpY2F0byB1biBlcnJvcmUgZHVyYW50ZSBsXCdpbXBvcnRhemlvbmUgZGVsbGEgY2xhc3NlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gTmFzY29zdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1vc3RyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdDb25zZW50ZSBjb25kaXppb25pIGRpIHJpY2VyY2EgZXN0ZXNlIG5lbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLiBDb24gcXVlc3RhIGZ1bnppb25lIMOoIHBvc3NpYmlsZSBjZXJjYXJlLCBhZCBlc2VtcGlvLCBpbCBub21lIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNvbiBjb25kaXppb25pIGRlbCB0aXBvICIoKmtleTEqJiYqa2V5MiopIiBvICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQ29uc2VudGUgY29uZGl6aW9uaSBkaSByaWNlcmNhIGVzdGVzZSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuIENvbiBxdWVzdGEgZnVuemlvbmUgw6ggcG9zc2liaWxlIGNlcmNhcmUsIGFkIGVzZW1waW8sIGlsIG5vbWUgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY29uIGNvbmRpemlvbmkgZGVsIHRpcG8gIigqa2V5MSomJiprZXkyKikiIG8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSXMgYXNzZWduYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzc2VnbmF0aSBhbGxhIHNvY2lldMOgIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNzZWduYXRpIGFsbFwndXRlbnphIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0ltcG9zdGF6aW9uaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDZXJjYSB1biBub21lIHVuaXZvY28gc29sbyBhbGxcJ2ludGVybm8gZGVsbGEgc3Rlc3NhIGNsYXNzZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBpbCBjaGUgc2lnbmlmaWNhIGNoZSBvZ25pIENvbmZpZ0l0ZW0gZXNpc3RlbnRlIHZpZW5lIHByZXNvIGluIGNvbnNpZGVyYXppb25lIHF1YW5kbyBzaSBjZXJjYW5vIGR1cGxpY2F0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1NjZWdsaWVyZSB1biBtb2R1bG8gcGVyIGFwcGxpY2FyZSB1bm8gc2NoZW1hIGRpIGRlbm9taW5hemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdTY2VnbGllcmUgdW4gbW9kdWxvIHBlciBhcHBsaWNhcmUgdW5vIHNjaGVtYSBudW1lcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnU2NlZ2xpZXJlIHVuIG1vZHVsbyBwZXIgYXBwbGljYXJlIHVubyBzY2hlbWEgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU2NlZ2xpZXJlIGdsaSBhdHRyaWJ1dGkgcGVyIGF0dGl2YXJlIGxhIGNyZWF6aW9uZSBkaSB1bmEgbnVvdmEgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1NjZWdsaWVyZSBsZSBjYXRlZ29yaWUgZGEgYXNzZWduYXJlIGEgcXVlc3RhIGNsYXNzZSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJpIHBlciBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbGEgY29sb25uYSBwZXIgbGEgcGFub3JhbWljYSBkaSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb25uZSBjaGUgcG9zc29ubyBlc3NlcmUgZmlsdHJhdGUgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuIE5vdGE6IFNvbm8gYW1tZXNzaSBzb2xvIGdsaSBhdHRyaWJ1dGkgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZSBpIGNhbXBpIGRpbmFtaWNpIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQWdnaXVuZ2kgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnTW9kaWZpY2EgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxvIGV2ZW50aSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjaGUgY29uc2VudGUgbGEgcmVnaXN0cmF6aW9uZSBuZWxsYSBjcm9ub2xvZ2lhIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWxvIGV2ZW50byBwZXIgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGNoZSBhZ2dpb3JuYSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgYWxsYSBsb3JvIGRlZmluaXppb25lIGNvcnJlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZ3VyYSBjcm9ub2xvZ2lhIGFydGljb2xpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdTdGFtcGEgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhIGxvIHpvb20gZGVsbFwnb2dnZXR0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdWaXN0YSBhZCBhbGJlcm8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0kgQ29uZmlnSXRlbSBkZWxsZSBzZWd1ZW50aSBjbGFzc2kgbm9uIHNhcmFubm8gbWVtb3JpenphdGkgc3VsIHNlcnZlciBFbGFzdGljc2VhcmNoLiBQZXIgYXBwbGljYXJlIHF1ZXN0byBhaSBDSSBlc2lzdGVudGksIMOoIG5lY2Vzc2FyaW8gZXNlZ3VpcmUgbGEgbWlncmF6aW9uZSBkZWwgQ0kgdHJhbWl0ZSBsYSBjb25zb2xlLCBkb3BvIGF2ZXIgbW9kaWZpY2F0byBxdWVzdGEgb3B6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnSSBDb25maWdJdGVtIGNvbiBpIHNlZ3VlbnRpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgbm9uIHNhcmFubm8gbWVtb3JpenphdGkgc3VsIHNlcnZlciBFbGFzdGljc2VhcmNoLiBQZXIgYXBwbGljYXJlIHF1ZXN0byBhaSBDSSBlc2lzdGVudGksIMOoIG5lY2Vzc2FyaW8gZXNlZ3VpcmUgbGEgbWlncmF6aW9uZSBkZWwgQ0kgdHJhbWl0ZSBsYSBjb25zb2xlLCBkb3BvIGF2ZXIgbW9kaWZpY2F0byBxdWVzdGEgb3B6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdMaW1pdGUgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIHBhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIGRpIGdlc3Rpb25lIGRlbGxhIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTW9kdWxvIGRpIG1hc3NhIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWb2NlIGRpIGNvbmZpZ3VyYXppb25lIHJpY2VyY2Egcm91dGVyIGJhY2tlbmQgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhIGUgZ2VzdGlzY2kgbGUgZGVmaW5pemlvbmkgcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhIGJpZ2xpZXR0aSBwZXIgaSBDb25maWdJdGVtIGluIG1vbWVudGkgc3BlY2lmaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdJIGNsaWVudGkgcG9zc29ubyB2ZWRlcmUgbGUgdmVyc2lvbmkgc3RvcmljaGUgZGVpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdJIGNsaWVudGkgaGFubm8gbGEgcG9zc2liaWxpdMOgIGRpIHBhc3NhcmUgbWFudWFsbWVudGUgdHJhIGxlIHZlcnNpb25pIHN0b3JpY2hlIGRpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGkgcHJlZGVmaW5pdGkgZGEgdXNhcmUgbmVsbFwnYXR0cmlidXRvIHBlciBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4gRXNlbXBpbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PWFubm87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD11bHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGkgcHJlZGVmaW5pdGkgZGEgdXNhcmUgbmVsbFwnYXR0cmlidXRvIHBlciBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4gRXNlbXBpbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXJlIGxlIGF6aW9uaSBpbiBjdWkgw6ggZGlzcG9uaWJpbGUgdW4gcHVsc2FudGUgZGkgaW1wb3N0YXppb25lIG5lbCB3aWRnZXQgZGVnbGkgb2dnZXR0aSBjb2xsZWdhdGkgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gU2kgbm90aSBjaGUgcXVlc3RlIGF6aW9uaSBkZXZvbm8gYXZlciByZWdpc3RyYXRvIGkgc2VndWVudGkgZmlsZSBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmlzY2UgdW5vIHNjaGVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwZXIgbGUgc3RyaW5naGUgZGkgdmVyc2lvbmUuIFV0aWxpenphdG8gc29sbyBzZSBpbCBtb2R1bG8gU3RyaW5nYSBkaSB2ZXJzaW9uZSDDqCBpbXBvc3RhdG8gc3UgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaXJlIHVuIGluc2llbWUgZGkgY29uZGl6aW9uaSBpbiBiYXNlIGFsbGUgcXVhbGkgdW4gY2xpZW50ZSBwdcOyIHZlZGVyZSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZS4gTGUgY29uZGl6aW9uaSBwb3Nzb25vIGVzc2VyZSBmYWNvbHRhdGl2YW1lbnRlIGxpbWl0YXRlIGEgZGV0ZXJtaW5hdGkgZ3J1cHBpIGRpIGNsaWVudGkuIElsIG5vbWUgw6ggbFwndW5pY28gYXR0cmlidXRvIG9iYmxpZ2F0b3Jpby4gU2Ugbm9uIHZlbmdvbm8gZm9ybml0ZSBhbHRyZSBvcHppb25pLCB0dXR0aSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgc2FyYW5ubyB2aXNpYmlsaSBzb3R0byBxdWVsbGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBlbGltaW5hcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIG90dGVuZXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgYXV0b3JpenphemlvbmkgbmVjZXNzYXJpZSBwZXIgaW1wb3N0YXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmlzY2UgdW4gbW9kdWxvIGRpIHBhbm9yYW1pY2EgcGVyIG1vc3RyYXJlIGxhIHZpc3RhIHJpZG90dGEgZGkgdW4gZWxlbmNvIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmlzY2Ugc2UgbGUgZXRpY2hldHRlIGRlbCB0aXBvIGRpIGNvbGxlZ2FtZW50byBkZXZvbm8gZXNzZXJlIG1vc3RyYXRlIG5lbGxlIGNvbm5lc3Npb25pIGRlaSBub2RpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGVzcHJlc3Npb25pIHJlZ29sYXJpIHNpbmdvbGFybWVudGUgcGVyIGNpYXNjdW5hIGNsYXNzZSBDb25maWdJdGVtIHBlciBjb250cm9sbGFyZSBpbCBub21lIENvbmZpZ0l0ZW0gZSBtb3N0cmFyZSBpIG1lc3NhZ2dpIGRpIGVycm9yZSBjb3JyaXNwb25kZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSBkaXNwb25pYmlsaSBkZWkgQ0kgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBkZWwgQ0kuIE9nbmkgdm9jZSBkZXZlIGVzc2VyZSBjb21wb3N0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGRhIHVuIGFycmF5IGRpIGNhbXBpIGRpc3BvbmliaWxpIHBlciBsYSBjbGFzc2UgY29ycmlzcG9uZGVudGUuIExlIHZvY2kgZGVpIGNhbXBpIGRpbmFtaWNpIGRldm9ubyByaXNwZXR0YXJlIGxvIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2F0dHJpYnV0byBwcmVkZWZpbml0byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgbFwnb3JkaW5hbWVudG8gZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxcJ29yZGluYW1lbnRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxcJ29yZGluYW1lbnRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRlbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBkaSBxdWVzdGEgb3BlcmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgcHJlZGVmaW5pdG8gZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4gU3U6IGlsIHBpw7kgdmVjY2hpbyBpbiBjaW1hLiBHacO5OiBsXCd1bHRpbW8gaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgcHJlZGVmaW5pdG8gZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuIFN1OiBpbCBwacO5IHZlY2NoaW8gaW4gY2ltYS4gR2nDuTogaWwgcGnDuSByZWNlbnRlIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgcHJlZGVmaW5pdG8gZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRpIHF1ZXN0YSBvcGVyYXppb25lLiBTdTogaWwgcGnDuSB2ZWNjaGlvIGluIGNpbWEuIEdpw7k6IGxcJ3VsdGltbyBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUgZGVpIENJIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUsIGEgc2Vjb25kYSBkZWxsYSBjbGFzc2UgZGVsIENJLiBPZ25pIHZvY2UgZGV2ZSBlc3NlcmUgY29tcG9zdGEgZGEgdW4gbm9tZSBkaSBjbGFzc2UgZSBkYSB1biBhcnJheSBkaSBjYW1waSBkaXNwb25pYmlsaSBwZXIgbGEgY2xhc3NlIGNvcnJpc3BvbmRlbnRlLiBMZSB2b2NpIGRlaSBjYW1waSBkaW5hbWljaSBkZXZvbm8gcmlzcGV0dGFyZSBsbyBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5pc2NlIGxhIHByb2ZvbmRpdMOgIHByZWRlZmluaXRhIGRlbGxlIHJlbGF6aW9uaSBkYSBtb3N0cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2F0dHJpYnV0byBwcmVkZWZpbml0byBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBlciBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gZGkgcmljZXJjYSBwcmVkZWZpbml0byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuIEVzZW1waW86ICJLZXkiIGRldmUgYXZlcmUgaWwgbm9tZSBkZWwgY2FtcG8gZGluYW1pY28sIGluIHF1ZXN0byBjYXNvIFwnWFwnLCAiQ29udGVudCIgZGV2ZSBhdmVyZSBpbCB2YWxvcmUgZGVsIGNhbXBvIGRpbmFtaWNvLCBhIHNlY29uZGEgZGVsIHRpcG8gZGkgY2FtcG8gZGluYW1pY28sIFRleHQ6IFwndW4gdGVzdG9cJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIHNvdHRvLW9nZ2V0dG8gcHJlZGVmaW5pdG8gZGVsbGEgY2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIGRpc3BvbmliaWxpIGRlaSBDSSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIGRlbCBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIGNvbXBvc3RhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZGEgdW4gYXJyYXkgZGkgY2FtcGkgZGlzcG9uaWJpbGkgcGVyIGxhIGNsYXNzZSBjb3JyaXNwb25kZW50ZS4gTGUgdm9jaSBkZWkgY2FtcGkgZGluYW1pY2kgZGV2b25vIHJpc3BldHRhcmUgbG8gc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhbHRlenphIGRlbCBjb21wb25lbnRlIGRlbGxcJ2VkaXRvciBkaSB0ZXN0byByaWNjbyBwZXIgcXVlc3RhIHNjaGVybWF0YS4gSW5zZXJpcmUgdW4gbnVtZXJvIChwaXhlbCkgbyB1biB2YWxvcmUgcGVyY2VudHVhbGUgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIG51bWVybyBkaSByaWdoZSBwZXIgQ0kgbFwnZWRpdG9yIGRlbGxlIGRlZmluaXppb25pIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIG5lbGxcJ2ludGVyZmFjY2lhIGRpIGFtbWluaXN0cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBkZWdsaSBzdGF0aSBkZWdsaSBpbmNpZGVudGkgZGEgYWx0byAoZXMuIGNyaXRpY28pIGEgYmFzc28gKGVzLiBmdW56aW9uYWxlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmlzY2UgZ2xpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgcGVydGluZW50aSBpbiBjdWkgaSB0aWNrZXQgY29sbGVnYXRpIHBvc3Nvbm8gaW5mbHVpcmUgc3VsbG8gc3RhdG8gZGkgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIGxpbWl0ZSBkaSByaWNlcmNhIHBlciBsYSBzY2hlcm1hdGEgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgbGltaXRlIGRpIHJpY2VyY2EgcGVyIGxhIHNjaGVybWF0YSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIGxpbWl0ZSBkaSByaWNlcmNhIHBlciBsYSBzY2hlcm1hdGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSBkaSB2aXN1YWxpenphdGUgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgZGkgQ0lzIG5lbGxhIHZpc3RhIGNvbXBsZXNzYSBkZWxsYSB0YWJlbGxhIGRlaSBjb2xsZWdhbWVudGkgcGVyIHR1dHRlIGxlIGNsYXNzaSBDSS4gU2Ugbm9uIMOoIHByZXNlbnRlIGFsY3VuYSB2b2NlLCB2ZW5nb25vIHZpc3VhbGl6emF0ZSBsZSBjb2xvbm5lIHByZWRlZmluaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgdmlzdWFsaXp6YXRlIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIGNvbXBsZXNzYSBkZWxsYSB0YWJlbGxhIGRlaSBjb2xsZWdhbWVudGksIGEgc2Vjb25kYSBkZWxsYSBjbGFzc2UgQ0kuIE9nbmkgdm9jZSBkZXZlIGVzc2VyZSBwcmVjZWR1dGEgZGEgdW4gbm9tZSBkaSBjbGFzc2UgZSBkdWUgcHVudGkgKGFkIGVzZW1waW8gQ29tcHV0ZXI6OikuIEVzaXN0b25vIGFsY3VuaSBhdHRyaWJ1dGkgQ0kgY29tdW5pIGEgdHV0dGkgZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIChlc2VtcGlvIHBlciBsYSBjbGFzc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOb21lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBlciBtb3N0cmFyZSBzaW5nb2xpIGF0dHJpYnV0aSBDSSBjb21lIGRlZmluaXRpIG5lbGxhIGRlZmluaXppb25lIENJLCDDqCBuZWNlc3NhcmlvIHV0aWxpenphcmUgaWwgc2VndWVudGUgc2NoZW1hIChlc2VtcGlvIHBlciBsYSBjbGFzc2UgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gU2Ugbm9uIMOoIHByZXNlbnRlIGFsY3VuYSB2b2NlIHBlciB1bmEgY2xhc3NlIENJLCB2ZW5nb25vIHZpc3VhbGl6emF0ZSBsZSBjb2xvbm5lIHByZWRlZmluaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsaSB2b2NpIHNvbm8gZGlzcG9uaWJpbGkgcGVyIGxcJyJBemlvbmUiIG5lbCB0ZXJ6byBsaXZlbGxvIGRlbGxhIHN0cnV0dHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGkgdm9jaSBzb25vIGRpc3BvbmliaWxpIG5lbCBwcmltbyBsaXZlbGxvIGRlbGxhIHN0cnV0dHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxpIHZvY2kgc29ubyBkaXNwb25pYmlsaSBuZWwgc2Vjb25kbyBsaXZlbGxvIGRlbGxhIHN0cnV0dHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxlIHRpcG8gZGkgY29sbGVnYW1lbnRvIChkZW5vbWluYXRvIGRhbGxhIHByb3NwZXR0aXZhIGRlbCB0aWNrZXQpIHB1w7IgaW5mbHVpcmUgc3VsbG8gc3RhdG8gZGkgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUgY29sbGVnYXRvIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsZSB0aXBvIGRpIHRpY2tldCBwdcOyIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lIGNvbGxlZ2F0byBDSS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWdnaW9ybmFtZW50byBkZWxsYSBkZWZpbml6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxpbWluYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdTdGF0byBkaSBkZXBsb3JhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvbG9yZSBkZWxsbyBzdGF0byBkaSBkaXN0cmlidXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ1N0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWxvIGV2ZW50byBwZXIgY2FtcGkgZGluYW1pY2kgY2hlIGNvbnRyYXNzZWduYSBsZSBkZWZpbml6aW9uaSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBjb21lIG5vbiBzaW5jcm9uaXp6YXRlLCBzZSBpIGNhbXBpIGRpbmFtaWNpIGNoZSBsZSBjb250ZW5nb25vIGNhbWJpYW5vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcGkgZGluYW1pY2kgdmlzdWFsaXp6YXRpIG5lbGxhIHNjaGVybWF0YSBkZWwgY2FtcG8gSVRTTSBhZ2dpdW50aXZhIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcGkgZGluYW1pY2kgdmlzdWFsaXp6YXRpIG5lbGxhIHNjaGVybWF0YSBkaSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1waSBkaW5hbWljaSB2aXN1YWxpenphdGkgbmVsbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBYmlsaXRhIGxhIGZ1bnppb25lIGRpIGF6aW9uZSBpbiBibG9jY28gZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgYWZmaW5jaMOpIGlsIGZyb250ZW5kIGRlbGxcJ2FnZW50ZSBmdW56aW9uaSBzdSBwacO5IGRpIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGFsbGEgdm9sdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBYmlsaXRhIGxhIGZ1bnppb25lIGRpIGF6aW9uZSBpbiBibG9jY28gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgc29sbyBwZXIgaSBncnVwcGkgZWxlbmNhdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FiaWxpdGEvZGlzYWJpbGl0YSBsYSBmdW56aW9uYWxpdMOgIGRpIGNvbnRyb2xsbyBkZWxsZSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gcGVyIGkgbm9taSB1bml2b2NpLiBQcmltYSBkaSBhYmlsaXRhcmUgcXVlc3RhIG9wemlvbmUsIMOoIG5lY2Vzc2FyaW8gY29udHJvbGxhcmUgaWwgc2lzdGVtYSBwZXIgdmVyaWZpY2FyZSBjaGUgbm9uIHZpIHNpYW5vIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGdpw6AgZXNpc3RlbnRpIGNvbiBub21pIGR1cGxpY2F0aS4gw4ggcG9zc2liaWxlIGZhcmxvIGNvbiBpbCBjb21hbmRvIGRlbGxhIGNvbnNvbGUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBpbXBvc3RhcmUgbG8gc3RhdG8gZGkgY29uZmlndXJhemlvbmUgc3UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcGkgZGVsbFwnaW5kaWNlIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCB1dGlsaXp6YXRpIHBlciBsYSByaWNlcmNhIGZ1bGwtdGV4dC4gSSBjYW1waSBzb25vIGFuY2hlIG1lbW9yaXp6YXRpLCBtYSBub24gc29ubyBvYmJsaWdhdG9yaSBwZXIgbGEgZnVuemlvbmFsaXTDoCBjb21wbGVzc2l2YS4gTFwnaW5jbHVzaW9uZSBkZWdsaSBhbGxlZ2F0aSBwdcOyIGVzc2VyZSBkaXNhdHRpdmF0YSBpbXBvc3RhbmRvIGxhIHZvY2Ugc3UgMCBvIGNhbmNlbGxhbmRvbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1waSBtZW1vcml6emF0aSBuZWxsXCdpbmRpY2UgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUsIHV0aWxpenphdGkgcGVyIGFsdHJpIHNjb3BpIG9sdHJlIGFsbGEgcmljZXJjYSBmdWxsLXRleHQuIFBlciBsYSBmdW56aW9uYWxpdMOgIGNvbXBsZXRhLCB0dXR0aSBpIGNhbXBpIHNvbm8gb2JibGlnYXRvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUGVyIG9nbmkgd2Vic2VydmljZSAoY2hpYXZlKSDDqCBwb3NzaWJpbGUgZGVmaW5pcmUgdW4gYXJyYXkgZGkgY2xhc3NpICh2YWxvcmUpIHN1IGN1aSBsaW1pdGFyZSBsXCdpbXBvcnRhemlvbmUuIFBlciB0dXR0ZSBsZSBjbGFzc2kgc2NlbHRlLCBvIHBlciB0dXR0ZSBsZSBjbGFzc2kgZXNpc3RlbnRpLCBnbGkgYXR0cmlidXRpIGlkZW50aWZpY2F0aXZpIGRvdnJhbm5vIGVzc2VyZSBzY2VsdGkgbmVsbGEgY29uZmlndXJhemlvbmUgZGVsbFwnaW52b2NhdG9yZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmF6aW9uZSBkZWwgbW9kdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGVyIGlsIGxpdmVsbG8gZGkgaW52b2NhemlvbmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhemlvbmUgZGVsIG1vZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBlciBpbCBsaXZlbGxvIGRpIGludm9jYXppb25lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmF6aW9uZSBkZWwgbW9kdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGVyIGlsIGxpdmVsbG8gZGkgaW52b2NhemlvbmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ1N0YXRvIEluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIG5lbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGUgZ2xpIHN0YXRpIGRlZ2xpIGluY2lkZW50aSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOdW1lcm8gbWFzc2ltbyBkaSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIGRhIHZpc3VhbGl6emFyZSBuZWwgcmlzdWx0YXRvIGRpIHF1ZXN0YSBvcGVyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsbyBwZXIgY29udHJvbGxhcmUgaWwgZ3J1cHBvIHJlc3BvbnNhYmlsZSBwZXIgdW5hIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bG8gcGVyIHZlcmlmaWNhcmUgaWwgZ3J1cHBvIHJlc3BvbnNhYmlsZSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bG8gcGVyIGdlbmVyYXJlIGxlIHN0YXRpc3RpY2hlIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTW9kdWxvIE5vbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWVybyBNb2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtZXJvIGRpIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGEgdmlzdWFsaXp6YXJlIGluIG9nbmkgcGFnaW5hIGRpIHVuIHJpc3VsdGF0byBkaSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtZXJvIGRpIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGEgdmlzdWFsaXp6YXJlIGluIG9nbmkgcGFnaW5hIGRpIHVuIHJpc3VsdGF0byBkaSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2dnZXR0aSBkYSBjZXJjYXJlLCBxdWFudGUgdm9jaSBlIHF1YWxpIGF0dHJpYnV0aSBtb3N0cmFyZS4gR2xpIGF0dHJpYnV0aSBkaSBDb25maWdJdGVtIGRldm9ubyBlc3NlcmUgbWVtb3JpenphdGkgZXNwbGljaXRhbWVudGUgdHJhbWl0ZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXN0YSBHbG9iYWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBjYXRlZ29yaWUgZGVsbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaSBmaWx0cmkgZGVsbGUgY29sb25uZSBkZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBpY2NvbGkuIE5vdGEgYmVuZTogaW1wb3N0YW5kbyBcJ0F0dGl2b1wnIHN1IDAsIHNpIGltcGVkaXLDoCBhZ2xpIGFnZW50aSBkaSBtb2RpZmljYXJlIGxlIGltcG9zdGF6aW9uaSBkaSBxdWVzdG8gZ3J1cHBvIG5lbGxlIGxvcm8gcHJlZmVyZW56ZSBwZXJzb25hbGksIG1hIHNpIHBlcm1ldHRlcsOgIGFnbGkgYW1taW5pc3RyYXRvcmkgZGkgbW9kaWZpY2FyZSBsZSBpbXBvc3RhemlvbmkgZGkgdW4gYWx0cm8gdXRlbnRlLiBVc2FyZSBcJ0dydXBwbyBkaSBwcmVmZXJlbnplXCcgcGVyIGNvbnRyb2xsYXJlIGluIHF1YWxlIGFyZWEgcXVlc3RlIGltcG9zdGF6aW9uaSBkZXZvbm8gZXNzZXJlIHZpc3VhbGl6emF0ZSBuZWxsXCdpbnRlcmZhY2NpYSB1dGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgYmFja2VuZCBkZWwgZGFzaGJvYXJkIGRlbGxhIHBhbm9yYW1pY2EgZGVpIHRpY2tldCBzbGF2ZSBkZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuICJMaW1pdGUiIMOoIGlsIG51bWVybyBkaSB2b2NpIHZpc3VhbGl6emF0ZSBwZXIgaW1wb3N0YXppb25lIHByZWRlZmluaXRhLiAiR3J1cHBvIiB2aWVuZSB1dGlsaXp6YXRvIHBlciBsaW1pdGFyZSBsXCdhY2Nlc3NvIGFsIHBsdWctaW4gKGFkIGVzLiBHcnVwcG86IGFkbWluOyBncnVwcG8xOyBncnVwcG8yOykuICJQcmVkZWZpbml0byIgZGV0ZXJtaW5hIHNlIGlsIHBsdWctaW4gw6ggYWJpbGl0YXRvIHBlciBpbXBvc3RhemlvbmUgcHJlZGVmaW5pdGEgbyBzZSBsXCd1dGVudGUgZGV2ZSBhYmlsaXRhcmxvIG1hbnVhbG1lbnRlLiAiQ2FjaGVUVExMb2NhbCIgw6ggaWwgdGVtcG8gZGkgY2FjaGUgaW4gbWludXRpIHBlciBpbCBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBiYWNrZW5kIGRlbCBkYXNoYm9hcmQgZGVsbGEgcGFub3JhbWljYSBkZWkgdGlja2V0IHNsYXZlIGRlbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4gIkxpbWl0ZSIgw6ggaWwgbnVtZXJvIGRpIHZvY2kgdmlzdWFsaXp6YXRlIHBlciBpbXBvc3RhemlvbmUgcHJlZGVmaW5pdGEuICJHcnVwcG8iIHZpZW5lIHV0aWxpenphdG8gcGVyIGxpbWl0YXJlIGxcJ2FjY2Vzc28gYWwgcGx1Zy1pbiAoYWQgZXMuIEdydXBwbzogYWRtaW47IGdydXBwbzE7IGdydXBwbzI7KS4gIlByZWRlZmluaXRvIiBkZXRlcm1pbmEgc2UgaWwgcGx1Zy1pbiDDqCBhYmlsaXRhdG8gcGVyIGltcG9zdGF6aW9uZSBwcmVkZWZpbml0YSBvIHNlIGxcJ3V0ZW50ZSBkZXZlIGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiDDqCBpbCB0ZW1wbyBkaSBjYWNoZSBpbiBtaW51dGkgcGVyIGlsIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJIHBhcmFtZXRyaSBwZXIgZ2xpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgY29sb3Jhbm8gbmVsbGEgdmlzdGEgZGVsbGUgcHJlZmVyZW56ZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBnbGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBuZWxsYSB2aXN0YSBkZWxsZSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpIGdydXBwaSBkaSBwZXJtZXNzaSBkaSBlc2VtcGlvIGRlZ2xpIGF0dHJpYnV0aSBkZWwgY2F0YWxvZ28gZ2VuZXJhbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBtb2R1bG8gZGVpIG5vbWkgZGVsbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBtb2R1bG8gbnVtZXJpY28gZGVsbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGxlIHBhZ2luZSAobmVsbGUgcXVhbGkgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNvbm8gbW9zdHJhdGkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGlsIG1vZHVsbyBzdHJpbmdhIGRpIHZlcnNpb25lIHBlciBsZSBjbGFzc2kgZGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgcHJlZmVyZW56ZSBkZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBtb2R1bG8gZGVsIHRvb2xraXQgZGkgbW9kZWxsaSBkaSBzdHJpbmdoZSBkaSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGxcJ2F0dGl2YXppb25lIGRlbGxhIHZlcnNpb25lIHBlciBsZSBjbGFzc2kgZGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgcHJlZmVyZW56ZSBkZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRXNlZ3VlIGxcJ2F6aW9uZSBjb25maWd1cmF0YSBwZXIgb2duaSBldmVudG8gKGNvbWUgSW52b2tlcikgcGVyIG9nbmkgV2Vic2VydmljZSBjb25maWd1cmF0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBwbyBkaSBhdXRvcml6emF6aW9uaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxcJ2F6aW9uZSBkaSBjb2xsZWdhbWVudG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSB2aXN1YWxpenphemlvbmUgYWQgYWxiZXJvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHpvb20gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBBZ2dpdW5naSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3JpenphemlvbmkgbmVjZXNzYXJpZSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSBkaSBtYXNzYSBuZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgbW9kaWZpY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBkZWxsYSBjcm9ub2xvZ2lhIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgc3RhbXBhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpIHJpY2hpZXN0aSBwZXIgZWxpbWluYXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDZXJjYSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0ltcG9zdGEgYXV0b21hdGljYW1lbnRlIGxvIHN0YXRvIGRlbGxcJ2luY2lkZW50ZSBkaSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZSBxdWFuZG8gdW4gdGlja2V0IMOoIGNvbGxlZ2F0byBhIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ltcG9zdGEgbG8gc3RhdG8gZGkgZGlzdHJpYnV6aW9uZSBuZWxsYSBzY2hlcm1hdGEgZGkgbWFzc2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbXBvc3RhIGxvIHN0YXRvIGRlbGxcJ2luY2lkZW50ZSBuZWxsYSBzY2hlcm1hdGEgaW4gYmxvY2NvIGRlbGxcJ2FydGljb2xvIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IGNoZSBjb25zZW50ZSBkaSBjb2xsZWdhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY29uIHVuIGFsdHJvIG9nZ2V0dG8gbmVsbGEgdmlzdGEgem9vbSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgYWNjZWRlcmUgYWxsYSBjcm9ub2xvZ2lhIGRpIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBhY2NlZGVyZSBhbGxhIGNyb25vbG9naWEgZGkgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgZWxpbWluYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIHZpc3VhbGl6emFyZSBpIGNvbGxlZ2FtZW50aSBhbGxlIHZvY2kgZGkgY29uZmlndXJhemlvbmUgY29tZSB1bmEgc3RydXR0dXJhIGFkIGFsYmVyby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBkdXBsaWNhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGR1cGxpY2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBtb2RpZmljYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIHRvcm5hcmUgaW5kaWV0cm8gbmVsbGEgdmlzdGEgem9vbSBkZWxsYSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBzdGFtcGFyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgaW5ncmFuZGlyZSB1bmEgdm9jZSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBwYW5vcmFtaWNhIGRlbGxlIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIGxhIGNyb25vbG9naWEgZGVnbGkgYXJ0aWNvbGkgZGkgY29uZmlndXJhemlvbmUgKG9yZGluZSBpbnZlcnNvKSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3JpYSBwcmVkZWZpbml0YSBjaGUgdmllbmUgbW9zdHJhdGEgc2Ugbm9uIMOoIHNlbGV6aW9uYXRhIG5lc3N1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWNhdG9yZSBwZXIgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUsIGFkIGVzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gTFwnaW1wb3N0YXppb25lIHByZWRlZmluaXRhIMOoIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F0dGl2YSBhdXRvbWF0aWNhbWVudGUgbFwnaW52b2NhdG9yZSBkaSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uZSBFc3ByZXNzaW9uZSBzdHJpbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb25lIE1vZHVsbyBTdHJpbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb25lIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NlIGxcJ2VzZWN1emlvbmUgZGkgQ29uZmlnSXRlbUFDTCBwdcOyIGVzc2VyZSBldml0YXRhIGNvbnRyb2xsYW5kbyBsZSBkaXBlbmRlbnplIGRlaSBjYW1waSBuZWxsYSBjYWNoZS4gUXVlc3RvIHB1w7IgbWlnbGlvcmFyZSBpIHRlbXBpIGRpIGNhcmljYW1lbnRvIGRlaSBtb2R1bGksIG1hIGRldmUgZXNzZXJlIGRpc2FiaWxpdGF0byBzZSBzaSB2b2dsaW9ubyB1c2FyZSBpIG1vZHVsaSBBQ0xNIHBlciBpIHRpcGkgSVRTTUNvbmZpZ0l0ZW0gZSBGb3JtLVJldHVybi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0xlIGluZm9ybWF6aW9uaSBnZW5lcmFsaSBzb25vIHJpcG9ydGF0ZSBuZWxsXCdpbnRlc3RhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHV0dGl2YSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwb2xsaWNpICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcG9sbGljaSAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBvbGxpY2kgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcG9sbGljaSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGEgMTkgcG9sbGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcG9sbGljaSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwb2xsaWNpICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdDcmVtYWdsaWVyYSBkYSAyMSBwb2xsaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBwb2xsaWNpICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnQ3JlbWFnbGllcmEgZGEgMjMgcG9sbGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcG9sbGljaSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcG9sbGljaSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcG9sbGljaSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHBvbGxpY2kgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcG9sbGljaSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG9sbGljaSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcG9sbGljaSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcG9sbGljaSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcG9sbGljaSAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBvbGxpY2kgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwb2xsaWNpICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcG9sbGljaSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcG9sbGljaSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb2xsaWNpICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHBvbGxpY2kgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwb2xsaWNpICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgcG9sbGljaSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBvbGxpY2kgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHBvbGxpY2kgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IHBvbGxpY2kgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcG9sbGljaSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwb2xsaWNpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHBvbGxpY2kgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaXTDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0Fzc2VnbmF6aW9uZSBkZWdsaSBpbmRpcml6emknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FtbWluaXN0cmF0b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVmb25vIGFuYWxvZ2ljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkaSBhcHBhcmVjY2hpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpdMOgIGRlbGxhIGJhdHRlcmlhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkaSBiYXR0ZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2NpYSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0w6AgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXTDoCBwZXIgc2NoZWRhIGdyYWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW1lcm8gZGkgY2FydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZXR0b3JlIGRpIHNjaGVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRpIGNhcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0aSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yaWEgZGkgY2xpZW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdGcmVxdWVuemEgZGVsbFwnb3JvbG9naW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaXTDoCBkZWxsXCdvcm9sb2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdGkgZGkgZmlybWEgZGVsIGNvZGljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbm8gZGkgY29uZmVyZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBjb25zdWxlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YXR0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGF0dG8gY29uIGlsIGRpc3RyaWJ1dG9yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb25lIGRlaSBjb250ZW5pdG9yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXR0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkaSBjb250cmF0dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdEdXJhdGEgZGVsIGNvbnRyYXR0byBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEdXJhdGEgZGVsIGNvbnRyYXR0byBmaW5vIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsZWZvbm8gY29yZGxlc3MgKHRlbGVmb25vIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXTDoCBkaSBjb3N0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ051bWVybyBkaSBsaWNlbnplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRhIGRpIGNyZWF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQ3JlbWFnbGllcmEgcGVyc29uYWxpenphdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmlzZXJ2YXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRhIGRlbGxhIGZhdHR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgZGVsbFwnb3JkaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGRlbGxhIGdhcmFuemlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgZGkgcmlsYXNjaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRpIGRpIGZpcm1hIGRlaSBkb2N1bWVudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYXRpIGUtbWFpbCAoY2VydGlmaWNhdGkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0dG8gZGkgbGF2b3JvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnSW5kaXJpenpvIElQIGZpbmFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbmUgZGVsIHN1cHBvcnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0YSBkaSBzY2FkZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gcmlnaWRvIGVzdGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQWNjdW11bG8gZGkgZW5lcmdpYSBhIHZvbGFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhdHRvcmUgZGkgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBmcmFuY2hpc2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBnZW5lcmFsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1NjaGVkZSBncmFmaWNoZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnU2NoZWRhIGdyYWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbG8gaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkZWxsXCdoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQ3VmZmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xsbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0aW9uZSBkZWxsXCdpZGVudGl0w6AgZSBkZWxsXCdhY2Nlc3NvIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW1lcm8gZGkgaW52ZW50YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0Nvc3RpIGRpIGludmVzdGltZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bWVybyBkaSBmYXR0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGllcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGRpc3BsYXkgYSBjcmlzdGFsbGkgbGlxdWlkaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBhIGVtaXNzaW9uZSBsdW1pbm9zYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWZvbm8gZmlzc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUG9ydGF0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xpdmVsbG8gMTogbGl2ZWxsbyBmaXNpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGl2ZWxsbyAyOiBMaXZlbGxvIGRpIGNvbGxlZ2FtZW50byBkYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMaXZlbGxvIDM6IGxpdmVsbG8gZGkgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMaXZlbGxvIDM6IExpdmVsbG8gZGkgcmV0ZSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xpdmVsbG8gNDogbGl2ZWxsbyBkaSB0cmFzcG9ydG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xpdmVsbG8gNTogbGl2ZWxsbyBkaSBzZXNzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMaXZlbGxvIDY6IExpdmVsbG8gZGkgcHJlc2VudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xpdmVsbG8gNzogTGl2ZWxsbyBhcHBsaWNhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIGxvY2F6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBsaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGlhdmUgZGkgbGljZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUaXBvIGRpIGxpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBmaW5vIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmlhIGFsIGxpdGlvIGZlcnJvIGZvc2ZhdG8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhZ2xpIGlvbmkgZGkgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgcHJlc3RpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpdHVhdG8gaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2R1dHRvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaXTDoCBkaSBjYXJpY28gbWFzc2ltYSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1RpcG8gZGkgbWVtb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOdW1lcm8gZGkgY2VsbHVsYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsZS9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcml6aW9uZSBkZWwgbW9kZWxsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSaXNvbHV6aW9uZSBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdEaW1lbnNpb25pIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYXppb25pIHN1bGxhIHJldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBzdWxsYSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdMaXZlbGxvIGRpIHJldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhbCBuaWNoZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmlhIGFsIG5pY2hlbC1tZXRhbGxvIGlkcnVybyAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWNjb3JkbyBkaSBub24gZGl2dWxnYXppb25lIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnVGFjY3Vpbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOdW1lcm8gZGkgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ051bWVybyBkaSBtb2R1bGkgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ051bWVybyBkaSBzY2hlZGUgZ3JhZmljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3JnYW5pY28gYSBlbWlzc2lvbmUgZGkgbHVjZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQ29zdGkgb3BlcmF0aXZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ051bWVybyBkXCdvcmRpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbHRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVXNjaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjY29yZG8gZGkgcGFydGVuYXJpYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIHRlbGVmb25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRpIHRlbGVmb25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTnVjbGVpIGZpc2ljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0Vyb2dhemlvbmUgZGkgZW5lcmdpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0FjcXVpc3RhdG8gcHJlc3NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mb25kaXTDoCBkZWwgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaXTDoCByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnU3RhbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU2NoZWRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRpIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdDb250cmF0dG8gZGkgdmVuZGl0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUZWxlZm9ubyBzYXRlbGxpdGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhbCBwaW9tYm8gc2lnaWxsYXRhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTnVtZXJvIGRpIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIHBlciBzZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgc2Vydml6aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdFdGljaGV0dGEgZGkgc2Vydml6aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkaSBwcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0b3BhcmxhbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdJbmRpcml6em8gSVAgZGkgcGFydGVuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0ltbWFnYXp6aW5hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aXppb25lIGRpIGFyY2hpdmlhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdGaWxpYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTaW50ZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0ZpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdGb2xnb3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdSQU0gdG90YWxlIGRlbGxhIHNjaGVkYSBncmFmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWxlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgdG91Y2hzY3JlZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0N1ZmZpZSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9ubyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/ja_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzpgYvou6Ljg4fjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+WPl+S/oeODquOCr+OCqOOCueODiOODh+ODvOOCv+OBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+mAgeS/oeODrOOCueODneODs+OCueODu+ODh+ODvOOCv+OBruioreWumic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+OCr+ODqeOCueWumue+qeOCkuWkieabtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5b255Ymy5a6a576p44Gu5aSJ5pu0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOOCr+ODqeOCueODkOODs+ODieODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+OBk+OBk+OBp+OBr+OAgVJlYWR5MkltcG9ydOOCr+ODqeOCueODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgui/veWKoOioreWumuOBjOW/heimgeOBquWgtOWQiOOCguOBguOCiuOBvuOBmeOBruOBp+OBlOazqOaEj+OBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfml6LlrZjjga7jgqjjg7Pjg4bjgqPjg4bjgqPjga7mm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdOOCr+ODqeOCueOBruODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruOCr+ODqeOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6Kit5a6a6aCF55uuIOW9ueWJsic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn44Kv44Op44K544Gn44OV44Kj44Or44K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+aWsOimj+OBruani+aIkOOCouOCpOODhuODoOOCkuS9nOaIkOOBmeOCi+OBq+OBr+OAgeODquOCueODiOOBi+OCieOCr+ODqeOCueOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+OCr+ODqeOCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ+ani+aIkOOCouOCpOODhuODoOS4gOaLrOOCouOCr+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+S7luOBqOODquODs+OCr+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5YCk44GM5LiN5q2j44Gn44GZISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfku5bjga7mp4vmiJDjgqLjgqTjg4bjg6Djgbjjga7jg6rjg7Pjgq/mlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfmnKzlvZPjgavjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44GuIOani+aIkOOCouOCpOODhuODoCDjga7lkI3np7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+OBk+OBruWQjeensOOBr+OBmeOBp+OBqyBOdW1iZXIocyk6ICVzIOOBruani+aIkOOCouOCpOODhuODoOOBp+S9v+eUqOS4reOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ+ODkOODvOOCuOODp+ODs+ODiuODs+ODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44Gu44OQ44O844K444On44Oz55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn44OQ44O844K444On44Oz55Wq5Y+344Gv44CB5Lul5LiL44Gu55Wq5Y+344GuIENvbmZpZ0l0ZW1zIOOBq+OCiOOBo+OBpuaXouOBq+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q20OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfjgrPjg6Hjg7Pjg4jlsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+S9nOaIkOaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfjgrrjg7zjg6Djg7vjg5Pjg6Xjg7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnMeODmuODvOOCuOavjuOBruioreWumumgheebric7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn6Kit5a6a6aCF55uu44Gu44OH44O844K/44GM6KaL44Gk44GL44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44KS6YG45oqe44GZ44KLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn5qSc57Si44KS5a6f6KGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ+ODl+ODrOODk+ODpeODvOaZguOAgeS7peWJjeOBruODkOODvOOCuOODp+ODs+OCguaknOe0ouWvvuixoeOBqOOBl+OBvuOBmeOBi++8nyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+OCs+ODs+ODleOCo+OCsOmgheebruOBruODhOODquODvOODk+ODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+ODh+ODl+OCueODrOODmeODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+OCuuODvOODoOOCpOODsy/jgrrjg7zjg6DjgqLjgqbjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbeOBruacgOWkp+ODquODs+OCr+ODrOODmeODq+OBq+mBlOOBl+OBn++8gSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Dmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn54++5Zyo44Gu44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfnj77lnKjjga7jgqTjg7Pjgrfjg4fjg7Pjg4jjga7jgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn5pyA57WC5pu05paw5pel5pmCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+acgOe1guabtOaWsOiAhSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ+ioreWumumgheebric7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfoqK3lrprpoIXnm67mpJzntKInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ+OCquODluOCuOOCp+OCr+ODiOOBrueorumhnic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ+OCv+OCpOODl+OBp+ODleOCo+ODq+OCvyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+S7peS4i+OBruOCr+ODqeOCueOBjOOCpOODs+ODneODvOODiOOBleOCjOOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfku6XkuIvjga7lvbnlibLjgYzjgqTjg7Pjg53jg7zjg4jjgZXjgozjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn5a++5b+c44GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44GoR2VuZXJhbENhdGFsb2fjgq/jg6njgrnjgoLkvZzmiJDjgZXjgozjgIHoh6rli5XnmoTjgavliYrpmaTjgZXjgozjgarjgYTjgZPjgajjgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfntprooYzjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnRXhhbXBsZUNsYXNzZXPjgYzlv4XopoHvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a576p44Gv5pyJ5Yq544GqIFlBTUwg44OP44OD44K344Ol44Gn44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn5LiA6KanOiDmp4vmiJDjgqLjgqTjg4bjg6AnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn5bCR44Gq44GP44Go44KCMeOBpOOBrumBuOaKnuOBleOCjOOBn+ani+aIkOOCouOCpOODhuODoOOBjOW/heimgeOBp+OBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBuOOBruabuOOBjei+vOOBv+OCouOCr+OCu+OCueaoqeOBjOOBguOCiuOBvuOBm+OCkzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn44Kv44Op44K5JXPjga7lrprnvqnjgYzlrprnvqnjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+ani+aIkOOCouOCpOODhuODoCAiJXMi44GM44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44OgSUQlc+OCkuWJiumZpOOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEJXPjga7jg5Djg7zjgrjjg6fjg7PjgYzopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44CBRHVwbGljYXRlSUTjgIFDbGFzc0lE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfjgqLjgq/jgrvjgrnmqKnjga/jgYLjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44GM44CBQ29uZmlnSXRlbUlE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CC44Ki44Kv44K744K55qip44Gv5LiO44GI44KJ44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDjgZfjgYTmp4vmiJDjgqLjgqTjg4bjg6AoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfmlrDjgZfjgYTjg5Djg7zjgrjjg6fjg7PvvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgILvvIjmlrDopo89JXPjgIHliY09JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25oWL44GM5pu05paw44GV44KM44G+44GX44Gf77yI5paw6KaPPSVz44CB5Y+k44GEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5YmK6ZmkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICclc++8iOOCv+OCpOODlz0lc++8ieOBuOOBruODquODs+OCr+OBjOi/veWKoOOBleOCjOOBvuOBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJXPvvIjjgr/jgqTjg5c9JXPvvInjgbjjga7jg6rjg7Pjgq/jgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW3lrprnvqnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICflkI3liY3jgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIjmlrDopo89JXPjgIHlj6TjgYQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICflsZ7mgKclc+OBjCAiJXMi44GL44KJICIlcyLjgavmm7TmlrDjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn44OQ44O844K444On44OzJXPjgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44G+44Gf44GvVmVyc2lvbklE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OAguOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCVz44Gv44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyVz44GnJXPjgafljbDliLfjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+eUqOS+iyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUTjgYznhKHlirnjgafjgZnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn44GT44Gu44Kv44Op44K544Gu44Ki44Kv44K744K55qip44Gv44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfntZDmnpzjgarjgZchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si57WQ5p6cJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLooajnpLrjgafjgY3jgb7jgZvjgpPjgILmp4vmiJDjgqLjgqTjg4bjg6Djga7jgqLjgq/jgrvjgrnmqKnjga/kuI7jgYjjgonjgozjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbeOBjOimi+OBpOOBi+OCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfjg5Djg7zjgrjjg6fjg7Pjga/opovjgaTjgYvjgorjgb7jgZvjgpPjgafjgZfjgZ/vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfpgJrluLjpgYvnlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+itpuWRiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kk44Oz44K344OH44Oz44OI54q25oWLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn5qip6ZmQ44GM44GC44KK44G+44Gb44KTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ+ODleOCo+ODq+OCv+ODvOeEoeWKue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn5qSc57Si44OR44Op44Oh44O844K/44GM54Sh5Yq544Gn44GZ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn6KGo56S644GV44KM44KL5qeL5oiQ44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfnj77lnKjjga7jgqTjg7Pjgrfjg4fjg7Pjg4jjg7vjgrnjg4bjg7zjgr/jgrnjga7jgr/jgqTjg5cnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn44GT44Gu6ZaTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfoqK3lrprpoIXnm67jga7jgq/jg6njgrnliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mBuOaKnuWPr+iDveOBquioreWumumgheebruOCkuWItumZkOOBmeOCi+OBn+OCgeOBq+OAgTHjgaTku6XkuIrjga7jgq/jg6njgrnjgpLpgbjmip7jgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+ioreWumumgheebruOBruOCr+ODqeOCueWItumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mBuOaKnuWPr+iDveOBquioreWumumgheebruOCkuWItumZkOOBmeOCi+OBn+OCgeOBq+OAgTHjgaTku6XkuIrjga7jgq/jg6njgrnjgpLpgbjmip7jgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfli5XnmoQgKOOCs+ODs+ODleOCo+OCsOmgheebriknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+OCueOCv+ODhuOCo+ODg+OCr++8iOODtOOCoeODvOOCuOODp+ODs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfjg6rjg7Pjgq/lj4Lnhafjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn44GT44Gu44Oq44Oz44Kv44GM5Y+C54Wn44Kq44OW44K444Kn44Kv44OI44GuIENvbmZpZ0l0ZW0g44Go6Z2Z55qE44OQ44O844K444On44Oz44Gu44Gp44Gh44KJ44Gr6YGp55So44GV44KM44KL44GL44CC54++5Zyo44Gu44Kk44Oz44K344OH44Oz44OI44O744K544OG44O844OI44Gu6KiI566X44Gv44CB44OA44Kk44OK44Of44OD44Kv44O744Oq44Oz44Kv44Gr5a++44GX44Gm44Gu44G/5a6f6KGM44GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6Kit5a6a6aCF55uu44KS5qSc57Si44GZ44KL5bGe5oCn44KS6YG45oqe44GX44G+44GZ44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+ODmeODvOOCueani+mAoOOBjOeEoeWKueOBp+OBmeOAgllBTUzlvaLlvI/jga7jg4fjg7zjgr/jgpLlkKvjgoDjg4/jg4Pjgrfjg6XjgpLmjIflrprjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1M5paH5a2X5YiX44KSXCctLS1cJ+OBp+Wni+OCgeOCi+OBk+OBqOOBjOW/heimgeOBp+OBmeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdjb25maWdpdGVtX2xpbmsg44OG44O844OW44Or44KS44OR44O844K444Gn44GN44G+44Gb44KT44Gn44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfplqLpgKPjgZnjgovli5XnmoTjg5XjgqPjg7zjg6vjg4njga/opovjgaTjgYvjgorjgb7jgZvjgpPjgafjgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdjb25maWdpdGVtX2xpbmvjg4bjg7zjg5bjg6vjgavmjL/lhaXjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGlua+ODhuODvOODluODq+OBqzDooYzjgpLmjL/lhaXjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn5LiA44Ko44Os44Oh44Oz44OI44GC44Gf44KK44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ+a3u+S7mOODleOCoeOCpOODq+OBruOCpOODs+ODneODvOODiC/jgqjjgq/jgrnjg53jg7zjg4jvvIjooYzjgZTjgajjga7mnIDlvozjga7jgqjjg7Pjg4jjg6rjgajjgZfjgabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn5a6a576p44Gu5ZCM5pyf44Gr44Ko44Op44O844GM55m655Sf44GX44G+44GX44Gf44CC44Ot44Kw44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnSVRTTUNvbmZpZ0l0ZW3jga7lrprnvqnjgYzlkIzmnJ/jgZXjgozjgabjgYTjgb7jgZvjgpPjgIJJVFNNQ29uZmlnSXRlbeOBruWLleeahOODleOCo+ODvOODq+ODieOBruWkieabtOOCkuWxlemWi+OBl+OBpuOBj+OBoOOBleOBhOOAgic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn5pyf6ZmQ5YiH44KMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn44Oh44Oz44OG44OK44Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn44OR44Kk44Ot44OD44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfoqIjnlLsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn5L+u55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICflvJXpgIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn44Os44OT44Ol44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfjg4bjgrnjg4ggLyBRQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn5qaC6KaB44Go56K66KqNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ+OCr+ODqeOCuS/lvbnlibLjgajjgZ3jga7plqLpgKPjg5XjgqPjg7zjg6vjg4njga7jgqTjg7Pjg53jg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfjgq/jg6njgrnjga7jgqTjg7Pjg53jg7zjg4jkuK3jgavjgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIInOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIOmdnuihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpJzntKLjgavjgYrjgYTjgabjgIHmi6HlvLXmpJzntKLmnaHku7bjgpLoqLHlj6/jgZfjgb7jgZnjgILjgZPjga7mqZ/og73jgavjgojjgorjgIEiKCprZXkxKiYqa2V5MiopICLjgoQiKCprZXkxKnwqa2V5MiopICLjga7jgojjgYbjgarmnaHku7bjgafoqK3lrprpoIXnm67lkI3jgpLmpJzntKLjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44O844Kk44Oz44K/44O844OV44Kn44Kk44K544Gu6Kit5a6a6aCF55uu5qSc57Si44Gr44GK44GE44Gm44CB5qSc57Si5p2h5Lu244KS5ouh5by144GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC44GT44Gu5qmf6IO944KS5L2/55So44GZ44KL44Go44CBIigqa2V5MSomKmtleTIqKSAi44G+44Gf44GvIigqa2V5MSp8KmtleTIqKSAi44Gu44KI44GG44Gq5p2h5Lu244Gn6Kit5a6a6aCF55uu5ZCN44KS5qSc57Si44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+WJsuOCiuW9k+OBpuOCieOCjOOBn0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn6aGn5a6i5LyB5qWt44Gr5Ymy44KK5b2T44Gm44KJ44KM44GfQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfpoaflrqLjg6bjg7zjgrbjg7zjgavlibLjgorlvZPjgabjgonjgozjgZ9DSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQuOBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5ZCM44GYQ29uZmlnSXRlbeOCr+ODqeOCue+8iCBcJ2NsYXNzXCfvvInlhoXjgb7jgZ/jga/jgrDjg63jg7zjg5Djg6vvvIggXCdnbG9iYWxcJ++8ieWGheOBp+OBruOBv+S4gOaEj+OBruWQjeWJjeOCkueiuuiqjeOBl+OBvuOBmeOAguOBk+OCjOOBr+OAgemHjeikh+OCkuaknOe0ouOBmeOCi+OBqOOBjeOBq+aXouWtmOOBrkNvbmZpZ0l0ZW3jgYzjgZnjgbnjgabogIPmha7jgZXjgozjgovjgZPjgajjgpLmhI/lkbPjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ+WRveWQjeOCueOCreODvOODoOOCkuW8t+WItuOBmeOCi+ODouOCuOODpeODvOODq+OCkumBuOaKnuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn55Wq5Y+344K544Kt44O844Og44KS5by35Yi244GZ44KL44Oi44K444Ol44O844Or44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+OCueOCreODvOODoOOCkuW8t+WItuOBmeOCi+ODouOCuOODpeODvOODq+OCkumBuOaKnuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ+aWsOOBl+OBhOODkOODvOOCuOODp+ODs+OCkuS9nOaIkOOBmeOCi+ODiOODquOCrOODvOOBqOOBquOCi+WxnuaAp+OCkumBuOaKnuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfjgZPjga7oqK3lrprpoIXnm67jgq/jg6njgrnjgavlibLjgorlvZPjgabjgovjgqvjg4bjgrTjg6rjgpLpgbjmip7jgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnQ29uZmlnSXRlbeamguimgeOBruOCq+ODqeODoOioreWumumgheebruODleOCo+ODq+OCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qaC6KaB44Gn44OV44Kj44Or44K/44Oq44Oz44Kw44Gn44GN44KL5YiX44CC5rOo5oSPOiDjgrPjg7Pjg5XjgqPjgrDpoIXnm67lsZ7mgKfjgajli5XnmoTjg5XjgqPjg7zjg6vjg4kgKER5bmFtaWNGaWVsZF9OYW1lWCkg44Gu44G/6Kix5Y+v44GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS6L+95Yqg44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5L+u5q2j44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gu5bGl5q2044KS6KiY6Yyy44GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kk44OZ44Oz44OI44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ+OCs+ODs+ODleOCo+OCsOmgheebruOCkuePvuWcqOOBruWumue+qeOBq+abtOaWsOOBmeOCi+OCs+ODs+ODleOCo+OCsOmgheebruOCpOODmeODs+ODiOODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruWxpeattCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLljbDliLcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7jgrrjg7zjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfoqK3lrprpoIXnm67jg4Tjg6rjg7zjg5Pjg6Xjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6Kit5a6a6aCF55uu44OQ44O844K444On44OzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+OBruOCr+ODqeOCueOBrkNvbmZpZ0l0ZW1z44GvRWxhc3RpY3NlYXJjaOOCteODvOODkOOBq+S/neWtmOOBleOCjOOBvuOBm+OCk+OAguaXouWtmOOBrkNJ44Gr6YGp55So44GZ44KL44Gr44Gv44CB44GT44Gu44Kq44OX44K344On44Oz44KS5aSJ5pu044GX44Gf5b6M44Gr44CB44Kz44Oz44K944O844Or57WM55Sx44GnQ0njg57jgqTjgrDjg6zjg7zjgrfjg6fjg7PjgpLlrp/ooYzjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn5Lul5LiL44Gu44OH44OX44Ot44Kk54q25oWL44GuQ29uZmlnSXRlbXPjga/jgIFFbGFzdGljc2VhcmNo44K144O844OQ44Gr5L+d5a2Y44GV44KM44G+44Gb44KT44CC5pei5a2Y44GuQ0njgavpgannlKjjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLlpInmm7TjgZfjgZ/lvozjgavjgIHjgrPjg7Pjgr3jg7zjg6vntYznlLHjgadDSeODnuOCpOOCsOODrOODvOOCt+ODp+ODs+OCkuWun+ihjOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7liLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ+ODmuODvOOCuOOBguOBn+OCiuOBruani+aIkOOCouOCpOODhuODoOOBruihqOekuuWItumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn5qeL5oiQ566h55CG44OH44O844K/44OZ44O844K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7kuIDmi6zjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si44OQ44OD44Kv44Ko44Oz44OJ44Or44O844K/44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS9nOaIkOOBqOeuoeeQhuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+eJueWumuOBruaZgueCueOBp0NvbmZpZ0l0ZW1z44Gu44OB44Kx44OD44OI44KS5L2c5oiQ44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+mhp+WuouOBr+mBjuWOu+OBrkNJ44OQ44O844K444On44Oz44KS6KaL44KL44GT44Go44GM44Gn44GN44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ+mhp+WuouOBr+OAgemBjuWOu+OBrkNJ44OQ44O844K444On44Oz44KS5omL5YuV44Gn5YiH44KK5pu/44GI44KL44GT44Go44GM44Gn44GN44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn6Kit5a6a6aCF55uu5qSc57Si55S76Z2i44Gu5bGe5oCn44Gn5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44OH44O844K/44CC5L6L77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+OCs+ODs+ODleOCo+OCsOmgheebruaknOe0oueUu+mdouOBruWxnuaAp+OBp+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOODh+ODvOOCv+OAguS+i++8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+ODquODs+OCr+OBleOCjOOBn+OCquODluOCuOOCp+OCr+ODiCDjgqbjgqPjgrjjgqfjg4Pjg4ggKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKSDjgafoqK3lrprjg5zjgr/jg7PjgYzkvb/nlKjjgafjgY3jgovjgqLjgq/jgrfjg6fjg7PjgpLlrprnvqnjgZfjgb7jgZnjgILjgZPjgozjgonjga7jgqLjgq/jgrfjg6fjg7Pjgavjga/jgIFDb3JlLkFsbG9jYXRpb25MaXN0LmNzc+OAgUNvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanPjgIFDb3JlLlVJLlRhYmxlLlNvcnQuanPjgIFDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qc+OAgeOBiuOCiOOBsyBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMg44GuIEpTIOOBiuOCiOOBsyBDU1Mg44OV44Kh44Kk44Or44GM55m76Yyy44GV44KM44Gm44GE44KL5b+F6KaB44GM44GC44KL44GT44Go44Gr5rOo5oSP44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJfnlKjjga4gVGVtcGxhdGU6OlRvb2xraXQg44K544Kt44O844Og44KS5a6a576p44GX44G+44GZ44CC44OQ44O844K444On44Oz5paH5a2X5YiX44Oi44K444Ol44O844Or44GMIFRlbXBsYXRlVG9vbGtpdCDjgavoqK3lrprjgZXjgozjgabjgYTjgovloLTlkIjjgavjga7jgb/kvb/nlKjjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfpoaflrqLjgYzoqK3lrprpoIXnm67jgpLopovjgovjgZPjgajjgpLoqLHlj6/jgZXjgozjgovkuIDpgKPjga7mnaHku7bjgpLlrprnvqnjgZfjgb7jgZnjgILmnaHku7bjga/jgIHjgqrjg5fjgrfjg6fjg7Pjgafnibnlrprjga7poaflrqLjgrDjg6vjg7zjg5fjgavliLbpmZDjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgILlkI3liY3jga/llK/kuIDjga7lv4XpoIjlsZ7mgKfjgafjgZnjgILku5bjga7jgqrjg5fjgrfjg6fjg7PjgYzmjIflrprjgZXjgozjgabjgYTjgarjgYTloLTlkIjjgIHjgZnjgbnjgabjga7oqK3lrprpoIXnm67jgYzjgZ3jga7jgqvjg4bjgrTjg6rjga7kuIvjgavooajnpLrjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODquODg+OCr+ODu+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOCkua0u+eUqOOBl+OBpuani+aIkOOCouOCpOODhuODoOOCkuWJiumZpOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn44K444Kn44ON44Oq44OD44Kv44Kk44Oz44K/44O844OV44Kn44Kk44K544KS5rS755So44GX44Gm5qeL5oiQ44Ki44Kk44OG44Og44KS5Y+W5b6X44GZ44KL5qip6ZmQ44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfjgrjjgqfjg43jg6rjg4Pjgq/jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgpLmtLvnlKjjgZfjgabmp4vmiJDjgqLjgqTjg4bjg6DjgpLmpJzntKLjgZnjgovmqKnpmZDjgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0dlbmVyaWMgSW50ZXJmYWNl44KS5L2/55So44GX44GmSVRTTeani+aIkOmgheebruOCkuioreWumuOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLlrprnvqnjgZfjgabjgIHmp4vmiJDjgqLjgqTjg4bjg6Djga7jg6rjgrnjg4jjga7lsI/jgZXjgarjg5Pjg6Xjg7zjgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn44OO44O844OJ44Gu5o6l57aa44Gr44Oq44Oz44Kv44K/44Kk44OX44Gu44Op44OZ44Or44KS6KGo56S644GZ44KL44GL44Gp44GG44GL44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICflkIRDb25maWdJdGVt44Kv44Op44K544Gu5q2j6KaP6KGo54++44KS5YCL5Yil44Gr5a6a576p44GX44Gm44CBQ29uZmlnSXRlbeWQjeOCkueiuuiqjeOBl+OAgeWvvuW/nOOBmeOCi+OCqOODqeODvOODoeODg+OCu+ODvOOCuOOCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJ44Kv44Op44K544Gr5b+c44GY44Gm44CB6Kit5a6a6aCF55uu44Gu5qaC6KaB44Gn5Yip55So5Y+v6IO944GqQ0njga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgILlkITpoIXnm67jga/jgIHjgq/jg6njgrnlkI3jgajjgIHlr77lv5zjgZnjgovjgq/jg6njgrnjgafliKnnlKjlj6/og73jgarjg5XjgqPjg7zjg6vjg4njga7phY3liJfjgYvjgonmp4vmiJDjgZXjgozjgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgILli5XnmoTjg5XjgqPjg7zjg6vjg4njga7jgqjjg7Pjg4jjg6rjga/jgIFEeW5hbWljRmllbGRfRmllbGROYW1lIOOCueOCreODvOODoOOBq+W+k+OCj+OBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si57WQ5p6c44Gu6Kit5a6a6aCF55uu44K944O844OI44Gu44OH44OV44Kp44Or44OI44Gu6Kit5a6a6aCF55uu5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpJzntKLntZDmnpzjga7oqK3lrprpoIXnm67jgr3jg7zjg4jjga7jg4fjg5Xjgqnjg6vjg4jjga7oqK3lrprpoIXnm67lsZ7mgKfjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfjgZPjga7mk43kvZzjga7jgrPjg7Pjg5XjgqPjgrDpoIXnm67mpJzntKLntZDmnpzjga7jgrPjg7Pjg5XjgqPjgrDpoIXnm67jgr3jg7zjg4jjga7jg4fjg5Xjgqnjg6vjg4jjga7jgrPjg7Pjg5XjgqPjgrDpoIXnm67lsZ7mgKfjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0oue1kOaenOOBruODh+ODleOCqeODq+ODiOOBruioreWumumgheebrumghuW6j+OCkuWumue+qeOBl+OBvuOBmeOAguS4ijog5pyA44KC5Y+k44GE44KC44Gu44GM5LiK44CCRG93bjog5pyA5paw44GM5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfjgqvjgrnjgr/jg57jgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpJzntKLntZDmnpzjga7jg4fjg5Xjgqnjg6vjg4jjga7oqK3lrprpoIXnm67poIbluo/jgpLlrprnvqnjgZfjgb7jgZnjgILkuIo6IOWPpOOBhOmghuOBq+ihqOekuuOBleOCjOOBvuOBmeOAguS4i++8muacgOaWsOOBjOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfjgZPjga7mk43kvZzjga7jgrPjg7Pjg5XjgqPjgrDpoIXnm67mpJzntKLntZDmnpzjga7jg4fjg5Xjgqnjg6vjg4jjga7jgrPjg7Pjg5XjgqPjgrDpoIXnm67poIbluo/jgpLlrprnvqnjgZfjgb7jgZnjgIJVcDrlj6TjgYTpoIbjgIJEb3du77ya5pyA5paw44GM5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSeOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeioreWumumgheebruOBruamguimgeOBq+ihqOekuuOBleOCjOOCi0NJ44Gu44OH44OV44Kp44Or44OI44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE6aCF55uu44Gv44CB44Kv44Op44K55ZCN44Go44CB5a++5b+c44GZ44KL44Kv44Op44K544Gn5Yip55So5Y+v6IO944Gq44OV44Kj44O844Or44OJ44Gu6YWN5YiX44GL44KJ5qeL5oiQ44GV44KM44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC5YuV55qE44OV44Kj44O844Or44OJ44Gu44Ko44Oz44OI44Oq44Gv44CBRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZeOCueOCreODvOODoOOBq+W+k+OCj+OBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfooajnpLrjgZXjgozjgovjg4fjg5Xjgqnjg6vjg4jjga7plqLkv4Ljga7mt7HjgZXjgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn6Kit5a6a6aCF55uu5qSc57Si55S76Z2i44Gu44OH44OV44Kp44Or44OI44Gu6KGo56S66Kit5a6a6aCF55uu5qSc57Si5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfjgrPjg7Pjg5XjgqPjgrDpoIXnm67mpJzntKLnlLvpnaLjgavjg4fjg5Xjgqnjg6vjg4jjgafooajnpLrjgZXjgozjgovjgrPjg7Pjg5XjgqPjgrDpoIXnm67mpJzntKLlsZ7mgKfjgpLlrprnvqnjgZfjgb7jgZnjgILkvos6ICJLZXkgIuOBq+OBr+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOBruWQjeWJjSAo44GT44Gu5aC05ZCI44GvIFwnWFwnKeOAgSJDb250ZW50IiDjgavjga/jg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njga7jgr/jgqTjg5fjgavlv5zjgZjjgabjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njga7lgKTjgIFUZXh0OiBcJ2EgdGV4dFwn44CBRHJvcGRvd246IFwnMVwn44CBRGF0ZS9UaW1l77yaXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAw77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMe+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTnvvJtcJ+OAgeOBvuOBn+OBryBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7jgq/jg6njgrnjga7jg4fjg5Xjgqnjg6vjg4jjga7jgrXjg5bjgqrjg5bjgrjjgqfjgq/jg4jjgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJ44Kv44Op44K544Gr5b+c44GY44Gm44CB6Kit5a6a6aCF55uu44Gu5qaC6KaB44Gn5Yip55So5Y+v6IO944GqQ0njga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgILlkITpoIXnm67jga/jgIHjgq/jg6njgrnlkI3jgajjgIHlr77lv5zjgZnjgovjgq/jg6njgrnjgafliKnnlKjlj6/og73jgarjg5XjgqPjg7zjg6vjg4njga7phY3liJfjgYvjgonmp4vmiJDjgZXjgozjgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgILli5XnmoTjg5XjgqPjg7zjg6vjg4njga7jgqjjg7Pjg4jjg6rjga/jgIFEeW5hbWljRmllbGRfRmllbGROYW1lIOOCueOCreODvOODoOOBq+W+k+OCj+OBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfjgZPjga7nlLvpnaLjga7jg6rjg4Pjg4Eg44OG44Kt44K544OIIOOCqOODh+OCo+OCv+ODvCDjgrPjg7Pjg53jg7zjg43jg7Pjg4jjga7pq5jjgZXjgpLlrprnvqnjgZfjgb7jgZnjgILmlbDlgKQgKOODlOOCr+OCu+ODqykg44G+44Gf44Gv44OR44O844K744Oz44OI5YCkICjnm7jlr74pIOOCkuWFpeWKm+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfnrqHnkIbjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkgQ2wg5a6a576p44Ko44OH44Kj44K/44Gu6KGM5pWw44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ+OCpOODs+OCt+ODh+ODs+ODiOeKtuaFi+OBrumrmO+8iOS+izog5Y2x6Zm677yJ44GL44KJ5L2O77yI5L6LOiDmg4XloLHvvInjgbjjga7jgqTjg7Pjgrfjg4fjg7Pjg4jnirbmhYvjga7poIbluo/jgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfjg6rjg7Pjgq/jgZXjgozjgZ/jg4HjgrHjg4Pjg4jjgYxDSeOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OCkuS4juOBiOOCi+WPr+iDveaAp+OBjOOBguOCi+OAgemWoumAo+OBmeOCi+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBrueUu+mdouOBruaknOe0ouWItumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBruaknOe0oueUu+mdouOBruaknOe0ouWItumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0g55S76Z2i44Gu5qSc57Si5Yi26ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCDnlLvpnaLjga7mpJzntKLliLbpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflhajjgabjga4gQ0kg44Kv44Op44K544Gu44Oq44Oz44KvIOODhuODvOODluODq+ikh+WQiOODk+ODpeODvOOBq+ihqOekuuOBleOCjOOCiyBDSSDjga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgIIg44Ko44Oz44OI44Oq44GM44Gq44GE5aC05ZCI44Gv44CB44OH44OV44Kp44Or44OI44Gu5YiX44GM6KGo56S644GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDSSDjgq/jg6njgrnjgavlv5zjgZjjgabjgIHjg6rjg7Pjgq8g44OG44O844OW44Or6KSH5ZCI44OT44Ol44O844Gr6KGo56S644GV44KM44KLIENJIOOBruWIl+OCkuWumue+qeOBl+OBvuOBmeOAgiDlkITjgqjjg7Pjg4jjg6rjgavjga/jgIHjgq/jg6njgrnlkI3jgajkuozph43jgrPjg63jg7PjgpLmjqXpoK3ovp7jgajjgZfjgabku5jjgZHjgovlv4XopoHjgYzjgYLjgorjgb7jgZkgKOS+izogQ29tcHV0ZXI6OinjgILlhajjgabjga4gQ0kg44Gr5YWx6YCa44GZ44KLIENJIOWxnuaAp+OBjOOBhOOBj+OBpOOBi+OBguOCiuOBvuOBmeOAgiAo44Kv44Op44K5IENvbXB1dGVyIOOBruS+izogQ29tcHV0ZXI6Ok5hbWXjgIFDb21wdXRlcjo6Q3VyRGVwbFN0YXRl44CBQ29tcHV0ZXI6OkNyZWF0ZVRpbWUp44CAIENJIOWumue+qeOBp+Wumue+qeOBleOCjOOBpuOBhOOCi+WAi+OAheOBriBDSSDlsZ7mgKfjgpLooajnpLrjgZnjgovjgavjga/jgIHmrKHjga7jgrnjgq3jg7zjg6DjgpLkvb/nlKjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZkgKOOCr+ODqeOCuSBDb21wdXRlciDjga7kvospOiBDb21wdXRlcjo6SGFyZERpc2s6OjHjgIFDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5Ojox44CAIENJIOOCr+ODqeOCueOBruOCqOODs+ODiOODquOBjOOBquOBhOWgtOWQiOOBr+OAgeODh+ODleOCqeODq+ODiOOBruWIl+OBjOihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g5qeL5oiQ6aCF55uuIEFDTCDmp4vpgKDjga7nrKwgMyDjg6zjg5njg6vjgafjgIHjgIzjgqLjgq/jgrfjg6fjg7PjgI3jgavkvb/nlKjjgafjgY3jgovpoIXnm67jgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOani+aIkOmgheebriBBQ0wg5qeL6YCg44Gu56ysIDEg44Os44OZ44Or44Gn5Yip55So5Y+v6IO944Gq6aCF55uu44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g5qeL5oiQ6aCF55uuIEFDTCDmp4vpgKDjga7nrKwgMiDjg6zjg5njg6vjgafliKnnlKjlj6/og73jgarpoIXnm67jgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44GfQ0njga7jgrnjg4bjg7zjgr/jgrnjgavlvbHpn7/jgZnjgovjg6rjg7Pjgq/jga7jgr/jgqTjg5fvvIjjg4HjgrHjg4Pjg4jjga7oprPngrnjgYvjgonlkI3liY3jgYzku5jjgZHjgonjgozjgb7jgZnvvInjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfjg6rjg7Pjgq/jgZXjgozjgZ9DSeOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OBmeOCi+ODgeOCseODg+ODiOOBruOCv+OCpOODl+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ+Wumue+qeOBruabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ+ODh+ODl+ODq+OCueODhuODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K544Gu44Kr44Op44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ+WxlemWi+eKtuaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfjgrPjg5Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njg7vjgqTjg5njg7Pjg4jjg7vjg6Ljgrjjg6Xjg7zjg6vjga/jgIHjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njgYzlpInmm7TjgZXjgozjgZ/loLTlkIjjgIHjgrPjg7Pjg5XjgqPjgrDjg7vjgqLjgqTjg4bjg6Djga7lrprnvqnjgYzlkIzmnJ/jgZXjgozjgabjgYTjgarjgYTjgajjg57jg7zjgq/jgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBriBJVFNN44OV44Kj44O844Or44OJ55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruioreWumumgheebruamguimgeeUu+mdouOBq+ihqOekuuOBleOCjOOCi+WLleeahOODleOCo+ODvOODq+ODieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44O844OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si55S76Z2i44Gr6KGo56S644GV44KM44KL5YuV55qE44OV44Kj44O844Or44OJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheODleODreODs+ODiOOCqOODs+ODieOBjOS4gOW6puOBq+ikh+aVsOOBruioreWumumgheebruOBp+apn+iDveOBmeOCi+OCiOOBhuOBq+ioreWumumgheebruS4gOaLrOaTjeS9nOapn+iDveOCkuacieWKueOBq+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn44Oq44K544OI44GV44KM44Gf44Kw44Or44O844OX44Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA5ous5Yem55CG5qmf6IO944Gu44G/44KS5pyJ5Yq544Gr44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0lUU03jga7oqK3lrprpoIXnm67jgYzkuIDmhI/jgarlkI3liY3jgafjgYLjgovjgYvjganjgYbjgYvjgpLjg4Hjgqfjg4Pjgq/jgZnjgovmqZ/og73jga7mnInlirkv54Sh5Yq544KS6Kit5a6a44GX44G+44GZ44CC44GT44Gu44Kq44OX44K344On44Oz44KS5pyJ5Yq544Gr44GZ44KL5YmN44Gr44CB6YeN6KSH44GX44Gf5ZCN5YmN44KS5oyB44Gk5pei5a2Y44Gu6Kit5a6a6aCF55uu44GM44Gq44GE44GL44K344K544OG44Og44KS44OB44Kn44OD44Kv44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CC44GT44KM44Gv44CB44Kz44Oz44K944O844Or44Kz44Oe44Oz44OJIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyDjgaflrp/ooYzjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn44OB44Kx44OD44OI5qeL5oiQ44Ki44Kk44OG44Og44Gu44Oq44Oz44Kv44Gr5qeL5oiQ44Ki44Kk44OG44Og44Gu44K544OG44O844K/44K544KS6Kit5a6a44GZ44KL44Kk44OZ44Oz44OI44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ+WFqOaWh+aknOe0ouOBq+S9v+eUqOOBleOCjOOCi+ioreWumumgheebruOCpOODs+ODh+ODg+OCr+OCueOBruODleOCo+ODvOODq+ODieOAguODleOCo+ODvOODq+ODieOCguS/neWtmOOBleOCjOOBvuOBmeOBjOOAgeWFqOS9k+eahOOBquapn+iDveOBq+OBr+W/hemgiOOBp+OBr+OBguOCiuOBvuOBm+OCk+OAguOCqOODs+ODiOODquOCkiAwIOOBq+ioreWumuOBmeOCi+OBi+OAgeWJiumZpOOBmeOCi+OBk+OBqOOBp+OAgea3u+S7mOODleOCoeOCpOODq+OBruOCpOODs+OCr+ODq+ODvOODieOCkueEoeWKueOBq+OBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn6Kit5a6a6aCF55uu44Kk44Oz44OH44OD44Kv44K544Gr5qC857SN44GV44KM44KL44OV44Kj44O844Or44OJ44Gn44CB5YWo5paH5qSc57Si5Lul5aSW44Gr5L2/55So44GV44KM44KL44CC5a6M5YWo44Gq5qmf6IO944Gu44Gf44KB44Gr44CB44GZ44G544Gm44Gu44OV44Kj44O844Or44OJ44Gv5b+F6aCI44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn5ZCEV2Vi44K144O844OT44K5KOOCreODvCnjgavlr77jgZfjgabjgIHjgqTjg7Pjg53jg7zjg4jjgpLliLbpmZDjgZnjgovjgq/jg6njgrnjga7phY3liJco5YCkKeOCkuWumue+qeOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgumBuOaKnuOBleOCjOOBn+OBmeOBueOBpuOBruOCr+ODqeOCueOAgeOBguOCi+OBhOOBr+aXouWtmOOBruOBmeOBueOBpuOBruOCr+ODqeOCueOBq+OBpOOBhOOBpuOAgeOCpOODs+ODnOODvOOCq+OBruioreWumuOBp+itmOWIpeWxnuaAp+OCkumBuOaKnuOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggaW52b2tlcuODrOOCpOODpOODvOOBrkdlbmVyaWNJbnRlcmZhY2Xjg6Ljgrjjg6Xjg7zjg6vnmbvpjLLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggaW52b2tlcuODrOOCpOODpOODvOOBrkdlbmVyaWNJbnRlcmZhY2Xjg6Ljgrjjg6Xjg7zjg6vnmbvpjLLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjg6zjgqTjg6Tjg7zjga5HZW5lcmljSW50ZXJmYWNl44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00g6Kit5a6a6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5LiA6KanJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ+OCpOODs+OCt+OCueODhuODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn44Kk44Oz44K344OH44Oz44OI44K544OG44O844OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCq+OCueOCv+ODnuODvOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0ouOBq+ODh+ODl+ODreOCpOODoeODs+ODiOOCueODhuODvOODiOOBjOWQq+OBvuOCjOOCi+OCiOOBhuOBq+OBquOCiuOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44O844Kk44Oz44K/44O844OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si44Gr44Kk44Oz44K344OH44Oz44OI54q25oWL44KS5ZCr44KB44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfjgZPjga7mk43kvZzjga7ntZDmnpzjgavooajnpLrjgZXjgozjgovjgrPjg7Pjg5XjgqPjgrDpoIXnm67jga7mnIDlpKfmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfjgq/jg6njgrnjgpLmi4XlvZPjgZnjgovjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLmi4XlvZPjgZnjgovjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfmp4vmiJDjgr/jgqTjg4bjg6Djga7jg6zjg53jg7zjg4jjgpLnlJ/miJDjgZnjgovjgZ/jgoHjga7jg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICflkI3liY3jg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+ODiuODs+ODkOODvOODu+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga7mpJzntKLntZDmnpzjga7lkITjg5rjg7zjgrjjgavooajnpLrjgZXjgozjgovoqK3lrprpoIXnm67jga7mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44O844Kk44Oz44K/44O844OV44Kn44O844K544Gu5qSc57Si57WQ5p6c44Gu5ZCE44Oa44O844K444Gr6KGo56S644GV44KM44KL6Kit5a6a6aCF55uu44Gu5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn5qSc57Si44GZ44KL44Kq44OW44K444Kn44Kv44OI44CB44Ko44Oz44OI44Oq5pWw44CB6KGo56S644GZ44KL5bGe5oCn44CCQ29uZmlnSXRlbSDjga7lsZ7mgKfjga/jgIHmmI7npLrnmoTjgasgRWxhc3RpY3NlYXJjaCDntYznlLHjgafkv53lrZjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjga7oqK3lrprpoIXnm67jgq/jg6njgrnjga7jgqvjg4bjgrTjg6rjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflsI/oqK3lrprpoIXnm67mpoLopoHjga7liJfjg5XjgqPjg6vjgr/nlKjjga7jg5Hjg6njg6Hjg7zjgr/jgafjgZnjgILms6jmhI86IFwnQWN0aXZlXCcg44KSIDAg44Gr6Kit5a6a44GZ44KL44Go44CB44Ko44O844K444Kn44Oz44OI44Gv5YCL5Lq66Kit5a6a44Gn44GT44Gu44Kw44Or44O844OX44Gu6Kit5a6a44KS57eo6ZuG44Gn44GN44Gq44GP44Gq44KK44G+44GZ44GM44CB566h55CG6ICF44Gv5LuW44Gu44Om44O844K244Gu6Kit5a6a44KS57eo6ZuG44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCUHJlZmVyZW5jZUdyb3VwXCcg44KS5L2/55So44GX44Gm44CB44GT44KM44KJ44Gu6Kit5a6a44KS44Om44O844K244Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44Gp44Gu44Ko44Oq44Ki44Gr6KGo56S644GZ44KL44GL44KS5Yi25b6h44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCueODrOODvOODliDjg4HjgrHjg4Pjg4jmpoLopoHjga7jg4Djg4Pjgrfjg6Xjg5zjg7zjg4kg44OQ44OD44Kv44Ko44Oz44OJ44Gu44OR44Op44Oh44O844K/44O844CCIOOAjOWItumZkOOAjeOBr+OAgeODh+ODleOCqeODq+ODiOOBp+ihqOekuuOBleOCjOOCi+OCqOODs+ODiOODquOBruaVsOOBp+OBmeOAgiDjgIzjgrDjg6vjg7zjg5fjgI3jga/jg5fjg6njgrDjgqTjg7Pjgbjjga7jgqLjgq/jgrvjgrnjgpLliLbpmZDjgZnjgovjgZ/jgoHjgavkvb/nlKjjgZXjgozjgb7jgZkgKOS+izog44Kw44Or44O844OXOiBhZG1pbjtncm91cDE7Z3JvdXAyOynjgIIg44CM44OH44OV44Kp44Or44OI44CN44Gv44CB44OX44Op44Kw44Kk44Oz44GM44OH44OV44Kp44Or44OI44Gn5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44CB44Om44O844K244O844GM5omL5YuV44Gn5pyJ5Yq544Gr44GZ44KL5b+F6KaB44GM44GC44KL44GL44KS5rG65a6a44GX44G+44GZ44CCIOOAjENhY2hlVFRMTG9jYWzjgI3jga/jgIHjg5fjg6njgrDjgqTjg7Pjga7jgq3jg6Pjg4Pjgrfjg6XmmYLplpMgKOWIhuWNmOS9jSkg44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K544Os44O844OWIOODgeOCseODg+ODiOamguimgeOBruODgOODg+OCt+ODpeODnOODvOODiSDjg5Djg4Pjgq/jgqjjg7Pjg4njga7jg5Hjg6njg6Hjg7zjgr/jg7zjgIIg44CM5Yi26ZmQ44CN44Gv44CB44OH44OV44Kp44Or44OI44Gn6KGo56S644GV44KM44KL44Ko44Oz44OI44Oq44Gu5pWw44Gn44GZ44CCIOOAjOOCsOODq+ODvOODl+OAjeOBr+ODl+ODqeOCsOOCpOODs+OBuOOBruOCouOCr+OCu+OCueOCkuWItumZkOOBmeOCi+OBn+OCgeOBq+S9v+eUqOOBleOCjOOBvuOBmSAo5L6LOiDjgrDjg6vjg7zjg5c6IGFkbWluO2dyb3VwMTtncm91cDI7KeOAgiDjgIzjg4fjg5Xjgqnjg6vjg4jjgI3jga/jgIHjg5fjg6njgrDjgqTjg7PjgYzjg4fjg5Xjgqnjg6vjg4jjgafmnInlirnjgavjgarjgaPjgabjgYTjgovjgYvjgIHjg6bjg7zjgrbjg7zjgYzmiYvli5XjgafmnInlirnjgavjgZnjgovlv4XopoHjgYzjgYLjgovjgYvjgpLmsbrlrprjgZfjgb7jgZnjgIIg44CMQ2FjaGVUVExMb2NhbOOAjeOBr+OAgeODl+ODqeOCsOOCpOODs+OBruOCreODo+ODg+OCt+ODpeaZgumWkyAo5YiG5Y2Y5L2NKSDjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjg4fjg5fjg63jgqTjg6Hjg7Pjg4jjga7jg5Hjg6njg6Hjg7zjgr/jga/jgIHmi4XlvZPogIVXZWLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjgafoibLjgpLnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIVXZWLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjgafjg4fjg5fjg63jgqTnirbmhYvjga7jg5Hjg6njg6Hjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn44K444Kn44ON44Op44Or44O744Kr44K/44Ot44Kw44Gu5bGe5oCn44Gu5qip6ZmQ44Kw44Or44O844OX44Gu6Kit5a6a5YCk5L6L44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gu5ZCN5YmN44Oi44K444Ol44O844Or44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjga7oqK3lrprpoIXnm67jgq/jg6njgrnjga7nlarlj7fjg6Ljgrjjg6Xjg7zjg6vjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn44Oa44O844K444Gu44OR44Op44Oh44O844K/77yI5qeL5oiQ44Ki44Kk44OG44Og44GM6KGo56S644GV44KM44G+44GZ77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBrueSsOWig+ioreWumuODk+ODpeODvOOBruioreWumumgheebruOCr+ODqeOCueOBruODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+ODouOCuOODpeODvOODq+OBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrueSsOWig+ioreWumuODk+ODpeODvOOBruioreWumumgheebruOCr+ODqeOCueeUqOOBruODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+ODhuODs+ODl+ODrOODvOODiOODhOODvOODq+OCreODg+ODiOODouOCuOODpeODvOODq+OBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjga7oqK3lrprpoIXnm67jgq/jg6njgrnjga7jg5Djg7zjgrjjg6fjg7Pjg4jjg6rjgqzjg7zjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfoqK3lrprjgZXjgozjgZ/lkIRXZWLjgrXjg7zjg5Pjgrnjga7lkITjgqTjg5njg7Pjg4jjgavlr77jgZfjgabvvIhJbnZva2Vy44Go44GX44Gm77yJ6Kit5a6a44GV44KM44Gf44Ki44Kv44K344On44Oz44KS5a6f6KGM44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfmqKnpmZDjgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44O844OV44Kn44Kk44K544GnSVRTTeani+aIkOmgheebrua3u+S7mOOCouOCr+OCt+ODp+ODs+OCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5qeL5oiQ44Ki44Kk44OG44Og55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44O844Kk44Oz44K/44O844OV44Kn44O844K544GuSVRTTeani+aIkOmgheebruaknOe0oueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp0lUU03mp4vmiJDpoIXnm67jg4Tjg6rjg7zjg5Pjg6Xjg7znlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K55qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844Og55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu6L+95Yqg55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruS4gOaLrElUU03oqK3lrprpoIXnm67nlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu57eo6ZuG55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBruWxpeattOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu5Y2w5Yi355S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarnibnmqKknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOOBjENJ44Gr44Oq44Oz44Kv44GV44KM44Gm44GE44KL5aC05ZCI44CBQ0njga7jgqTjg7Pjgrfjg4fjg7Pjg4jjga7jgrnjg4bjg7zjgr/jgrnjgpLoh6rli5XnmoTjgavoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7kuIDmi6znlLvpnaLjgafjg4fjg5fjg63jgqTnirbmhYvjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5LiA5ous55S76Z2i44Gn44Kk44Oz44K344OH44Oz44OI44Gu44K544OG44O844K/44K544KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844OgIOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOCkuWIpeOBruOCquODluOCuOOCp+OCr+ODiOOBq+ODquODs+OCr+OBp+OBjeOCi+OCiOOBhuOBq+OBmeOCi+ODoeODi+ODpeODvOWGheOBruODquODs+OCr+OCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruani+aIkOOCouOCpOODhuODoOOBruamguimgeOBq+OBguOCi+ani+aIkOOCouOCpOODhuODoOOBruWxpeattOOBq+OCouOCr+OCu+OCueOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrrjg7zjg6Ag44OT44Ol44O844Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q2044Gr44Ki44Kv44K744K544GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Oh44OL44Ol44O844Gr44Oq44Oz44Kv44KS6KGo56S644GX44Gm44CB5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og6KGo56S644Gn6Kit5a6a6aCF55uu44KS5YmK6Zmk44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfoqK3lrprpoIXnm67jga7jg6rjg7Pjgq/jgpLjg4Tjg6rjg7zooajnpLrjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7mpoLopoHjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLopIfoo73jgZnjgovjgZ/jgoHjga7jg6Hjg4vjg6Xjg7zjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844OgIOODk+ODpeODvOOBp+ani+aIkOOCouOCpOODhuODoOOCkuikh+ijveOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844OgIOODk+ODpeODvOOBp+ani+aIkOOCouOCpOODhuODoOOCkue3qOmbhuOBmeOCi+OBn+OCgeOBruODoeODi+ODpeODvOOBruODquODs+OCr+OCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844OgIOODk+ODpeODvOOBq+aIu+OCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoCDjg5Pjg6Xjg7zjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLljbDliLfjgZnjgovjgZ/jgoHjga7jg6Hjg4vjg6Xjg7zjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7mpoLopoHjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLmi6HlpKfjgZnjgovjgZ/jgoHjga7jg6Hjg4vjg6Xjg7zjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBruWxpeattO+8iOmAhumghu+8ieOCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfkvZXjgoLpgbjmip7jgZXjgozjgabjgYTjgarjgYTloLTlkIjjgavooajnpLrjgZXjgozjgovjg4fjg5Xjgqnjg6vjg4jjga7jgqvjg4bjgrTjg6rjg7zjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBruitmOWIpeWtkOOAgiBDb25maWdJdGVt77yD44CBTXlDb25maWdJdGVt77yD44CBIOODh+ODleOCqeODq+ODiOOBr0NvbmZpZ0l0ZW3vvIPjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdDb25maWdJdGVtRmV0Y2ggaW52b2tlcuOCkuiHquWLleeahOOBq+i1t+WLleOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn44OQ44O844K444On44Oz5paH5a2X5YiX5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfjg5Djg7zjgrjjg6fjg7Pjg7vjg4jjg6rjgqzjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ+OCreODo+ODg+OCt+ODpeOBleOCjOOBn+ODleOCo+ODvOODq+ODieOBruS+neWtmOmWouS/guOCkuODgeOCp+ODg+OCr+OBmeOCi+OBk+OBqOOBp+OAgUNvbmZpZ0l0ZW1BQ0zjga7lrp/ooYzjgpLlm57pgb/jgafjgY3jgovjgYvjganjgYbjgYvjgILjgZPjgozjga/jg5Xjgqnjg7zjg6Djga7jg63jg7zjg4nmmYLplpPjgpLmlLnlloTjgZnjgovjgZPjgajjgYzjgafjgY3jgovjgYzjgIFBQ0xNb2R1bGUg44KSIElUU01Db25maWdJdGVtLSDjgaggRm9ybS1SZXR1cm5UeXBlIOOBp+S9v+eUqOOBmeOCi+WgtOWQiOOBr+eEoeWKueOBq+OBl+OBquOBkeOCjOOBsOOBquOCieOBquOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn44Gp44Gu5LiA6Iis55qE44Gq5oOF5aCx44GM44OY44OD44OA44O844Gr6KGo56S644GV44KM44Gm44GE44KL44GL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn44Kv44Op44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ+OCsOODreODvOODkOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ+asoeOBrueUn+eUoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn5YaN55Sf55SjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfnlJ/nlKMnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFXvvJoxNy4144Kk44Oz44OB77yINDQuNDVjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJV77yaMjHjgqTjg7Pjg4HvvIg1My4zNGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVXvvJoyNi4yNeOCpOODs+ODge+8iDY2LjY4Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThV77yaMzEuNeOCpOODs+ODge+8iDgwLjAxY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTnjgqTjg7Pjg4Hjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFV77yaMS43NeOCpOODs+ODge+8iDQuNDVjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFXvvJozNeOCpOODs+ODge+8iDg4Ljljbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMeOCpOODs+ODgeODqeODg+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlXvvJozOC4144Kk44Oz44OB77yIOTcuNzljbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyM+OCpOODs+ODgeODqeODg+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjbjgqTjg7Pjg4HvvIg2MDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0Ve+8mjQy44Kk44Oz44OB77yIMTA2LjY4Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1XvvJo0Ny4yNeOCpOODs+ODge+8iDEyMC4wMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJV77yaMy4144Kk44Oz44OB77yIOC44OWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFXvvJo1Mi4144Kk44Oz44OB77yIMTMzLjM1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS4144Kk44Oz44OB77yIODAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1XvvJo1Ny43NeOCpOODs+ODge+8iDE0Ni42OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNOOCpOODs+ODge+8iDkwMG1t77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZV77yaNjPjgqTjg7Pjg4HvvIgxNjAuMDJjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS4044Kk44Oz44OB77yIMTAwMG1t77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlV77yaNjguMjXjgqTjg7Pjg4HvvIgxNzMuMzVjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNV77yaNS4yNeOCpOODs+ODge+8iDEzLjM0Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVe+8mjczLjXjgqTjg7Pjg4HvvIgxODYuNjljbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuM+OCpOODs+ODge+8iDExMDBtbe+8ie+8mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1Ve+8mjc4Ljc144Kk44Oz44OB77yIMjAwLjAyY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMuOCpOODs+ODge+8iDEyMDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4Ve+8mjg044Kk44Oz44OB77yIMjEzLjM2Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0Ve+8mjfjgqTjg7Pjg4HvvIgxNy43OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVXvvJo4Ljc144Kk44Oz44OB77yIMjIuMjNjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZV77yaMTAuNeOCpOODs+ODge+8iDI2LjY3Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1XvvJoxMi4yNeOCpOODs+ODge+8iDMxLjEyY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFXvvJoxNOOCpOODs+ODge+8iDM1LjU2Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVXvvJoxNS43NeOCpOODs+ODge+8iDQwLjAxY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfkvJroqIgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfjgqLjg4njg6zjgrnlibLjgorlvZPjgaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ+euoeeQhuiAhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfjgqLjg4rjg63jgrDpm7voqbEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+OCouODl+ODqeOCpOOCouODs+OCueODu+OCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn44OQ44OD44OG44Oq44O85a656YeP77yIQWjvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn44OQ44OD44OG44Oq44O844K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn5qeL56+JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfjg5Djgrnjg7vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFXjgq/jg6njgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHjyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44K544Kr44O844OJMeaemuOBguOBn+OCiuOBruWuuemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+OCq+ODvOODieeVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ+OCq+ODvOODieODquODvOODgOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfjgqvjg7zjg4njga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+OCr+ODqeOCpOOCouODs+ODiOiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfjgq/jg6njgqTjgqLjg7Pjg4jjg7vjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn6aGn5a6i44Kr44OG44K044Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+OCr+ODreODg+OCr+ODrOODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn44Kv44Ot44OD44Kv44K544OU44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfjgrPjg7zjg4nnvbLlkI3oqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ+mbu+ipseS8muitsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+OCs+ODs+OCteODq+ODhuOCo+ODs+OCsOWlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn6YCj57Wh5YWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfosqnlo7Lku6PnkIblupcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfjgrPjg7Pjg4bjg4rnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICflpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+Wlkee0hOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+Wlkee0hOacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICflpZHntITmnJ/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn44Kz44O844OJ44Os44K56Zu76Kmx77yIREVDVOmbu+ipse+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfjgrPjgrnjg4jljZjkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfjg6njgqTjgrvjg7PjgrnmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+S9nOaIkOaXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn44Kr44K544K/44Og44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICfjg4fjgqPjg7zjgqjjgqTjg4Hjgrfjg7zjg5Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1DkuojntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROU+OCteODvOODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICfjg4fjgqPjg7TjgqMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn6KuL5rGC5pu444Gu5pel5LuYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfms6jmlofml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+ODr+ODqeODs+ODiOWPluW+l+aXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfjg6rjg6rjg7zjgrnml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ODh+OCueOCr+ODiOODg+ODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ+ODh+OCo+OCueODl+ODrOOCpOODneODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+aWh+abuOe9suWQjeiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0njg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+mbu+WtkOODoeODvOODq+iovOaYjuabuO+8iFMvTUlNRSDoqLzmmI7mm7jvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH55So5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57WC5LqGSVDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfjgrXjg53jg7zjg4jntYLkuoYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfmnInlirnmnJ/pmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+WkluS7mOOBkeODj+ODvOODieODieODqeOCpOODlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ+ODleOCoeOCpOOCouOCpuOCqeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ+ODleOCoeODvOODoOOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ+ODleODqeOCpOODm+OCpOODvOODq+ODu+OCqOODjeODq+OCruODvOiyr+iUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+ODleOCqeODvOODoOODleOCoeOCr+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn44OV44Op44Oz44OB44Oj44Kk44K65aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn44OV44Oq44O844Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ+S4gOiIrOaDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44K544Kr44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn44OP44O844OJ44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn44OP44O844OJ44Km44Kn44Ki44O744Oi44OH44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ+ODj+ODvOODieOCpuOCp+OCoumHjemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn44OY44OD44OJ44K744OD44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVDjg5fjg63jg4jjgrPjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn44Ki44Kk44OH44Oz44OG44Kj44OG44Kj44Go44Ki44Kv44K744K5566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflnKjluqvnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfmipXos4fjgrPjgrnjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfjgqTjg7Pjg5zjgqTjgrnnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfjgq3jg7zjg5zjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENE44Oi44OL44K/44O877yI5ray5pm244OH44Kj44K544OX44Os44Kk77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUTjg6Ljg4vjgr/jg7zvvIjnmbrlhYnjg4DjgqTjgqrjg7zjg4nvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn5Zu65a6a6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+ODjuODvOODiFBDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn57ev5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn44Os44Kk44Ok44O8Me+8mueJqeeQhuODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wy77ya44OH44O844K/44Oq44Oz44Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wz77ya44ON44OD44OI44Ov44O844Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+ODrOOCpOODpOODvDPvvJrjg43jg4Pjg4jjg6/jg7zjgq/jg7vjg6zjgqTjg6Tjg7zvvIjjgrnjg7zjg5Hjg7zjg43jg4Pjg4jvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn44Os44Kk44Ok44O8NO+8muODiOODqeODs+OCueODneODvOODiOODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8Ne+8muOCu+ODg+OCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7w277ya44OX44Os44K844Oz44OG44O844K344On44Oz44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8N++8muOCouODl+ODquOCseODvOOCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfjg6rjg7zjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfjg6njgqTjgrvjg7PjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+ODqeOCpOOCu+ODs+OCueOCreODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfjg6njgqTjgrvjg7Pjgrnjga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn44Oq44Oz6YW46YmE44Oq44OB44Km44Og77yITGlGZVBPNO+8iembu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn44Oq44OB44Km44Og44Kk44Kq44Oz77yITGktaW9u77yJ44OQ44OD44OG44Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn44Ot44O844Oz5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfmiYDlnKjlnLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57WM5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfjg6Hjg7zjgqvjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ+acgOWkp+iyoOiNt+WuuemHjyAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn44Oh44Oi44Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn44Oh44Oi44Oq44O844K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfjg5/jg4vjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+aQuuW4r+mbu+ipseeVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfjg6Ljg5DjgqTjg6sv57WE44G/6L6844G/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn44Oi44OH44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn44Oi44OH44Or6Kqs5piOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ+ODouODi+OCv+ODvOino+WDj+W6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfjg6Ljg4vjgr/jg7zjgrXjgqTjgronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfjg57jgqbjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+ODjeODg+ODiOODr+ODvOOCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfjg43jg4Pjg4jjg6/jg7zjgq/mg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+ODjeODg+ODiOODr+ODvOOCr+aDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn44ON44OD44OI44Ov44O844Kv5bGkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn44OL44OD44Kx44Or44Kr44OJ44Of44Km44Og77yITmlDZO+8iembu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+ODi+ODg+OCseODq+awtOe0oOmbu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfnp5jlr4bkv53mjIHlpZHntITvvIhOREHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfjg47jg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFXmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFN44Oi44K444Ol44O844Or5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCq+ODvOODieOBruaemuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFROODouODi+OCv+ODvO+8iOacieapn+eZuuWFieODgOOCpOOCquODvOODie+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfllrbmpa3osrvnlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn5rOo5paH55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5LuWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICflh7rlipsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5pqX6Ki855Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5pqX6Ki855Wq5Y+3Mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfjg5Hjg7zjg4jjg4rjg7zjgrfjg4Pjg5flpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfpm7voqbHnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ+mbu+ipseOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ+ODleOCo+OCuOOCq+ODq+ODu+OCs+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ+ODkeODr+ODvOODu+ODh+ODquODkOODquODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ+OBp+izvOWFpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn44Op44OD44Kv44Gu5aWl6KGM44GNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn44Op44OD44Kv44Om44OL44OD44OIIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn5a6k5YaFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lN44Kr44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMU+iovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+Wjsuiyt+Wlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfooZvmmJ/pm7voqbEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn5a+G6ZaJ5Z6L6Ymb6JOE6Zu75rGgIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn44K344Oq44Ki44Or55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ+OCteODvOODkOODvOODu+OCveODleODiOOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ+OCteODvOODk+OCueWlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ+OCteODvOODk+OCueOCv+OCsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfjgr3jgrHjg4Pjg4jjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfjgrnjg5Tjg7zjgqvjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn44K544K/44Oz44OA44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfplovlp4tJUOOCouODieODrOOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn44K544OI44Os44O844K4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn44K544OI44Os44O844K444O744OR44O844OG44Kj44K344On44OzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn5a2Q5Lya56S+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfmpoLopoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfjgrfjg7Pjgq/jg6njgqTjgqLjg7Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ+OCueODrOODg+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ+OCteODs+ODgOODvOODnOODq+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44K544Kr44O844OJUkFN5ZCI6KiI77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICflkIjoqIhSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn44K/44OD44OB44K544Kv44Oq44O844Oz44Oi44OL44K/44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn44K/44Ov44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ljg4/jg5YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICfjg5bjgqTjgrjjg7zjgqjjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAn44GL44Gd44GG44G444GE44GE44GN44KC44GGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUuODmOODg+ODieOCu+ODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ+ODkOODvOODgeODo+ODq+ODquODs+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUOODleOCqeODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn44Km44Kn44OW44Kr44Oh44OpJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ko_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmtvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfsnbzrsJgg7Jq07JiBIOuNsOydtO2EsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn7IiY7IugIOyalOyyrSDrjbDsnbTthLAg7ISk7KCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn67Cc7IugIOydkeuLtSDrjbDsnbTthLAg7ISk7KCVJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn6rWs7ISxIO2VreuqqSDqtIDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICftgbTrnpjsiqQg7KCV7J2YIOuzgOqyvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn7Jet7ZWgIOygleydmCDrs4Dqsr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQg7YG0656Y7IqkIOuyiOuTpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+yXrOq4sOyXkOyEnCDqsIDsnqUg7J2867CY7KCB7J24IOq1rOyEsSDtla3rqqnsnYQg67O07Jes7KO864qUIFJlYWR5MkltcG9ydCDtgbTrnpjsiqQg67KI65Ok7J2EIOqwgOyguOyYrCDsiJgg7J6I7Iq164uI64ukLiDrqocg6rCA7KeAIOy2lOqwgCDqtazshLHsnbQg7ZWE7JqU7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+q4sOyhtCDsl5TthLDti7Ag7JeF642w7J207Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQg7YG0656Y7IqkIOuyiOuTpCDqsIDsoLjsmKTquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfqtazshLEg7ZWt66qpIO2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6rWs7ISxIO2VreuqqSDsl63tlaAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfsiJjsl4Ug7ZWE7YSw66eBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+uqqeuhneyXkOyEnCDtgbTrnpjsiqTrpbwg7ISg7YOd7ZWY7JesIOyDiCDqtazshLEg7ZWt66qp7J2EIOunjOuTreuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICftgbTrnpjsiqQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn67Cw7Y+sIOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ+yduOyLnOuNmO2KuCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn64uk66W4IOunge2BrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn6rWs7ISxIO2VreuqqSDrsojtmLjqsIAg7J6Y66q765CY7JeI7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfsl7DqsrDtlaAg64uk66W4IOq1rOyEsSDtla3rqqnsnZgg67KI7Zi47J6F64uI64ukLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2EIOygleunkCDsgq3soJztlZjsi5zqsqDsirXri4jquYw/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2YIOydtOumhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn7J2066aE7J20IOydtOuvuCDri6TsnYwg67KI7Zi47J2YIOq1rOyEsSDtla3rqqnsl5DshJwg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn7J20IOq1rOyEsSDtla3rqqnsnZgg67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+uyhOyghCDrsojtmLjqsIAg64uk7J2MIOuyiO2YuOydmCBDb25maWdJdGVtc+yXkOyEnCDsnbTrr7gg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn7J247Iuc642Y7Yq4IOyDge2DnCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn6rWs7ISxIO2VreuqqSDquLDroZ06ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ+q4sOuhnSDsvZjthZDsuKAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+2BrOumrOyXkOydtO2DgOyehCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICftmZXrjIAg67O06riwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ+2OmOydtOyngOuLuSDqtazshLEg7ZWt66qpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfqtazshLEg7ZWt66qpIOuNsOydtO2EsOulvCDssL7snYQg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydhCDshKDtg53tlanri4jri6QuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn6rKA7IOJIOyLpO2WiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfsnbTsoIQg67KE7KCE7JeQ7ISc64+EIOqygOyDie2VmOyLnOuCmOyalD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfqtazshLEg7ZWt66qp7JqpIO2KuOumrOu3sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+q5iuydtCDroIjrsqgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICftmZXrjIAv7LaV7IaMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ+q1rOyEsSDtla3rqqnsnZgg7LWc64yAIOunge2BrCDroIjrsqjsl5Ag64+E64us7ZaI7Iq164uI64ukISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6rWs7ISxIO2VreuqqSDsoJXrs7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn7ZiE7J6sIOuwsO2PrCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+2YhOyerCDsnbjsi5zrjZjtirgg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+uniOyngOuniSDrs4Dqsr3rkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn66eI7KeA66eJIOuzgOqyveyekCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ+q1rOyEsSDtla3rqqknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6rWs7ISxIO2VreuqqSDqsoDsg4knOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ+qwnOyytCDsnKDtmJUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfsnKDtmJXrs4Qg7ZWE7YSw66eBJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn64uk7J2MIO2BtOuemOyKpOulvCDqsIDsoLjsmLXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+uLpOydjCDsl63tlaDsnYQg6rCA7KC47Ji164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICftlbTri7kg64+Z7KCBIO2VhOuTnOyZgCDsnbzrsJgg7Lm07YOI66Gc6re4IO2BtOuemOyKpOuPhCDsg53shLHrkJjrqbAg7J6Q64+Z7Jy866GcIOygnOqxsOuQmOyngCDslYrripTri6TripQg7KCQ7JeQIOycoOydmO2VmOyEuOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfqs4Tsho0g7KeE7ZaJ7ZWY7Iuc6rKg7Iq164uI6rmMPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfsmIjsoJwg7YG0656Y7Iqk6rCAIO2VhOyalO2VqeuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn7KCV7J2Y7JeQIOycoO2aqO2VnCBZQU1MIO2VtOyLnOqwgCDsl4bsirXri4jri6QuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn6rCc7JqUOiBJVFNNIOq1rOyEsSDtla3rqqknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE6rCAIOyngOygleuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn7ISg7YOd7ZWcIOq1rOyEsSDtla3rqqnsnbQg7ZWY64KYIOydtOyDgSDtlYTsmpTtlanri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn7J20IOq1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIOyTsOq4sCDqtoztlZzsnbQg7JeG7Iq164uI64ukOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn7YG0656Y7Iqk7JeQIOuMgO2VnCDsoJXsnZjqsIAg7KCV7J2Y65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+uNsOydtO2EsOuyoOydtOyKpOyXkOyEnCDqtazshLEg7ZWt66qpICIlcyLrpbwg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn6rWs7ISxIO2VreuqqSBJRCAlc+ulvCDsgq3soJztlaAg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlc+yXkCDrjIDtlZwg67KE7KCE7J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfqtazshLEg7ZWt66qpIElELCDspJHrs7UgSUQg65iQ64qUIO2BtOuemOyKpCBJROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn7JWh7IS47IqkIOq2jO2VnOydtCDsl4bsirXri4jri6QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+2eiOyKpO2GoOumrOulvCDtkZzsi5ztlaAg7IiYIOyXhuqzoCwgQ29uZmlnSXRlbUlE6rCAIOyngOygleuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn6riw66Gd7J2EIO2RnOyLnO2VoCDsiJgg7JeG7Jy866mwIOyVoeyEuOyKpCDqtoztlZzsnbQg67aA7Jes65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ+yDiCDqtazshLEg7ZWt66qpKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn7IOIIOuyhOyghCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn67Cw7Y+sIOyDge2DnCDsl4XrjbDsnbTtirjrkKgo7IOIPSVzLCDsnbTsoIQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+yduOyLnOuNmO2KuCDsg4Htg5wg7JeF642w7J207Yq4KOyDiD0lcywg7J207KCEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ+q1rOyEsSDtla3rqqkoSUQ9JXMpIOyCreygnOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ3Mo7Jyg7ZiVPSVzKeyXkCDrjIDtlZwg66eB7YGs6rCAIOy2lOqwgOuQmOyXiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ3Mo7Jyg7ZiVPSVzKeyXkCDrjIDtlZwg66eB7YGsIOyCreygnOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn6rWs7ISxIO2VreuqqSDsoJXsnZgg7JeF642w7J207Yq465CoKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+ydtOumhCDsl4XrjbDsnbTtirgo7IOIPSVzLCDsnbTsoIQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn7IaN7ISxICVz6rCAICIlcyLsl5DshJwgIiVzIuuhnCDsl4XrjbDsnbTtirjrkJjsl4jsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+uyhOyghCAlcyDsgq3soJzrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn6rWs7ISxIO2VreuqqSBJRCDrmJDripQg67KE7KCEIElE6rCAIOyngOygleuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+yEpOyglSDtla3rqqnsnYQg7ZGc7Iuc7ZWgIOyImCDsl4bsnLzrqbAg7JWh7IS47IqkIOq2jO2VnOydtCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVz66W8IOuNsOydtO2EsOuyoOydtOyKpOyXkOyEnCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ+yXkOyEnCAlc+qwgCDsnbjsh4TtlojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfssLjqs6AnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfsnpjrqrvrkJwgQ2xhc3NJROyeheuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lE6rCAIOygnOqzteuQmOyngCDslYrsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn7J20IO2BtOuemOyKpOyXkCDrjIDtlZwg7JWh7IS47IqkIOq2jO2VnOydtCDrtoDsl6zrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn6rKw6rO8IOyXhuydjCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7wnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ+2VreuqqeydhCDtkZzsi5ztlaAg7IiYIOyXhuyKteuLiOuLpC4g6rWs7ISxIO2VreuqqeyXkCDrjIDtlZwg7JWh7IS47IqkIOq2jO2VnOydtCDrtoDsl6zrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfqtazshLEg7ZWt66qp7J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfrsoTsoITsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn7Jq07JiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfqsr3qs6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfsnbjsi5zrjZjtirgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2YIOuwsO2PrCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydmCDsnbjsi5zrjZjtirgg7IOB7YOcJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn67mE7ZeI6rCAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ+2VhO2EsOqwgCDsnKDtmqjtlZjsp4Ag7JWK7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn6rKA7IOJIOunpOqwnOuzgOyImOqwgCDsnpjrqrvrkJjsl4jsirXri4jri6QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn7ZGc7Iuc65CcIOq1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn67Cw7Y+sIOyDge2DnCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn7ZiE7J6sIOyduOyLnOuNmO2KuCDsg4Htg5wg7Jyg7ZiVJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+yCrOydtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6rWs7ISxIO2VreuqqeydmCDtgbTrnpjsiqQg7KCc7ZWcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICftlZjrgpgg7J207IOB7J2YIO2BtOuemOyKpOulvCDshKDtg53tlZjsl6wg7ISg7YOdIOqwgOuKpe2VnCDqtazshLEg7ZWt66qp7J2EIOygnO2VnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+q1rOyEsSDtla3rqqnsnZgg7YG0656Y7IqkIOygnO2VnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+2VmOuCmCDsnbTsg4HsnZgg7YG0656Y7Iqk66W8IOyEoO2Dne2VmOyXrCDshKDtg50g6rCA64ql7ZWcIOq1rOyEsSDtla3rqqnsnYQg7KCc7ZWc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ+uPmeyggSjqtazshLEg7ZWt66qpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn7KCV7KCBKOuyhOyghCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn66eB7YGsIOywuOyhsCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn7J20IOunge2BrOqwgCDqtazshLEg7ZWt66qp7JeQIOyggeyaqeuQmOuKlOyngCDrmJDripQg7LC47KGwIOqwnOyytOydmCDsoJXsoIEg67KE7KCE7JeQIOyggeyaqeuQmOuKlOyngCDsl6zrtoDsnoXri4jri6QuIO2YhOyerCDsnbjsi5zrjZjtirgg7IOB7YOcIOqzhOyCsOydgCDrj5nsoIEg66eB7YGs7JeQ7ISc66eMIOyImO2WieuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfqtazshLEg7ZWt66qp7J2EIOqygOyDie2VoCDsho3shLHsnYQg7ISg7YOd7ZWp64uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfquLDrs7gg6rWs7KGw6rCAIOycoO2aqO2VmOyngCDslYrsirXri4jri6QuIFlBTUwg7ZiV7Iud7J2YIOuNsOydtO2EsCDtlbTsi5zrpbwg7J6F66Cl7ZWY7IS47JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwg66y47J6Q7Je07J2AIFwnLS0tXCfroZwg7Iuc7J6R7ZW07JW8IO2VqeuLiOuLpC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnY29uZmlnaXRlbV9saW5rIO2FjOydtOu4lOydhCDsoJzqsbDtlaAg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+q0gOugqCDrj5nsoIEg7ZWE65Oc66W8IOywvuydhCDsiJgg7JeG7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayDthYzsnbTruJTsl5Ag7IK97J6F7ZWgIOyImCDsl4bsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdjb25maWdpdGVtX2xpbmsg7YWM7J2067iU7JeQIO2WiSAw6rCc66W8IOyCveyehe2WiOyKteuLiOuLpC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn7ZWY64KY7J2YIOyalOyGjOydmCDstZzrjIAg6rCc7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ+yyqOu2gO2MjOydvCDqsIDsoLjsmKTquLAv64K067O064K06riwKO2VnCDspITsnZgg66eI7KeA66eJIO2VreuqqeycvOuhnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfrsoTsoIQg66y47J6Q7Je0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ+ygleydmCDrj5nquLDtmZQg7KSRIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6QuIOuhnOq3uOulvCDtmZXsnbjtlbQg7KO87IS47JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ+uPmeq4sO2ZlOuQmOyngCDslYrsnYAgSVRTTUNvbmZpZ0l0ZW0g7KCV7J2Y6rCAIOyeiOyKteuLiOuLpC4gSVRTTUNvbmZpZ0l0ZW0g64+Z7KCBIO2VhOuTnCDrs4Dqsr0g7IKs7ZWt7J2EIOuwsO2PrO2VmOyEuOyalC4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+unjOujjOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+ycoOyngCDqtIDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICftjIzsnbzrn78nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+qzhO2ajeuQnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfsiJjrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+ydgO2HtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfqsoDthqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+2FjOyKpO2KuC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn6rCc7JqUIOuwjyDtmZXsnbgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn7YG0656Y7IqkL+yXre2VoCDrsI8g6rSA66CoIO2VhOuTnCDqsIDsoLjsmKTquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICftgbTrnpjsiqQg6rCA7KC47Jik6riwIOykkeyXkCDsmKTrpZjqsIAg67Cc7IOd7ZaI7Iq164uI64ukLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g7Iio6rmAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDtkZzsi5zrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4nsl5DshJwg7ZmV7J6lIOqygOyDiSDsobDqsbTsnYQg7ZeI7Jqp7ZWp64uI64ukLiDsnbQg6riw64ql7J2EIOyCrOyaqe2VmOuptCDsmIjrpbwg65Ok7Ja0ICIoKmtleTEqJiYqa2V5MiopIiDrmJDripQgIigqa2V5MSp8fCprZXkyKiki7JmAIOqwmeydgCDsobDqsbTsnLzroZwg6rWs7ISxIO2VreuqqSDsnbTrpoTsnYQg6rKA7IOJ7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg7ISk7KCVIO2VreuqqSDqsoDsg4nsl5DshJwg7ZmV7J6lIOqygOyDiSDsobDqsbTsnYQg7ZeI7Jqp7ZWp64uI64ukLiDsnbQg6riw64ql7J2EIOyCrOyaqe2VmOuptCDsmIjrpbwg65Ok7Ja0ICIoKmtleTEqJiYqa2V5MiopIiDrmJDripQgIigqa2V5MSp8fCprZXkyKiki7JmAIOqwmeydgCDsobDqsbTsnLzroZwg6rWs7ISxIO2VreuqqSDsnbTrpoTsnYQg6rKA7IOJ7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+2VoOuLueuQnCBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+qzoOqwneyCrOyXkCDtlaDri7nrkJwgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfqs6DqsJ0g7IKs7Jqp7J6Q7JeQ6rKMIO2VoOuLueuQnCBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiDshKTsoJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ+uPmeydvO2VnCDqtazshLHtla3rqqkg7YG0656Y7IqkKFwnY2xhc3NcJykg65iQ64qUIOyghOyXrShcJ2dsb2JhbFwnKSDrgrTsl5DshJzrp4wg6rOg7Jyg7ZWcIOydtOumhOydhCDtmZXsnbjtlZjrr4DroZwg7KSR67O17J2EIOywvuydhCDrlYwg6riw7KG07J2YIOuqqOuToCDqtazshLHtla3rqqnsnbQg6rOg66Ck65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn66qF66qFIOyytOqzhOulvCDsoIHsmqntlaAg66qo65OI7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ+uyiO2YuCDssrTqs4Trpbwg7KCB7Jqp7ZWgIOuqqOuTiOydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ+uyhOyghCDrrLjsnpDsl7Qg7LK06rOE66W8IOyggeyaqe2VoCDrqqjrk4jsnYQg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ+yDiCDrsoTsoIQg7IOd7ISx7J2EIO2KuOumrOqxsO2VoCDsho3shLHsnYQg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfsnbQg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsl5Ag7ZWg64u57ZWgIOy5tO2FjOqzoOumrOulvCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ+q1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOuMgO2VnCDsl7Qg6rWs7ISxIO2VreuqqSDtlYTthLAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQ7IScIO2VhO2EsOunge2VoCDsiJgg7J6I64qUIOyXtOyeheuLiOuLpC4g7LC46rOgOiDqtazshLEg7ZWt66qpIOyGjeyEseqzvCDrj5nsoIEg7ZWE65OcKER5bmFtaWNGaWVsZF9OYW1lWCkg66eMIO2XiOyaqeuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn6rWs7ISxIO2VreuqqSDstpTqsIAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn6rWs7ISxIO2VreuqqSDtjrjsp5EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDquLDroZ3sl5Ag66Gc6rmF7ZWgIOyImCDsnojripQg6rWs7ISxIO2VreuqqSDsnbTrsqTtirgg66qo65OI7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfqtazshLEg7ZWt66qp7J2EIO2YhOyerCDsoJXsnZjroZwg7JeF642w7J207Yq47ZWY64qUIOq1rOyEsSDtla3rqqkg7J2067Kk7Yq4IOuqqOuTiOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfqtazshLEg7ZWt66qpIOq4sOuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn6rWs7ISxIO2VreuqqSDsnbjsh4QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn6rWs7ISxIO2VreuqqSDtmZXrjIAv7LaV7IaMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ+q1rOyEsSDtla3rqqkg7Yq466asIOuztOq4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfqtazshLEg7ZWt66qpIOuyhOyghCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfri6TsnYwg7YG0656Y7Iqk7J2YIOq1rOyEsSDtla3rqqnsnYAgRWxhc3RpY3NlYXJjaCDshJzrsoTsl5Ag7KCA7J6l65CY7KeAIOyViuyKteuLiOuLpC4g7J2066W8IOq4sOyhtCBDSeyXkCDsoIHsmqntlZjroKTrqbQg7J20IOyYteyFmOydhCDrs4Dqsr3tlZwg7ZuEIOy9mOyGlOydhCDthrXtlbQgQ0kg66eI7J206re466CI7J207IWY7J2EIOyLpO2Wie2VtOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+uLpOydjCDrsLDtj6wg7IOB7YOc7J2YIOq1rOyEsSDtla3rqqnsnYAgRWxhc3RpY3NlYXJjaCDshJzrsoTsl5Ag7KCA7J6l65CY7KeAIOyViuyKteuLiOuLpC4g7J2066W8IOq4sOyhtCBDSeyXkCDsoIHsmqntlZjroKTrqbQg7J20IOyYteyFmOydhCDrs4Dqsr3tlZwg7ZuEIOy9mOyGlOydhCDthrXtlbQgQ0kg66eI7J206re466CI7J207IWY7J2EIOyLpO2Wie2VtOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+q1rOyEsSDtla3rqqkg7KCc7ZWcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICftjpjsnbTsp4Dri7kg6rWs7ISxIO2VreuqqSDsoJztlZwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfqtazshLEg6rSA66asIOuNsOydtO2EsOuyoOydtOyKpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+q1rOyEsSDtla3rqqkg7J286rSEIOuqqOuTiC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDrsLHsl5Trk5wg65287Jqw7YSw7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfqtazshLEg7ZWt66qp7JeQIOuMgO2VnCDsoJXsnZjrpbwg66eM65Ok6rOgIOq0gOumrO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICftirnsoJUg7Iuc7KCQ7JeQIOq1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIO2LsOy8k+ydhCDrp4zrk63ri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+qzoOqwneydgCDqs7zqsbAgQ0kg67KE7KCE7J2EIOuzvCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfqs6DqsJ3snYAg7J207KCEIENJIOuyhOyghCDqsITsl5Ag7IiY64+Z7Jy866GcIOyghO2ZmO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydmCDsho3shLHsl5Ag7IKs7Jqp7ZWgIOq4sOuzuCDrjbDsnbTthLDsnoXri4jri6QuIOyYiDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsnZgg7IaN7ISx7JeQIOyCrOyaqe2VoCDquLDrs7gg642w7J207YSw7J6F64uI64ukLiDsmIg6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfrp4Htgawg6rCd7LK0IOychOygr+yXkOyEnCDshKTsoJUg67KE7Yq87J2EIOyCrOyaqe2VoCDsiJjsnojripQg7JWh7IWYIOygleydmCAoTGlua09iamVjdCA6OiBWaWV3TW9kZSA9ICJjb21wbGV4IikuIOydtOufrO2VnCDsnpHsl4XsnYAg64uk7J2MIEpTIOuwjyBDU1Mg7YyM7J287J2EIOuTseuhne2VtOyVvO2VqeuLiOuLpC4gQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfrsoTsoIQg66y47J6Q7Je07JeQIOuMgO2VnCDthZztlIzrpr86Ou2ItO2CtyDssrTqs4Trpbwg7KCV7J2Y7ZWp64uI64ukLiDrsoTsoIQg66y47J6Q7Je0IOuqqOuTiOydtCBUZW1wbGF0ZVRvb2xraXTsnLzroZwg7ISk7KCV65CcIOqyveyasOyXkOunjCDsgqzsmqnrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn6rOg6rCd7J20IOq1rOyEsSDtla3rqqnsnYQg67O8IOyImCDsnojrj4TroZ0g7ZeI7Jqp65CY64qUIOyhsOqxtCDsp5HtlansnYQg7KCV7J2Y7ZWp64uI64ukLiDsobDqsbTsnYAg7ISg7YOd7KCB7Jy866GcIO2KueyglSDqs6DqsJ0g6re466O57Jy866GcIOygnO2VnO2VoCDsiJgg7J6I7Iq164uI64ukLiDsnbTrpoTsnYAg7Jyg7J287ZWcIO2VhOyImCDsho3shLHsnoXri4jri6QuIOuLpOuluCDsmLXshZjsnYQg7KeA7KCV7ZWY7KeAIOyViuycvOuptCDrqqjrk6Ag6rWs7ISxIO2VreuqqeydtCDtlbTri7kg7Lm07YWM6rOg66asIOyVhOuemOyXkCDtkZzsi5zrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfsnbzrsJgg7J247YSw7Y6Y7J207Iqk66W8IOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqnsnYQg7IKt7KCc7ZWY64qUIOuNsCDtlYTsmpTtlZwg6raM7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+ydvOuwmCDsnbjthLDtjpjsnbTsiqTrpbwg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqeydhCDqsIDsoLjsmKTripQg642wIO2VhOyalO2VnCDqtoztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOqygOyDie2VmOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfsnbzrsJgg7J247YSw7Y6Y7J207Iqk66W8IOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqnsnYQg7ISk7KCV7ZWY64qUIOuNsCDtlYTsmpTtlZwg6raM7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqSDrqqnroZ3snZgg7J6R7J2AIOuztOq4sOulvCDtkZzsi5ztlZjripQg6rCc7JqUIOuqqOuTiOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ+uFuOuTnCDsl7DqsrDsl5Ag66eB7YGsIOycoO2YlSDroIjsnbTruJTsnYQg7ZGc7Iuc7ZWg7KeAIOyXrOu2gOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfqsIEg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsl5Ag64yA7ZW0IOqwnOuzhOyggeycvOuhnCDsoJXqt5zsi53snYQg7KCV7J2Y7ZWY7JesIOq1rOyEsSDtla3rqqkg7J2066aE7J2EIO2ZleyduO2VmOqzoCDtlbTri7kg7Jik66WYIOuplOyLnOyngOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kg7YG0656Y7Iqk7JeQIOuUsOudvCDqtazshLEg7ZWt66qpIOqwnOyalOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIENJIOyXtOydhCDsoJXsnZjtlanri4jri6QuIOqwgSDtla3rqqnsnYAg7YG0656Y7IqkIOydtOumhOqzvCDtlbTri7kg7YG0656Y7Iqk7JeQ7IScIOyCrOyaqSDqsIDriqXtlZwg7ZWE65OcIOuwsOyXtOuhnCDqtazshLHrkJjslrTslbwg7ZWp64uI64ukLiDrj5nsoIEg7ZWE65OcIO2VreuqqeydgCBEeW5hbWljRmllbGRfRmllbGROYW1lIOyKpO2CpOuniOulvCDrlLDrnbzslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsnZgg6rWs7ISxIO2VreuqqSDsoJXroKzsnYQg7JyE7ZWcIOq4sOuzuCDqtazshLEg7ZWt66qpIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOydmCDqtazshLEg7ZWt66qpIOygleugrOydhCDsnITtlZwg6riw67O4IOq1rOyEsSDtla3rqqkg7IaN7ISx7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfsnbQg7J6R7JeF7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOydmCDqtazshLEg7ZWt66qpIOygleugrOyXkCDrjIDtlZwg6riw67O4IOq1rOyEsSDtla3rqqkg7IaN7ISx7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87JeQ7IScIOq4sOuzuCDqtazshLEg7ZWt66qpIOyInOyEnOulvCDsoJXsnZjtlanri4jri6QuIOychOyqvTog6rCA7J6lIOyYpOuemOuQnCDtla3rqqnsnYQg66eoIOychOyXkCDrsLDsuZjtlanri4jri6QuIOyVhOuemOuhnDog7LWc7IugIO2VreuqqeydtCDrp6gg7JyE7JeQIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87JeQ7IScIOq4sOuzuCDqtazshLEg7ZWt66qpIOyInOyEnOulvCDsoJXsnZjtlanri4jri6QuIOychOyqvTog6rCA7J6lIOyYpOuemOuQnCDtla3rqqnsnYQg66eoIOychOyXkCDtkZzsi5ztlanri4jri6QuIOyVhOuemOuhnDog7LWc7IugIO2VreuqqeydhCDrp6gg7JyE7JeQIOuwsOy5mO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn7J20IOyekeyXheydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsl5DshJwg6riw67O4IOq1rOyEsSDtla3rqqkg7Iic7ISc66W8IOygleydmO2VqeuLiOuLpC4g7JyE66GcOiDqsIDsnqUg7Jik656Y65CcIO2VreuqqeydhCDsnITsl5Ag7ZGc7Iuc7ZWp64uI64ukLiDslYTrnpjroZw6IOy1nOyLoCDtla3rqqnsnYQg66eoIOychOyXkCDrsLDsuZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIO2RnOyLnOuQmOuKlCBDSeydmCDquLDrs7gg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqeydgCDtgbTrnpjsiqQg7J2066aE6rO8IO2VtOuLuSDtgbTrnpjsiqTsl5Ag7IKs7JqpIOqwgOuKpe2VnCDtlYTrk5wg67Cw7Je066GcIOq1rOyEseuQmOyWtOyVvCDtlanri4jri6QuIOuPmeyggSDtlYTrk5wg7ZWt66qp7J2AIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg7Iqk7YKk66eI66W8IOuUsOudvOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ+2RnOyLnO2VoCDquLDrs7gg6rSA6rOEIOq5iuydtOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOyXkCDquLDrs7jsoIHsnLzroZwg7ZGc7Iuc65CY64qUIOq1rOyEsSDtla3rqqkg6rKA7IOJIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsl5Ag6riw67O47KCB7Jy866GcIO2RnOyLnOuQmOuKlCDqtazshLEg7ZWt66qpIOqygOyDiSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLiDsmIg6ICLtgqQi64qUIOuPmeyggSDtlYTrk5zsnZgg7J2066aEKOydtCDqsr3smrAgXCdYXCcpLCAi7L2Y7YWQ7LigIuuKlCDrj5nsoIEg7ZWE65OcIOycoO2YleyXkCDrlLDrnbwg64+Z7KCBIO2VhOuTnOydmCDqsJIo7YWN7Iqk7Yq4OiBcJ+2FjeyKpO2KuFwnLCDrk5zroa3ri6TsmrQ6IFwnMVwnLCDrgqDsp5wv7Iuc6rCEKeydtOyWtOyVvCDtlanri4jri6Q6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMFwnOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIOuwjyDrmJDripQgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnXCdJVFNNQ29uZmlnSXRlbVwnIO2BtOuemOyKpOydmCDquLDrs7gg7ZWY7JyEIOqwneyytOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQ7IScIOyCrOyaqSDqsIDriqXtlZwgQ0kg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqeydgCDtgbTrnpjsiqQg7J2066aE6rO8IO2VtOuLuSDtgbTrnpjsiqTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCDtlYTrk5wg67Cw7Je066GcIOq1rOyEseuQmOyWtOyVvCDtlanri4jri6QuIOuPmeyggSDtlYTrk5wg7ZWt66qp7J2AIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg7Iqk7YKk66eI66W8IOuUsOudvOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ+ydtCDtmZTrqbTsnZgg7ISc7Iud7J6I64qUIO2FjeyKpO2KuCDtjrjsp5HquLAg6rWs7ISxIOyalOyGjOydmCDrhpLsnbTrpbwg7KCV7J2Y7ZWp64uI64ukLiDsiKvsnpAgKO2UveyFgCkg65iQ64qUIO2NvOyEvO2KuCDqsJIgKOyDgeuMgCnsnYQg7J6F66Cl7ZWY7Iut7Iuc7JikLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqtIDrpqzsnpAg7J247YSw7Y6Y7J207Iqk7JeQ7IScIENJIOygleydmCDtjrjsp5HquLDsnZgg7ZaJIOyImOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ+yduOyLnOuNmO2KuCDsg4Htg5zsnZgg7Iic7ISc66W8IOuGkuydjCjsmIg6IO2BrOumrOyLnO2DiCnsl5DshJwg64Ku7J2MKOyYiDog6riw64qlKeycvOuhnCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn7Jew6rKw65CcIO2LsOy8k+ydtCBDSeydmCDsg4Htg5zsl5Ag7JiB7Zal7J2EIOykhCDsiJgg7J6I64qUIOq0gOugqCDrsLDtj6wg7IOB7YOc66W8IOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfrqqjrk6AgQ0kg7YG0656Y7Iqk7JeQIOuMgO2VtCDrp4Htgawg7YWM7J2067iUIOuzte2VqSDrs7TquLDsl5Ag7ZGc7Iuc65CY64qUIENJIOyXtOydhCDsoJXsnZjtlanri4jri6QuIO2VreuqqeydtCDsl4bsnLzrqbQg6riw67O4IOyXtOydtCDtkZzsi5zrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOunge2BrCDthYzsnbTruJQg67O17ZWpIOuztOq4sOyXkCDtkZzsi5zrkJjripQgQ0kg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqSDslZ7sl5DripQg7YG0656Y7IqkIOydtOumhOqzvCDsnbTspJEg7L2c66GgKOyYiDog7Lu07ZOo7YSwOjop7J20IOyZgOyVvCDtlanri4jri6QuIOuqqOuToCBDSeyXkCDqs7XthrXsnLzroZwg7KCB7Jqp65CY64qUIOuqhyDqsIDsp4AgQ0kg7IaN7ISx7J20IOyeiOyKteuLiOuLpCjsmIg6IENvbXB1dGVyIO2BtOuemOyKpOydmCDqsr3smrA6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIENJIOygleydmOyXkCDsoJXsnZjrkJwg64yA66GcIOqwnOuzhCBDSSDsho3shLHsnYQg7ZGc7Iuc7ZWY66Ck66m0IOuLpOydjCDsiqTtgqTrp4jrpbwg7IKs7Jqp7ZW07JW8IO2VqeuLiOuLpCjsmIg6IENvbXB1dGVyIO2BtOuemOyKpOydmCDqsr3smrApOiDsu7Ttk6jthLA6Ou2VmOuTnOuUlOyKpO2BrDo6MSwg7Lu07ZOo7YSwOjrtlZjrk5zrlJTsiqTtgaw6OjE6OuyaqeufiTo6MSwg7Lu07ZOo7YSwOjrtlZjrk5zrlJTsiqTtgaw6OjIsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoyOjrsmqnrn4k6OjEuIENJIO2BtOuemOyKpOyXkCDrjIDtlZwg7ZWt66qp7J20IOyXhuuKlCDqsr3smrAg6riw67O4IOyXtOydtCDtkZzsi5zrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDqtazshLEg7ZWt66qpIEFDTCDqtazsobDsnZgg7IS4IOuyiOynuCDsiJjspIDsl5DshJwgXCfrj5nsnpFcJ+yXkCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g6rWs7ISxIO2VreuqqSBBQ0wg6rWs7KGw7J2YIOyyqyDrsojsp7gg7IiY7KSA7JeQ7IScIOyCrOyaqe2VoCDsiJgg7J6I64qUIO2VreuqqeydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g6rWs7ISxIO2VreuqqSBBQ0wg6rWs7KGw7J2YIOuRkCDrsojsp7gg7IiY7KSA7JeQ7IScIOyCrOyaqe2VoCDsiJgg7J6I64qUIO2VreuqqeydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+yXsOqysOuQnCBDSeydmCDsg4Htg5zsl5Ag7JiB7Zal7J2EIOuvuOy5oCDsiJgg7J6I64qUIOunge2BrCDsnKDtmJUo7Yuw7LyTIOq0gOygkOyXkOyEnCDrqoXrqoXrkKgp7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfsl7DqsrDrkJwgQ0nsnZgg7IOB7YOc7JeQIOyYge2WpeydhCDspIQg7IiYIOyeiOuKlCDti7DsvJMg7Jyg7ZiV7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfsoJXsnZgg7JeF642w7J207Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfqtazshLEg7ZWt66qpIOyCreygnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+uwsO2PrCDsg4Htg5wg7IOJ7IOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ+uwsO2PrCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn7KSR67O1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn64+Z7KCBIO2VhOuTnCDrs4Dqsr0g7IKs7ZWt7J20IO2PrO2VqOuQnCDqsr3smrAg6rWs7ISxIO2VreuqqSDsoJXsnZjqsIAg64+Z6riw7ZmU65CY7KeAIOyViuydgCDqsoPsnLzroZwg7ZGc7Iuc7ZWY64qUIOuPmeyggSDtlYTrk5wg7J2067Kk7Yq4IOuqqOuTiOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg7LaU6rCAIElUU00g7ZWE65OcIO2ZlOuptOyXkCDtkZzsi5zrkJjripQg64+Z7KCBIO2VhOuTnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalCDtmZTrqbTsl5Ag7ZGc7Iuc65CY64qUIOuPmeyggSDtlYTrk5zsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOyXkCDtkZzsi5zrkJjripQg64+Z7KCBIO2VhOuTnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn7IOB64u07JuQIO2UhOufsO2KuOyXlOuTnOyXkOyEnCDtlZwg67KI7JeQIOuRkCDqsJwg7J207IOB7J2YIOq1rOyEsSDtla3rqqnsl5Ag64yA7ZW0IOyekeyXhe2VoCDsiJgg7J6I64+E66GdIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSDquLDriqXsnYQg7IKs7JqpIOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+uCmOyXtOuQnCDqt7jro7nsl5Ag64yA7ZW07ISc66eMIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSDquLDriqXsnYQg7Zmc7ISx7ZmU7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfqs6DsnKDtlZwg7J2066aE7J20IOyeiOuKlOyngCBJVFNNIOq1rOyEsSDtla3rqqnsnYQg7ZmV7J247ZWY64qUIOq4sOuKpeydhCDsgqzsmqkv7IKs7JqpIOyViCDtlajsnLzroZwg7ISk7KCV7ZWp64uI64ukLiDsnbQg7Ji17IWY7J2EIOyCrOyaqSDshKTsoJXtlZjquLAg7KCE7JeQIOyLnOyKpO2FnOyXkCDsnbTrr7gg7KG07J6s7ZWY64qUIOq1rOyEsSDtla3rqqnsl5Ag7KSR67O165CcIOydtOumhOydtCDsnojripTsp4Ag7ZmV7J247ZW07JW8IO2VqeuLiOuLpC4g7J20IOyekeyXheydgCDsvZjshpQg66qF66C57J24IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlc+ulvCDsgqzsmqntlZjsl6wg7IiY7ZaJ7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+ydtOuypO2KuCDrqqjrk4jsnYQg7IKs7Jqp7ZWY7JesIO2LsOy8ky1jb25maWdpdGVtLWxpbmvsl5DshJwgY29uZmlnaXRlbS1zdGF0dXPrpbwg7ISk7KCV7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfsoITssrQg7YWN7Iqk7Yq4IOqygOyDieyXkCDsgqzsmqnrkJjripQg6rWs7ISxIO2VreuqqSDsnbjrjbHsiqTsnZgg7ZWE65Oc7J6F64uI64ukLiDtlYTrk5zrj4Qg7KCA7J6l65CY7KeA66eMIOyghOyytCDquLDriqXsl5Ag7ZWE7IiY7KCB7J24IOqyg+ydgCDslYTri5nri4jri6QuIOyyqOu2gCDtjIzsnbwg7Y+s7ZWo7J2AIO2VreuqqeydhCAw7Jy866GcIOyEpOygle2VmOqxsOuCmCDsgq3soJztlZjsl6wg67mE7Zmc7ISx7ZmU7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfsoITssrQg7YWN7Iqk7Yq4IOqygOyDiSDsmbjsl5Ag64uk66W4IOyaqeuPhOuhnCDsgqzsmqnrkJjripQg6rWs7ISxIO2VreuqqSDsnbjrjbHsiqTsl5Ag7KCA7J6l65CcIO2VhOuTnOyeheuLiOuLpC4g7KCE7LK0IOq4sOuKpeydhCDsgqzsmqntlZjroKTrqbQg66qo65OgIO2VhOuTnOqwgCDtlYTsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn66qo65OgIOybueyEnOu5hOyKpCjtgqQp7JeQIOuMgO2VtCDqsIDsoLjsmKTquLDqsIAg7KCc7ZWc65CY64qUIO2BtOuemOyKpCjqsJIp7J2YIOuwsOyXtOydhCDsoJXsnZjtlaAg7IiYIOyeiOyKteuLiOuLpC4g7ISg7YOd7ZWcIOuqqOuToCDtgbTrnpjsiqQg65iQ64qUIOuqqOuToCDquLDsobQg7YG0656Y7Iqk7JeQIOuMgO2VtCDsi53rs4Qg7IaN7ISx7J2EIOyduOuztOy7pCDqtazshLHsl5DshJwg7ISg7YOd7ZW07JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pCDroIjsnbTslrTsl5Ag64yA7ZWcIEdlbmVyaWNJbnRlcmZhY2Ug66qo65OIIOuTseuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2gg7J2467O07LukIOugiOydtOyWtOyXkCDrjIDtlZwgR2VuZXJpY0ludGVyZmFjZSDrqqjrk4gg65Ox66GdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2gg7J2467O07LukIOugiOydtOyWtOyXkCDrjIDtlZwgR2VuZXJpY0ludGVyZmFjZSDrqqjrk4gg65Ox66GdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIOq1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIOq1rOyEsSDtla3rqqkg6rCc7JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+yduOyLnOuNmO2KuCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDieyXkCDrsLDtj6wg7IOB7YOc66W8IO2PrO2VqO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4nsl5Ag7J247Iuc642Y7Yq4IOyDge2DnOulvCDtj6ztlajtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfsnbQg7J6R7JeF7J2YIOqysOqzvOyXkCDtkZzsi5ztlaAg7LWc64yAIOq1rOyEsSDtla3rqqkg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+uqqOuTiOydhCDsgqzsmqntlZjsl6wg7YG0656Y7Iqk66W8IOuLtOuLue2VmOuKlCDqt7jro7nsnYQg7ZmV7J247ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+uqqOuTiOydhCDtgbTrpq3tlZjsl6wg6rWs7ISxIO2VreuqqeydhCDri7Tri7ntlZjripQg6re466O57J2EIO2ZleyduO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfrqqjrk4jsnYQg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqSDthrXqs4Trpbwg7IOd7ISx7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+ydtOumhCDrqqjrk4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+yIq+yekCDrqqjrk4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDqsoDsg4kg6rKw6rO87J2YIOqwgSDtjpjsnbTsp4Dsl5Ag7ZGc7Iuc7ZWgIOq1rOyEsSDtla3rqqnsnZgg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7JeQ7IScIOqygOyDiSDqsrDqs7zsnZgg6rCBIO2OmOydtOyngOyXkCDtkZzsi5ztlaAg6rWs7ISxIO2VreuqqSDsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn6rKA7IOJ7ZWgIOqwnOyytCwg7ZGc7Iuc7ZWgIO2VreuqqSDsiJgsIO2RnOyLnO2VoCDsho3shLEuIOq1rOyEsSDtla3rqqkg7IaN7ISx7J2AIEVsYXN0aWNzZWFyY2jrpbwg7Ya17ZW0IOuqheyLnOyggeycvOuhnCDsoIDsnqXtlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfqsJzsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq4sOuzuCDshKTsoJUg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7J2YIOy5tO2FjOqzoOumrOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsnpHsnYAg6rWs7ISxIO2VreuqqSDqsJzsmpTsnZgg7Je0IO2VhO2EsOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4g7LC46rOgOiBcJ+2ZnOyEsVwn7J2EIDDsnLzroZwg7ISk7KCV7ZWY66m0IOyDgeuLtOybkOydtCDqsJzsnbgg6riw67O4IOyEpOygleyXkOyEnCDsnbQg6re466O57J2YIOyEpOygleydhCDtjrjsp5HtlaAg7IiYIOyXhuyngOunjCDqtIDrpqzsnpDqsIAg64uk66W4IOyCrOyaqeyekOydmCDshKTsoJXsnYQg64yA7IugIO2OuOynke2VoCDsiJgg7J6I7Iq164uI64ukLiDsgqzsmqnsnpAg7J247YSw7Y6Y7J207Iqk7JeQ7IScIOydtOufrO2VnCDshKTsoJXsnbQg7ZGc7Iuc65CgIOyYgeyXreydhCDsoJzslrTtlZjroKTrqbQgXCdQcmVmZXJlbmNlR3JvdXBcJ+ydhCDsgqzsmqntlZjshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsgqzsmqnsnpAg66qp66Gd7J2YIOuMgOyLnCDrs7Trk5wg67Cx7JeU65OcIOunpOqwnCDrs4DsiJjripQg7JeQ7J207KCE7Yq4IOyduO2EsO2OmOydtOyKpCDqsJzsmpTsnoXri4jri6QuICLsoJztlZwi7J2AIOq4sOuzuOyggeycvOuhnCDtkZzsi5zrkJjripQg7ZWt66qpIOyImOyeheuLiOuLpC4gIuq3uOujuSLsnYAg7ZSM65+s6re47J24ICjsmIggOiDqt7jro7kgOiDqtIDrpqzsnpAsIOq3uOujuSAxLCDqt7jro7kgMinsl5Ag64yA7ZWcIOyVoeyEuOyKpOulvCDsoJztlZztlZjripQg642wIOyCrOyaqeuQqeuLiOuLpC4gIuq4sOuzuOqwkiLsnYAg7ZSM65+s6re47J247J20IOq4sOuzuOyggeycvOuhnCDtmZzshLHtmZTrkJjslrQg7J6I64qU7KeAIOyXrOu2gCDrmJDripQg7IKs7Jqp7J6Q6rCAIOyImOuPmeycvOuhnCDtmZzshLHtmZTtlbTslbztlZjripTsp4Ag7Jes67aA66W8IOqysOygle2VqeuLiOuLpC4gIkNhY2hlVFRMTG9jYWwi7J2AIO2UjOufrOq3uOyduOydmCDsupDsi5wg7Iuc6rCE7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsgqzsmqnsnpAg66qp66Gd7J2YIOuMgOyLnCDrs7Trk5wg67Cx7JeU65OcIOunpOqwnCDrs4DsiJjripQg7JeQ7J207KCE7Yq4IOyduO2EsO2OmOydtOyKpCDqsJzsmpTsnoXri4jri6QuICLsoJztlZwi7J2AIOq4sOuzuOyggeycvOuhnCDtkZzsi5zrkJjripQg7ZWt66qpIOyImOyeheuLiOuLpC4gIuq3uOujuSLsnYAg7ZSM65+s6re47J24ICjsmIggOiDqt7jro7kgOiDqtIDrpqzsnpAsIOq3uOujuSAxLCDqt7jro7kgMinsl5Ag64yA7ZWcIOyVoeyEuOyKpOulvCDsoJztlZztlZjripQg642wIOyCrOyaqeuQqeuLiOuLpC4gIuq4sOuzuOqwkiLsnYAg7ZSM65+s6re47J247J20IOq4sOuzuOyggeycvOuhnCDtmZzshLHtmZTrkJjslrQg7J6I64qU7KeAIOyXrOu2gCDrmJDripQg7IKs7Jqp7J6Q6rCAIOyImOuPmeycvOuhnCDtmZzshLHtmZTtlbTslbztlZjripTsp4Ag7Jes67aA66W8IOqysOygle2VqeuLiOuLpC4gIkNhY2hlVFRMTG9jYWwi7J2AIO2UjOufrOq3uOyduOydmCDsupDsi5wg7Iuc6rCE7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOydmCDrp6TqsJzrs4DsiJgg7IOJ7IOB7J2EIOyngOygle2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfsnbzrsJgg7Lm07YOI66Gc6re4IOyGjeyEseydmCDsmIjsi5wg6raM7ZWcIOq3uOujueyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg7J2066aEIOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg67KI7Zi4IOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn7Y6Y7J207KeA7J2YIOunpOqwnOuzgOyImCjqtazshLEg7ZWt66qp7J20IO2RnOyLnOuQmOuKlCDtjpjsnbTsp4Ap7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq4sOuzuCDshKTsoJUg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VnCDrsoTsoIQg66y47J6Q7Je0IOuqqOuTiOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsl5Ag64yA7ZWcIOuyhOyghCDrrLjsnpDsl7Qg7YWc7ZSM66a/IO2ItO2CtyDrqqjrk4jsnZgg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDrjIDtlZwg67KE7KCEIO2KuOumrOqxsOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ+q1rOyEseuQnCDqsIEg7Ju57ISc67mE7Iqk7J2YIOqwgSDsnbTrsqTtirjsl5Ag64yA7ZW0IOq1rOyEseuQnCDsnpHsl4XsnYQgKOyduOuztOy7pOuhnOyEnCkg7IiY7ZaJ7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn6raM7ZWcIOq3uOujuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDssqjrtoAg7J6R7JeF7J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7Yq466asIOuztOq4sCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDtmZXrjIAg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDstpTqsIAg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDsnbzqtIQgSVRTTSDqtazshLEg7ZWt66qpIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2OuOynkSDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIOq4sOuhnSBJVFNNIOq1rOyEsSDtla3rqqkg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIOyduOyHhCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn6rWs7ISxIO2VreuqqeydhCDsgq3soJztlZjroKTrqbQg7ZWE7JqU7ZWcIOq2jO2VnOydtCDtlYTsmpTtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfti7DsvJPsnbQgQ0nsl5Ag7Jew6rKw65CY66m0IOyekOuPmeycvOuhnCBDSeydmCDsnbjsi5zrjZjtirgg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7J286rSEIO2ZlOuptOyXkOyEnCDrsLDtj6wg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOydvOq0hCDtmZTrqbTsl5DshJwg7J247Iuc642Y7Yq4IOyDge2DnOulvCDshKTsoJXtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIO2ZleuMgC/stpXshowg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg64uk66W4IOqwnOyytOyZgCDsl7DqsrDtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOyeiOuKlCDqtazshLEg7ZWt66qp7J2YIOq4sOuhneyXkCDslaHshLjsiqTtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOyDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg7ZmV64yAIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2YIOq4sOuhneyXkCDslaHshLjsiqTtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+uplOuJtOyXkCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDsgq3soJztlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn66mU64m07JeQIOq1rOyEsSDtla3rqqkg66eB7YGs66W8IO2KuOumrCDrs7TquLDroZwg7ZGc7Iuc7ZWY64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkCDsnojripQg6rWs7ISxIO2VreuqqeydhCDrs7XsoJztlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOunge2BrOulvCDtkZzsi5ztlZjsl6wg7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAv7LaV7IaMIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2EIOuzteygnO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg7Y647KeR7ZWgIOyImCDsnojripQg66eB7YGs66W8IOuplOuJtOyXkCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIO2ZleuMgC/stpXshowg67O06riw66GcIOuPjOyVhOqwiCDsiJgg7J6I64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOunge2BrOulvCDtkZzsi5ztlZjsl6wg7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg7J247IeE7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkCDsnojripQg6rWs7ISxIO2VreuqqeydhCDtmZXrjIDtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5Ag6rWs7ISxIO2VreuqqSDquLDroZ3snYQg7ZGc7Iuc7ZWp64uI64ukKOyXreyInCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ+yEoO2DneuQmOyngCDslYrsnYAg6rK97JqwIO2RnOyLnOuQmOuKlCDquLDrs7gg7Lm07YWM6rOg66as7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqeydmCDsi53rs4TsnpAo7JiIOiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIynsnoXri4jri6QuIOq4sOuzuOqwkuydgCBDb25maWdJdGVtI+yeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdDb25maWdJdGVtRmV0Y2gg7J2467O07Luk66W8IOyekOuPmeycvOuhnCDtirjrpqzqsbDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfrsoTsoIQg66y47J6Q7Je0IO2RnO2YhOyLnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfrsoTsoIQg66y47J6Q7Je0IOuqqOuTiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfrsoTsoIQg7Yq466as6rGwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfsupDsi5zrkJwg7ZWE65OcIOyiheyGjeyEseydhCDtmZXsnbjtlZjsl6wgQ29uZmlnSXRlbUFDTOydmCDsi6TtlonsnYQg7ZS87ZWgIOyImCDsnojripTsp4Ag7Jes67aALiDsnbQg7Ji17IWY7J2AIOyImOyLneydmCDroZzrlKkg7Iuc6rCE7J2EIOqwnOyEoO2VoCDsiJgg7J6I7KeA66eMLCBBQ0xNb2R1bGXsnYQgSVRTTUNvbmZpZ0l0ZW0g67CPIEZvcm0tUmV0dXJuVHlwZXPsl5Ag7IKs7Jqp7ZWY66Ck64qUIOqyveyasCDruYTtmZzshLHtmZTtlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn7Zek642U7JeQIO2RnOyLnOuQmOuKlCDsnbzrsJgg7KCV67O07J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfquIDroZzrsownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICftj6zsiqTtirgg7ZSE66Gc642V7IWYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfsgqzsoIQg7IOd7IKw7ISxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfsg53sgrDshLEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LjXsnbjsuZgoNDQuNDVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjHsnbjsuZgoNTMuMzRjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYuMjXsnbjsuZgoNjYuNjhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMS417J247LmYKDgwLjAxY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE57J247LmYIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEuNzXsnbjsuZgoNC40NWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM17J247LmYKDg4LjljbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjHsnbjsuZgg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzguNeyduOy5mCg5Ny43OWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyM+yduOy5mCDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy427J247LmYKDYwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDLsnbjsuZgoMTA2LjY4Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0Ny4yNeyduOy5mCgxMjAuMDJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMuNeyduOy5mCg4Ljg5Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLjXsnbjsuZgoMTMzLjM1Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNeyduOy5mCg4MDBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3Ljc17J247LmYKDE0Ni42OGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjTsnbjsuZgoOTAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2M+yduOy5mCgxNjAuMDJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNOyduOy5mCgxMDAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OC4yNeyduOy5mCgxNzMuMzVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNS4yNeyduOy5mCgxMy4zNGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3My417J247LmYKDE4Ni42OWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuM+yduOy5mCgxMTAwbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzguNzXsnbjsuZgoMjAwLjAyY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjLsnbjsuZgoMTIwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODTsnbjsuZgoMjEzLjM2Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDfsnbjsuZgoMTcuNzhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOC43NeyduOy5mCgyMi4yM2NtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMC417J247LmYKDI2LjY3Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMi4yNeyduOy5mCgzMS4xMmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTTsnbjsuZgoMzUuNTZjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1Ljc17J247LmYKDQwLjAxY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn7ZqM6rOEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn7KO87IaMIO2VoOuLuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn6rSA66as7J6QJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+yVhOuCoOuhnOq3uCDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+yWtO2UjOudvOydtOyWuOyKpCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+uwsO2EsOumrCDsmqnrn4koQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ+uwsO2EsOumrCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfruYzrlKknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+uyhOyKpCDsnbjthLDtjpjsnbTsiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUg7YG0656Y7IqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfsmqnrn4koR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn6re4656Y7ZS9IOy5tOuTnOuLuSDsmqnrn4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfsubTrk5wg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn7Lm065OcIOumrOuNlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfsubTrk5wg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICftgbTrnbzsnbTslrjtirgg7J247Kad7IScJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+2BtOudvOydtOyWuO2KuCDshoztlITtirjsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn6rOg6rCdIOy5tO2FjOqzoOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfsi5zqs4Qg7IaN64+EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfsi5zqs4Qg7IaN64+EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfsvZTrk5wg7ISc66qFIOyduOymneyEnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn7ZqM7J2Y7JqpIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+y7qOyEpO2MhSDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ+yXsOudveyymCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn7LSd7YyQIOyXsOudveyymCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+y7qO2FjOydtOuEiCDqtIDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+qzhOyVvSDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfqs4Tslb0g6riw6rCEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+qzhOyVvSDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn66y07ISgIOyghO2ZlOq4sChERUNUIOyghO2ZlOq4sCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn67mE7JqpIOuLqOychCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ+udvOydtOyEoOyKpCDsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+yDneyEsSDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ+unnuy2pO2YlSDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag7JiI7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMg7ISc67KEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfshqHsnqUg64Kg7KecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfso7zrrLgg64Kg7KecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfrs7Tspp0g6riw6rCEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ+y2nOyLnCDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+uNsOyKpO2BrO2GsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ+uUlOyKpO2UjOugiOydtCDtj6ztirgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfrrLjshJwg7ISc66qFIOyduOymneyEnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfsnbTrqZTsnbwg7J247Kad7IScKFMvTUlNRSDsnbjspp3shJwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ+qzoOyaqSDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfstZzsooUgSVAg7KO87IaMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn7KeA7JuQIOyiheujjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+unjOujjCDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+yZuOyepSDtlZjrk5wg65Oc65287J2067iMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn67Cp7ZmU67K9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn7Y6M7Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn7ZSM65287J207ZygIOyXkOuEiOyngCDsoIDsnqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICftj7wg7Yyp7YSwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICftlITrnpzssKjsnbTspogg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn7ZSE66as7Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ+ydvOuwmCDsoJXrs7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfqt7jrnpjtlL0g7Lm065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfqt7jrnpjtlL0g7Lm065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn7ZWY65Oc7Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn7ZWY65Oc7Juo7Ja0IOuqqOuNuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICftlZjrk5zsm6jslrQg66y06rKMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICftl6Trk5zshYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDtlITroZzthqDsvZwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSUQg67CPIOyVoeyEuOyKpCDqtIDrpqwoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn7J6s6rOgIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ+2IrOyekCDruYTsmqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfshqHsnqUg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn7YKk67O065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDrqqjri4jthLAo7JWh7KCVIOuUlOyKpO2UjOugiOydtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDrqqjri4jthLAo67Cc6rSRIOuLpOydtOyYpOuTnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn7Jyg7ISgIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfrhbjtirjrtoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfsnITrj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfroIjsnbTslrQgMTog66y866as7KCBIOugiOydtOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfroIjsnbTslrQgMjog642w7J207YSwIOunge2BrCDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ+ugiOydtOyWtCAzOiDrhKTtirjsm4ztgawg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+ugiOydtOyWtCAzOiDrhKTtirjsm4ztgawg66CI7J207Ja0KOyKiO2NvOuEtyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn66CI7J207Ja0IDQ6IOyghOyGoSDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ+ugiOydtOyWtCA1OiDshLjshZgg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+ugiOydtOyWtCA2OiDtlITroIjsoKDthYzsnbTshZgg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn66CI7J207Ja0IDc6IOyVoO2UjOumrOy8gOydtOyFmCDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn7J6E64yAIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ+udvOydtOyEoOyKpCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+udvOydtOyEoOyKpCDtgqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn65287J207ISg7IqkIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn65287J207ISg7IqkIOq4sOqwhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+udvOydtOyEoOyKpCDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ+umrO2KrCDsnbjsgrDssqAoTGlGZVBPNCkg67Cw7YSw66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfrpqztiqwg7J207JioKOumrO2KrCDsnbTsmKgpIOuwsO2EsOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ+uMgOy2nCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ+ychOy5mCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfqsr3rj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ+ygnOyhsOyXheyytCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn7LWc64yAIOu2gO2VmCDsmqnrn4koVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn66mU66qo66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn66mU66qo66asIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn66+464uIIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn7Zy064yA7Y+wIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfrqqjrsJTsnbwv7J6E67Kg65SU65OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn66qo6424JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn66qo6424IOyEpOuqhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfrqqjri4jthLAg7ZW07IOB64+EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ+uqqOuLiO2EsCDtgazquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfrp4jsmrDsiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+uEpO2KuOybjO2BrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfrhKTtirjsm4ztgawg7KCV67O0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfrhKTtirjsm4ztgawg7KCV67O0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfrhKTtirjsm4ztgawg6rOE7Li1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn64uI7LyIIOy5tOuTnOuutChOaUNkKSDrsLDthLDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfri4jsvIgt6riI7IaNIOyImOyGjCDrsLDthLDrpqwoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn6riw67CAIOycoOyngCDqs4Tslb0oTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ+uFuO2KuOu2gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0NQVSDsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFNIOuqqOuTiCDsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn6re4656Y7ZS9IOy5tOuTnCDsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQg66qo64uI7YSwKOycoOq4sCDrsJzqtJEg64uk7J207Jik65OcKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfsmrTsmIEg67mE7JqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ+yjvOusuCDrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfquLDtg4AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ+y2nOugpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICftjIztirjrhIjsi60g6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn7KCE7ZmU67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfsoITtmZQg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAn66y866as7KCBIOy9lOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ+yghOugpSDqs7XquIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfri6TsnYzsl5DshJwg6rWs66ekJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfrnpkg6rmK7J20JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn656ZIOycoOuLmyhVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn67CpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIOy5tOuTnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMg7J247Kad7IScJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn7YyQ66ekIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfsnITshLEg7KCE7ZmUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ+uwgO2PkO2YlSDrgqnstpUoU0xBKSDrsLDthLDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfsnbzroKjrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn7ISc67KEIOyGjO2UhO2KuOybqOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ+yEnOu5hOyKpCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfshJzruYTsiqQg7YOc6re4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ+yGjOy8kyDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfshoztlITtirjsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfsiqTtlLzsu6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn7ZGc7KSAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdJUCDso7zshowg7Iuc7J6RJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfsiqTthqDrpqzsp4AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfsiqTthqDrpqzsp4Ag7YyM7Yuw7IWYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn7J6Q7ZqM7IKsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfsmpTslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfslKwg7YG065287J207Ja47Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfsiqTroIjrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICfsjazrjZTrs7ztirgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ+y0nSDqt7jrnpjtlL0g7Lm065OcIFJBTShHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfstJ0gUkFNKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn7YSw7LmY7Iqk7YGs66awIOuqqOuLiO2EsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ+2DgOybjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIO2XiOu4jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIO2XpOuTnOyFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn7Ju57LqgJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/lt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdCZW5kcmllamkgdmVpa2ltbyBkdW9tZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnxK5laW5hbsSNacWzIHXFvmtsYXVzxbMgZHVvbWVuxbMgbnVzdGF0eW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0nFoWVpbmFuxI1pxbMgYXRzYWt5bW8gZHVvbWVuxbMgbnVzdGF0eW1haSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdmFsZHltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdLZWlzdGkga2xhc8SXcyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0tlaXN0aSB2YWlkbWVucyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICciUmVhZHkySW1wb3J0IiBrbGFzacWzIHBha2V0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfEjGlhIGdhbGl0ZSBpbXBvcnR1b3RpICJSZWFkeTJJbXBvcnQiIGtsYXNpxbMgcGFrZXR1cywga3VyaXVvc2UgZGVtb25zdHJ1b2phbWkgxK9wcmFzdGluaWFpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkuIEF0a3JlaXBraXRlIGTEl21lc8SvLCBrYWQgZ2FsaSBwcmlyZWlrdGkgdGFtIHRpa3JvcyBwYXBpbGRvbW9zIGtvbmZpZ8WrcmFjaWpvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRuYXVqaW50aSBlc2FtdXMgc3ViamVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dW90aSAiUmVhZHkyQWRvcHQiIGtsYXPEl3MgcGFrZXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2YWlkbXVvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhc2nFsyBmaWx0cmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ05vcsSXZGFtaSBzdWt1cnRpIG5hdWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCBzxIVyYcWhZSBwYXNpcmlua2l0ZSBrbGFzxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc8SXJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudG8gYsWrc2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdOdW9yb2RhIMSvIGtpdMSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXRlaXNpbmdhcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gbnVtZXJpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnS2l0byBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8sIHN1IGt1cml1byBub3JpdGUgc3VzaWV0aSwgbnVtZXJpcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBciB0aWtyYWkgbm9yaXRlIGnFoXRyaW50aSDFocSvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgaW8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdQYXZhZGluaW1hcyBqYXUgbmF1ZG9qYW1hcyBDb25maWdJdGVtcyBzdSDFoWl1byAoLWlhaXMpIG51bWVyaXUgKC1pYWlzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2ZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqb3MgbnVtZXJpcyBqYXUgbmF1ZG9qYW1hcyAiQ29uZmlnSXRlbXMiIHN1IMWhaXVvICgtaWFpcykgbnVtZXJpdSAoLWlhaXMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW5jaWRlbnRvIGLFq2tsxJcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpc3RvcmlqYTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSXN0b3Jpam9zIHR1cmlueXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUHJpdHJhdWt0aSBhcMW+dmFsZ8SFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgdmllbmFtZSBwdXNsYXB5amUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkdW9tZW7FsyBuZXJhc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Bhc2lyaW5raXRlIMWhxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Z5a2R5dGkgcGFpZcWha8SFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1RhaXAgcGF0IGllxaFrb3RpIGFua3N0ZXNuxJdzZSB2ZXJzaWpvc2U/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnIkNvbmZpZ0l0ZW0iIG1lZMW+aW8gcm9kaW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0d5bGlvIGx5Z2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUGFkaWRpbnRpIC8gc3VtYcW+aW50aSBtYXN0ZWzEryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQYXNpZWt0YXMgbWFrc2ltYWx1cyBDb25maWdJdGVtIG51b3JvZMWzIGx5Z2lzISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RhYmFydGluxJcgZGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdEYWJhcnRpbsSXIGluY2lkZW50byBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2Vpc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2VpdMSXJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSsWrc8WzIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gUGFpZcWha2EnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ09iamVrdG8gdGlwYXMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1b2phbW9zIMWhaW9zIGtsYXPEl3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQnVzIGltcG9ydHVvamFtaSDFoWllIHZhaWRtZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdBdGtyZWlwa2l0ZSBkxJdtZXPErywga2FkIHRhaXAgcGF0IGJ1cyBzdWt1cnRpIGF0aXRpbmthbWkgZGluYW1pbmlhaSBsYXVrYWkgaXIgIkdlbmVyYWxDYXRhbG9nIiBrbGFzxJdzLCBvIGF1dG9tYXRpbmlvIHBhxaFhbGluaW1vIG5lYnVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FyIG5vcml0ZSB0xJlzdGk/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1JlaWtpYSBwYXZ5emTFvmnFsyBrbGFzacWzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBcGlicsSXxb50aXMgbsSXcmEgZ2FsaW9qYW50aXMgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0Fwxb52YWxnYTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1JlaWtpYSBiZW50IHZpZW5vIHBhc2lyaW5rdG8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0rFq3MgbmV0dXJpdGUgcHJpZWlnb3MgcHJpZSDFoWlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByYcWheXRpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5lYXBpYnLEl8W+dGFzIGpva3MgYXBpYnLEl8W+aW1hcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgIiVzIiBuZXJhc3RhcyBkdW9tZW7FsyBiYXrEl2plISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05lcGF2eWtvIGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXMgdmVyc2lqYSBuZXJhc3RhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFyYmEgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1ByaWVpZ2EgbmVzdXRlaWtpYW1hISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWdhbGltYSByb2R5dGkgaXN0b3Jpam9zLCBuZXBhdGVpa3RhcyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVnYWxpbWEgcm9keXRpIGlzdG9yaWpvcywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOYXVqYXMga29uZmlnxatyYWNpam9zIGVsZW1lbnRhcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOYXVqYSB2ZXJzaWphIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdBdG5hdWppbnRhIGRpZWdpbW8gYsWrc2VuYSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0bmF1amludGEgaW5jaWRlbnRvIGLFq3NlbmEgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgKElEPSVzKSBpxaF0cmludGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZMSXdGEgbnVvcm9kYSDEryAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ051b3JvZGEgxK8gJXMgKHR5cGU9JXMpIHBhxaFhbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0F0bmF1amludGEgQ29uZmlnSXRlbSBhcGlicsSXxb50aXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1BhdmFkaW5pbWFzIGF0bmF1amludGFzIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0YXMgJXMgYXRuYXVqaW50YXMgacWhICIlcyIgxK8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaWphICVzIGnFoXRyaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQgYXJiYSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lZ2FsaW1hIHBhcm9keXRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50bywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRHVvbWVuxbMgYmF6xJdqZSBuZXJhc3RhIENvbmZpZ0l0ZW1JRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyVzIHNwYXVzZGluYSAlcyBhZHJlc3UgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ051b3JvZGEgKFJlZmVyZW5jZSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZXRlaXNpbmdhcyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfFoGlhaSBrbGFzZWkgcHJpZWlnb3MgdGVpc8SXcyBuZXN1dGVpa3RvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0pva2lvIHJlenVsdGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIHJlenVsdGF0YWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lZ2FsaW1hIHBhcm9keXRpIGVsZW1lbnRvLCBuZXMgbmVzdXRlaWt0b3MgcHJpZWlnb3MgdGVpc8SXcyBwcmllIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmVyYXN0YXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpasWzIG5lcmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAndmVpa2xvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnxK9zcMSXamltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpbmNpZGVudG8gYsWrc2VuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0xlaWRpbW8gbsSXcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJhcyBuZWdhbGlvamEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYWllxaFrb3MgcGFyYW1ldHJhaSBuZWdhbGlvamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGllZ2ltbyBixatzZW5vcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdEYWJhcnRpbmlzIGluY2lkZW50byBixatzZW5vcyB0aXBhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdUYXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8ga2xhc8SXcyBhcHJpYm9qaW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJdzIGFwcmlib2ppbWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWluaXMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aW5pcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTnVvcm9kb3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQXIgxaFpIHPEhXNhamEgdGFpa29tYSBDb25maWdJdGVtLCBhciBzdGF0aW5laSBudW9yb2TEhSBwYXRlaWtpYW7EjWlvIG9iamVrdG8gdmVyc2lqYWkuIERhYmFydGluxJdzIGluY2lkZW50byBixatzZW5vcyBza2FpxI1pYXZpbWFzIGF0bGlla2FtYXMgdGlrIGRpbmFtaW7El21zIG51b3JvZG9tcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdQYXNpcmlua2l0ZSBhdHJpYnV0xIUsIHBhZ2FsIGt1csSvIGJ1cyBpZcWha29tYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0JhemluxJcgc3RydWt0xatyYSBuZWdhbGlvamEuIFBhdGVpa2l0ZSBoYXNoIHN1IGR1b21lbmltaXMgWUFNTCBmb3JtYXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwgZWlsdXTEmSByZWlraWEgcHJhZMSXdGkgbnVvIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05lcGF2eWtvIGnFoXZhbHl0aSBsZW50ZWzEl3MgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmVyYXN0YXMgbsSXIHZpZW5hcyBzdmFyYnVzIGRpbmFtaW5pcyBsYXVrYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOZXBhdnlrbyDEr3RlcnB0aSDEryBsZW50ZWzEmSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ8SuIGxlbnRlbMSZIGNvbmZpZ2l0ZW1fbGluayDEr3RlcnB0YSAwIGVpbHXEjWnFsyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdEaWTFvmlhdXNpYXMgdmllbm8gZWxlbWVudG8gc2thacSNaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydHVvdGkgaXIgKGFyYmEpIGVrc3BvcnR1b3RpIHByaWVkdXMgKGthaXAgcGFza3V0aW5pdXMgxK9yYcWhdXMgZWlsdXTEl2plKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpam9zIGVpbHV0xJcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnS2xhaWRhIHNpbmNocm9uaXp1b2phbnQgYXBpYnLEl8W+dGlzLiBQYXRpa3JpbmtpdGUgxb51cm5hbMSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1R1cml0ZSBJVFNNQ29uZmlnSXRlbSBhcGlicsSXxb50aXMsIGt1cmlvcyBuxJdyYSBzaW5jaHJvbml6dW90b3MuIMSuZGlla2l0ZSBzYXZvIElUU01Db25maWdJdGVtIGRpbmFtaW5pxbMgbGF1a8WzIHBha2VpdGltdXMuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdQYXNpYmFpZ8SZcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1RlY2huaW7ElyBwcmllxb5pxatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ0JhbmRvbWFzaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW51b2phbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVtb250YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0nFocSXasSZcyDEryBwZW5zaWrEhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQZXLFvmnFq3LEl2tpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RhdmltYXMgLyBrb2t5YsSXcyB1xb50aWtyaW5pbWFzJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdBcMW+dmFsZ2EgaXIgcGF0dmlydGluaW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGFzacWzIGlyIChhcmJhKSB2YWlkbWVuxbMgYmVpIHN1IGphaXMgc3VzaWp1c2nFsyBsYXVrxbMgaW1wb3J0YXZpbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnSW1wb3J0dW9qYW50IGtsYXPEmSDEr3Z5a28ga2xhaWRhLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gUGFzbMSXcHRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBwYXJvZHl0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTGVpZMW+aWEgdGFpa3l0aSBpxaFwbMSXc3RpbmVzIHBhaWXFoWtvcyBzxIVseWdhcyBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrYWkuIE5hdWRvZGFtaSDFoWnEhSBmdW5rY2lqxIUgZ2FsaXRlIGllxaFrb3RpLCBwdnouLCBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGF2YWRpbmltbyBzdSB0b2tpb21pcyBzxIVseWdvbWlzLCBrYWlwICIoKmtleTEqJiYqa2V5MiopIiBhcmJhICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTGVpZMW+aWEgdGFpa3l0aSBpxaFwbMSXc3RpbmVzIHBhaWXFoWtvcyBzxIVseWdhcyBrbGllbnTFsyBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvamUuIE5hdWRvZGFtaSDFoWnEhSBmdW5rY2lqxIUgZ2FsaXRlIGllxaFrb3RpLCBwdnouLCBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGF2YWRpbmltbyBzdSB0b2tpb21pcyBzxIVseWdvbWlzLCBrYWlwICIoKmtleTEqJiYqa2V5MiopIiBhcmJhICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnUHJpc2tpcnRpIEtJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS2xpZW50byDEr21vbmVpIHByaXNraXJ0aSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tsaWVudG8gbmF1ZG90b2p1aSBwcmlza2lydGkgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgbnVzdGF0eW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVW5pa2FsYXVzIHBhdmFkaW5pbW8gdGlrcmluYW1hIHRpayB0b2plIHBhxI1pb2plIENvbmZpZ0l0ZW0ga2xhc8SXamUgKCJjbGFzcyIpIGFyYmEgcGFzYXVsaW5pdSBtYXN0dSAoImdsb2JhbCIpLCB0b2TEl2wgaWXFoWthbnQgcGFzaWthcnRvamltxbMgYXRzacW+dmVsZ2lhbWEgxK8ga2lla3ZpZW7EhSBlc2FtxIUgQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1Bhc2lyaW5raXRlIG1vZHVsxK8sIGt1cmlzIHXFvnRpa3JpbnMgcGF2YWRpbmltxbMgc2NoZW3EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1Bhc2lyaW5raXRlIG1vZHVsxK8sIGt1cmlzIHXFvnRpa3JpbnMgbnVtZXJpxbMgc2NoZW3EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnUGFzaXJpbmtpdGUgbW9kdWzErywga3VyaXMgdcW+dGlrcmlucyB2ZXJzaWrFsyBlaWx1xI1pxbMgc2NoZW3EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdQYXNpcmlua2l0ZSBhdHJpYnV0dXMsIGthZCBixat0xbMgc3VrdXJ0YSBuYXVqYSB2ZXJzaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdQYXNpcmlua2l0ZSBrYXRlZ29yaWphcywga3VyaWFzIG5vcml0ZSBwcmlza2lydGkgxaFpYWkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ1N0dWxwZWxpbyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGZpbHRyYWkgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1N0dWxwZWxpYWksIGt1cml1b3MgZ2FsaW1hIGZpbHRydW90aSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4gUGFzdGFiYTogTGVpZMW+aWFtaSB0aWsga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXRhaSBpciBkaW5hbWluaWFpIGxhdWthaSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWTEl2ppbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByZWRhZ2F2aW1hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWfFq3J1b2tpdGUgZWxlbWVudG8gxK92eWtpxbMgbW9kdWzErywga3VyaXMgbGVpZMW+aWEgcmVnaXN0cnVvdGkgaXN0b3JpasSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgxK92eWtpxbMgbW9kdWxpcywga3VyaXMgYXRuYXVqaW5hIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgZGFiYXJ0aW7EmSBhcGlicsSXxb50xK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBpc3RvcmlqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHNwYXVzZGluaW1hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWfFq3J1b3RpIGVsZW1lbnRvIHByaWFydGluaW3EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIG1lZMW+aW8gdmFpemRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnxaBpxbMga2xhc2nFsyBDb25maWdJdGVtcyBuZWJ1cyBzYXVnb21pICJFbGFzdGljc2VhcmNoIiBzZXJ2ZXJ5amUuIE5vcmludCB0YWkgcHJpdGFpa3l0aSBlc2FtaWVtcyBDSSwgQ0kgbWlncmFjaWrEhSByZWlraWEgcGFsZWlzdGkgcGVyIGtvbnNvbMSZLCBwYWtlaXR1cyDFoWnEhSBwYXJpbmt0xK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyJFbGFzdGljc2VhcmNoIiBzZXJ2ZXJ5amUgbmVidXMgc2F1Z29taSAiQ29uZmlnSXRlbXMiIHN1IMWhaW9taXMgZGllZ2ltbyBixatzZW5vbWlzLiBOb3JpbnQgdGFpIHByaXRhaWt5dGkgZXNhbWllbXMgQ0ksIENJIHBlcmvEl2xpbcSFIHJlaWtpYSBwYWxlaXN0aSBwZXIga29uc29sxJksIHBha2VpdHVzIMWhacSFIHBhcmlua3TEry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHJpYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbGltaXRhcyB2aWVuYW1lIHB1c2xhcHlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyB2YWxkeW1vIGR1b21lbsWzIGJhesSXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIG1hc2luaXMgbW9kdWxpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhaWXFoWthIGFnZW50byBzxIVzYWpvcyBnYWxpbmlhbWUgbWFyxaFydXRpemF0b3JpdWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdTdWt1cmtpdGUgaXIgdHZhcmt5a2l0ZSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwaWJyxJfFvnRpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdTdWt1cmlhICJDb25maWdJdGVtcyIgYmlsaWV0dXMgdGFtIHRpa3JhaXMgbGFpa28gbW9tZW50YWlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLbGllbnRhaSBnYWxpIG1hdHl0aSBpc3RvcmluZXMgQ0kgdmVyc2lqYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0tsaWVudGFpIHR1cmkgZ2FsaW15YsSZIHJhbmtpbml1IGLFq2R1IHBlcmp1bmd0aSBpc3RvcmluZXMgQ0kgdmVyc2lqYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnTnVtYXR5dGllamkgZHVvbWVueXMsIGt1cml1b3MgcmVpa2lhIG5hdWRvdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhaWXFoWtvcyBla3Jhbm8gYXRyaWJ1dHVpLiBQYXZ5emR5czogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdOdW1hdHl0aWVqaSBkdW9tZW55cywga3VyaXVvcyByZWlraWEgbmF1ZG90aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIGVrcmFubyBhdHJpYnV0dWkuIFBhdnl6ZHlzOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnQXBpYnLEl8W+dGkgdmVpa3NtdXMsIGthaSBzdXNpZXTFsyBvYmpla3TFsyB2YWxkaWtseWplIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikgeXJhIG51c3RhdHltxbMgbXlndHVrYXMuIEF0a3JlaXBraXRlIGTEl21lc8SvLCBrYWQgxaFpdW9zZSB2ZWlrc211b3NlIHR1cmkgYsWrdGkgdcW+cmVnaXN0cnVvdGkgxaFpZSBKUyBpciBDU1MgZmFpbGFpOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBpciBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdBcGlicsSXxb5raXRlICJUZW1wbGF0ZTo6VG9vbGtpdCIgc2NoZW3EhSwgc2tpcnTEhSB2ZXJzaWrFsyBlaWx1dMSXbXMuIE5hdWRvamFtYSB0aWsgdGFkYSwgamVpIHZlcnNpasWzIGVpbHXEjWnFsyBtb2R1bGlzIG51c3RhdHl0YXMgxK8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmtpdGUgc8SFbHlnxbMsIGt1cmlvbWlzIGtsaWVudHVpIGxlaWTFvmlhbWEgbWF0eXRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUsIHJpbmtpbsSvLiBTxIVseWdhcyBnYWxpbWEgYXByaWJvdGkgdGFtIHRpa3JvbXMga2xpZW50xbMgZ3J1cMSXbXMuIFBhdmFkaW5pbWFzIHlyYSB2aWVuaW50ZWxpcyBwcml2YWxvbWFzIGF0cmlidXRhcy4gSmVpIGtpdMWzIHBhcmlua8SNacWzIG5lbnVyb2R5dGEsIHZpc2kga29uZmlnxatyYWNpam9zIGVsZW1lbnRhaSBidXMgbWF0b21pIHRvamUga2F0ZWdvcmlqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWFtaSByZWlrYWxpbmdpIGxlaWRpbWFpIGnFoXRyaW50aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdBcGlicsSXxb5pYW1pIHJlaWthbGluZ2kgbGVpZGltYWkgZ2F1dGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHVzIG5hdWRvamFudCBiZW5kcsSFasSFIHPEhXNhasSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWFtaSByZWlrYWxpbmdpIGxlaWRpbWFpIGllxaFrb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBuYXVkb2phbnQgYmVuZHLEhWrEhSBzxIVzYWrEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIFJlaWthbGluZ2kgbGVpZGltYWkgbnVzdGF0eXRpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cyBuYXVkb2phbnQgYmVuZHLEhWrEhSBzxIVzYWrEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEgYXDFvnZhbGdvcyBtb2R1bMSvLCBza2lydMSFIG1hxb5hamFtIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgc8SFcmHFoW8gdmFpemR1aSByb2R5dGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ051c3RhdG8sIGFyIG1hemfFsyBqdW5ndHlzZSB0dXJpIGLFq3RpIHJvZG9tb3MgbnVvcm9kb3MgdGlwbyBldGlrZXTEl3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSByZWd1bGlhcmlhcyBpxaFyYWnFoWthcyBhdHNraXJhaSBraWVrdmllbmFpICJDb25maWdJdGVtIiBrbGFzZWksIGthZCBixat0xbMgZ2FsaW1hIHBhdGlrcmludGkgIkNvbmZpZ0l0ZW0iIHBhdmFkaW5pbcSFIGlyIHJvZHl0aSBhdGl0aW5rYW11cyBrbGFpZMWzIHByYW5lxaFpbXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ051c3RhdG8gZ2FsaW11cyBLSSBzdHVscGVsaXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUsIHByaWtsYXVzb21haSBudW8gS0kga2xhc8SXcy4gS2lla3ZpZW7EhSDEr3JhxaHEhSB0dXJpIHN1ZGFyeXRpIGtsYXPEl3MgcGF2YWRpbmltYXMgaXIgYXRpdGlua2Ftb3Mga2xhc8SXcyBnYWxpbcWzIGxhdWvFsyBtYXN5dmFzLiBEaW5hbWluacWzIGxhdWvFsyDEr3JhxaFhaSB0dXJpIGF0aXRpa3RpIHNjaGVtxIUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVtYXR5dG9qbyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gYXRyaWJ1dMSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcsWrxaFpYXZpbXVpIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVvc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXTEhWrEryBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gYXRyaWJ1dMSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcsWrxaFpYXZpbXVpIGtsaWVudMWzIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXRvam8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSwgc2tpcnTEhSDFoWlvcyBvcGVyYWNpam9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dWkgcsWrxaFpdW90aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVtYXR5dMSFasSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdHZhcmvEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXR1b3NlLiBBdWvFoXR5bjogc2VuaWF1c2lhcyB2aXLFoXVqZS4gxb1lbXluOiBuYXVqYXVzaWFzIHZpcsWhdWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0b2ppIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdHZhcmthIGtsaWVudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXR1b3NlLiBBdWvFoXR5bjogc2VuaWF1c2lhcyB2aXLFoXVqZS4gxb1lbXluOiBuYXVqYXVzaWFzIHZpcsWhdWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXRvamkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyB0dmFya2EgxaFpb3Mgb3BlcmFjaWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdGUuIMSuIHZpcsWhxbM6IHNlbmlhdXNpYSB2aXLFoXVqZS4gxb1lbXluOiBuYXVqYXVzaWFzIHZpcsWhdWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTnVzdGF0byBwYWdhbCBudXR5bMSXamltxIUgcm9kb211cyBLSSBzdHVscGVsaXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUsIHByaWtsYXVzb21haSBudW8gS0kga2xhc8SXcy4gS2lla3ZpZW7EhSDEr3JhxaHEhSB0dXJpIHN1ZGFyeXRpIGtsYXPEl3MgcGF2YWRpbmltYXMgaXIgYXRpdGlua2Ftb3Mga2xhc8SXcyBnYWxpbcWzIGxhdWvFsyBtYXN5dmFzLiBEaW5hbWluacWzIGxhdWvFsyDEr3JhxaFhaSB0dXJpIGF0aXRpa3RpIHNjaGVtxIUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnQXBpYnLEl8W+aWFtYXMgbnVtYXR5dGFzaXMgcm9kb23FsyBzYW50eWtpxbMgZ3lsaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ051c3RhdG8gcGFnYWwgbnV0eWzEl2ppbcSFIHJvZG9txIUga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgYXRyaWJ1dMSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ051c3RhdG8gcGFnYWwgbnV0eWzEl2ppbcSFIHJvZG9txIUga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgYXRyaWJ1dMSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGVrcmFuZS4gUGF2eXpkeXM6ICJLZXkiIChyYWt0YXMpIHR1cmkgdHVyxJd0aSBkaW5hbWluaW8gbGF1a28gcGF2YWRpbmltxIUsIMWhaXVvIGF0dmVqdSAiWCIsICJDb250ZW50IiAodHVyaW55cykgdHVyaSB0dXLEl3RpIGRpbmFtaW5pbyBsYXVrbyByZWlrxaFtxJksIHByaWtsYXVzYW7EjWnEhSBudW8gZGluYW1pbmlvIGxhdWtvIHRpcG8sICJUZXh0IiAodGVrc3Rhcyk6ICJhIHRleHQiICh0ZWtzdGFzKSwgIkRyb3Bkb3duIiAoacWhc2tsZWlkxb5pYW1hKTogIjEiIChpxaFza2xlaWTFvmlhbWEpLCAiRGF0ZS9UaW1lIiAoZGF0YSBpciBsYWlrYXMpOiBQYWllxaFrYV9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgaXIgYXJiYSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD1zYXZhaXTElzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEgbnVtYXR5dMSFasSvIGtsYXPEl3MgIklUU01Db25maWdJdGVtIiBzdWJvYmpla3TEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ051c3RhdG8gZ2FsaW11cyBLSSBzdHVscGVsaXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUsIHByaWtsYXVzb21haSBudW8gS0kga2xhc8SXcy4gS2lla3ZpZW7EhSDEr3JhxaHEhSB0dXJpIHN1ZGFyeXRpIGtsYXPEl3MgcGF2YWRpbmltYXMgaXIgYXRpdGlua2Ftb3Mga2xhc8SXcyBnYWxpbcWzIGxhdWvFsyBtYXN5dmFzLiBEaW5hbWluacWzIGxhdWvFsyDEr3JhxaFhaSB0dXJpIGF0aXRpa3RpIHNjaGVtxIUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTnVzdGF0byDFoWlvIGVrcmFubyB0ZWtzdG8gcmVkYWt0b3JpYXVzIGtvbXBvbmVudG8gYXVrxaF0xK8uIMSudmVza2l0ZSBza2FpxI1pxbMgKHBpa3NlbGlhaSkgYXJiYSBwcm9jZW50aW7EmSB2ZXJ0xJkgKHNhbnR5a2luxJcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIENJIGFwaWJyxJfFvmltbyByZWRha3RvcmlhdXMgZWlsdcSNacWzIHNrYWnEjWnFsyBhZG1pbmlzdHJhdG9yaWF1cyBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ051c3RhdG8gxK92eWtpbyBixatzZW7FsyBlaWxpxaFrdW3EhSBudW8gYXVrxaF0xbMgKHB2ei4sIGtyaXRpxaFrxbMpIGlraSDFvmVtxbMgKHB2ei4sIGZ1bmtjaW5pxbMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbW9zIGF0aXRpbmthbW9zIGRpZWdpbW8gYsWrc2Vub3MsIGt1cmlvc2Ugc3VzaWV0aSBiaWxpZXRhaSBnYWxpIHR1csSXdGkgxK90YWtvcyBDSSBixatzZW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIEFnZW50SVRTTUNvbmZpZ0l0ZW0gZWtyYW5vIHBhaWXFoWtvcyByaWLEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggZWtyYW5vIHBhaWXFoWtvcyByaWLEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gZWtyYW5vIHBhaWXFoWtvcyByaWLEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggZWtyYW5vIHBhaWXFoWtvcyByaWLEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdOdXN0YXRvIG51b3JvZMWzIGxlbnRlbMSXcyBzdWTEl3RpbmdhbWUgcm9kaW55amUgcm9kb211cyB2aXPFsyBrbGFzacWzIEtJIHN0dWxwZWxpdXMuIEplaSDEr3JhxaFvIG7El3JhLCByb2RvbWkgbnVtYXR5dGllamkgc3R1bHBlbGlhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVvcm9kxbMgbGVudGVsxJdzIHN1ZMSXdGluZ2FtZSByb2RpbnlqZSByb2RvbXVzIEtJIHN0dWxwZWxpdXMsIHByaWtsYXVzb21haSBudW8gS0kga2xhc8SXcy4gUHJpZcWhIGtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBixat0aSDEr3JhxaF5dGFzIGtsYXPEl3MgcGF2YWRpbmltYXMgaXIgZHZpZ3ViaSBkdml0YcWha2lhaSAodC4geS4gQ29tcHV0ZXI6OikuIFlyYSBrZWxldGFzIENJIGF0cmlidXTFsywga3VyaWUgYmVuZHJpIHZpc2llbXMgQ0kgKHBhdnl6ZHlzIGtsYXPEl3MgQ29tcHV0ZXIgKEtvbXBpdXRlcmlzKTogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gTm9yaW50IHBhcm9keXRpIGF0c2tpcnVzIENJIGF0cmlidXR1cywgYXBpYnLEl8W+dHVzIENJIGFwaWJyxJfFvnR5amUsIHJlaWtpYSBuYXVkb3RpIHRva2nEhSBzY2hlbcSFIChrbGFzxJdzIENvbXB1dGVyIHBhdnl6ZHlzKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEplaSBuxJdyYSBDSSBrbGFzxJdzIMSvcmHFoW8sIHJvZG9taSBudW1hdHl0dW9zaXVzIG51c3RhdHltdXMgYXRpdGlua2FudHlzIHN0dWxwZWxpYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEsIGt1cml1b3MgZWxlbWVudHVzIGdhbGltYSBuYXVkb3RpICJBY3Rpb24iIHRyZcSNaWFqYW1lIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcm9zIGx5Z3lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOdXN0YXRvLCBrdXJpZSBlbGVtZW50YWkgeXJhIHByaWVpbmFtaSBwaXJtb2pvIGx5Z2lvIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcm9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTnVzdGF0bywga3VyaWUgZWxlbWVudGFpIHlyYSBwcmllaW5hbWkgYW50cmFqYW1lIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcm9zIGx5Z3lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEsIGtva2lvIHRpcG8gbnVvcm9kYSAoxK92YXJkeXRhIGnFoSBiaWxpZXRvIHBlcnNwZWt0eXZvcykgZ2FsaSB0dXLEl3RpIMSvdGFrb3Mgc3VzaWV0b3MgQ0kgYsWra2xlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdOdXN0YXRvLCBrb2tpbyB0aXBvIGJpbGlldGFzIGdhbGkgdHVyxJd0aSDEr3Rha29zIHN1c2lldG9zIENJIGLFq2tsZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQXBpYnLEl8W+aW1vIGF0bmF1amluaW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnScWhdHJpbnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdEaWVnaW1vIGLFq3Nlbm9zIHNwYWx2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVibGlrYXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0RpbmFtaW5pxbMgbGF1a8WzIMSvdnlracWzIG1vZHVsaXMsIGt1cmlzIMW+eW1pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXBpYnLEl8W+dGlzIGthaXAgbmVzaW5jaHJvbml6dW90YXMsIGplaSBwYXNpa2VpxI1pYSBkaW5hbWluaWFpIGxhdWthaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaW5pYWkgbGF1a2FpLCByb2RvbWkgYWdlbnRvIHPEhXNham9zIHBhcGlsZG9tbyBJVFNNIGxhdWtvIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pbmlhaSBsYXVrYWksIHJvZG9taSBrbGllbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhcMW+dmFsZ29zIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaW5pYWkgbGF1a2FpLCByb2RvbWkgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnxK5qdW5naWFtYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gbWFzaW5pbyB2ZWlrc21vIGZ1bmtjaWphLCBrYWQgYWdlbnRvIHByaWVraW7El2plIGRhbHlqZSB2aWVudSBtZXR1IGLFq3TFsyBnYWxpbWEgZGlyYnRpIHN1IGRhdWdpYXUgbmVpIHZpZW51IGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ8SuanVuZ2lhbWEga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIG1hc2luaW8gdmVpa3NtbyBmdW5rY2lqYSB0aWsgacWhdmFyZHl0b21zIGdydXDEl21zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfErmp1bmdpYW1hIC8gacWhanVuZ2lhbWEgZnVua2NpamEsIHNraXJ0YSBwYXRpa3JpbnRpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyB1bmlrYWxpdXMgcGF2YWRpbmltdXMuIFByaWXFoSDEr2p1bmdkYW1pIMWhacSFIHBhcmlua3TErywgdHVyxJd0dW3El3RlIHBhdGlrcmludGksIGFyIGrFq3PFsyBzaXN0ZW1vamUgbsSXcmEgamF1IGVzYW3FsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHN1IHBhc2lrYXJ0b2phbsSNaWFpcyBwYXZhZGluaW1haXMuIFRhaSBnYWxpdGUgcGFkYXJ5dGkgbmF1ZG9kYW1pIGtvbnNvbMSXcyBrb21hbmTEhSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ8SudnlracWzIG1vZHVsaXMsIHNraXJ0YXMgbnVzdGF0eXRpICJ0aWNrZXQtY29uZmlnaXRlbS1saW5rIiBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gYsWrc2VuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpbmRla3NvIGxhdWthaSwgbmF1ZG9qYW1pIHZpc28gdGVrc3RvIHBhaWXFoWthaS4gTGF1a2FpIHRhaXAgcGF0IHNhdWdvbWksIHRhxI1pYXUgbsSXcmEgcHJpdmFsb21pIGJlbmRyYWkgZnVua2NpamFpLiBQcmllZMWzIMSvdHJhdWtpbcSFIGdhbGltYSBpxaFqdW5ndGkgbnVzdGF0YW50IMSvcmHFoW8gcmVpa8WhbcSZIDAgYXJiYSBqxK8gacWhdHJpbmFudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpbmRla3NlIHNhdWdvbWkgbGF1a2FpLCBrdXJpZSBuYXVkb2phbWkgbmUgdGlrIHZpc28gdGVrc3RvIHBhaWXFoWthaSwgYmV0IGlyIGtpdGllbXMgZGFseWthbXMuIEthZCBmdW5rY2lqb3MgYsWrdMWzIHBpbG5haSBpxaFuYXVkb3RvcywgdmlzaSBsYXVrYWkgeXJhIHByaXZhbG9taS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdLaWVrdmllbmFpIMW+aW5pYXRpbmtsaW8gcGFzbGF1Z2FpIChyYWt0YXMpIGdhbGltYSBhcGlicsSXxb50aSBrbGFzacWzIG1hc3l2xIUgKHJlaWvFoW3ElyksIGt1cmlvIGltcG9ydGFzIHlyYSByaWJvamFtYXMuIFZpc29tcyBwYXNpcmlua3RvbXMga2xhc8SXbXMgYXJiYSB2aXNvbXMgZXNhbW9tcyBrbGFzxJdtcyBpZGVudGlmaWt1b2phbnR5cyBhdHJpYnV0YWkgdHVyxJdzIGLFq3RpIHBhc2lyaW5rdGkgaW52b2tlcmlvIGtvbmZpZ8WrcmFjaWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyJHZW5lcmljSW50ZXJmYWNlIiBtb2R1bGlvIHJlZ2lzdHJhY2lqYSAiQ29uZmlnSXRlbUZldGNoIiBpxaFrdmlldMSXam8gc2x1b2tzbml1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICciR2VuZXJpY0ludGVyZmFjZSIgbW9kdWxpbyByZWdpc3RyYWNpamEgIkNvbmZpZ0l0ZW1GZXRjaCIgacWha3ZpZXTEl2pvIHNsdW9rc25pdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyJHZW5lcmljSW50ZXJmYWNlIiBtb2R1bGlvIHJlZ2lzdHJhY2lqYSAiQ29uZmlnSXRlbUZldGNoIiBpxaFrdmlldMSXam8gc2x1b2tzbml1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SudHJhdWt0aSBkaWVnaW1vIGLFq3NlbmFzIMSvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha8SFIGtsaWVudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxK50cmF1a3RpIGluY2lkZW50byBixatzZW5hcyDEryBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWvEhSBrbGllbnTFsyBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEaWTFvmlhdXNpYXMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsywga3VyaWUgYnVzIHJvZG9taSDFoWlvcyBvcGVyYWNpam9zIHJlenVsdGF0ZSwgc2thacSNaXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsaXMsIHNraXJ0YXMgdcW+IGtsYXPEmSBhdHNha2luZ2FpIGdydXBlaSBwYXRpa3JpbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsaXMsIHNraXJ0YXMgcGF0aWtyaW50aSBncnVwxJksIGF0c2FraW5nxIUgdcW+IGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHN0YXRpc3Rpa29zIGdlbmVyYXZpbW8gbW9kdWxpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdQYXZhZGluaW1vIG1vZHVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWVyaW8gbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLCByb2RvbcWzIGtpZWt2aWVuYW1lIHBhaWXFoWtvcyByZXp1bHRhdMWzIHB1c2xhcHlqZSBhZ2VudG8gc8SFc2Fqb2plLCBza2FpxI1pdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMsIGt1cmllIGJ1cyByb2RvbWkga2lla3ZpZW5hbWUgcGFpZcWha29zIHJlenVsdGF0xbMgcHVzbGFweWplIGtsaWVudG8gc8SFc2Fqb2plLCBza2FpxI1pdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0xbMsIGt1cmnFsyByZWlraWEgaWXFoWtvdGksIGtpZWsgxK9yYcWhxbMgaXIga29raXVzIGF0cmlidXR1cyByb2R5dGkuIENvbmZpZ0l0ZW0gYXRyaWJ1dGFpIHR1cmkgYsWrdGkgYWnFoWtpYWkgc2F1Z29taSBwZXIgIkVsYXN0aWNzZWFyY2giLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdBcMW+dmFsZ2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFpLCBza2lydGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIGthdGVnb3Jpam9tcyBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01hxb5vc2lvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb3Mgc3R1bHBlbGnFsyBmaWx0csWzIHBhcmFtZXRyYWkuIEF0a3JlaXBraXRlIGTEl21lc8SvOiBudXN0YcSNaXVzICJBY3RpdmUiIHZlcnTEmSAwLCBhZ2VudGFpIG5lZ2FsxJdzIHJlZGFndW90aSB0aWsgxaFpb3MgZ3J1cMSXcyBudXN0YXR5bcWzIHNhdm8gYXNtZW5pbsSXc2UgcGFyaW5rdHlzZSwgdGHEjWlhdSBhZG1pbmlzdHJhdG9yaWFtcyB2aXMgdGllayBidXMgbGVpZMW+aWFtYSByZWRhZ3VvdGkga2l0byBuYXVkb3Rvam8gbnVzdGF0eW11cy4gTmF1ZG9raXRlICJQcmVmZXJlbmNlR3JvdXAiLCBub3LEl2RhbWkgdmFsZHl0aSwga3VyaW9qZSBzcml0eWplIMWhaWUgbnVzdGF0eW1haSB0dXLEl3TFsyBixat0aSByb2RvbWkgbmF1ZG90b2pvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxK5kaWVnaW1vIGLFq3NlbsWzIHBhcmFtZXRyYWkgbnVzcGFsdmludGkgYWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdkaWVnaW1vIGLFq3NlbsWzIHBhcmFtZXRyYWkgYWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnQmVuZHLFs2rFsyBrYXRhbG9nbyBhdHJpYnV0xbMgbGVpZGltxbMgZ3J1cGnFsyBwYXZ5emTFvmnFsyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50byBzxIVzYWpvcyBudW9zdGF0xbMgcm9kaW55amUgZXNhbsSNacWzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyB2YXJkxbMgbW9kdWxpbyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIG51bWVyaW8gbW9kdWxpbyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQdXNsYXBpxbMgKGt1cml1b3NlIHJvZG9taSBrb25maWfFq3JhY2lqb3MgZWxlbWVudGFpKSBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgdmVyc2lqb3MgZWlsdXTEl3MgbW9kdWxpbyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50byBzxIVzYWpvcyBudW9zdGF0xbMgcm9kaW55amUgZXNhbsSNacWzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyBrb25maWfFq3JhY2lqb3MgZWlsdXTEl3MgxaFhYmxvbm8gxK9yYW5racWzIHJpbmtpbmlvIG1vZHVsaW8gcGFyYW1ldHJhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIHZlcnNpam9zIHRyaWdlcmlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnQXRsaWVrYSBzdWtvbmZpZ8WrcnVvdMSFIHZlaWtzbcSFIGtpZWt2aWVuYW0gxK92eWtpdWkgKGthaXAgSW52b2tlcikga2lla3ZpZW5haSBzdWtvbmZpZ8WrcnVvdGFpIMW+aW5pYXRpbmtsaW8gcGFzbGF1Z2FpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnTGVpZGltxbMgZ3J1cMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlqdW5naW1vIHZlaWtzbcSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gZWtyYW7EhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGxhbmfEhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGVrcmFuxIUga2xpZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBtZWTFvmlvIHBlcsW+acWrcm9zIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWFydGluaW1vIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpZMSXamltbyBsYW5nxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSwga2FkIGLFq3TFsyBnYWxpbWEgbmF1ZG90aSBhZ2VudG8gc8SFc2Fqb3MgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gZWtyYW7EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHJlZGFnYXZpbW8gZWtyYW7EhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpLCBrYWQgYsWrdMWzIGdhbGltYSBuYXVkb3RpIGFnZW50byBzxIVzYWpvcyBpc3Rvcmlqb3MgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gZWtyYW7EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWksIGthZCBixat0xbMgZ2FsaW1hIG5hdWRvdGkgYWdlbnRvIHPEhXNham9zIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHNwYXVzZGluaW1vIGVrcmFuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdSZWlrYWxpbmdvcyBwcml2aWxlZ2lqb3Mgbm9yaW50IGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0llxaFrb3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBdXRvbWF0acWha2FpIG51c3RhdHlraXRlIEtJIGluY2lkZW50byBixatzZW7EhSwga2FpIGJpbGlldGFzIHN1c2llamFtYXMgc3UgS0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBkaWVnaW1vIGLFq3NlbsSFIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gZGlkbWVuaW5pYW1lIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBpbmNpZGVudG8gYsWrc2VuxIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkaWRtZW5pbsSXcyBrb25maWfFq3JhY2lqb3MgZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbml1IHJvZG9tYSBudW9yb2RhLCBsZWlkxb5pYW50aSBzdXNpZXRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgc3Uga2l0dSBvYmpla3R1IGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpYXJ0aW5pbW8gcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kbyBtZW5pdSBudW9yb2TEhSwgc2tpcnTEhSBwYXNpZWt0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaXN0b3JpasSFIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5pdSByb2RvbWEgbnVvcm9kYSwga3VyaWEgZ2FsaW1hIHBhc2lla3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpc3RvcmlqxIUgYWdlbnRvIHPEhXNham9zIHByaWFydGluaW1vIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG9tYSBtZW5pdSBudW9yb2RhLCBza2lydGEgacWhdHJpbnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgam8gcHJpYXJ0aW50YW1lIGFnZW50byBzxIVzYWpvcyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1JvZG8gbWVuaXUgbnVvcm9kxIUsIGthZCBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIG51b3JvZG9zIGLFq3TFsyByb2RvbW9zIG1lZMW+aW8gcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSBkdWJsaXVvdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIHNraXJ0YSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHVpIGR1YmxpdW90aSBhZ2VudG8gc8SFc2Fqb3MgcHJpYXJ0aW5pbW8gcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIHJlZGFndW90aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIGFnZW50byBzxIVzYWpvcyBwcmlhcnRpbnRhbWUgcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5pdSByb2RvbWEgbnVvcm9kYSwga3VyaWEgZ2FsaW1hIGdyxK/FvnRpIMSvIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpYXJ0aW5pbW8gcm9kaW7Ery4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIHNwYXVzZGludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3MgcHJpYXJ0aW50YW1lIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG9tYSBtZW5pdSBudW9yb2RhLCBza2lydGEgcHJpYXJ0aW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kbyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGlzdG9yaWrEhSAoYXR2aXJrxaF0aW5lIHR2YXJrYSkgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTnVtYXR5dG9qaSBrYXRlZ29yaWphLCBrdXJpIHJvZG9tYSwgamVpIG5lcGFzaXJpbmt0YSBuxJcgdmllbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaWRlbnRpZmlrYXRvcml1cywgcHZ6LiwgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIE51bWF0eXRvamkgcmVpa8WhbcSXIHlyYSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbWF0acWha2FpIHBhbGVpZMW+aWEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcmnFsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpamEgU3R5Z2luacWzIGVpbHV0xJcgScWhcmFpxaFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaWpvcyBlaWx1dMSXcyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpamEgVHJpZ2dlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdBciBnYWxpbWEgacWhdmVuZ3RpICJDb25maWdJdGVtQUNMIiB2eWtkeW1vIHRpa3JpbmFudCB0YWxweWtsb2plIGVzYW7EjWnFsyBsYXVrxbMgcHJpa2xhdXNvbXliZXMuIFRhaSBnYWxpIHBhZ2VyaW50aSBmb3JtdWxpYXLFsyDEr2vEl2xpbW8gbGFpa8SFLCB0YcSNaWF1IHR1cmkgYsWrdGkgacWhanVuZ3RhLCBqZWkgQUNMTW9kdWxlcyB0dXJpIGLFq3RpIG5hdWRvamFtaSBJVFNNQ29uZmlnSXRlbS0gaXIgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0tva2lhIGJlbmRyYSBpbmZvcm1hY2lqYSBwYXRlaWtpYW1hIGFudHJhxaF0xJdqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAncGFzYXVsaW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWtjaW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJpZcWhcHJvZHVrY2luaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3R5dnVzJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGNvbGlvICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgY29saXMgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBjb2xpbyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBjb2xpbyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IGNvbGnFsyBzdG92YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGNvbGlvICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGNvbGlhaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgY29saW8gc3RvdmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBjb2xpbyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIGNvbGnFsyBzdG92YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGNvbGlvICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBjb2xpYWkgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGNvbGlvICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgY29saW8gKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgY29saW8gKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGNvbGlvICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBjb2xpbyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgY29saW8gKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGNvbGlhaSAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGNvbGlvICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgY29saW8gKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBjb2xpbyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgY29saW8gKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgY29saW8gKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgY29saW8gKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBjb2xpbyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGNvbGlhaSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGNvbGlhaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgY29saW8gKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGNvbGlvICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGNvbGlvICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGNvbGnFsyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBjb2xpbyAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQXBza2FpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc8WzIHByaXNreXJpbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2luaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdQcmlldGFpc28gdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FrdW11bGlhdG9yaWF1cyB0YWxwYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0FrdW11bGlhdG9yaWF1cyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Bhc3RhdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdNYWdpc3RyYWzEl3Mgc8SFc2FqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ1RhbHBhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdWaWVub3MgdmFpemRvIHBsb2vFoXTEl3MgdGFscGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0ZWzEl3MgbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0tvcnRlbGnFsyBza2FpdHl0dXZhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLb3J0ZWzEl3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudMWzIHNlcnRpZmlrYXRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRvIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2xpZW50byBrYXRlZ29yaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0xhaWtyb2TFvmlvIHJvZHlrbMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdMYWlrcm9kxb5pxbMgZ3JlaXRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kbyBwYXNpcmHFoXltbyBzZXJ0aWZpa2F0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuY2luaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF2aW1vIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdTdXNpc2lla2l0ZSBzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnU3VzaXNpZWtpdGUgc3UgcGxhdGludG9qdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRlaW5lcmnFsyB2YWxkeW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1N1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdTdXRhcnRpZXMgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTdXRhcnRpZXMgbGFpa290YXJwaXMgbnVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1N1dGFydGllcyBsYWlrb3RhcnBpcyBpa2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmVsYWlkaXMgdGVsZWZvbmFzIChERUNUIHRlbGVmb25hcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnScWhbGFpZMWzIHZpZW5ldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljZW5jaWrFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ1N1a8WrcmltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdQYXNpcmlua3RpbmlzIHN0b3Zhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCByZXplcnZ1b3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMgc2VydmVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ1PEhXNrYWl0b3MgZmFrdMWrcm9zIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1XFvnNha3ltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdHYXJhbnRpam9zIGnFoWRhdmltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0nFoWxlaWRpbW8gZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnU3RhbGluaXMga29tcGl1dGVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50xbMgcGFzaXJhxaF5bW8gc2VydGlmaWthdGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBzdGVsYcW+YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0VsLiBwYcWhdG8gc2VydGlmaWthdGFpIChTL01JTUUgc2VydGlmaWthdGFpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdEYXJibyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0dhbGluaXMgSVAgYWRyZXNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1BhcmFtb3MgcGFiYWlnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0dhbGlvamltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdJxaFvcmluaXMga2lldGFzaXMgZGlza2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVWduaWFzaWVuxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdQcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRW5lcmdpam9zIGthdXBpbWFzIHNtYWdyYcSNaXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3Jtb3MgZmFrdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaFpesSXcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ05lbW9rYW1hIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnQmVuZHJhIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnVmFpemRvIHBsb2vFoXTEl3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1ZhaXpkbyBwbG9rxaF0xJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdUZWNobmluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ1RlY2huaW7El3MgxK9yYW5nb3MgbW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdUZWNobmluxJdzIMSvcmFuZ29zIHN2b3Jpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzaW7El3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBwcm90b2tvbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1RhcGF0eWLEl3MgaXIgcHJpZWlnb3MgdmFsZHltYXMgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yaW5pcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdHJhdmltbyBpxaFsYWlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdTxIVza2FpdG9zIGZha3TFq3JvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhdmlhdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIG1vbml0b3JpdXMgKHNreXN0xbNqxbMga3Jpc3RhbMWzIGVrcmFuYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvcml1cyAoxaF2aWVzb3MgZGlvZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTdGFjaW9uYXJ1c2lzIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdOZcWhaW9qYW1hc2lzIGtvbXBpdXRlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnUGxhdHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJzEgc2x1b2tzbmlzOiBmaXppbmlzIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcyIHNsdW9rc25pczogZHVvbWVuxbMgcnnFoWlvIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMyBzbHVva3NuaXM6IHRpbmtsbyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMyBzbHVva3NuaXM6IHRpbmtsbyBzbHVva3NuaXMgKHN1cGVybmV0YXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJzQgc2x1b2tzbmlzOiB0cmFuc3BvcnRvIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnNSBzbHVva3NuaXM6IHNlc2lqb3Mgc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJzYgc2x1b2tzbmlzOiBwYXRlaWtpbW8gc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNyBzbHVva3NuaXM6IHRhaWtvbcWzasWzIHByb2dyYW3FsyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTnVvbW9zIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jaWpvcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5jaWpvcyByYWt0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5jaWpvcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWpvcyBsYWlrb3RhcnBpcyBudW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbmNpam9zIGxhaWtvdGFycGlzIGlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGnEjWlvIGdlbGXFvmllcyBmb3NmYXRvIChMaUZlUE80KSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGnEjWlvIGpvbsWzIChsacSNaW8gam9uxbMpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnUGFza29sb3Mgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ8Suc2lrxatyxJlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0lsZ3VtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnR2FtaW50b2phcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnRGlkxb5pYXVzaWEgYXBrcm92b3MgZ2FsaWEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0F0bWludGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnQXRtaW50aWVzIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIHN0ZWxhxb5hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxpb2pvIHRlbGVmb25vIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWx1c2lzIC8gxK90ZXJwdGFzaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWxpcyBBcHJhxaF5bWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JpYXVzIHNraXJpYW1vamkgZ2ViYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yaWF1cyBkeWRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1BlbMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdUaW5rbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ1RpbmtsbyBpbmZvcm1hY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnVGlua2xvIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdUaW5rbG8gbHlnbXVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWxpby1rYWRtaW8gKE5pQ2QpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlrZWxpby1tZXRhbG8gaGlkcmlkbyAoTmlNSCkgYWt1bXVsaWF0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU3VzaXRhcmltYXMgZMSXbCBpbmZvcm1hY2lqb3MgbmVhdHNrbGVpZGltbyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05lxaFpb2phbWFzaXMga29tcGl1dGVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQcm9jZXNvcmnFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnT3BlcmF0eXZpb3Npb3MgYXRtaW50aWVzIG1vZHVsacWzIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdWYWl6ZG8gcGxva8WhxI1pxbMgc2thacSNaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIG1vbml0b3JpdXMgKG9yZ2FuaW5pcyDFoXZpZXNvcyBkaW9kYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1ZlaWtsb3Mgc8SFbmF1ZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1XFvnNha3ltbyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnS2l0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnScWhxJdqaW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4gS09EQVMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyeXN0xJdzIHN1c2l0YXJpbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm8gbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbm8gdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppbmlhaSBicmFuZHVvbGlhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ01haXRpbmltbyB0aWVraW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ8Suc2lneXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdG92byBneWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1N0b3ZvIHZpZW5ldGFpIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnS2FtYmFyeXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ga29ydGVsxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIHNlcnRpZmlrYXRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1BhcmRhdmltbyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdQYWx5ZG92aW5pcyB0ZWxlZm9uYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnU2FuZGFydXMgxaF2aW5vIHLFq2fFoXRpbmlzIChTTEEpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcmlvIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdQYXNsYXVnxbMgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdQYXNsYXVnb3Mgxb55bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnTGl6ZG8gdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnR2Fyc2lha2FsYmlhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFydGluaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1ByYWRpbmlzIElQIGFkcmVzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1NhdWd5a2xhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU2F1Z3lrbG9zIHNraXJzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRHVrdGVyaW7ElyDEr21vbsSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTYW50cmF1a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdQbG9uYXNpcyBrbGllbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnU2nFq2xhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyJUaHVuZGVyYm9sdCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0nFoSB2aXNvIGdyYWZpbsSXcyBwbG9rxaF0xJdzIG9wZXJhdHl2aW9zaW9zIGF0bWludGllcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnScWhIHZpc28gUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0p1dGlrbGluaW8gZWtyYW5vIG1vbml0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdCb2vFoXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIMWhYWtvdHV2YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBhdXNpbsSXcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnSW50ZXJuZXRvIGthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/lv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWaXNwxIFyxKtnaSBkYXJixKtiYXMgZGF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSWVuxIFrb8WhbyBwaWVwcmFzxKtqdW11IGRhdHUgaWVzdGF0xKtqdW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSXplam/FoW8gYXRiaWxkZXMgZGF0dSBpZXN0YXTEq2p1bWknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnZhbGTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTWFpbsSrdCBrbGFzZXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01haW7Eq3QgbG9tYXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ8WgZWl0IHZhcmF0IGltcG9ydMSTdCBSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0dXMsIGt1cm9zIHBhcsSBZMSrdGkgbcWrc3UgdmlzYmllxb7EgWsgaXptYW50b3RpZSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkuIEzFq2R6dSwgxYZlbWlldCB2xJNyxIEsIGthIHZhciBixat0IG5lcGllY2llxaFhbWEgcGFwaWxkdSBrb25maWd1csSBY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRqYXVuaW7EgXQgZXNvxaHEgXMgdmllbsSrYmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0xJN0IFJlYWR5MkFkb3B0IGtsYXNlcyBrb21wbGVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bWEga2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGxvbWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhxaF1IGZpbHRycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdMYWkgaXp2ZWlkb3R1IGphdW51IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgc2FyYWtzdMSBIGF0bGFzaWV0IGtsYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgZGFyYsSrYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0l6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0luY2lkZW50YSBzdMSBdm9rbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1NhaXRlIHV6IGNpdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ05lZGVyxKtncyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgbnVtdXJzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdDaXRhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBudW11cnMsIGFyIGt1cnUgdGFzIGrEgXNhc2Fpc3RhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZhaSB0aWXFocSBbSB2xJNsYXRpZXMgZHrEk3N0IMWhbyBrb25maWd1csSBY2lqYXMgZWxlbWVudHU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTm9zYXVrdW1zIGphdSB0aWVrIGl6bWFudG90cyBDb25maWdJdGVtcyBhciDFocSBZHUoLWllbSkgbnVtdXJ1KC1pZW0pOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpamFzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxaDEqyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdmVyc2lqYXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqYXMgbnVtdXJ1IGphdSBpem1hbnRvIENvbmZpZ0l0ZW1zIGFyIMWhxIFkdSgtaWVtKSBudW11cnUoLWllbSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdJenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGEgdmFsc3RzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1bEk3N0dXJlcyBzYXR1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUGFsaWVsaW7EgXQgc2thdHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIFZpZW7Eq2JhcyB1eiBsYXB1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZGF0aSBuYXYgYXRyYXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJenbEk2xpZXRpZXMgxaFvIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1BhbGFpc3QgbWVrbMSTxaFhbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnTWVrbMSTdCBhcsSrIGllcHJpZWvFocSTasSBcyB2ZXJzaWrEgXM/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBUcmVlVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R6acS8dW1hIGzEq21lbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUGFsaWVsaW7EgXQvaXpzbMSTZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSBzYXNuaWVndHMgbWFrc2ltxIFsYWlzIHNhacWhdSBsxKttZW5pcyEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgdmllbnVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm3EgWNpamEgcGFyIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdQYcWhcmVpesSTamFpcyBpenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1BhxaFyZWl6xJNqYWlzIGluY2lkZW50YSBzdMSBdm9rbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1DEk2TEk2rEgXMgaXptYWnFhmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1DEk2TEk2pvIHJlaXppIG1haW7Eq3RzIGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSsWrc3UgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBtZWtsxJPFoWFuYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnT2JqZWt0YSB0aXBzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGlrcyBpbXBvcnTEk3RhcyDFocSBZGFzIGtsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdUaWtzIGltcG9ydMSTdGFzIMWhxIFkYXMgbG9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxYVlbWlldCB2xJNyxIEsIGthIHRpa3MgaXp2ZWlkb3RpIGFyxKsgYXR0aWVjxKtnaWUgZGluYW1pc2tpZSBsYXVraSB1biBHZW5lcmFsQ2F0YWxvZyBrbGFzZXMsIHVuIGF1dG9txIF0aXNrYSBub8WGZW3FoWFuYSBuZW5vdGlrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWYWkgdsSTbGF0aWVzIHR1cnBpbsSBdD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVwaWVjaWXFoWFtYXMgcGllbcSTcnUga2xhc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsSrY2lqYSBuYXYgZGVyxKtncyBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUMSBcnNrYXRzOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0p1bXMgaXIgbmVwaWVjaWXFoWFtcyB2aXNtYXogdmllbnMgaXp2xJNsxJN0cyBrb25maWd1csSBY2lqYXMgdmllbnVtcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdKdW1zIG5hdiByYWtzdMSrxaFhbmFzIHBpZWvEvHV2ZXMgxaFpbSBrb25maWd1csSBY2lqYXMgZWxlbWVudGFtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5hdiBkZWZpbsSTdGEgZGVmaW7Eq2NpamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1csSBY2lqYXMgdmllbsSrYmEgIiVzIiBuYXYgYXRyYXN0YSBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZXZhcsSTamEgaXpkesSTc3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmF2IGF0cmFzdGEgdmVyc2lqYSBDb25maWdJdGVtRU1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCB2YWkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1BpZWvEvHV2ZSBuYXYgZG90YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IHbEk3N0dXJpLCBuYXYgbm9yxIFkxKt0cyBuZXZpZW5zIENvbmZpZ0l0ZW10ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZXZhciBwYXLEgWTEq3QgdsSTc3R1cmksIG5hdiBwaWXFocS3aXJ0YXMgcGlla8S8dXZlcyB0aWVzxKtiYXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdKYXVucyBrb25maWd1csSBY2lqYXMgZWxlbWVudHMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnSmF1bmEgdmVyc2lqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRzIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBpbmNpZGVudGEgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRzIChJRD0lcykgZHrEk3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1BpZXZpZW5vdGEgc2FpdGUgdXogJXMgKHRpcHM9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdTYWl0ZSB1eiAlcyAodGlwcz0lcykgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRhIENvbmZpZ0l0ZW0gZGVmaW7Eq2NpamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBub3NhdWt1bXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlixat0cyAlcyBhdGphdW5pbsSBdHMgbm8gIiVzIiB1eiAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpamEgJXMgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOYXYgbm9yxIFkxKt0cyBDb25maWdJdGVtSUQgdmFpIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtRU1JRCAlcyBuYXYgYXRyYXN0cyBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2l6ZHJ1a8SBdHMgJXMgcGllICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdBdHNhdWNlIChlbiknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZWRlcsSrZ3Mga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnxaBhaSBrbGFzZWkgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05hdiByZXp1bHTEgXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3VyxJPFoWFuYXMgdmllbnVtYSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmV2YXIgcGFyxIFkxKt0IGVsZW1lbnR1LCBuYXYgcGllxaHEt2lydGFzIHBpZWvEvHV2ZXMgdGllc8SrYmFzIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmF2IGF0cmFzdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpamFzIG5hdiBhdHJhc3RhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdkYXJixKtiYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2JyxKtkaW7EgWp1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGluY2lkZW50YSBzdMSBdm9rbGlzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmF2IGF0xLxhdWphcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnMgbmVkZXLEq2dzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnTWVrbMSTxaFhbmFzIHBhcmFtcyBuZWRlcsSrZ3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUGFyxIFkxKt0aWUga29uZmlndXLEgWNpamFzIGVsZW1lbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0l6dmlldG/FoWFuYXMgdmFsc3RzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnUGHFoXJlaXrEk2phaXMgaW5jaWRlbnRhIHZhbHN0cyB0aXBzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1N0YXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEga2xhc2VzIGllcm9iZcW+b2p1bWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBrbGFzZXMgaWVyb2Jlxb5vanVtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlza3MgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnU2FpdGUgQXRzYXVjZXMgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnVmFpIMWhxKsgc2FpdGUgYXR0aWVjYXMgdXogYXRzYXVjZXMgb2JqZWt0YSBDb25maWdJdGVtIHZhaSBzdGF0aXNrbyB2ZXJzaWp1LiBQYcWhcmVpesSTasSBIGluY2lkZW50YSBzdMSBdm9rxLxhIGFwcsSTxLdpbnMgdGllayB2ZWlrdHMgdGlrYWkgZGluYW1pc2thasSBbSBzYWl0xJNtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ0F0bGFzaWV0IGF0cmlixat0dSwgcMSTYyBrdXJhIHRpa3MgbWVrbMSTdGkga29uZmlndXLEgWNpamFzIGVsZW1lbnRpLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCxIF6ZXMgc3RydWt0xatyYSBuYXYgZGVyxKtnYS4gTMWrZHp1LCBub3LEgWRpZXQgaGFzaCBhciBkYXRpZW0gWUFNTCBmb3JtxIF0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTCB2aXJrbmUgasSBc8SBayBhciBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZWl6ZGV2xIFzIGF0dMSrcsSrdCB0YWJ1bHUgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmV0aWthIGF0cmFzdGkgYXR0aWVjxKtnaWUgZGluYW1pc2tpZSBsYXVraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05ldmFyIGlldmlldG90IHRhYnVsxIEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdUYWJ1bMSBIGNvbmZpZ2l0ZW1fbGluayBpZXZpZXRvdGFzIDAgcmluZGFzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01ha3NpbcSBbGFpcyB2aWVuYSBlbGVtZW50YSBza2FpdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0xJN0L2Vrc3BvcnTEk3QgcGllbGlrdW11cyAoa8SBIHDEk2TEk2ppZSBpZXJha3N0aSBrYXRyxIEgcmluZMSBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpamFzIHZpcmtuZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdLxLzFq2RhLCBzaW5ocm9uaXrEk2pvdCBkZWZpbsSrY2lqYXMuIEzFq2R6dSwgcMSBcmJhdWRpZXQgxb51cm7EgWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0p1bXMgaXIgSVRTTUNvbmZpZ0l0ZW0gZGVmaW7Eq2NpamFzLCBrYXMgbmF2IHNpbmhyb25pesSTdGFzLiBMxatkenUsIGlldmlldG9qaWV0IElUU01Db25maWdJdGVtIGRpbmFtaXNrbyBsYXVrdSBpem1hacWGYXMuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdEYXJixKtiYXMgdGVybWnFhsWhIGJlaWR6aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVXp0dXLEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsxIFub3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1BlbnNpb27Ek3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1DEgXJza2F0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdMSTxaFhbmEgLyBrdmFsaXTEgXRlcyBub2Ryb8WhaW7EgcWhYW5hJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQxIFyc2thdHMgdW4gYXBzdGlwcmluxIFqdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0tsYcWhdS8gbG9tdSB1biBhciB0xIFtIHNhaXN0xKt0byBsYXVrdSBpbXBvcnTEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnS2xhc2VzIGltcG9ydMSTxaFhbmFzIGxhaWvEgSBub3Rpa2Ega8S8xatkYS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNsxJNwdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBhdHTEk2xvdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ8S7YXVqIHBhcGxhxaFpbsSBdCBtZWtsxJPFoWFuYXMgbm9zYWPEq2p1bXVzIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuxIEuIEl6bWFudG9qb3QgxaFvIGZ1bmtjaWp1LCBqxatzIHZhcmF0IG1la2zEk3QsIHBpZW3Ek3JhbSwga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3VtdSBhciDFocSBZGllbSBub3NhY8SranVtaWVtLCBwaWVtxJNyYW0sICIoKmtleTEqJiYqa2V5MiopIiB2YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfEu2F1aiBwYXBsYcWhaW7EgXQgbWVrbMSTxaFhbmFzIG5vc2FjxKtqdW11cyBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLiBJem1hbnRvam90IMWhbyBmdW5rY2lqdSwgasWrcyB2YXJhdCBtZWtsxJN0LCBwaWVtxJNyYW0sIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBub3NhdWt1bXUgYXIgxaHEgWRpZW0gbm9zYWPEq2p1bWllbSwgcGllbcSTcmFtLCAiKCprZXkxKiYmJiprZXkyKikiIHZhaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1BpZcWhxLdpcnRpZSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tsaWVudGEgdXrFhsSTbXVtYW0gcGllxaHEt2lydGllIEtJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnS2xpZW50YSBsaWV0b3TEgWphbSBwaWXFocS3aXJ0aWUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgaWVzdGF0xKtqdW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQxIFyYmF1ZMSrdCB1bmlrxIFsdSBub3NhdWt1bXUgdGlrYWkgdGFqxIEgcGHFocSBIENvbmZpZ0l0ZW0ga2xhc8STIChcJ2NsYXNzXCcpIHZhaSBnbG9ixIFsaSAoXCdnbG9iYWxcJyksIGthcyBub3rEq23Ekywga2EsIG1la2zEk2pvdCBkdWJsaWvEgXR1cywgdGllayDFhmVtdHMgdsSTcsSBIGthdHJzIGVzb8WhYWlzIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdJenbEk2xpZXRpZXMgbW9kdWxpLCBsYWkgaWV2aWVzdHUgbm9zYXVrdW11IHNoxJNtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0l6dsSTbGlldGllcyBtb2R1bGksIGxhaSBpZXZpZXN0dSBudW11cnUgc2jEk211Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdJenbEk2xpZXRpZXMgbW9kdWxpLCBsYWkgaWV2aWVzdHUgdmVyc2lqdSB2aXJrbmVzIHNoxJNtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdJenbEk2xpZXRpZXMgYXRyaWLFq3R1cywga2FzIGl6cmFpc2EgamF1bmFzIHZlcnNpamFzIGl6dmVpZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0l6dsSTbGlldGllcyBrYXRlZ29yaWphcywga28gcGllxaHEt2lydCDFoWFpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubnUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGZpbHRyaSBDb25maWdJdGVtIFDEgXJza2F0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9ubmFzLCBrdXJhcyB2YXIgZmlsdHLEk3QgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEuIFBpZXrEq21lOiBJciBhdMS8YXV0aSB0aWthaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYXRyaWLFq3RpIHVuIGRpbmFtaXNraWUgbGF1a2kgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHBpZXZpZW5vxaFhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHJlZGnEo8STxaFhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLEk2ppZXQgZWxlbWVudHUgbm90aWt1bXUgbW9kdWxpLCBrYXMgYcSjZW50YSBzYXNrYXJuxJMgxLxhdWogcmXEo2lzdHLEk3QgdsSTc3R1cmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBub3Rpa3VtdSBtb2R1bGlzLCBrYXMgYXRqYXVuaW5hIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwYcWhcmVpesSTam8gZGVmaW7Eq2NpanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXLEk8WhYW5hcyBlbGVtZW50dSB2xJNzdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGRydWvEgcWhYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyxJNqaWV0IHZpZW51bWEgdMSBbHVtbWFpxYZ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gVHJlZSBza2F0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnxaDEgWR1IGtsYcWhdSBDb25maWdJdGVtcyBuZXRpa3Mgc2FnbGFixIF0aSBFbGFzdGljc2VhcmNoIHNlcnZlcsSrLiBMYWkgdG8gcGllbcSTcm90dSBlc2/FoWFqaWVtIENJLCBwxJNjIMWhxKtzIG9wY2lqYXMgbWFpxYZhcyBDSSBtaWdyxIFjaWphIGlyIGrEgXZlaWMsIGl6bWFudG9qb3Qga29uc29saS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgYXIgxaHEgWRpZW0gaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLxpZW0gbmV0aWtzIHNhZ2xhYsSBdGkgRWxhc3RpY3NlYXJjaCBzZXJ2ZXLEqy4gTGFpIHRvIHBpZW3Ek3JvdHUgZXNvxaFhamllbSBDSSwgcMSTYyDFocSrcyBvcGNpamFzIG1hacWGYXMgQ0kgbWlncsSBY2lqYSBpciBqxIF2ZWljLCBpem1hbnRvam90IGtvbnNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGllcm9iZcW+b2p1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGllcm9iZcW+b2p1bXMgdmllbsSBIGxhcMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXLEgWNpamFzIHDEgXJ2YWxkxKtiYXMgZGF0dWLEgXplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGxpZWxhIGFwam9tYSBtb2R1bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgbWVrbMSTxaFhbmEgYcSjZW50YSBpbnRlcmZlaXNhIGFpem11Z3VyxJNqxIEgbWFyxaFydXTEk3TEgWrEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnSXp2ZWlkb3QgdW4gcMSBcnZhbGTEq3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGRlZmluxKtjaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdJenZlaWRvIENvbmZpZ0l0ZW1zIGJpxLxldGVzIGtvbmtyxJN0b3MgbGFpa2EgcHVua3Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW50aSB2YXIgc2thdMSrdCB2xJNzdHVyaXNrxIFzIENJIHZlcnNpamFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbnRpZW0gaXIgaWVzcMSTamEgbWFudcSBbGkgcMSBcnNsxJNndGllcyBzdGFycCB2xJNzdHVyaXNrYWrEgW0gQ0kgdmVyc2lqxIFtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ05va2x1c8STanVtYSBkYXRpLCBrYXMgaXptYW50b2phbWkgYXRyaWLFq3RhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgZWtyxIFuxIEuIFBpZW3Ek3JzOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ05va2x1c8STanVtYSBkYXRpLCBrYXMgaXptYW50b2phbWkgYXRyaWLFq3RhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgZWtyxIFuxIEuIFBpZW3Ek3JzOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW7Ek3QgRGFyYsSrYmFzLCBrdXLEgXMgcGllc2Fpc3TEq3RvIG9iamVrdHUgbG9ncsSra8SBIGlyIHBpZWVqYW1hIGllc3RhdMSranVtdSBwb2dhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIEzFq2R6dSwgxYZlbWlldCB2xJNyxIEsIGthIMWhxKttIGRhcmLEq2LEgW0gaXIgasSBYsWrdCByZcSjaXN0csSTdGllbSDFocSBZGllbSBKUyB1biBDU1MgZmFpbGllbTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgdW4gQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW7Ek3QgVGVtcGxhdGU6OlRvb2xraXQgc2jEk211IHZlcnNpanUgdmlya27Ek20uIEl6bWFudG8gdGlrYWkgdGFkLCBqYSB2ZXJzaWphcyB2aXJrbmVzIG1vZHVsaXMgaXIgaWVzdGF0xKt0cyB1eiBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnTm9zYWtpZXQgbm9zYWPEq2p1bXUga29wdW11LCBzYXNrYcWGxIEgYXIga3VyaWVtIGtsaWVudGFtIGlyIGF0xLxhdXRzIHNrYXTEq3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1LiBOb3NhY8SranVtdXMgcMSTYyBpenbEk2xlcyB2YXIgaWVyb2Jlxb5vdCBsxKtkeiBub3RlaWt0xIFtIGtsaWVudHUgZ3J1cMSBbS4gTm9zYXVrdW1zIGlyIHZpZW7Eq2dhaXMgb2JsaWfEgXRhaXMgYXRyaWLFq3RzLiBKYSBuYXYgbm9yxIFkxKt0YXMgY2l0YXMgb3BjaWphcywgxaFhasSBIGthdGVnb3JpasSBIGLFq3MgcmVkemFtaSB2aXNpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluxJMgTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcyBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkesSTxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaWVnxat0dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dXMsIGl6bWFudG9qb3QgdmlzcMSBcsSTam8gc2Fza2FybmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbsSTIE5lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGllc3RhdMSrxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbsSTIHDEgXJza2F0YSBtb2R1bGksIGxhaSBwYXLEgWTEq3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzYXJha3N0YSBtYXpvIHNrYXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdOb3Nha2EsIHZhaSBtZXpnbHUgc2F2aWVub2p1bW9zIGlyIGrEgW5vcsSBZGEgc2FpdGVzIHRpcGEgZXRpxLdldGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW7EkyByZWd1bMSBcsSBcyBpenRlaWtzbWVzIGthdHJhaSBDb25maWdJdGVtIGtsYXNlaSBhdHNldmnFocS3aSwgbGFpIHDEgXJiYXVkxKt0dSBDb25maWdJdGVtIG5vc2F1a3VtdSB1biBwYXLEgWTEq3R1IGF0Ymlsc3RvxaFvcyBrxLzFq2RhcyB6acWGb2p1bXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ05vc2FrYSBwaWVlamFtxIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIHZpZW51bWEgYXRyaWLFq3R1IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IMWhxLdpcm/FoWFuYWkgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIHZpZW51bXUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgdmllbnVtYSBhdHJpYsWrdHUga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIHZpZW51bXUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdHUgxaHEt2lyb8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGF0cmlixat0dSDFocSrcyBvcGVyxIFjaWphcyBrb25maWd1csSBY2lqYXMgdmllbnVtYSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0YSBrb25maWd1csSBY2lqYXMgdmllbnVtYSDFocS3aXJvxaFhbmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2VjxKtidSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLiBBdWfFoXVwOiB2ZWPEgWthaXMgaXIgYXVnxaFwdXPEky4gVXogbGVqdTogamF1bsSBa2FpcyBhdWfFoXB1c8STLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2VjxKtidSBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLiBVeiBhdWfFoXU6IHZlY8SBa2FpcyBpciBhdWfFoXB1c8STLiBVeiBsZWp1OiBqYXVuxIFrYWlzIGF1Z8WhcHVzxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNlY8SrYnUgxaHEq3Mgb3BlcsSBY2lqYXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyByZXp1bHTEgXTEgS4gVXogYXVnxaF1OiB2ZWPEgWthaXMgdXogYXVnxaF1LiBVeiBsZWp1OiBqYXVuxIFrYWlzIGF1Z8WhcHVzxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIHLEgWTEq3TEgXMgQ0kga29sb25uYXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEgYXRrYXLEq2LEgSBubyBDSSBrbGFzZXMuIEthdHJhbSBpZXJha3N0YW0gasSBc2FzdMSBdiBubyBrbGFzZXMgbm9zYXVrdW1hIHVuIGF0dGllY8SrZ8SBcyBrbGFzZXMgcGllZWphbW8gbGF1a3UgbWFzxKt2YS4gRGluYW1pc2tvIGxhdWt1IGllcmFrc3RvcyBqxIFpZXbEk3JvIHNoxJNtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdOb3Nha2EgcMSTYyBub2tsdXPEk2p1bWEgcsSBZMSBbW8gYXR0aWVjxKtidSBkemnEvHVtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0byBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbmFtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0byBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbmFtLiBQaWVtxJNyczogIktleSIgasSBYsWrdCBkaW5hbWlza8SBIGxhdWthIG5vc2F1a3VtYW0sIMWhYWrEgSBnYWTEq2p1bcSBICJYIiwgIkNvbnRlbnQiIGrEgWLFq3QgZGluYW1pc2vEgSBsYXVrYSB2xJNydMSrYmFpIGF0a2FyxKtixIEgbm8gZGluYW1pc2vEgSBsYXVrYSB0aXBhLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB1biB2YWkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW7EkyBrbGFzZXMgIklUU01Db25maWdJdGVtIiBub2tsdXPEk2p1bWEgYXBha8Whb2JqZWt0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ05vc2FrYSBwaWVlamFtxIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTm9zYWthIHRla3N0YSByZWRha3RvcmEga29tcG9uZW50YSBhdWdzdHVtdSDFoWFqxIEgZWtyxIFuxIEuIElldmFkaWV0IHNrYWl0bGkgKHBpa3NlxLxpKSB2YWkgcHJvY2VudHXEgWxvIHbEk3J0xKtidSAocmVsYXTEq3ZpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9zYWthIHJpbmR1IHNrYWl0dSBDSSBkZWZpbsSrY2lqdSByZWRha3RvcmFtIGFkbWluaXN0cmF0b3JhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTm9zYWthIGluY2lkZW50dSBzdMSBdm9rxLx1IHNlY8SrYnUgbm8gYXVnc3RhIChwaWVtxJNyYW0sIGNyaWNpdGFsKSBsxKtkeiB6ZW1hbSAocGllbcSTcmFtLCBmdW5rY2lvbsSBbHMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluxJMgYXR0aWVjxKtnb3MgaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1cywga3Vyb3Mgc2Fpc3TEq3TEgXMgYmnEvGV0ZXMgdmFyIGlldGVrbcSTdCBLSSBzdGF0dXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluxJMgcGFyxIFkxKt0xIFzIENJIGtvbG9ubmFzIHNhacWhdSB0YWJ1bGFzIHNhcmXFvsSjxKt0YWrEgSBza2F0xIEgdmlzxIFtIENJIGtsYXPEk20uIEphIG5hdiBpZXJha3N0YSwgdGllayBwYXLEgWTEq3RhcyBub2tsdXPEk2p1bWEga29sb25uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbsSTIHBhcsSBZMSrdMSBcyBDSSBrb2xvbm5hcyBzYWnFoXUgdGFidWxhcyBzYXJlxb7Eo8SrdGFqxIEgc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgWLFq3QgYXIgcHJlZmlrc3Uga2xhc2VzIG5vc2F1a3VtYW0gdW4gZHVidWx0aWVtIGRpdnB1bmt0dSBrb211dGF0b3JpZW0gKHQuIGkuLCBDb21wdXRlcjo6KS4gSXIgZGHFvmkgQ0kgYXRyaWLFq3RpLCBrYXMgaXIga29wxKtnaSB2aXNpZW0gQ0kgKHBpZW3Ek3JzIGtsYXNlaSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gTGFpIHBhcsSBZMSrdHUgYXRzZXZpxaHEt3VzIENJIGF0cmlixat0dXMsIGthcyBkZWZpbsSTdGkgQ0kgZGVmaW7Eq2NpasSBLCBqxIFpem1hbnRvIMWhxIFkYSBzaMSTbWEgKHBpZW3Ek3JzIGtsYXNlaSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBKYSBuYXYgaWVyYWtzdGEgcGFyIENJIGtsYXNpLCB0aWVrIHBhcsSBZMSrdGFzIG5va2x1c8STanVtYSBrb2xvbm5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOb3Nha2EsIGt1cmkgZWxlbWVudGkgaXIgcGllZWphbWkgIkFjdGlvbiIgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyYXMgdHJlxaFhasSBIGzEq21lbsSrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ05vc2FrYSwga3VyaSBlbGVtZW50aSBpciBwaWVlamFtaSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JhcyBwaXJtYWrEgSBsxKttZW7Eqy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTm9zYWthLCBrdXJpIGVsZW1lbnRpIGlyIHBpZWVqYW1pIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcmFzIG90cmFqxIEgbMSrbWVuxKsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ05vc2FrYSwga8SBZGEgdmVpZGEgc2FpdGUgKG5vc2F1a3RhIG5vIGJpxLxldGVzIHBlcnNwZWt0xKt2YXMpIHZhciBpZXRla23Ek3Qgc2Fpc3TEq3TEgXMgQ0kgc3RhdHVzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdOb3Nha2EsIGvEgWRhIHZlaWRhIGJpxLxldGUgdmFyIGlldGVrbcSTdCBzYWlzdMSrdMSBcyBDSSBzdGF0dXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluxKtjaWphcyBhdGphdW5pbsSBxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBkesSTxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdJenZpZXRvxaFhbmFzIHZhbHN0cyBrcsSBc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1Ymxpa8SBdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEaW5hbWlza28gbGF1a3Ugbm90aWt1bXUgbW9kdWxpcywga2FzIGF0esSrbcSTIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkZWZpbsSrY2lqYXMga8SBIG5lc2luaHJvbml6xJN0YXMsIGphIG1haW7EgXMgZGluYW1pc2tpZSBsYXVraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNraWUgbGF1a2ksIGthcyByZWR6YW1pIGHEo2VudGEgc2Fza2FybmVzIHBhcGlsZHUgSVRTTSBsYXVrYSBla3LEgW7EgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pc2tpZSBsYXVraSwga2FzIHJlZHphbWkga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0YSBla3LEgW7EgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNraWUgbGF1a2ksIGthcyByZWR6YW1pIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0llc3DEk2pvIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIG1hc3ZlaWRhIGRhcmLEq2J1IGZ1bmtjaWp1LCBsYWkgYcSjZW50YSBmcm9udGVuZMSBIHZhcsSTdHUgc3RyxIFkxIF0IGFyIHZhaXLEgWsgbmVrxIEgdmllbnUga29uZmlndXLEgWNpamFzIHZpZW51bXUgdmllbmxhaWt1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0llc2zEk2R6IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtYXN2ZWlkYSBkYXJixKtidSBmdW5rY2lqdSB0aWthaSB1enNrYWl0xKt0YWrEgW0gZ3J1cMSBbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnSWVzbMSTZHovaXpzbMSTZHogZnVua2Npb25hbGl0xIF0aSwgbGFpIHDEgXJiYXVkxKt0dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSB1bmlrxIFsb3Mgbm9zYXVrdW11cy4gUGlybXMgxaHEq3Mgb3BjaWphcyBpZXNsxJNnxaFhbmFzIGrEgXDEgXJiYXVkYSwgdmFpIGrFq3N1IHNpc3TEk23EgSBuYXYgamF1IGVzb8WhdSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYXIgZHVibMSTam/FoWllbSBub3NhdWt1bWllbS4gVG8gdmFyIGl6ZGFyxKt0IGFyIGtvbnNvbGVzIGtvbWFuZHUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdOb3Rpa3VtdSBtb2R1bGlzLCBsYWkgaWVzdGF0xKt0dSBjb25maWdpdGVtLXN0YXR1cyB1eiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgaW5kZWtzYSBsYXVraSwga2FzIHRpZWsgaXptYW50b3RpIHBpbG50ZWtzdGEgbWVrbMSTxaFhbmFpLiBMYXVraSBhcsSrIHRpZWsgc2FnbGFixIF0aSwgYmV0IHRpZSBuYXYgb2JsaWfEgXRpIGtvcMSTamFpIGZ1bmtjaW9uYWxpdMSBdGVpLiBQaWVsaWt1bXUgaWVrxLxhdcWhYW51IHZhciBhdHNwxJNqb3QsIGllc3RhdG90IGllcmFrc3RhbSB2xJNydMSrYnUgMCB2YWkgZHrEk8Whb3QgdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgaW5kZWtzxIEgc2FnbGFixIF0aWUgbGF1a2ksIGthcyB0aWVrIGl6bWFudG90aSBuZSB0aWthaSBwaWxudGVrc3RhIG1la2zEk8WhYW5haSwgYmV0IGFyxKsgY2l0xIFtIGxpZXTEgW0uIFBpbG7Eq2dhaSBmdW5rY2lvbmFsaXTEgXRlaSB2aXNpIGxhdWtpIGlyIG9ibGlnxIF0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdLYXRyYWkgdMSrbWVrxLxhIHBha2FscG9qdW1hbSAoYXRzbMSTZ2EpIHZhciBkZWZpbsSTdCBrbGHFoXUgbWFzxKt2dSAodsSTcnTEq2JhKSwgdXoga3VydSBpbXBvcnRzIGlyIGllcm9iZcW+b3RzLiBWaXPEgW0gaXp2xJNsxJN0YWrEgW0ga2xhc8STbSB2YWkgdmlzxIFtIGVzb8WhYWrEgW0ga2xhc8STbSBpbnZva2VyYSBrb25maWd1csSBY2lqxIEgYsWrcyBqxIFpenbEk2xhcyBpZGVudGlmaWPEk2pvxaFpZSBhdHJpYsWrdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdcS8YSByZcSjaXN0csSBY2lqYSBDb25maWdJdGVtRmV0Y2ggaW52b2thdG9yYSBzbMSBbmltLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdcS8YSByZcSjaXN0csSBY2lqYSBDb25maWdJdGVtRmV0Y2ggaW52b2thdG9yYSBzbMSBbmltLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHXEvGEgcmXEo2lzdHLEgWNpamEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcmEgc2zEgW5pbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSWVrxLxhdWogaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1cyBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSWV0dmVyIGluY2lkZW50dSBzdMSBdm9rxLx1cyBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltxIFsYWlzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBza2FpdHMsIGthcyB0aWtzIHBhcsSBZMSrdHMgxaHEq3Mgb3BlcsSBY2lqYXMgcmV6dWx0xIF0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxpcywgbGFpIHDEgXJiYXVkxKt0dSBwYXIga2xhc2kgYXRiaWxkxKtnbyBncnVwdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGlzLCBsYWkgcMSBcmJhdWTEq3R1IGdydXB1LCBrYXMgaXIgYXRiaWxkxKtnYSBwYXIga29uZmlndXLEgWNpamFzIGVsZW1lbnR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsaXMsIGxhaSDEo2VuZXLEk3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHN0YXRpc3Rpa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9zYXVrdW1zIE1vZHVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bXVydSBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBza2FpdHMsIGthcyB0aWtzIHBhcsSBZMSrdHMga2F0csSBIG1la2zEk8WhYW5hcyByZXp1bHTEgXR1IGxhcMSBIGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIGthdHLEgSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0dSBsYXDEgSBrbGllbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpla3RpLCBrdXJ1cyBtZWtsxJN0LCBjaWsgaWVyYWtzdHUgdW4ga8SBZHVzIGF0cmlixat0dXMgcGFyxIFkxKt0LiBDb25maWdJdGVtIGF0cmlixat0aSBpciBza2FpZHJpIGrEgXV6Z2xhYsSBLCBpem1hbnRvam90IEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1DEgXJza2F0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhxaF1IGthdGVnb3JpanUga2F0ZWdvcmlqxIFtIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgbWF6xIEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0YSBrb2xvbm51IGZpbHRyaWVtLiBMxatkenUsIMWGZW1pZXQgdsSTcsSBOiBpZXN0YXRvdCAiQWt0xKt2cyIgdXogMCwgYcSjZW50aSBuZXZhcsSTcyByZWRpxKPEk3QgdGlrYWkgxaHEq3MgZ3J1cGFzIGllc3RhdMSranVtdXMgc2F2xIFzIHBlcnNvbsSrZ2FqxIFzIHByZWZlcmVuY8STcywgYmV0IGFkbWluaXN0cmF0b3JpIGpvcHJvasSBbSB2YXLEk3MgcmVkacSjxJN0IGNpdGEgbGlldG90xIFqYSBpZXN0YXTEq2p1bXVzIHNhdsSBIHbEgXJkxIEuIEl6bWFudG9qaWV0ICJQcmVmZXJlbmNlR3JvdXAiLCBsYWkga29udHJvbMSTdHUsIGt1csSBIGFwZ2FiYWzEgSDFoWllIGllc3RhdMSranVtaSBixat0dSByZWR6YW1pIGxpZXRvdMSBamEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1IGtyxIFzYWkgYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0l6dmlldG/FoWFuYXMgc3TEgXZva8S8dSBwYXJhbWV0cmkgYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdWaXNwxIFyxKtnbyBrYXRhbG9nYSBhdHJpYsWrdHUgYXTEvGF1anUgZ3J1cHUgcGllbcSTcnUgcGFyYW1ldHJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBub3NhdWt1bWEgbW9kdcS8YSBwYXJhbWV0cmllbSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc8STbSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYcWhdSBudW11cnUgbW9kdcS8YSBwYXJhbWV0cmllbSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ0xhcHUgKGt1csSBcyB0aWVrIHBhcsSBZMSrdGkga29uZmlndXLEgWNpamFzIGVsZW1lbnRpKSBwYXJhbWV0cmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB2ZXJzaWphcyB2aXJrbmVzIG1vZHXEvGEgcGFyYW1ldHJpZW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYXPEk20gYcSjZW50YSBpbnRlcmZlaXNhIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgdmVyc2lqYXMgdmlya25lcyDFoWFibG9uYSByxKtrdSBrb3B1bWEgbW9kdcS8YSBwYXJhbWV0cmllbSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc8STbSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB2ZXJzaWphcyB0cmlnZXJpbSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhxaF1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzxJNtIGHEo2VudGEgaW50ZXJmZWlzYSBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVmVpYyBrb25maWd1csSTdG8gZGFyYsSrYnUga2F0cmFtIG5vdGlrdW1hbSAoa8SBIEludm9rZXIpIGthdHJhaSBrb25maWd1csSTdGFqYWkgdMSrbWVrxLxhIHBha2FscG9qdW1hbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0F0xLxhdWp1IGdydXBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgcGlldmllbm/FoWFuYXMgZGFyYsSrYnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW51IGtsaWVudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga29rYSBza2F0xKtqdW1hIGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgdMSBbHVtbWFpxYZhcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcGlldmllbm/FoWFuYXMgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGHEo2VudGEgc2Fza2FybsSTIGl6bWFudG90dSBtYXN2ZWlkYSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBla3LEgW51Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHJlZGnEo8STxaFhbmFzIGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBhxKNlbnRhIHNhc2thcm7EkyBpem1hbnRvdHUgZWtyxIFudSBIaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGHEo2VudGEgc2Fza2FybsSTIGl6bWFudG90dSBla3LEgW51IGRydWvEgXQgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdOZXBpZWNpZcWhYW3EgXMgcHJpdmlsxJPEo2lqYXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGR6xJPFoWFuYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnTWVrbMSTdCBrb25maWd1csSBY2lqYXMgdmllbnVtdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBdXRvbcSBdGlza2kgaWVzdGF0aWV0IEtJIGluY2lkZW50YSBzdMSBdm9rbGksIGthZCBiacS8ZXRlIGlyIHNhaXN0xKt0YSBhciBLSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJZXN0YXRhIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpIGHEo2VudGEgaW50ZXJmZWlzYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga29wdW1hIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJZXN0YXRhIGluY2lkZW50YSBzdMSBdm9rbGkgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGtvcHVtYSBla3LEgW7EgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUaWVrIHBhcsSBZMSrdGEgc2FpdGUgaXp2xJNsbsSTLCBrYXMgxLxhdWogc2F2aWVub3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGFyIGNpdHUgb2JqZWt0dSBhxKNlbnRhIGludGVyZmVpc2Ega29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHBpZWvEvMWrdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHbEk3N0dXJlaSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgcGlla8S8xat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmVpIGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGR6xJNzdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNhaXRlcyB0aWt0dSBwYXLEgWTEq3RhcyBrxIEgS29rdSBza2F0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBkdWJsxJN0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RpZWsgcGFyxIFkxKt0YSBzYWl0ZSBpenbEk2xuxJMsIGxhaSBkdWJsxJN0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSByZWRpxKPEk3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RpZWsgcGFyxIFkxKt0YSBzYWl0ZSBpenbEk2xuxJMsIGxhaSBhdGdyaWV6dG9zIGF0cGFrYcS8IGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBpemRydWvEgXR1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBwYWxpZWxpbsSBdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgaW50ZXJmZWlzYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSB2xJNzdHVyaSAoc2FrxIFydG90dSBhcGdyaWV6dMSBIHNlY8SrYsSBKSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTm9rbHVzxJNqdW1hIGthdGVnb3JpamEsIGthcyB0aWVrIHLEgWTEq3RhLCBqYSBuYXYgaXp2xJNsxJN0YSBuZXZpZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGlkZW50aWZpa2F0b3JzLCBwaWVtxJNyYW0sIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQxJNjIG5va2x1c8STanVtYSBpciBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbcSBdGlza2kgaWVkYXJiaW5hIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3J1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lqYSBWaXJrbmVzIHZpcmtuZXMgaXp0ZWlrc21lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpamFzIHZpcmtuZXMgbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaWphIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1ZhaSBDb25maWdJdGVtQUNMIGl6cGlsZGkgdmFyIG5vdsSTcnN0LCBwxIFyYmF1ZG90IGtlxaFhdG1pxYbEgSBlc2/FoW8gbGF1a3UgYXRrYXLEq2Jhcy4gVGFzIHZhciB1emxhYm90IHZlaWRsYXB1IGllbMSBZGVzIGxhaWt1LCBiZXQgdGFzIGlyIGrEgWF0c2zEk2R6LCBqYSBBQ0xNb2R1bGVzIGlyIGrEgWl6bWFudG8gSVRTTUNvbmZpZ0l0ZW0tIHVuIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdLxIFkYSB2aXNwxIFyxKtnYSBpbmZvcm3EgWNpamEgaXIgbm9yxIFkxKt0YSBnYWx2ZW7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9ixIFsxIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdMSrdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3Bpcm1zIHJlcHJvZHVrdMSrdsSBIHBlcmlvZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3TEq3ZzJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGNvbGxhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGNvbGxhICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgY29sbGFzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGNvbGxhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IGNvbGx1IHN0YXTEq3ZzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBjb2xsYXMgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgY29sbGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSBjb2xsdSBzdGF0xKt2cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgY29sbGFzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgY29sbHUgcGxhdWt0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgY29sbGFzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBjb2xsYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGNvbGxhcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGNvbGxhcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBjb2xsYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGNvbGxhcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgY29sbGFzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBjb2xsYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGNvbGxhcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGNvbGxhcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGNvbGxhcyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGNvbGxhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgY29sbGFzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGNvbGxhcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBjb2xsYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBjb2xsYXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBjb2xsYXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBjb2xsYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGNvbGxhcyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgY29sbGFzICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGNvbGxhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBjb2xsYXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgY29sbGFzICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdHcsSBbWF0dmVkxKtiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmXFoXUgcGllxaHEt2lyxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2FpcyB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0llcsSrY2VzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FrdW11bGF0b3JhIGlldGlscMSrYmEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdBa3VtdWxhdG9yYSB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnxJJrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQXV0b2J1c3Mgc2Fza2FybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdQcm9jZXNvcmEga2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0phdWRhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXRyYXMgZ3JhZmlza8SBcyBrYXJ0ZXMgamF1ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYXJ0ZXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FyxaF1IGxhc8SrdMSBanMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FydGVzIHZlaWRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnR1IHNlcnRpZmlrxIF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRhIHByb2dyYW1tYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0tsaWVudHUga2F0ZWdvcmlqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvZGEgcGFyYWtzdMSrxaFhbmFzIHNlcnRpZmlrxIF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyZW7EjXUgdMSBbHJ1bmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdMSBY2lqdSBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdTYXppbmlldGllcyBhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnU2F6aW5pZXRpZXMgYXIgaXpwbGF0xKt0xIFqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRlaW5lcnUgcMSBcnZhbGTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnTMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnTMSrZ3VtYSB2ZWlkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0zEq2d1bWEgcGVyaW9kcyBubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdMxKtndW1hIHRlcm1pxYbFoSBsxKtkeic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCZXp2YWR1IHTEgWxydW5pcyAoREVDVCB0xIFscnVuaXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0l6bWFrc3UgdmllbsSrYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdMaWNlbsSNdSBza2FpdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0l6dmVpZGVzIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnUGllbMSBZ290YWlzIHBsYXVrdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgcmV6ZXJ2xJN0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIHNlcnZlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdSxJPEt2luYSBpenJha3N0xKvFoWFuYXMgZGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdQYXPFq3TEq2p1bWEgZGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdHYXJhbnRpamFzIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdJemRvxaFhbmFzIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGFyYnZpcnNtYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50dSBwYXJha3N0xKvFoWFuYXMgc2VydGlmaWvEgXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBwbGF1a3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBhc3RhIHNlcnRpZmlrxIF0aSAoUy9NSU1FIHNlcnRpZmlrxIF0aSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnRGFyYmEgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0dhbGEgSVAgYWRyZXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnQXRiYWxzdGEgYmVpZ2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGVyxKtndW1hIHRlcm1pxYbFoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnxIByxJNqYWlzIGNpZXRhaXMgZGlza3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdVZ3Vuc23Fq3Jpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU3BhcmFyYXJhdHUgZW5lcsSjaWphcyB1emdsYWLEgcWhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybWFzIGZha3RvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW7FocSremVzIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdCZXptYWtzYXMgcHJvZ3JhbW1hdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnVmlzcMSBcsSrZ2EgaW5mb3JtxIFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlza8SBcyBrYXJ0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpc2vEgSBrYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0FwYXJhdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdBcGFyYXTFq3JhcyBtb2RlbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0FwYXJhdMWrcmFzIHN2YXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXN0acWGYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBwcm90b2tvbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdMSBdGVzIHVuIHBpZWvEvHV2ZXMgcMSBcnZhbGTEq2JhIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnTEgXJhIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RtZW50YSBpem1ha3Nhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ1LEk8S3aW5hIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIG1vbml0b3JzICjFocS3aWRybyBrcmlzdMSBbHUgZGlzcGxlanMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvcnMgKGdhaXNtYXMgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1N0YWNpb27EgXJhaXMgdMSBbHJ1bmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnRhdMSrdmFpcyBkYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdQbGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnMS4gc2zEgW5pczogZml6aXNrYWlzIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnMi4gc2zEgW5pczogZGF0dSBzYWl0ZXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMy4gc2zEgW5pczogdMSra2xhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMy4gc2zEgW5pczogdMSra2xhIHNsxIFuaXMgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICc0LiBzbMSBbmlzOiB0cmFuc3BvcnRhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJzUuIHNsxIFuaXM6IHNlc2lqYXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICc2LiBzbMSBbmlzOiBQcmV6ZW50xIFjaWphcyBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gc2zEgW5pczogbGlldG9qdW1wcm9ncmFtbXUgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdOb21hcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jZXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5jZXMgYXRzbMSTZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5jZXMgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jZXMgcGVyaW9kcyBubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VuY2VzIGRlcsSrZ3VtYSB0ZXJtacWGxaEgbMSrZHonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGlqYSBkemVsenMgZm9zZsSBdGEgKExpRmVQTzQpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpamEgam9udSAoTGktaW9uKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0FpemRldnVtYSBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBdHJvZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ8SiZW9ncsSBZmlza2FpcyBnYXJ1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Jhxb5vdMSBanMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3NpbcSBbMSBIHNsb2R6ZXMgamF1ZGEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0F0bWnFhmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdBdG1pxYZhcyB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIHN0YXTEq3ZzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbMSBIHTEgWxydcWGYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxhaXMvaWVzdHLEgWTEgXRhaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZcS8YSBhcHJha3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yYSBpesWhxLdpcnRzcMSTamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcmEgaXptxJNycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1BlbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1TEq2tscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm3EgWNpamEgcGFyIHTEq2tsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnVMSra2xhIGluZm9ybcSBY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVMSra2xhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOacS3ZcS8YS1rYWRtaWphIChOaUNkKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pxLdlxLxhLW1ldMSBbGEgaGlkcsSrZGEgKE5pTUgpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0zEq2d1bXMgcGFyIGluZm9ybcSBY2lqYXMgbmVpenBhdcWhYW51IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnUGllesSrbWpkYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQcm9jZXNvcnUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ09wZXJhdMSrdsSBcyBhdG1pxYZhcyBtb2R1xLx1IHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFmaXNrbyBrYXLFoXUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIG1vbml0b3JzIChvcmdhbmlza8SBIGdhaXNtYXMgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0RhcmLEq2JhcyBpem1ha3Nhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdQYXPFq3TEq2p1bWEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQ2l0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnSXplamFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTiBLT0RTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcsSrYmFzIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUxIFscnXFhmEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUxIFscnXFhmEgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Zpemlza2llIGtvZG9saSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0VuZXLEo2lqYXMgcGllZ8SBZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdJZWfEgWTEgXRzIHZpZXRuxJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1N0YXTEq3ZhIGR6acS8dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnU3RhdMWGdSB2aWVuxKtiYXMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdOdW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ga2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIHNlcnRpZmlrxIF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1DEgXJkb8WhYW5hcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsxKt0YSB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnSGVybcSTdGlza2kgbm9zbMSTZ3RzIHN2aW5hLXNrxIFiZXMgKFNMQSkgYWt1bXVsYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTxJNyaWphcyBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyYSBwcm9ncmFtbWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1Bha2FscG9qdW11IGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdQYWthbHBvanVtYSBiaXJrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdLb250YWt0bGlnemRhcyB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnUHJvZ3JhbW1hdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdTa2HEvHJ1xYZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJ0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU8SBa3VtYSBJUCBhZHJlc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1V6Z2xhYsSBxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdVemdsYWLEgcWhYW5hcyBub2RhbMSranVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ01laXRhc3V6xYbEk211bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ0tvcHNhdmlsa3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1BsxIFucyBrbGllbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdEaWVnaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaXNrxIFzIGthcnRlcyBSQU0ga29wxJNqYWlzIGFwam9tcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnS29wxJNqYWlzIG9wZXJhdMSrdsSBcyBhdG1pxYZhcyBhcGpvbXMgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnU2vEgXJpZW5la3LEgW5hIG1vbml0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Iga29uY2VudHJhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIGF1c3RpxYZhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/mk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1rX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cc0LDQv9C40YDQsNGa0LUg0LfQsCDQtNC+0LHQuNCy0LDRmtC1INC90LAg0LHQsNGA0LDQvdC40YLQtSDQv9C+0LTQsNGC0L7RhtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC/0L7RmNC00L7QstC90Lgg0L7QtNCz0L7QstC+0YAg0L3QsCDQv9C+0LTQsNGC0L7RhtC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9INCc0LXQvdCw0Z/QvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9Cf0YDQvtC80LXQvdC4INC00LXRhNC40L3QuNGG0LjRmNCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzQtdC90Lgg0LTQtdGE0LjQvdC40YbQuNGY0LAg0L3QsCDQutC70LDRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvdC+0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRgtC10YAg0LfQsCDQmtC70LDRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9Ce0LTQsdC10YDQuCDQmtC70LDRgdCwINC+0LQg0LvQuNGB0YLQsNGC0LAg0LfQsCDQtNCwINC60YDQtdC40YDQsNGC0LUg0L3QvtCyINCa0L7QvdGE0LjQsyDQp9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSDQmtC+0L3RhNC40LPQp9C70LXQvSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsCDRgdC+0YHRgtC+0ZjQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0L7RgtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn0J/QvtCy0YDQt9C4INGB0L4g0LTRgNGD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstCw0LvQuNC00LXQvSDQmtC+0YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQsdGA0L7RmCDQvdCwINCn0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfQkdGA0L7RmNC+0YIg0L3QsCDQtNGA0YPQsyDQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INGB0L4g0LvQuNC90Log0YjQuNGA0LjQvdCwLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CU0LDQu9C4INGB0YLQtSDRgdC40LPRg9GA0L3QuCDQtNC10LrQsCDRgdCw0LrQsNGC0LUg0LTQsCDRmNCwINC40LfQsdGA0LjRiNC10YLQtSDQvtCy0LDQsCDQkNC60YLQuNCy0L3QvtGB0YI/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CY0LzQtdGC0L4g0LUg0LLQtdGc0LUg0LLQviDRg9C/0L7RgtGA0LXQsdCwINC+0LQg0YHRgtGA0LDQvdCwINC90LAg0JrQvtC90YTQuNCz0KfQu9C10L3QvtCy0LjRgtC1INGB0L4g0YHQu9C10LTQvdC+0LIv0YLQtSDQkdGA0L7RmCjQtdCy0LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ9CR0YDQvtGYINC90LAg0JLQtdGA0LfQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80LXRgtC+INC1INCy0LXRnNC1INCy0L4g0YPQv9C+0YLRgNC10LHQsCDQvtC0INGB0YLRgNCw0L3QsCDQvdCwINCa0L7QvdGE0LjQs9Cn0LvQtdC90L7QstC40YLQtSDRgdC+INGB0LvQtdC00L3QvtCyL9GC0LUg0JHRgNC+0Zgo0LXQstC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Ca0YDQtdC40YDQsNGY0JLRgNC10LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfQl9GD0LzQuNGA0LDRmCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfQmtC+0L3RhNC40LMg0KfQu9C10L3QvtCy0Lgg0L/QviDRgdGC0YDQsNC90LjRhtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQn9GA0LXQstCw0YDRg9Cy0LDRmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQmNGB0YLQviDRgtCw0LrQsCDQsdCw0YDQsNGYINCy0L4g0L/RgNC10YLRhdC+0LTQvdC40YLQtSDQstC10YDQt9C4Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0g0JjQvdGE0L7RgNC80LDRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQodC10LPQsNGI0L3QsCDQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KHQtdCz0LDRiNC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICfQotC40L8g0L3QsCDQvtCx0ZjQtdC60YInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfQpNC40LvRgtC10YAg0L/QviDRgtC40L8nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0KfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn0KDQtdGE0LXRgNC10L3RhtCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn0J7Qv9C10YDQsNGG0LjRgdC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9Cf0YDQtdC00YPQv9GA0LXQtNGD0LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQoNCw0YHQv9C+0YDQtdC00YPQstCw0YfQutCw0YLQsCDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0L7QstC+0Zgg0LrQvtC90YTQuNCzINGH0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvdC40LTQtdC90YIg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC+0LLQvtGYINC60L7QvdGE0LjQsyDRh9C70LXQvSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXQvNCw0YLQtSDQlNC+0LfQstC+0LvQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCg0LDRgdC/0L7RgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0KHQtdCz0LDRiNC10L0g0KLQuNC/INC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0JjQt9C80LXRk9GDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfQnNCw0LrRgdC40LzQsNC70LXQvSDQsdGA0L7RmCDQvdCwINC10LTQtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9CY0YHRgtC10YfQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfQntC00YDQttGD0LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfQn9C40LvQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfQn9C70LDQvdC40YDQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn0J/QvtC/0YDQsNCy0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ9Cf0YDQtdC60LjQvdCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfQn9GA0LXQs9C70LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn0KLQtdGB0YIvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/RgNC+0LLQtdGA0Lgg0LfQsCDRg9C90LjQutCw0YLQvdC+INC40LzQtSDRgdCw0LzQviDQstC+INGA0LDQvNC60LjRgtC1INC90LAg0LjRgdGC0LAg0JrQvtC90YTQuNCz0KfQu9C10L0g0LrQu9Cw0YHQsCAoXCdjbGFzc1wnKSDQuNC70Lgg0LPQu9C+0LHQsNC70L3QviAoXCdnbG9iYWxcJyksINGI0YLQviDQt9C90LDRh9C4INC00LXQutCwINGB0LXQutC+0Zgg0L/QvtGB0YLQvtGY0LDRh9C60Lgg0JrQvtC90YTQuNCz0KfQu9C10L0g0LUg0LfQtdC80LXQvSDQstC+INC/0YDQvtGE0LjQu9C+0YIg0LrQvtCz0LAg0YHQtSDQsdCw0YDQsNCw0YIg0LTRg9C/0LvQuNC60LDRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LMg0KfQu9C10L3QvtCy0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7QvdGE0LjQsyDRh9C70LXQvSDQvdCw0YHRgtCw0L0g0LzQvtC00YPQu9C4INC60L7QuCDQvtCy0L7Qt9C80L7QttGD0LLQsNCw0YIg0LfQsNC/0LjRiNGD0LLQsNCw0YIg0LvQvtCz0L7QstC4INCy0L4g0LjRgdGC0L7RgNC40ZjQsCDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvSDQm9C40LzQuNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQmtGA0LXQuNGA0LDRmCDQuCDQvNC10L3QsNGf0LjRgNCw0Zgg0LTQtdGE0LjQvdC40YbQuNC4INC30LAg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvdC+0LLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0JHQsNGA0LDQvdC4INC/0LXRgNC80LjRgdC40Lgg0LfQsCAg0LTQsCDQt9C10LzQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L3QvtCy0Lgg0LrQvtGA0LjRgdGC0LXRmNGc0Lgg0JPQtdC90LXRgNC40YfQutC4INCY0L3RgtC10YDRhNC10ZjRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0JHQsNGA0LDQvdC4INC/0LXRgNC80LjRgdC40Lgg0LfQsCAg0LTQsCDQt9C10LzQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L3QvtCy0Lgg0LrQvtGA0LjRgdGC0LXRmNGc0Lgg0JPQtdC90LXRgNC40YfQutC4INCY0L3RgtC10YDRhNC10ZjRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0JHQsNGA0LDQvdC4INC/0LXRgNC80LjRgdC40Lgg0LfQsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L3QvtCy0Lgg0LrQvtGA0LjRgdGC0LXRmNGc0Lgg0JPQtdC90LXRgNC40YfQutC4INCY0L3RgtC10YDRhNC10ZjRgdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQt9CwICDQtNCwINC30LXQvNC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvdC+0LLQuCDQutC+0YDQuNGB0YLQtdGY0ZzQuCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0YDQtdCz0LvQtdC0INC80L7QtNGD0Lsg0LfQsCDQv9GA0LjQutCw0Lcg0L3QsCDQvNCw0Lsg0L/RgNC10LPQu9C10LQg0L3QsCDQutC+0YTQuNCz0YPRgNCw0YbQuNGB0LrQsCDQu9GH0LXQvSDQu9C40YHRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YDQtdCz0YPQu9Cw0YDQvdC4INC40LfRgNCw0LfQuCDQuNC90LTQuNCy0LjQtNGD0LDQu9C90L4g0LfQsCDRgdC10LrQvtGY0LAg0JrQvtC90YTQuNCz0KfQu9C10L0g0LrQu9Cw0YHQsCDQt9CwINC00LAg0L/RgNC+0LLQtdGA0Lgg0JrQvtC90YTQuNCz0KfQu9C10L0g0LjQvNC1INC4INC00LAg0LPQuCDQv9GA0LjQutCw0LbQtSDQs9GA0LXRiNC90LjRgtC1INC60L7RgNC10YHQv9C+0L3QtNC40YDQsNGH0LrQuNGC0LUg0L/QvtGA0LDQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDRgdGC0LDQvdC00LDRgNC00LXQvSDRgdGD0LHQvtCx0ZjQtdC60YIg0LfQsCDQutC70LDRgdCw0YLQsCBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LHRgNC+0Zgg0L3QsCDRgNC10LTQuNGG0Lgg0LfQsCBDSSDQtNC10YTQuNC90LjRhtC40YHQutC40L7RgiDRg9GA0LXQtNC90LjQuiDQstC+INCw0LTQvNC40L0g0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQu9C40LzQuNGCINC30LAg0LHQsNGA0LDRmtCwINC30LAgQWdlbnRJVFNNQ29uZmlnSXRlbSDQtdC60YDQsNC90L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC70LjQvNC40YIg0LfQsCDQsdCw0YDQsNGa0LAg0LfQsCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoINC10LrRgNCw0L3QvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW0g0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQu9C40LzQuNGCINC30LAg0LHQsNGA0LDRmtCwINC30LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDQtdC60YDQsNC90L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/RgNC40LrQsNC3INC90LAg0LrQvtC70L7QvdC4INC+0LQgQ0lzINCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC90L7RgiDQv9GA0LXQs9C70LXQtNC+0YIg0LLQviDQt9Cw0LLQuNGB0L3QvtGB0YIg0L7QtCBDSSDQutC70LDRgdCw0YLQsC4g0KHQtdC60L7RmCDQstC70LXQtyDQvNC+0YDQsCDQtNCwINC40LzQsCDQv9GA0LXRhNC40LrRgSDRgdC+INC60LvQsNGB0L3QviDQuNC80LUg0Lgg0LTQstC+0ZjQvdC4INC60L7Qu9C+0L3QuCAoaS5lLiBDb21wdXRlcjo6KS4g0JjQvNCwINC90LXQutC+0LvQutGDIENJLdCQ0YLRgNC40LHRg9GC0Lgg0LrQvtC4INGB0LUg0YfQtdGB0YLQuCDRgdC+INGB0LjRgtC1IENJcyAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHRgtCwIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQl9CwINC/0YDQuNC60LDQtyDQvdCwINC40LTQuNCy0LjQtNGD0LDQu9C90LggQ0ktQXR0cmlidXRlcyDQutCw0LrQviDRiNGC0L4g0YHQtSDQtNC10YTQuNC90LjRgNCw0L3QuCDQstC+ICBDSS3QlNC10YTQuNC90LjRhtC40ZjQsNGC0LAsINGB0LvQtdC00L3QsNCy0LAg0YjQtdC80LAg0LzQvtGA0LAg0LTQsCDQsdC40LTQtSDQuNGB0LrQvtGA0LjRgdGC0LXQvdCwICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdCw0YLQsCAgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0JDQutC+INC90LXQvNCwINCy0LvQtdC3INC30LAgQ0kg0LrQu9Cw0YHQsCwg0YLQvtCz0LDRiCDRgdGC0LDQvdC00LDRgNC00L3QuNGC0LUg0LrQvtC70L7QvdC4INGB0LUg0L/RgNC40LrQsNC20LDQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCg0LDRgdC/0L7RgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCg0LDRgdC/0L7RgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0JTRg9C/0LvQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9Ce0LLQvtC30LzQvtC20YPQstCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0gYnVsayBhY3Rpb24g0LrQsNGA0LDQutGC0LXRgNC40YHRgtC40LrQuCDQt9CwINCw0LPQtdC90YIg0L/RgNC10LTQtdC90LTQtdC7INC30LAg0LTQsCDRgNCw0LHQvtGC0Lgg0YHQviDQv9C+0LLQtdGa0LUg0L7QtCDQtdGE0LXQvSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LjRgdGC0L4g0LLRgNC80LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQntCy0L7Qt9C80L7QttGD0LLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9IGJ1bGsgYWN0aW9uINC60LDRgNCw0LrRgtC10YDQuNGB0YLQuNC60Lgg0YHQsNC80L4g0LfQsCDQs9GA0YPQv9C90LjRgtC1INC70LjRgdGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQmtC+0L3RhNC40LPQp9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQs9C+0LLQvtGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQu9Cw0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQvtCz0L7QstGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YDQsNGa0LUgSVRTTSDQutC+0L3RhNC40LMg0YfQu9C10L0g0YHRgtCw0YLQuNGB0YLQuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LHQvtGY0LAg0L3QsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC/0YDQuNC80LXRgCDQtNC+0LfQstC+0LvQuNGC0LUg0LfQsCDQs9GA0YPQv9C4INC+0LQg0LPQtdC90LXRgNCw0LvQvdC4INC60LDRgtCw0LvQvtCzINCw0YLRgNC40LHRg9GC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLRgNCw0L3QuNCy0Lgo0LLQviDQutC+0Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuNGC0LUg0YfQu9C10L3QvtCy0Lgg0YHQtSDQv9GA0LjQutCw0LbQsNC90LgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0L/RgNC10LHQsNGA0YPQstCw0ZrQtSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0L/RgNC10LHQsNGA0YPQstCw0ZrQtSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0L/RgNC10LHQsNGA0YPQstCw0ZrQtSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LfQs9C+0LvQtdC80YPQstCw0YfQutC4INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAg0LTQvtC00LDQstCw0ZrQtSDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDRg9GA0LXQtNC4IElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAg0LjRgdGC0L7RgNC40ZjQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINC/0YDQuNC90YIg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ch0LXRgtC40YDQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9IGJ1bGsg0LXQutGA0LDQvdC+0YIg0L7QtCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ch0LXRgtC40YDQsCDQuNC90YbQuNC00LXQvdGCINGB0L7RgdGC0L7RmNCx0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9IGJ1bGsg0LXQutGA0LDQvdC+0YIg0L7QtCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC60L7QtSDQvtCy0L7Qt9C80L7QttGD0LLQsCDQv9C+0LLRgNC30YPQstCw0ZrQtSDRgdC+INC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0YHQviDQtNGA0YPQsyDQvtCx0ZjQtdC60YIg0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L0gINC30LPQvtC70LXQvNC10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC60L7QtSDQv9GA0LjRgdGC0LDQv9GD0LLQsCDQstC+INC40YHRgtC+0YDQuNGY0LDRgtCwINC90LAgINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQutC+0LUg0L7QstC+0LfQvNC+0LbRg9Cy0LAg0L/RgNC40YHRgtCw0L8g0LTQviDQuNGB0YLQvtGA0LjRmNCw0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L0gINC30LPQvtC70LXQvNC10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC30LAg0YPRgNC10LTRg9Cy0LDRmtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC30LPQvtC70LXQvNC10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0YHQviDQtNGD0L/Qu9C40LrQsNGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDRgdC+INC00YPQv9C70LjQutCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC30LPQvtC70LXQvNC10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LfQsCDRg9GA0LXQtNGD0LLQsNGa0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQstC+INC80LXQvdC40YLQviDQu9C40L3QutC+0YIg0LfQsCDQstGA0LDRnNCw0ZrQtSDQstC+INC00LXRgtCw0LvQtdC9INC/0L7Qs9C70LXQtCDQstC+INC40L3RgtC10YDRhNC10ZjRgdC+0YIg0L3QsCDQsNCz0LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQt9CwINC/0LXRh9Cw0YLQtdGa0LUg0LLQviDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC30LPQvtC70LXQvNC10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INGB0L4g0LfQs9C+0LvQtdC80YPQstCw0ZrQtSDQvdCwINC60L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4gINC60L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwICDQutC+0L3RhNC40LMg0YfQu9C10L0g0LjRgdGC0L7RgNC40ZjQsCAo0LLQviDQvtCx0YDQsNGC0LXQvSDRgNC10LTQvtGB0LvQtdC0KSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00L3QtdGC0LjRhNC40LrRg9Cy0LDRh9C+0YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9LCDQvy7RgC4gIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQodGC0LDQvdC00LDRgNC00L7RgiDQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9Ca0LvQsNGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9Cc0LXQvdCw0Z/QvNC10L3RgiDQvdCwINCS0YDQtdC80LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9CT0YDQsNC00LXRmNGc0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10ZjRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9GA0L7RhtC10YHQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9Cg0LDQsdC+0YLQvdCwINC/0L7QstGA0YjQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQtdC9INGB0L7RhNGC0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQotCw0YHRgtCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cb0LDQv9GC0L7Qvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfQnNC+0LTQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQk9C70YPRiNC10YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CU0YDRg9Cz0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CY0LfQu9C10LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfQodC+0LHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LAg0J3QuNCy0L4g0L3QsCDQo9GB0LvRg9Cz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0LTQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ms_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1BlbWV0YWFuIHVudHVrIHBlcm1pbnRhYW4gbWFzdWsgZGF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdQZW1ldGFhbiB1bnR1ayB0aW5kYWsgYmFsYXMgZGF0YSB5YW5nIGtlbHVhci4nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnTWVuYXBpcyBLZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBLZWxhcyBkYXJpIHNlbmFyYWkgdW50dWsgbWV3dWp1ZGthbiBQZXJrYXJhIENvbmZpZyBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tlbGFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSXRlbUtvbmZpZyBJVFNNIFRpbmRha2FuIFB1a2FsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdLZWFkYWFuIHBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdLZWFkYWFuIGluc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUGF1dCBrZSBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgVGlkYWsgU2FoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgbGFpbiB1bnR1ayBkaXBhdXRrYW4gZGVuZ2FuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0FuZGEgYmVuYXIgaW5naW4gbWVtYnVhbmcgaXRlbSBjb25maWcgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGNvbmZpZyBpdGVtIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnQmlsYW5nYW4gdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hbWEgY29uZmlnIGl0ZW0gaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdLZWFkYWFuIFBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdLYW5kdW5nYW4gc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ2lwdGEgbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQYW5kYW5nYW4gZGliZXNhcmthbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGNvbmZpZyBwZXIgaGFsYW1hbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnSmFsYW5rYW4gQ2FyaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0p1Z2EgbWVuY2FyaSBkYWxhbSB2ZXJzaSBzZWJlbHVtbnlhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQZXJrYXJhIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ01ha2x1bWF0IEJhcmFuZ2FuIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1BlcnR1a2FyYW4ga2VhZGFhbiBzZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0luc2lkZW4ga2VhZGFhbiBzZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVGVya2luaSBiZXJ1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpdWJhaCBvbGVoJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnSmVuaXMgb2JqZWsnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdUYXBpcyBtZW5naWt1dCBqZW5pcyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVuZXJ1c2thbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdUaWFkYSBJdGVtSUQgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1RpZGFrIG1hbXB1IHVudHVrIG1lbWJ1YW5nIGJhaGFzYSAlcyBpdHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdUaWFkYSAlcyBkaWJlcmlrYW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSdWp1a2FuKGVuKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ1RpYWRhICVzIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpYWRhIEtlcHV0dXNhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdIYXNpbCBjYXJpYW4gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBbWFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdLZWFkYWFuIHBlbmVtcGF0YW4gaXRlbSBpbmkgY29uZmlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnS2VhZGFhbiBpbnNpZGVuIGJhZ2kgY29uZmlnIGl0ZW0gaW5pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnVGlhZGEga2ViZW5hcmFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdKZW5pcyBQZXJ0dWthcmFuIEtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTnlhdGFrYW4gSmVuaXMgSW5zaWRlbiBTZW1hc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnQmlsYW5nYW4gbWFrc2ltdW0gc2F0dSBlbGVtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVGFtYXQgVGVtcG9oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAncGVueWVsZW5nZ2FyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0RpcmFuY2FuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdNZW1iYWlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnYmVyc2FyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdtZW5na2FqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVWppYW4vUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU2VtYWsgbmFtYSB5YW5nIHVuaWsgc2FoYWphIGRpIGRhbGFtIGtlbGFzIENvbmZpZ0l0ZW0geWFuZyBzYW1hIChcJ2tlbGFzXCcpIGF0YXUgZGkgcGVyaW5na2F0IGdsb2JhbCAoXCdnbG9iYWxcJyksIHlhbmcgYmVybWFrc3VkIHNldGlhcCBDb25maWdJdGVtIHNlZGlhIGFkYSBkaWFtYmlsIGtpcmEga2V0aWthIG1lbmNhcmkgcGVuZHVhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGFtYmFoIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXQgaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgYWNhcmEgYmFyYW5nYW4ga29uZmlndXJhc2kgeWFuZyBtZW1iZW5hcmthbiB1bnR1ayBsb2cga2Ugc2VqYXJhaCBkYWxhbSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdTZWphcmFoIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDZXRhayBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdadW0gaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0hhZCBCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWd1cmFzaSBQZW5ndXJ1c2FuIFBhbmdrYWxhbiBEYXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhc2kgaXRlbSBtb2R1bCBwdWthbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnIFJvdXRlciBjYXJpYW4gYmVsYWthbmcgYmFyYW5nYW4ga29uZmlndXJhc2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ2lwdGEgZGFuIHVydXMgdGFrcmlmYW4gdW50dWsgQmFyYW5nYW4gS29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRhIGFzYWwgZGlndW5ha2FuIHVudHVrIHNpZmF0IGJhZ2kgc2tyaW4gY2FyaWFuIHRpa2V0LiBDb250b2g6IFRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD10YWh1bjtUaWNrZXRDcmVhdGVUaW1lUG9pbnRTdGFydD1UZXJha2hpcjtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGEgYXNhbCBkaWd1bmFrYW4gdW50dWsgc2lmYXQgYmFnaSBza3JpbiBjYXJpYW4gdGlrZXQuIENvbnRvaDogVGlja2V0Q3JhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdUYWtyaWZrYW4gVGluZGFrYW4gZGltYW5hIGJ1dGFuZyB0ZXRhcGFuIGl0dSBhZGEgZGFsYW0gd2lkZ2V0IG9iamVrIGJlcnNhbWJ1bmcgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gU2lsYSBwYXN0aWthbiB5YW5nIFRpbmRha2FuIGluaSBwZXJsdSBkaWRhZnRhcmthbiB5YW5nIGJlcmlrdXQgZmFpbC1mYWlsIEpTIGRhbiBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBrZWl6aW5hbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVtYnVhbmcgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFyYW11a2EgVW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmRhcGF0a2FuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmNhcmkgYmFyYW5nYW4ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmEgTXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtlYmVuYXJhbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZGFwYXRrYW4gYmFyYW5nYW4ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmEgTXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbW9kdWwgZ2FtYmFyYW4gdW50dWsgbWVudW5qdWtrYW4gcGFuZGFuZ2FuIHlhbmcga2VjaWwgc2VuYXJhaSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB1bmdrYXBhbiBiaWFzYSBzZWNhcmEgaW5kaXZpZHUgdW50dWsgc2V0aWFwIGtlbGFzIEl0ZW1Lb25maWcgdW50dWsgbWVtZXJpa3NhIG5hbWEgSXRlbUtvbmZpZyBkYW4gdW50dWsgbWVudW5qdWtrYW4gbWVzZWogcmFsYXQgc2VwYWRhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzaWZhdCB0aWtldCBhc2FsIHVudHVrIGF0dXJhbiB0aWtldCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gdGlrZXQgZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgdGlrZXQgZGVmYXVsdCB1bnR1ayBwZW5na2VsYXNhbiB0aWtldCBkYWxhbSBoYXNpbCBjYXJpYW4gdGlrZXQgb3BlcmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gdHVydXRhbiB0aWtldCBhc2FsIGRhbGFtIGhhc2lsIGNhcmlhbiB0aWtldCBkYXJpIHBhcGFyYW4gZWplbi4gQXRhczogeWFuZyBsYW1hIGRpIGF0YXMuIEJhd2FoOiB5YW5nIHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0dXJ1dGFuIHRpa2V0IGFzYWwgZGFsYW0gaGFzaWwgY2FyaWFuIGRhcmkgcGFwYXJhbiBwZWxhbmdnYW4uIEF0YXM6IHlhbmcgbGFtYSBkaSBhdGFzLiBCYXdhaDogeWFuZyB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBhcmFoYW4gdGlrZXQgZGVmYXVsdCB1bnR1ayBwZW5na2VsYXNhbiB0aWtldCBkYWxhbSBoYXNpbCBjYXJpYW4gdGlrZXQgb3BlcmFzaSBpbmkuIEF0YXM6IFRlcnR1YSBkaSBhdGFzLiBCYXdhaDogVGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgcGVuY2FyaWFuIHRpa2V0IHlhbmcgZGl0dW5qdWsgeWFuZyBhc2FsIHVudHVrIHNrcmluIGNhcmlhbiB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBkZWZhdWx0IHlhbmcgZGl0dW5qdWtrYW4gdGlrZXQgc2lmYXQgcGVuY2FyaWFuIHNrcmluIGNhcmlhbiB0aWtldC4gQ29udG9oOiAiVXRhbWEiIG1lc3RpIG1lbXB1bnlhaSBuYW1hIG1lZGFuIGRpbmFtaWsgZGFsYW0ga2VzIGluaSBcJ1hcJywgIkthbmR1bmdhbiIgbWVzdGkgbWVtcHVueWFpIG5pbGFpIG1lZGFuIGRpbmFtaWsgYmVyZ2FudHVuZyBrZXBhZGEgamVuaXMgTWVkYW4gRGluYW1paywgVGVrczogXCd0ZWtzXCcsIGphdHVoIHR1cnVuOiBcJzFcJywgVGFyaWtoL01hc2E6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc0OwpTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLVN1Ym9iamVjdCBkZXIgS2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHRpbmdnaSB1bnR1ayBrb21wb25lbiBlZGl0b3IgdGVrcyBrYXlhIHVudHVrIHNrcmluIGluaS4gTWFzdWtrYW4gbm9tYm9yIChwaWtzZWwpIGF0YXUgbmlsYWkgcGVyYXR1cyAocmVsYXRpZikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYmlsYW5nYW4gYmFyaXMgdW50dWsgZWRpdG9yIGRlZmluaXNpIENJIGRhbGFtIGFudGFyYSBtdWthIGFkbWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdUYWtyaWZrYW4gc3VzdW5hbiBrZWFkYWFuIGluc2lkZW4gZGFyaXBhZGEgdGluZ2dpIChjdGguIGtyaXRpa2FsKSBrZSByZW5kYWggKGN0aC4gZnVuZ3NpYW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBrZWFkYWFuIHBlbmVtcGF0YW4geWFuZyByZWxldmVuIGRpbWFuYSB0aWtldCBiZXJzYW1idW5nIGJvbGVoIG1lbmplamFza2FuIHN0YXR1cyBiYWdpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIEl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBDYXJpYW5JdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGhhZCBjYXJpYW4gdW50dWsgc2tyaW4gSXRlbUtvbmZpZ0lUU01BZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIENhcmlhbkl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBydWFuZ2FuIGRpdHVuanVra2FuIENJcyBkYWxhbSBwYW5kYW5nYW4gcGF1dGFuIGphZHVhbCBrb21wbGVrcywgYmVyZ2FudHVuZyBrZXBhZGEga2VsYXMgQ0kgLiBTZXRpYXAgcGVueWVydGFhbiBoZW5kYWtsYWggZGltdWxha2FuIGRlbmdhbiBuYW1hIGtlbGFzIGRhbiB0aXRpayBiZXJ0aW5kaWggZHVhIChpYWl0dSBLb21wdXRlcjo6KS4gVGVyZGFwYXQgYmViZXJhcGEgU2lmYXQtc2lmYXQtQ0kgeWFuZyBzYW1hIGtlcGFkYSBzZW11YSBDSXMgKGNvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcjpLb21wdXRlcjo6TmFtYSwgS29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgS29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbnR1ayBtZW51bmp1a2thbiBzaWZhdCBpbmRpdmlkdSBDSSBzZWJhZ2FpbWFuYSB5YW5nIGRpdGFrcmlma2FuIGRhbGFtIERlZmluaXNpLUNJLCBza2ltIGJlcmlrdXQgbWVzdGkgZGlndW5ha2FuIChjb250b2ggdW50dWsga2VsYXMgS29tcHV0ZXIpOiBLb21wdXRlcjo6aGFyZGRpc2s6OjEsIEtvbXB1dGVyOjpoYXJkZGlzazo6MTo6S2FwYXNpdGk6OjEsIGtvbXB1dGVyOjpoYXJkZGlzazo6MiwgS29tcHV0ZXI6OmhhcmRkaXNrOjoyOjpLYXBhc2l0aTo6MS4gSmlrYSB0aWFkYSBwZW55ZXJ0YWFuIHVudHVrIGtlbGFzIENJLCBtYWthIHJ1YW5nYW4gZGVmYXVsdCBkaXBhcGFya2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZiBiYXJhbmdhbiBtYW5hIGJvbGVoIGRpZGFwYXRpIHVudHVrIFwnVGluZGFrYW5cJyBkaSBwZXJpbmdrYXQga2V0aWdhIHN0cnVrdHVyIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFyYW5nYW4gbWFuYSB5YW5nIHRlcmRhcGF0IHBhZGEgdGFoYXAgcGVydGFtYSBzdHJ1a3R1ciBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYXJhbmdhbiBtYW5hIHlhbmcgdGVyZGFwYXQgcGFkYSB0YWhhcCBrZWR1YSBzdHJ1a3R1ciBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBqZW5pcyBzYW1idW5nYW4geWFuZyBtYW5hIChkaW5hbWFrYW4gZGFyaXBhZGEgcGVyc3Bla3RpZiB0aWtldCkgYm9sZWggbWVuamVqYXNrYW4gc3RhdHVzIGJhZ2kgc2F0dSBzYW1idW5nYW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVGFrcmlma2FuIGplbmlzIHRpa2V0IHlhbmcgbWFuYSBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBzYXR1IHNhbWJ1bmdhbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BlcmthcmEga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdQZW5lbXBhdGFuIEtlYWRhYW4gV2FybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0tlYWRhYW4gUGVydHVrYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdHYW5kYWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gYmlkYW5nIHRhanVrIGRhbGFtIHNrcmluIGJpZGFuZyBJVFNNIHRhbWJhaGFuIGJhZ2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWVtYm9sZWhrYW4gY2lyaSB0aW5kYWthbiBwdWthbCBpdGVtIGtvbmZpZ3VyYXNpIHVudHVrIGZyb250ZW5kIGVqZW4gdW50dWsgYmVrZXJqYSBwYWRhIGxlYmloIGRhcmlwYWRhIHNhdHUgaXRlbSBrb25maWd1cmFzaSBwYWRhIHNhdHUgbWFzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ01lbWJvbGVoa2FuIGNpcmkgaXRlbSBrb25maWd1cmFzaSB0aW5kYWthbiBwdWthbCBoYW55YSB1bnR1ayBrdW1wdWxhbiB5YW5nIGRpc2VuYXJhaWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZGVsIGFjYXJhIHVudHVrIG1lbnllZGlha2FuIHN0YXR1cy1pdGVtY29uZmlnIGF0YXMgc2FtYnVuZ2FuLWl0ZW1jb25maWctdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW5jZXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVuY2V0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW5jZXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ3BhbmRhbmdhbiBpdGVtIGNvbmZpZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ2luc2lkZW4ga2VhZGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnSnVtbGFoIHRpa2V0IG1ha3NpbXVtIHVudHVrIGRpcGFtZXJrYW4gZGkga2VwdXR1c2FuIG9wZXJhc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHVudHVrIG1lbnllbWFrIGt1bXB1bGFuIGJlcnRhbmdndW5namF3YWIgdW50dWsga2VsYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgdW50dWsgbWVueWVtYWsga3VtcHVsYW4gYmVydGFuZ2d1bmdqYXdhYiB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHVudHVrIG1lbmphbmEgc3RhdGlzdGlrIGtvbmZpZyBpdGVtIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIHRpa2V0IHlhbmcgYWthbiBkaXBhbWVya2FuIGRhbGFtIHNldGlhcCBoYWxhbWFuIGRhcmkgaGFzaWwgY2FyaWFuIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIHRpa2V0IHlhbmcgYWthbiBkaXBhbWVya2FuIGRhbGFtIHNldGlhcCBoYWxhbWFuIGRhcmkgaGFzaWwgY2FyaWFuIGRhbGFtIHBhcGFyYW4gcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQYW5kYW5nYW4ga2VzZWx1cnVoYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgYmFja2VuZCBwYXBhbiBwZW11a2EgZGFyaXBhZGEgcGVuZ2d1bmEgcGVsYW5nZ2FuIHNlbmFyYWkgZ2FtYmFyYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLiAiSGFkIiBhZGFsYWggYmlsYW5nYW4gcGVueWVydGFhbiBkaXR1bmp1a2thbiBzZWNhcmEgZGVmYXVsdC4gIkt1bXB1bGFuIiBkaWd1bmFrYW4gdW50dWsgbWVueWVrYXQgYWtzZXMga2VwYWRhIHBsdWdpbiAoY29udG9oOiBLdW1wdWxhbjogYWRtaW47IGt1bXB1bGFuMTsga3VtcHVsYW4yOykuICJEZWZhdWx0IiBtZW5lbnR1a2FuIGppa2EgcGx1Z2luIGluaSBkaWFrdGlma2FuIHNlY2FyYSBsYWxhaSBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgdW50dWsgbWVtYm9sZWhrYW4gc2VjYXJhIG1hbnVhbC4gIkNhY2hlVFRMTG9jYWwiIGFkYWxhaCBtYXNhIGNhY2hlIGRhbGFtIG1pbml0IHVudHVrIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgYmFja2VuZCBwYXBhbiBwZW11a2EgZGFyaXBhZGEgcGVuZ2d1bmEgcGVsYW5nZ2FuIHNlbmFyYWkgZ2FtYmFyYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLiAiSGFkIiBhZGFsYWggYmlsYW5nYW4gcGVueWVydGFhbiBkaXR1bmp1a2thbiBzZWNhcmEgZGVmYXVsdC4gIkt1bXB1bGFuIiBkaWd1bmFrYW4gdW50dWsgbWVueWVrYXQgYWtzZXMga2VwYWRhIHBsdWdpbiAoY29udG9oOiBLdW1wdWxhbjogYWRtaW47IGt1bXB1bGFuMTsga3VtcHVsYW4yOykuICJEZWZhdWx0IiBtZW5lbnR1a2FuIGppa2EgcGx1Z2luIGluaSBkaWFrdGlma2FuIHNlY2FyYSBsYWxhaSBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgdW50dWsgbWVtYm9sZWhrYW4gc2VjYXJhIG1hbnVhbC4gIkNhY2hlVFRMTG9jYWwiIGFkYWxhaCBtYXNhIGNhY2hlIGRhbGFtIG1pbml0IHVudHVrIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgd2FybmEga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBjb250b2gga3VtcHVsYW4geWFuZyBkaWJlbmFya2FuIHBhZGEgY2lyaS1jaXJpIGthdGFsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtdWthIHN1cmF0IChkaSBtYW5hIGl0ZW0ga29uZmlndXJhc2kgZGl0dW5qdWtrYW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdNZWxha3VrYW4gdGluZGFrYW4geWFuZyB0ZWxhaCBkaWtvbmZpZ3VyYXNpIHVudHVrIHNldGlhcCBhY2FyYSAoc2ViYWdhaSBwZW5jZXR1cykgdW50dWsgc2V0aWFwIFdlYnNlcnZpY2UgeWFuZyB0ZWxhaCBkaWtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiB6dW0gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiB0YW1iYWggaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gZWRpdCBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjZXRhayBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnS2Vpc3RpbWV3YWFuLWtlaXN0aW1ld2FhbiBkaWtlaGVuZGFraSB1bnR1ayBtZW1hZGFta2FuIGJhcmFuZy1iYXJhbmcgY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NhcmkgYmFyYW5nLWJhcmFuZyBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGtlYWRhYW4gaW5zaWRlbiBiYWdpIENJIHNlY2FyYSBhdXRvbWF0aWsgYXBhYmlsYSBzdWF0dSBUaWtldCBkaXNhbWJ1bmdrYW4ga2VwYWRhIHN1YXR1IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBrZWFkYWFuIHBlbmVtcGF0YW4gZGFsYW0gc2tyaW4gcHVrYWwgaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQga2VhZGFhbiBpbnNpZGVuIGRhbGFtIHNrcmluIHB1a2FsIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB5YW5nIG1lbWJvbGVoa2FuIG1lbmdodWJ1bmdrYW4gaXRlbSBrb25maWd1cmFzaSBkZW5nYW4gb2JqZWsgbGFpbiBkYWxhbSBwYW5kYW5nYW4genVtIGl0ZW0ga29uZmlnIGJhZ2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBkaSBkYWxhbSBnYW1iYXJhbiBrZXNlbHVydWhhbiBpdGVtIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmdha3NlcyBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gcGFuZGFuZ2FuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHNhdHUgc2FtYnVuZ2FuIGtlcGFkYSBtZW51IHVudHVrIG1lbWFkYW0gc2F0dSBiYXJhbmcga29uZmlndXJhc2kgIGRhbGFtIHBhbmRhbmdhbiB6dW1ueWEgZGFyaXBhZGEgYW50YXJhbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVrIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnlhbGluIGl0ZW0ga29uZmlndXJhc2kgZGkgZGFsYW0gZ2FtYmFyYW4ga2VzZWx1cnVoYW4gaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW55YWxpbiBiYXJhbmdhbiBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBlZGl0IGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ21lbnVuanVra2FuIHN1YXR1IHNhbWJ1bmdhbiBwYWRhIG1lbnUgdW50dWsga2VtYmFsaSBkYWxhbSB6b29tIGl0ZW0ga29uZmlndXJhc2kgZGFyaXBhZGEgYW50YXJhIG11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmNldGFrIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgenVtIGtlIGRhbGFtIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRpIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgc2VqYXJhaCBiYXJhbmdhbiBrb25maWcgKHVydXRhbiB0ZXJiYWxpaykgZGFsYW0gYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLCBjb250b2g6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBEZWZhdWx0IGlhbGFoIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ01hc2EgUGVyYWthdW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnUGVudGFkYmlyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCYW5ndW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUGFwYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnSnVydXRla25payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICd0ZXRpa3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdsYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0JpbGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGFoYXAgUGVyc2V0dWp1YW4gUGVya2hpZG1hdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdQaWF3YWlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/nb_NO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5uc3RpbGxpbmdlciBmb3IgaW5ua29tbWVuZGUgZm9yZXNww7hyc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbm5zdGlsbGluZ2VyIGZvciB1dGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdBZG1pbmlzdHJhc2pvbiBhdiBrb25maWd1cmFzam9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdFbmRyZSBrbGFzc2VkZWZpbmlzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdFbmRyZSByb2xsZWRlZmluaXNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnSGVyIGthbiBkdSBpbXBvcnRlcmUgUmVhZHkySW1wb3J0LWtsYXNzZXBha2tlciBzb20gdmlzZXIgZGUgdmFubGlnc3RlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVuZSB2w6VyZS4gVsOmciBvcHBtZXJrc29tIHDDpSBhdCBkZXQga2FuIHbDpnJlIG7DuGR2ZW5kaWcgbWVkIHl0dGVybGlnZXJlIGtvbmZpZ3VyYXNqb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ09wcGRhdGVyIGVrc2lzdGVyZW5kZSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXIgUmVhZHkyQWRvcHQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldHNrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyZXJpbmdzZWxlbWVudGV0cyByb2xsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3Iga2xhc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWZWxnIGVuIGtsYXNzZSBmcmEgbGlzdGVuIGZvciDDpSBvcHByZXR0ZSBlbiBueSBrb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTWFzc2VyZWRpZ2VyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnUHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnS29ibGUgdGlsIGVuIGFubmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVZ3lsZGlnIGtvbmZpZ3VyYXNqb25zZWxlbWVudG51bW1lciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtbWVyZXQgcMOlIGV0IGFubmV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBzb20gc2thbCBrb2JsZXMgdGlsLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBmamVybmUgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXZuZXQgdGlsIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmF2bmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzam9uc251bW1lciBmb3IgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzam9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0hlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpZW4gdGlsIGtvbmZpZ3VyYXNqb25zZW5oZXRlbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdPcHByZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aXNuaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXRlciBwZXIgc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQgZnVubmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlbGcgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDuHIgc8O4a2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ09nc8OlIHPDuGtlIGkgdGlkbGlnZXJlIHZlcnNqb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R5YmRlbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGlubi91dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYWtzIGxlbmtlbml2w6UgbsOlZGQgZm9yIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdPcHBseXNuaW5nZXIgb20ga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ07DpXbDpnJlbmRlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTsOldsOmcmVuZGUgaGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU2lzdCBlbmRyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2lzdCBlbmRyZXQgYXYnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdEaW5lIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0tc8O4ayc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnT2JqZWt0dHlwZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ0ZpbHRyZXIgdXQgZnJhIHR5cGUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUga2xhc3NlciB2aWwgYmxpIGltcG9ydGVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUgcm9sbGVyIHZpbCBibGkgaW1wb3J0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bDpnIgb3BwbWVya3NvbSBww6UgYXQgb2dzw6UgdGlsc3ZhcmVuZGUgZHluYW1pc2tlIGZlbHQgb2cgR2VuZXJhbENhdGFsb2cta2xhc3NlciBibGlyIG9wcHJldHRldCwgb2cgYXQgZGUgaWtrZSBmamVybmVzIGF1dG9tYXRpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnw5huc2tlciBkdSDDpSBmb3J0c2V0dGU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1RyZW5nZXIgZWtzZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmlzam9uZW4gZXIgaW5nZW4gZ3lsZGlnIFlBTUwtaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVyc2lrdDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlciBvcHBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IHRyZW5nZXIgbWluc3QgZXR0IHZhbGd0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaWtrZSBza3JpdmV0aWxnYW5nIHRpbCBkZXR0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXNqb24gYmxlIGRlZmluZXJ0IGZvciBrbGFzc2VuICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJlcmluZ3NlbGVtZW50ZXQgIiVzIiBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnS3VubmUgaWtrZSBzbGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50LUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnSW5nZW4gdmVyc2pvbiBmdW5uZXQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBlbGxlciBDbGFzc0lEIGVyIG9wcGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nIGVyIGdpdHQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2UgaGlzdG9yaWtrLCBpbmdlbiBDb25maWdJdGVtSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlraywgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnl0dCBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ055IHZlcnNqb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ09wcGRhdGVyaW5nIGF2IGRpc3RyaWJ1c2pvbnNzdGF0dXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdIZW5kZWxzZXNzdGF0dXMgb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGVua2UgdGlsICVzICh0eXBlPSVzKSBsYWd0IHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnS29ibGluZyB0aWwgJXMgKHR5cGU9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tZGVmaW5pc2pvbiBvcHBkYXRlcnQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hdm4gb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0dCAlcyBvcHBkYXRlcnQgZnJhICIlcyIgdGlsICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2pvbiAlcyBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlbGxlciBWZXJzaW9uSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBrb25maWd1cmFzam9uc2VsZW1lbnRldCwgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdza3JldmV0IHV0IGF2ICVzIHDDpSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVWd5bGRpZyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENsYXNzSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nc3JldHRpZ2hldGVyIGZvciBkZW5uZSBrbGFzc2VuIGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbmdlbiByZXN1bHRhdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O4a2VyZXN1bHRhdGVyIGZvciBrb25maWd1cmVyaW5nc2VsZW1lbnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGlra2UgdmlzZSBlbGVtZW50ZXQsIGluZ2VuIHRpbGdhbmdzcmV0dGlnaGV0ZXIgZm9yIENvbmZpZ0l0ZW0gZXIgZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBibGUgaWtrZSBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0luZ2VuIHZlcnNqb25lciBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmFyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaGVuZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmRlbiBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSW5nZW4gdGlsbGF0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdWd5bGRpZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDuGtlcGFyYW1ldGVyZSB1Z3lsZGlnZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdWaXN0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOw6V2w6ZyZW5kZSB0eXBlIGhlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lbGxvbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncmVuc25pbmdlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyZW5zbmluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2sgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrICh2ZXJzam9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGxlbmtlaGVudmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPbSBkZW5uZSBrb2JsaW5nZW4gZ2plbGRlciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrZSB2ZXJzam9uZW4gYXYgcmVmZXJhbnNlb2JqZWt0ZXQuIEJlcmVnbmluZyBhdiBnamVsZGVuZGUgaGVuZGVsc2Vzc3RhdHVzIHV0ZsO4cmVzIGJhcmUgcMOlIGR5bmFtaXNrZSBrb2JsaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVmVsZyBhdHRyaWJ1dHRldCBzb20ga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHNrYWwgc8O4a2VzIGV0dGVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWt0dXJlbiBlciBpa2tlIGd5bGRpZy4gT3BwZ2kgZW4gaGFzaCBtZWQgZGF0YSBpIFlBTUwtZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RldCBlciBuw7hkdmVuZGlnIMOlIHN0YXJ0ZSBZQU1MLXN0cmVuZ2VuIG1lZCBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdLdW5uZSBpa2tlIHJlbnNlIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0luZ2VuIHJlbGV2YW50ZSBkeW5hbWlza2UgZmVsdCBibGUgZnVubmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnS3VubmUgaWtrZSBzZXR0ZSBpbm4gaSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1NhdHRlIGlubiAwIHJhZGVyIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01ha3MuIGFudGFsbCBhdiBldHQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnQvZWtzcG9ydCBhdiB2ZWRsZWdnIChzb20gc2lzdGUgb3BwZsO4cmluZyBwZXIgbGluamUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2pvbnNzdHJlbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVpbCB2ZWQgc3lua3JvbmlzZXJpbmcgYXYgZGVmaW5pc2pvbmVuZS4gVmVubmxpZ3N0IHNqZWtrIGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pc2pvbmVyIHNvbSBpa2tlIGVyIHN5bmtyb25pc2VydC4gVmVubmxpZ3N0IGRpc3RyaWJ1ZXIgZW5kcmluZ2VuZSBpIGRlIGR5bmFtaXNrZSBmZWx0ZW5lIGkgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdVdGfDpXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVmVkbGlrZWhvbGQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVXRmYXNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdFdmFsdWVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L0t2YWxpdGV0c2tvbnRyb2xsJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVyc2lrdCBvZyBiZWtyZWZ0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRlcmUga2xhc3Nlci9yb2xsZXIgb2cgdGlsaMO4cmVuZGUgZmVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0RldCBvcHBzdG9kIGVuIGZlaWwgdW5kZXIga2xhc3NlaW1wb3J0ZW4uJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa2p1bHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFZpc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhdGVyIHV0dmlkZWRlIHPDuGtlYmV0aW5nZWxzZXIgaSBrb25maWd1cmFzam9uc29iamVrdHPDuGsgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuIE1lZCBkZW5uZSBmdW5rc2pvbmVuIGthbiBkdSBmLmVrcy4gc8O4a2UgZXR0ZXIgbmF2biBww6Uga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgbWVkIGRlbm5lIHR5cGVuIGJldGluZ2Vsc2VyIHNvbSAiKCpuw7hra2VsMSomJipuw7hra2VsMiopIiBlbGxlciAiKCpuw7hra2VsMSp8fCpuw7hra2VsMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVGlsbGF0ZXIgdXR2aWRlZGUgc8O4a2ViZXRpbmdlbHNlciBpIGtvbmZpZ3VyZXJpbmdzZWxlbWVudC1zw7hrIGkga3VuZGVncmVuc2Vzbml0dGV0LiBNZWQgZGVubmUgZnVua3Nqb25lbiBrYW4gZHUgZi5la3MuIHPDuGtlIGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudG5hdm4gbWVkIGRlbm5lIHR5cGVuIGJldGluZ2Vsc2VyIHNvbSAiKCpuw7hra2VsMSomJipuw7hra2VsMiopIiBlbGxlciAiKCpuw7hra2VsMSp8fCpuw7hra2VsMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsZGVsdGUgS0ktZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSS1lciBzb20gZXIgdGlsZGVsdCBrdW5kZXNlbHNrYXBldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJLWVyIHRpbG9yZG5ldCBrdW5kZWJydWtlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1pbm5zdGlsbGluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdTZSBldHRlciBldCB1bmlrdCBuYXZuIGJhcmUgaW5uZW5mb3Igc2FtbWUgQ29uZmlnSXRlbS1rbGFzc2UgKFwnY2xhc3NcJykgZWxsZXIgZ2xvYmFsdCAoXCdnbG9iYWxcJyksIG5vZSBzb20gYmV0eXIgYXQgYWxsZSBla3Npc3RlcmVuZGUgQ29uZmlnSXRlbXMgdGFzIG1lZCBpIGJldHJha3RuaW5nZW4gbsOlciBtYW4gbGV0ZXIgZXR0ZXIgZHVwbGlrYXRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1ZlbGcgZW4gbW9kdWwgZm9yIMOlIGjDpW5kaGV2ZSBldCBuYXZuZXNramVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1ZlbGcgZW4gbW9kdWwgZm9yIMOlIGjDpW5kaGV2ZSBldCB0YWxsc2tqZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgdmVyc2pvbnNzdHJlbmdza2plbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVmVsZyBhdHRyaWJ1dHRlciBzb20gc2thbCB1dGzDuHNlIG9wcHJldHRlbHNlbiBhdiBlbiBueSB2ZXJzam9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWZWxnIGthdGVnb3JpZXIgc29tIHNrYWwgdGlsb3JkbmVzIGRlbm5lIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubmVrb25maWd1cmFzam9uc2VsZW1lbnRmaWx0cmUgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbm5lciBzb20ga2FuIGZpbHRyZXJlcyBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4gTWVyazogQmFyZSBhdHRyaWJ1dHRlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgb2cgZHluYW1pc2tlIGZlbHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXIgdGlsbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdMZWdnIHRpbCBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlciBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlciBoZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJlcmluZ3NlbGVtZW50ZXQgc29tIG11bGlnZ2rDuHIgbG9nZ2luZyB0aWwgaGlzdG9yaWtrIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdIZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgc29tIG9wcGRhdGVyZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHRpbCBkZXJlcyBnamVsZGVuZGUgZGVmaW5pc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnRoaXN0b3Jpa2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHV0c2tyaWZ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnSXRlbS10cmV2aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBhdiBmw7hsZ2VuZGUga2xhc3NlciB2aWwgaWtrZSBibGkgbGFncmV0IHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcmVuLiBIdmlzIGR1IHZpbCBicnVrZSBkZXR0ZSBww6UgZWtzaXN0ZXJlbmRlIENJLWVyLCBtw6UgQ0ktbWlncmVyaW5nZW4ga2rDuHJlcyB2aWEga29uc29sbGVuIGV0dGVyIGF0IGR1IGhhciBlbmRyZXQgZGV0dGUgYWx0ZXJuYXRpdmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIGRpc3RyaWJ1c2pvbnNzdGF0dXMgdmlsIGlra2UgYmxpIGxhZ3JldCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIMOlIGJydWtlIGRldHRlIHDDpSBla3Npc3RlcmVuZGUgQ0ktZXIgbcOlIENJLW1pZ3JlcmluZ2VuIGtqw7hyZXMgdmlhIGtvbnNvbGxlbiBldHRlciBhdCBkdSBoYXIgZW5kcmV0IGRldHRlIGFsdGVybmF0aXZldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXJhc2pvbiBFbGVtZW50Z3JlbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzam9uIEVsZW1lbnRiZWdyZW5zbmluZyBwZXIgc2lkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIGZvciBrb25maWd1cmFzam9uc3N0eXJpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1cmFzam9uc2VsZW1lbnRldHMgYnVsa21vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmFzam9uc2VsZW1lbnQgZm9yIHPDuGsgaSBiYWNrZW5kLXJ1dGVyZW4gdGlsIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnT3BwcmV0dCBvZyBhZG1pbmlzdHJlciBkZWZpbmlzam9uZW5lIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdPcHByZXR0ZXIgYmlsbGV0dGVyIGZvciBDb25maWdJdGVtcyBww6UgYmVzdGVtdGUgdGlkc3B1bmt0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0t1bmRlciBrYW4gc2UgaGlzdG9yaXNrZSBDSS12ZXJzam9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0t1bmRlbmUgaGFyIG11bGlnaGV0IHRpbCDDpSBieXR0ZSBtYW51ZWx0IG1lbGxvbSBoaXN0b3Jpc2tlIENJLXZlcnNqb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYWwgYnJ1a2VzIHDDpSBhdHRyaWJ1dHRldCBmb3Igc8O4a2Vza2plcm1lbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0YSBzb20gc2thbCBicnVrZXMgcMOlIGF0dHJpYnV0dGV0IGZvciBzw7hrZXNramVybWVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlci4gRWtzZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmVyIGhhbmRsaW5nZXIgZGVyIGVuIGlubnN0aWxsaW5nc2tuYXBwIGVyIHRpbGdqZW5nZWxpZyBpIHdpZGdldGVuIGZvciBrb2JsZWRlIG9iamVrdGVyIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFbDpnIgb3BwbWVya3NvbSBww6UgYXQgZGlzc2UgaGFuZGxpbmdlbmUgbcOlIGhhIHJlZ2lzdHJlcnQgZsO4bGdlbmRlIEpTLSBvZyBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBUZW1wbGF0ZTo6VG9vbGtpdC1za2plbWEgZm9yIHZlcnNqb25zc3RyZW5nZXIuIEJydWtlcyBiYXJlIGh2aXMgVmVyc2pvbnNzdHJlbmdtb2R1bCBlciBzYXR0IHRpbCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBzZXR0IG1lZCBiZXRpbmdlbHNlciBmb3IgYXQgZW4ga3VuZGUgc2thbCBrdW5uZSBzZSBldCBrb25maWd1cmFzam9uc2VsZW1lbnQuIEJldGluZ2Vsc2VuZSBrYW4gZXZlbnR1ZWx0IGJlZ3JlbnNlcyB0aWwgYmVzdGVtdGUga3VuZGVncnVwcGVyLiBOYXZuIGVyIGRldCBlbmVzdGUgb2JsaWdhdG9yaXNrZSBhdHRyaWJ1dHRldC4gSHZpcyBpbmdlbiBhbmRyZSBhbHRlcm5hdGl2ZXIgZXIgYW5naXR0LCB2aWwgYWxsZSBrb25maWd1cmFzam9uc2VsZW1lbnRlciB2w6ZyZSBzeW5saWdlIHVuZGVyIGRlbiBha3R1ZWxsZSBrYXRlZ29yaWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBzbGV0dGUgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBoZW50ZSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHZlZCBoamVscCBhdiBkZXQgZ2VuZXJpc2tlIGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIHPDuGtlIGkgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBhbmdpIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgdmVkIGhqZWxwIGF2IGRldCBnZW5lcmlza2UgZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcmVyIGVuIG92ZXJzaWt0c21vZHVsIHNvbSB2aXNlciBkZW4gbGlsbGUgdmlzbmluZ2VuIGF2IGVuIGxpc3RlIG1lZCBrb25maWd1cmFzam9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnQW5naXIgb20gbGVua2V0eXBlZXRpa2V0dGVuZSBza2FsIHZpc2VzIGkgbm9kZWZvcmJpbmRlbHNlbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcmVndWzDpnJlIHV0dHJ5a2sgaW5kaXZpZHVlbHQgZm9yIGh2ZXIgQ29uZmlnSXRlbS1rbGFzc2UgZm9yIMOlIGtvbnRyb2xsZXJlIENvbmZpZ0l0ZW0tbmF2bmV0IG9nIHZpc2UgdGlsc3ZhcmVuZGUgZmVpbG1lbGRpbmdlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgdGlsZ2plbmdlbGlnZSBrb2xvbm5lciBtZWQgQ0ktZXIgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgYXZoZW5naWcgYXYgQ0kta2xhc3Nlbi4gSHZlciBvcHBmw7hyaW5nIG3DpSBiZXN0w6UgYXYgZXQga2xhc3NlbmF2biBvZyBlbiBtYXRyaXNlIG1lZCB0aWxnamVuZ2VsaWdlIGZlbHQgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2VuLiBEeW5hbWlza2UgZmVsdG9wcGbDuHJpbmdlciBtw6UgZsO4bGdlIHNramVtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmQga29uZmlnLWVsZW1lbnRhdHRyaWJ1dHQgZm9yIHNvcnRlcmluZyBhdiBrb25maWctZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWctZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkIGtvbmZpZ3VyYXNqb25zZWxlbWVudGF0dHJpYnV0dCBmb3Igc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmQga29uZmlnLWVsZW1lbnRhdHRyaWJ1dHQgZm9yIHNvcnRlcmluZyBhdiBrb25maWctZWxlbWVudGV0IGkgc8O4a2VyZXN1bHRhdGV0IGZvciBkZW5uZSBvcGVyYXNqb25lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHJla2tlZsO4bGdlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0LiBPcHA6IGVsZHN0IHDDpSB0b3BwZW4uIE5lZDogbnllc3RlIMO4dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRyZWtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4gT3BwOiBlbGRzdCBww6UgdG9wcGVuLiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRyZWtrZWbDuGxnZW4gcMOlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVuZSBpIHPDuGtlcmVzdWx0YXRldCBmb3IgZGVubmUgb3BlcmFzam9uZW4uIE9wcDogZWxkc3RlIMO4dmVyc3QuIE5lZDogbnllc3RlIMO4dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb2xvbm5lbmUgc29tIHZpc2VzIGZvciBDSS1lciBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciwgYXZoZW5naWcgYXYgQ0kta2xhc3Nlbi4gSHZlciBvcHBmw7hyaW5nIG3DpSBiZXN0w6UgYXYgZXQga2xhc3NlbmF2biBvZyBlbiBtYXRyaXNlIG1lZCB0aWxnamVuZ2VsaWdlIGZlbHQgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2VuLiBEeW5hbWlza2UgZmVsdG9wcGbDuHJpbmdlciBtw6UgZsO4bGdlIHNramVtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZXJlciBzdGFuZGFyZCByZWxhc2pvbnNkeWJkZSBzb20gc2thbCB2aXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkYXR0cmlidXR0ZXQgZm9yIHPDuGtlYXR0cmlidXR0ZXQgc29tIHZpc2VzIGZvciBza2plcm1iaWxkZXQgZm9yIGtvbmZpZ3VyYXNqb25zb2JqZWt0c8O4ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGF0dHJpYnV0dGV0IHNvbSB2aXNlcyBmb3Igc8O4a2VhdHRyaWJ1dHRldCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQgcMOlIHPDuGtlc2tqZXJtZW4uIEVrc2VtcGVsOiAiS2V5IiBtw6UgaGEgbmF2bmV0IHDDpSBkZXQgZHluYW1pc2tlIGZlbHRldCwgaSBkZXR0ZSB0aWxmZWxsZXQgIlgiLCAiQ29udGVudCIgbcOlIGhhIHZlcmRpZW4gdGlsIGRldCBkeW5hbWlza2UgZmVsdGV0LCBhdmhlbmdpZyBhdiBkZW4gZHluYW1pc2tlIGZlbHR0eXBlbiwgVGV4dDogImVuIHRla3N0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgb2cgZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkdW5kZXJvYmpla3RldCBmb3Iga2xhc3NlbiBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgdGlsZ2plbmdlbGlnZSBrb2xvbm5lciBtZWQgQ0ktZXIgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgYXZoZW5naWcgYXYgQ0kta2xhc3Nlbi4gSHZlciBvcHBmw7hyaW5nIG3DpSBiZXN0w6UgYXYgZXQga2xhc3NlbmF2biBvZyBlbiBtYXRyaXNlIG1lZCB0aWxnamVuZ2VsaWdlIGZlbHQgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2VuLiBEeW5hbWlza2UgZmVsdG9wcGbDuHJpbmdlciBtw6UgZsO4bGdlIHNramVtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBow7h5ZGVuIGZvciByZWRpZ2VyaW5nc2tvbXBvbmVudGVuIGZvciByaWsgdGVrc3QgZm9yIGRlbm5lIHNramVybWVuLiBTa3JpdiBpbm4gdGFsbCAocGlrc2xlcikgZWxsZXIgcHJvc2VudHZlcmRpIChyZWxhdGl2KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGFudGFsbCByYWRlciBmb3IgQ0ktZGVmaW5pc2pvbnNyZWRpZ2VyaW5nc3Byb2dyYW1tZXQgaSBhZG1pbmlzdHJhdG9yZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHJla2tlZsO4bGdlbiBhdiBoZW5kZWxzZXN0aWxzdGFuZGVyIGZyYSBow7h5IChmLmVrcy4ga3JpdGlzaykgdGlsIGxhdiAoZi5la3MuIGZ1bmtzam9uZWxsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgcmVsZXZhbnRlIGRpc3RyaWJ1c2pvbnNzdGF0dXNlbmUgZGVyIHRpbGtueXR0ZWRlIHRpY2tldHMga2FuIHDDpXZpcmtlIHN0YXR1c2VuIHRpbCBlbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4a2VncmVuc2VuIGZvciBza2plcm1iaWxkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4a2VncmVuc2VuIGZvciBza2plcm1iaWxkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4a2VncmVuc2VuIGZvciBza2plcm1iaWxkZXQgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4a2VncmVuc2VuIGZvciBza2plcm1iaWxkZXQgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlIGtvbG9ubmVyIHNvbSBza2FsIHZpc2VzIGZvciBDSS1lciBpIGRlbiBrb21wbGVrc2UgdmlzbmluZ2VuIGF2IGtvYmxpbmdzdGFiZWxsZW4gZm9yIGFsbGUgQ0kta2xhc3Nlci4gSHZpcyBkZXQgaWtrZSBmaW5uZXMgbm9lbiBvcHBmw7hyaW5nLCB2aXNlcyBzdGFuZGFyZGtvbG9ubmVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB2aXN0ZSBrb2xvbm5lbmUgbWVkIENJLWVyIGkgZGVuIGtvbXBsZWtzZSB2aXNuaW5nZW4gYXYga29ibGluZ3N0YWJlbGxlbiwgYXZoZW5naWcgYXYgQ0kta2xhc3Nlbi4gSHZlciBvcHBmw7hyaW5nIG3DpSBpbm5sZWRlcyBtZWQga2xhc3NlbmF2bmV0IG9nIHRvIGtvbG9uIChmLmVrcy4gQ29tcHV0ZXI6OikuIERldCBmaW5uZXMgbm9lbiBmw6UgQ0ktYXR0cmlidXR0ZXIgc29tIGVyIGZlbGxlcyBmb3IgYWxsZSBDSS1lciAoZWtzZW1wZWwgZm9yIGtsYXNzZW4gQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEZvciDDpSB2aXNlIGluZGl2aWR1ZWxsZSBDSS1hdHRyaWJ1dHRlciBzb20gZGVmaW5lcnQgaSBDSS1kZWZpbmlzam9uZW4sIG3DpSBmw7hsZ2VuZGUgc2tqZW1hIGJydWtlcyAoZWtzZW1wZWwgZm9yIGtsYXNzZW4gQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSHZpcyBkZXQgaWtrZSBmaW5uZXMgbm9lbiBvcHBmw7hyaW5nIGZvciBlbiBDSS1rbGFzc2UsIHZpc2VzIHN0YW5kYXJka29sb25uZW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2UgZWxlbWVudGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIGZvciAiSGFuZGxpbmciIHDDpSB0cmVkamUgbml2w6UgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2UgZWxlbWVudGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIHDDpSBmw7hyc3RlIG5pdsOlIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZSBlbGVtZW50ZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgcMOlIGFuZHJlIG5pdsOlIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZW4gdHlwZSBrb2JsaW5nIChuYXZuZ2l0dCBmcmEgdGlja2V0LXBlcnNwZWt0aXZldCkgc29tIGthbiBww6V2aXJrZSBzdGF0dXNlbiB0aWwgZXQga29ibGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2VuIHR5cGUgYmlsbGV0dCBzb20ga2FuIHDDpXZpcmtlIHN0YXR1c2VuIHRpbCBlbiBrb2JsZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnT3BwZGF0ZXJpbmcgYXYgZGVmaW5pc2pvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTbGV0dCBrb25maWd1cmFzam9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdGYXJnZSBmb3IgcHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaXPDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bCBmb3IgZHluYW1pc2tlIGZlbHRoZW5kZWxzZXIgc29tIG1hcmtlcmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGRlZmluaXNqb25lciBzb20gdXN5bmtyb25pc2VydGUgaHZpcyBkZSBkeW5hbWlza2UgZmVsdGVuZSBlbmRyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdCBzb20gdmlzZXMgaSBza2plcm1iaWxkZXQgZm9yIElUU00tdGlsbGVnZ3NmZWx0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdCBzb20gdmlzZXMgaSBza2plcm1iaWxkZXQgZm9yIG92ZXJzaWt0IG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdCBzb20gdmlzZXMgaSBza2plcm1iaWxkZXQgZm9yIHPDuGsgZXR0ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FrdGl2ZXJlciBmdW5rc2pvbmVuIGZvciBtYXNzZWhhbmRsaW5nZXIgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLCBzbGlrIGF0IGFnZW50ZW5zIGZyb250ZW5kIGthbiBhcmJlaWRlIG1lZCBtZXIgZW5uIGV0dCBrb25maWd1cmFzam9uc2VsZW1lbnQgb20gZ2FuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWt0aXZlcmVyIGZ1bmtzam9uZW4gZm9yIG1hc3NlaGFuZGxpbmcgYXYga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgYmFyZSBmb3IgZGUgb3BwZsO4cnRlIGdydXBwZW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBa3RpdmVyZXIvZGVha3RpdmVyZXIgZnVua3Nqb25hbGl0ZXRlbiBmb3Igw6Ugc2pla2tlIG9tIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaGFyIHVuaWtlIG5hdm4uIEbDuHIgZHUgYWt0aXZlcmVyIGRldHRlIGFsdGVybmF0aXZldCwgYsO4ciBkdSBzamVra2Ugc3lzdGVtZXQgZm9yIGFsbGVyZWRlIGVrc2lzdGVyZW5kZSBrb25maWd1cmFzam9uc2VsZW1lbnRlciBtZWQgZHVwbGlzZXJ0ZSBuYXZuLiBEdSBrYW4gZ2rDuHJlIGRldHRlIG1lZCBrb25zb2xsa29tbWFuZG9lbiBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0hlbmRlbHNlc21vZHVsIGZvciDDpSBhbmdpIGNvbmZpZ2l0ZW0tc3RhdHVzIHDDpSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGZWx0IGkga29uZmlndXJhc2pvbnNlbGVtZW50aW5kZWtzZW4sIHNvbSBicnVrZXMgdGlsIGZ1bGx0ZWtzdHPDuGsuIEZlbHRlbmUgbGFncmVzIG9nc8OlLCBtZW4gZXIgaWtrZSBvYmxpZ2F0b3Jpc2tlIGZvciBkZW4gZ2VuZXJlbGxlIGZ1bmtzam9uYWxpdGV0ZW4uIElua2x1ZGVyaW5nIGF2IHZlZGxlZ2cga2FuIGRlYWt0aXZlcmVzIHZlZCDDpSBzZXR0ZSBvcHBmw7hyaW5nZW4gdGlsIDAgZWxsZXIgc2xldHRlIGRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0ZlbHQgc29tIGVyIGxhZ3JldCBpIGtvbmZpZ3VyYXNqb25zZWxlbWVudGluZGVrc2VuLCBvZyBzb20gYnJ1a2VzIHRpbCBhbmRyZSB0aW5nIGVubiBmdWxsdGVrc3Rzw7hrLiBBbGxlIGZlbHRlbmUgZXIgb2JsaWdhdG9yaXNrZSBmb3Igw6UgZsOlIGZ1bGwgZnVua3Nqb25hbGl0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnRm9yIGh2ZXIgd2VidGplbmVzdGUgKG7DuGtrZWwpIGthbiBkZXQgZGVmaW5lcmVzIGVuIHJla2tlIGtsYXNzZXIgKHZlcmRpKSBzb20gaW1wb3J0ZW4gZXIgYmVncmVuc2V0IHRpbC4gRm9yIGFsbGUgdmFsZ3RlIGtsYXNzZXIsIGVsbGVyIGFsbGUgZWtzaXN0ZXJlbmRlIGtsYXNzZXIsIG3DpSBkZSBpZGVudGlmaXNlcmVuZGUgYXR0cmlidXR0ZW5lIHZlbGdlcyBpIGtvbmZpZ3VyYXNqb25lbiBhdiBww6VrYWxsZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWxlbiBmb3IgQ29uZmlnSXRlbUZldGNoLWludm9rZXJpbmdzbGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWxlbiBmb3IgQ29uZmlnSXRlbUZldGNoLWludm9rZXJpbmdzbGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsZW4gZm9yIENvbmZpZ0l0ZW1GZXRjaC1pbnZva2VyaW5nc2xhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdPdmVyc2lrdCBvdmVyIElUU00ga29uZmlndXJhc2pvbnNlbmhldGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJlciBkaXN0cmlidXNqb25zc3RhdHVzIGkgc8O4a2V0IGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkga3VuZGVncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJlciBoZW5kZWxzZXN0aWxzdGFuZGVyIGkga29uZmlndXJhc2pvbnNzw7hrZXQgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYWtzaW1hbHQgYW50YWxsIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHNvbSBza2FsIHZpc2VzIGkgcmVzdWx0YXRldCBhdiBkZW5uZSBvcGVyYXNqb25lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBmb3Igw6Ugc2pla2tlIGh2aWxrZW4gZ3J1cHBlIHNvbSBlciBhbnN2YXJsaWcgZm9yIGVuIGtsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCBmb3Igw6Ugc2pla2tlIGh2aWxrZW4gZ3J1cHBlIHNvbSBlciBhbnN2YXJsaWcgZm9yIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCBmb3Igw6UgZ2VuZXJlcmUgc3RhdGlzdGlrayBvdmVyIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmF2biBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVybW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWxsIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHNvbSBza2FsIHZpc2VzIHDDpSBodmVyIHNpZGUgYXYgZXQgc8O4a2VyZXN1bHRhdCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWxsIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHNvbSBza2FsIHZpc2VzIHDDpSBodmVyIHNpZGUgYXYgZXQgc8O4a2VyZXN1bHRhdCBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpla3RlciBkZXQgc2thbCBzw7hrZXMgZXR0ZXIsIGh2b3IgbWFuZ2Ugb3BwZsO4cmluZ2VyIG9nIGh2aWxrZSBhdHRyaWJ1dHRlciBzb20gc2thbCB2aXNlcy4gQ29uZmlnSXRlbS1hdHRyaWJ1dHRlciBtw6UgbGFncmVzIGVrc3BsaXNpdHQgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJzaWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3Iga2F0ZWdvcmllbmUgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIGtvbG9ubmVmaWx0cmVuZSBpIG92ZXJzaWt0ZW4gb3ZlciBzbcOlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLiBNZXJrOiBIdmlzIGR1IHNldHRlciAiQWN0aXZlIiB0aWwgMCwgdmlsIGRldCBiYXJlIGhpbmRyZSBhZ2VudGVyIGkgw6UgcmVkaWdlcmUgaW5uc3RpbGxpbmdlbmUgZm9yIGRlbm5lIGdydXBwZW4gaSBzaW5lIHBlcnNvbmxpZ2UgcHJlZmVyYW5zZXIsIG1lbiBkZXQgdmlsIGZvcnRzYXR0IHbDpnJlIG11bGlnIGZvciBhZG1pbmlzdHJhdG9yZXIgw6UgcmVkaWdlcmUgaW5uc3RpbGxpbmdlbmUgcMOlIHZlZ25lIGF2IGVuIGFubmVuIGJydWtlci4gQnJ1ayAiUHJlZmVyZW5jZUdyb3VwIiB0aWwgw6Uga29udHJvbGxlcmUgaSBodmlsa2V0IG9tcsOlZGUgZGlzc2UgaW5uc3RpbGxpbmdlbmUgc2thbCB2aXNlcyBpIGJydWtlcmdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIGRhc2hib3JkLWJhY2tlbmQgYXYga3VuZGVicnVrZXJsaXN0ZW92ZXJzaWt0ZW4gb3ZlciBhZ2VudGdyZW5zZXNuaXR0ZXQuICJMaW1pdCIgZXIgYW50YWxsZXQgb3BwZsO4cmluZ2VyIHNvbSB2aXNlcyBzb20gc3RhbmRhcmQuICJHcnVwcGUiIGJydWtlcyB0aWwgw6UgYmVncmVuc2UgdGlsZ2FuZ2VuIHRpbCBwbHVnaW4tbW9kdWxlbiAoZi5la3MuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJTdGFuZGFyZCIgYXZnasO4ciBvbSBwbHVnaW4tZW4gZXIgYWt0aXZlcnQgc29tIHN0YW5kYXJkIGVsbGVyIG9tIGJydWtlcmVuIG3DpSBha3RpdmVyZSBkZW4gbWFudWVsdC4gIkNhY2hlVFRMTG9jYWwiIGVyIGh1cnRpZ2J1ZmZlcnRpZGVuIGkgbWludXR0ZXIgZm9yIHBsdWdpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBkYXNoYm9yZC1iYWNrZW5kIGF2IGt1bmRlYnJ1a2VybGlzdGVvdmVyc2lrdGVuIG92ZXIgYWdlbnRncmVuc2Vzbml0dGV0LiAiTGltaXQiIGVyIGFudGFsbGV0IG9wcGbDuHJpbmdlciBzb20gdmlzZXMgc29tIHN0YW5kYXJkLiAiR3J1cHBlIiBicnVrZXMgdGlsIMOlIGJlZ3JlbnNlIHRpbGdhbmdlbiB0aWwgcGx1Z2luLW1vZHVsZW4gKGYuZWtzLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiU3RhbmRhcmQiIGF2Z2rDuHIgb20gcGx1Z2luLWVuIGVyIGFrdGl2ZXJ0IHNvbSBzdGFuZGFyZCBlbGxlciBvbSBicnVrZXJlbiBtw6UgYWt0aXZlcmUgZGVuIG1hbnVlbHQuICJDYWNoZVRUTExvY2FsIiBlciBodXJ0aWdidWZmZXJ0aWRlbiBpIG1pbnV0dGVyIGZvciBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgZmFyZ2VuZSBmb3IgZGlzdHJpYnVzam9uc3N0YXR1c2VuZSBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgZGlzdHJpYnVzam9uc3N0YXR1c2VuZSBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHRpbGdhbmdzZ3J1cHBlLWVrc2VtcGVsIGkgYXR0cmlidXR0ZW5lIGZvciBnZW5lcmVsbCBrYXRhbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIG5hdm5lbW9kdWxlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBudW1tZXJtb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3Igc2lkZW5lIChkZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHZpc2VzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgdmVyc2pvbnNzdHJlbmdtb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciB2ZXJzam9uc3N0cmVuZ21hbHZlcmt0w7h5bW9kdWxlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHZlcnNqb25zdXRsw7hzZXJlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVXRmw7hyZXIgZGVuIGtvbmZpZ3VyZXJ0ZSBoYW5kbGluZ2VuIGZvciBodmVyIGhlbmRlbHNlIChzb20gZW4gSW52b2tlcikgZm9yIGh2ZXIga29uZmlndXJlcnRlIHdlYnRqZW5lc3RlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnVGlsbGF0ZWxzZXNncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXRzIHZlZGxlZ2dzaGFuZGxpbmcgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIHPDuGsgZXR0ZXIgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc8O4a2Vza2plcm1lbiBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciB0cmV2aXNuaW5nIGF2IElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSB6b29tc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgTGVnZyB0aWwgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgUmVkaWdlciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgaGlzdG9yaWtrIGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgdXRza3JpZnQgYXYgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ07DuGR2ZW5kaWdlIHJldHRpZ2hldGVyIGZvciDDpSBzbGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O4ayBldHRlciBrb25maWd1cmFzam9uc2VuaGV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBbmdpIGhlbmRlbHNlc3N0YXR1cyBmb3IgZW4gQ0kgYXV0b21hdGlzayBuw6VyIGVuIFRpY2tldCBrb2JsZXMgdGlsIGVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2lyIGRpc3RyaWJ1c2pvbnNzdGF0dXMgaSBza2plcm1iaWxkZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdpciBoZW5kZWxzZXNzdGF0dXMgaSBza2plcm1iaWxkZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIHNvbSBnasO4ciBkZXQgbXVsaWcgw6Uga29ibGUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IHRpbCBldCBhbm5ldCBvYmpla3QgaSB6b29tdmlzbmluZ2VuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZsOlIHRpbGdhbmcgdGlsIGhpc3Rvcmlra2VuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBmw6UgdGlsZ2FuZyB0aWwgaGlzdG9yaWtrZW4gdGlsIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBzbGV0dGUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgdmlzZSBrb25maWd1cmFzam9uc2VsZW1lbnRsZW5rZW5lIHNvbSBlbiB0cmV2aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBkdXBsaXNlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBrb2JsaW5nIGkgbWVueWVuIGZvciDDpSBkdXBsaXNlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgcmVkaWdlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZ8OlIHRpbGJha2UgaSB6b29tdmlzbmluZ2VuIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBza3JpdmUgdXQgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIHpvb21lIGlubiBww6UgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIga29uZmlndXJlcmluZ3NlbGVtZW50ZXRzIGhpc3RvcmlrayAoaSBvbXZlbmR0IHJla2tlZsO4bGdlKSBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnU3RhbmRhcmRrYXRlZ29yaWVuIHNvbSB2aXNlcyBodmlzIGluZ2VuIGVyIHZhbGd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvcmVuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQsIGYuZWtzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmRpbm5zdGlsbGluZ2VuIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1V0bMO4c2VyIENvbmZpZ0l0ZW1GZXRjaC1pbnZva2F0b3JlbiBhdXRvbWF0aXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2pvbnNzdHJlbmd1dHRyeWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNqb25zc3RyZW5nbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2pvbnN1dGzDuHNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdPbSBmZWx0IHNrYWwgZnlsbGVzIHV0IGF1dG9tYXRpc2sgKDEpLCBvZyBpIHPDpSBmYWxsIG9nc8OlIHNranVsZXMgZm9yIHNha3Nmb3JtbGVuZSAoMikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09tIGtqw7hyaW5nZW4gYXYgQ29uZmlnSXRlbUFDTCBrYW4gdW5uZ8OlcyB2ZWQgw6Ugc2pla2tlIGJ1ZnJlZGUgZmVsdGF2aGVuZ2lnaGV0ZXIuIERldHRlIGthbiBmb3JiZWRyZSBpbm5sYXN0aW5nc3RpZGVuIGZvciBmb3JtdWxhcmVyLCBtZW4gbcOlIGRlYWt0aXZlcmVzIGh2aXMgQUNMTW9kdWxlcyBza2FsIGJydWtlcyBmb3IgSVRTTUNvbmZpZ0l0ZW0tIG9nIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdIdmlsa2VuIGdlbmVyZWxsIGluZm9ybWFzam9uIHNvbSB2aXNlcyBpIHRvcHB0ZWtzdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3Rpdic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogNDQsNDUgY20gKDE3LDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDgwLDAxIGNtICgzMSw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktdG9tbWVycyBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXRvbW1lcnMgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSB0b21tZXIgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10b21tZXJzIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdG9tbWVyICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbW1lciAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbW1lciAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogMTQ2LDY4IGNtICg1Nyw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0b21tZXIgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHRvbW1lciAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgdG9tbWVyICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHRvbW1lciAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0b21tZXIgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogMTcsNzggY20gKDcgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAzNSw1NiBjbSAoMTQgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSZWduc2thcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzc2V0aWxkZWxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cGUgYXBwYXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQmF0dGVyaWthcGFzaXRldCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcml0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnlnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2dyZW5zZXNuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9zZXNzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGV0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0ZXQgcGVyIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0bnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS29ydGxlc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0tvcnR0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnRzZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50cHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS3VuZGVrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLbG9ra2VmcmVrdmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kZXNpZ25lcmluZ3NzZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmFuc2V0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsZW50YXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IGRpc3RyaWJ1dMO4cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lcmjDpW5kdGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnS29udHJha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0tvbnRyYWt0c3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdLb250cmFrdHNwZXJpb2RlIGZyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdLb250cmFrdHNwZXJpb2RlIGZyZW0gdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1Ryw6VkbMO4cyB0ZWxlZm9uIChERUNULXRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0tvc3RuYWRzZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdBbnRhbGwgbGlzZW5zZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ09wcHJldHRlbHNlc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1RpbHBhc3NldCBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYWt0dXJhZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0byBmb3IgYmVzdGlsbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0byBmb3IgZ2FyYW50aXN0aWxsZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRvIGZvciB1dGdpdmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0YXNqb27DpnInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50c2lnbmVyaW5nc3NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RzZXJ0aWZpa2F0ZXIgKFMvTUlNRS1zZXJ0aWZpa2F0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0FyYmVpZHNhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdTbHV0dCBJUC1hZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnU2x1dHQgcMOlIHN0w7h0dGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVXRsw7hwc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Vrc3Rlcm4gaGFyZGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdCcmFubm11cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zhc3R2YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRW5lcmdpbGFncmluZyBtZWQgc3ZpbmdoanVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnR3JhdGlzIHByb2dyYW12YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVyZWxsIGluZm9ybWFzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ01hc2tpbnZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNYXNraW52YXJlbW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ01hc2tpbnZhcmUgVmVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSG9kZXRlbGVmb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZXRzLSBvZyB0aWxnYW5nc3N0eXJpbmcgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdGVyaW5nc2tvc3RuYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0Zha3R1cmFudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXR1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qtc2tqZXJtIChmbHl0ZW5kZSBrcnlzdGFsbHNramVybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1za2plcm0gKGx5c2Rpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdGYXN0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdCw6ZyYmFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnQnJlZGRlZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhZyAxOiBGeXNpc2sgbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhZyAyOiBEYXRhbGluay1sYWdldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnTGFnIDM6IE5ldHR2ZXJrc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYWcgMzogTmV0dHZlcmtzbGFnIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGFnIDQ6IFRyYW5zcG9ydGxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGFnIDU6IFNlc2pvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFnIDY6IFByZXNlbnRhc2pvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdMYWcgNzogQXBwbGlrYXNqb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0xlaWVhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXNlbnNhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpc2Vuc27DuGtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGlzZW5zIHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpc2Vuc3BlcmlvZGUgZnJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGlzZW5zcGVyaW9kZSBmcmVtIHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aXVtLWplcm5mb3NmYXRiYXR0ZXJpIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aXVtLWlvbi1iYXR0ZXJpIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTMOlbmVhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0xpZ2dlciBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xlbmdkZWdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2R1c2VudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWFrc2ltYWwgYmVsYXN0bmluZ3NrYXBhc2l0ZXQgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0h1a29tbWVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNaW5uZXR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbGxiZXNrcml2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdTa2plcm1vcHBsw7hzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdTa2plcm1zdMO4cnJlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOZXR0dmVyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR0dmVya3NpbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR0dmVya3NpbmZvcm1hc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0dHZlcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWthZG1pdW0tYmF0dGVyaSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0YWxsaHlkcmlkLWJhdHRlcmkgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0F2dGFsZSBvbSB0YXVzaGV0c3BsaWt0IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90YXRib2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdBbnRhbGwgcHJvc2Vzc29yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQW50YWxsIFJBTS1tb2R1bGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0FudGFsbCBncmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELXNramVybSAob3JnYW5pc2sgbHlzZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0RyaWZ0c2tvc3RuYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0aWxsaW5nc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FubmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVdGdhbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4tS09ERSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJza2Fwc2F2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb250eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnlzaXNrZSBramVybmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryw7htZm9yc3luaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS2rDuHB0IHDDpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnU3RhdGl2ZHliZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrLWVuaGV0ZXIgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtc2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnU2FsZ3Nrb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnRm9yc2VnbGV0IGJseXN5cmViYXR0ZXJpIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVycHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZSBUYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBzdGlra29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW12YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSMO4eXR0YWxlcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0xhZ3JpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdMYWdyaW5nc3BhcnRpc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RhdHRlcnNlbHNrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NhbW1lbmRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUeW5uIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVHLDpWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RvcmRlbmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsdCBncmFmaWtrb3J0LVJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWx0IFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdCZXLDuHJpbmdzc2tqZXJtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVMOlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1odWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1ob2Rlc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/nl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGdlbWVuZSBiZWRyaWpmc2dlZ2V2ZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0ZWxsaW5nZW4gdm9vciBpbmtvbWVuZGUgYWFudnJhYWdnZWdldmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0luc3RlbGxpbmdlbiB2b29yIHVpdGdhYW5kZSByZXNwb25zZ2VnZXZlbnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWd1cmF0aWUtaXRlbSBiZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdXaWp6aWcgZGVmaW5pdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdSb2xkZWZpbml0aWUgd2lqemlnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhc3NlbmJ1bmRlbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIaWVyIGt1bnQgdSBSZWFkeTJJbXBvcnQga2xhc3NlYnVuZGVscyBpbXBvcnRlcmVuIGRpZSBvbnplIG1lZXN0IGdlYnJ1aWtlbGlqa2UgY29uZmlndXJhdGllLWl0ZW1zIHRvbmVuLiBIb3VkIGVyIHJla2VuaW5nIG1lZSBkYXQgc29tbWlnZSBhYW52dWxsZW5kZSBjb25maWd1cmF0aWVzIG5vZGlnIGt1bm5lbiB6aWpuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdCZXN0YWFuZGUgZW50aXRlaXRlbiBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdCBrbGFzc2VidW5kZWxzIGltcG9ydGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWd1cmF0aWUgSXRlbSBLbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0ZXIgb3Aga2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3RlZXIgZWVuIGtsYXNzZSB1aXQgZGUgbGlqc3Qgb20gZWVuIG5pZXV3IGNvbmZpZ3VyYXRpZS1pdGVtIGFhbiB0ZSBtYWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNLWNvbmZpZ0l0ZW0gYnVsa2FjdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIG5hYXIgZWVuIGFuZGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnT25nZWxkaWcgQ29uZmlndXJhdGllIEl0ZW0gbnVtbWVyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdIZXQgbnVtbWVyIHZhbiBlZW4gYW5kZXIgY29uZmlndXJhdGllLWl0ZW0gb20gbWVlIHRlIGxpbmtlbi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdXaWx0IHUgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtIGVjaHQgdmVyd2lqZGVyZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlIG5hYW0gdmFuIGRpdCBjb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFhbSBpcyBhbCBpbiBnZWJydWlrIGRvb3IgZGUgQ29uZmlnSXRlbXMgbWV0IGRlIHZvbGdlbmRlIE51bW1lcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpZW51bW1lciB2YW4gZGl0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2llbnVtbWVyIGlzIGFsIGluIGdlYnJ1aWsgZG9vciBkZSBDb25maWdJdGVtcyBtZXQgaGV0IHZvbGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50c3RhdHVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdHZXNjaGllZGVuaXMgdmFuIENvbmZpZ3VyYXRpZS1pdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJbmhvdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0FhbmdlbWFha3Qgb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnRGV0YWlsb3ZlcnppY2h0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnR2VlbiBjb25maWcgaXRlbSBnZWdldmVucyBnZXZvbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY3RlZXIgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnWm9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ09vayBpbiBlZXJkZXJlIHZlcnNpZXMgem9la2VuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHZvb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RpZXB0ZSBOaXZlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdJbi0vdWl0em9vbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heC4ga29wcGVsaW5nc25pdmVhdSBiZXJlaWt0IHZvb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FjdHVlbGUgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdBY3R1ZWxlIGluY2lkZW50c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0xhYXN0ZSB3aWp6aWdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFhc3RlIHdpanppZ2luZyBkb29yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVXcgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSB6b2VrZW4nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1R5cGUgb2JqZWN0JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdGVyIG9wIHR5cGUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdEZSB2b2xnZW5kZSBrbGFzc2VuIHdvcmRlbiBnZcOvbXBvcnRlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0RlIHZvbGdlbmRlIHJvbGxlbiB3b3JkZW4gZ2XDr21wb3J0ZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdNZXJrIG9wIGRhdCBvb2sgb3ZlcmVlbmtvbXN0aWdlIGR5bmFtaXNjaGUgdmVsZGVuIGVuIEdlbmVyYWxDYXRhbG9nIGtsYXNzZW4gd29yZGVuIGFhbmdlbWFha3QgZW4gZGF0IGRlemUgbmlldCBhdXRvbWF0aXNjaCB3b3JkZW4gdmVyd2lqZGVyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdXaWwgamUgZG9vcmdhYW4/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1Zvb3JiZWVsZGtsYXNzZW4gbm9kaWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXRpZSBpcyBnZWVuIGdlbGRpZ2UgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ092ZXJ6aWNodDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdKZSBoZWJ0IHRlbiBtaW5zdGUgw6nDqW4gZ2VzZWxlY3RlZXJkIGNvbmZpZ3VyYXRpZS1pdGVtIG5vZGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0plIGhlYnQgZ2VlbiBzY2hyaWpmdG9lZ2FuZyB0b3QgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnRXIgaXMgZ2VlbiBkZWZpbml0aWUgZ2VkZWZpbmllZXJkIHZvb3Iga2xhc3NlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnIGl0ZW0gIiVzIiBuaWV0IGdldm9uZGVuIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0RlZmluaWVlcnQgaGV0IGFhbnRhbCByaWplbiB2b29yIGRlIENJLWRlZmluaXRpZS1lZGl0b3IgaW4gZGUgYmVoZWVyaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnR2VlbiB2ZXJzaWUgZ2V2b25kZW4gdm9vciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvZiBDbGFzc0lEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0VyIHdvcmR0IGdlZW4gdG9lZ2FuZyBnZWdldmVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdLYW4gZ2VzY2hpZWRlbmlzIG5pZXQgd2VlcmdldmVuLCBlciBpcyBnZWVuIENvbmZpZ0l0ZW1JRCBvcGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGdlc2NoaWVkZW5pcyBuaWV0IHdlZXJnZXZlbiwgZ2VlbiB0b2VnYW5nc3JlY2h0ZW4gZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05pZXV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmlldXdlIHZlcnNpZSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdGlvbnN0YXR1cyBiaWpnZXdlcmt0IChuaWV1dz0lcywgb3VkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbmNpZGVudCBzdGF0dXMgYmlqZ2V3ZXJrdCAobmlldXc9JXMsIG91ZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgdmVyd2lqZGVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgbmFhciAlcyAodHlwZT0lcykgdG9lZ2V2b2VnZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBuYWFyICVzICh0eXBlPSVzKSB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtIGRlZmluaXRpZSBiaWpnZXdlcmt0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYWFtIGJpamdld2Vya3QgKG5pZXV3PSVzLCBvdWQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXV0ICVzIGJpamdld2Vya3QgdmFuICIlcyIgbmFhciAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpZSAlcyB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9mIFZlcnNpb25JRCBvcGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0thbiBjb25maWcgaXRlbSBuaWV0IHRvbmVuLCBnZWVuIHRvZWdhbmdzcmVjaHRlbiBnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuaWV0IGdldm9uZGVuIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnYWZnZWRydWt0IGRvb3IgJXMgb3AgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW50aWUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdPbmdlbGRpZ2UgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdFciBpcyBnZWVuIENsYXNzSUQgZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdHZWVuIHRvZWdhbmdzcmVjaHRlbiB2b29yIGRlemUga2xhc3NlIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdHZWVuIHJlc3VsdGFhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgaXRlbSB6b2VrcmVzdWx0YXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGl0ZW0gbmlldCB3ZWVyZ2V2ZW4sIGVyIHppam4gZ2VlbiB0b2VnYW5nc3JlY2h0ZW4gdm9vciBDb25maWdJdGVtIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmlldCBnZXZvbmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnR2VlbiB2ZXJzaWVzIGdldm9uZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmVlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnd2FhcnNjaHV3aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlIHN0YXR1cyB2YW4gZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGUgaW5jaWRlbnRzdGF0dXMgdmFuIGRpdCBjb25maWd1cmF0aWUtaXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0dlZW4gdG9lc3RlbW1pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIG9uZ2VsZGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnWm9la3BhcmFtZXRlcnMgb25nZWxkaWchJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnV2VlcmdlZ2V2ZW4gY29uZmlndXJhdGllLWl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgaW56ZXRzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBodWlkaWcgaW5jaWRlbnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnVHVzc2VuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZXBlcmtpbmdlbiB2b29yIGhldCBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyIGtsYXNzZW4gb20gc2VsZWN0ZWVyYmFyZSBjb25maWd1cmF0aWUtaXRlbXMgdGUgYmVwZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlcGVya2luZ2VuIHZvb3IgaGV0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyIGtsYXNzZW4gb20gc2VsZWN0ZWVyYmFyZSBjb25maWd1cmF0aWUtaXRlbXMgdGUgYmVwZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzY2ggKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNjaCAodmVyc2llKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIHZlcndpanppbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnT2YgZGV6ZSBsaW5rIHZhbiB0b2VwYXNzaW5nIGlzIG9wIGhldCBDb25maWdJdGVtIG9mIGRlIHN0YXRpc2NoZSB2ZXJzaWUgdmFuIGhldCBvYmplY3Qgd2Fhcm5hYXIgdmVyd2V6ZW4gd29yZHQuIERlIGJlcmVrZW5pbmcgdmFuIGRlIGh1aWRpZ2UgaW5jaWRlbnR0b2VzdGFuZCB3b3JkdCBhbGxlZW4gdWl0Z2V2b2VyZCBvcCBkeW5hbWlzY2hlIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdGVlciBoZXQgYXR0cmlidXV0IHdhYXJvcCBkZSBjb25maWd1cmF0aWUtaXRlbXMgbW9ldGVuIHdvcmRlbiBkb29yem9jaHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzaXNzdHJ1Y3R1dXIgaXMgb25nZWxkaWcuIEdlZWYgZWVuIGhhc2ggbWV0IGdlZ2V2ZW5zIGluIFlBTUwtaW5kZWxpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRGUgWUFNTC1zdHJpbmcgYmVnaW5uZW4gbWV0IFwnLS0tXCcgaXMgdmVyZWlzdC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS29uIGRlIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayBuaWV0IHZlcndpamRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnRXIgemlqbiBnZWVuIHJlbGV2YW50ZSBkeW5hbWlzY2hlIHZlbGRlbiBnZXZvbmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0tvbiBuaWV0IGludm9lZ2VuIGluIGRlIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnMCByaWplbiBpbmdldm9lZ2QgaW4gZGUgdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltYWxlIGhvZXZlZWxoZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0JpamxhZ2VuIGltcG9ydGVyZW4vZXhwb3J0ZXJlbiAoYWxzIGxhYXRzdGUgaW52b2VyIHBlciByZWdlbCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaWUgU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0ZvdXQgYmlqIGhldCBzeW5jaHJvbmlzZXJlbiB2YW4gZGUgZGVmaW5pdGllcy4gQ29udHJvbGVlciBoZXQgbG9nYm9lay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdKZSBoZWJ0IElUU01Db25maWdJdGVtIGRlZmluaXRpZXMgZGllIG5pZXQgZ2VzeW5jaHJvbmlzZWVyZCB6aWpuLiBJbXBsZW1lbnRlZXIgamUgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2NoZSB2ZWxkd2lqemlnaW5nZW4uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdWZXJsb3Blbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0luIG9uZGVyaG91ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdHZXBsYW5uZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnSW4gcmVwYXJhdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdVaXRnZWZhc2VlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVyemljaHQgZW4gYmV2ZXN0aWdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnS2xhc3Nlbi9yb2xsZW4gZW4gaHVuIGdlcmVsYXRlZXJkZSB2ZWxkZW4gaW1wb3J0ZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0VyIGlzIGVlbiBmb3V0IG9wZ2V0cmVkZW4gdGlqZGVucyBoZXQgaW1wb3J0ZXJlbiB2YW4gZGUga2xhc3NlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVmVyYm9yZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBBZmdlYmVlbGQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01hYWt0IHVpdGdlYnJlaWRlIHpvZWt2b29yd2FhcmRlbiBtb2dlbGlqayBiaWogaGV0IHpvZWtlbiBuYWFyIGNvbmZpZyBpdGVtcyBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuIE1ldCBkZXplIGZ1bmN0aWUga3VuIGplIGJpanZvb3JiZWVsZCB6b2VrZW4gb3AgY29uZmlnIGl0ZW0gbmFhbSBtZXQgZGl0IHNvb3J0IGNvbmRpdGllcyB6b2FscyAiKCprZXkxKiYmKmtleTIqKSIgb2YgIigqa2V5MSp8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01hYWt0IHVpdGdlYnJlaWRlIHpvZWt2b29yd2FhcmRlbiBtb2dlbGlqayBiaWogaGV0IHpvZWtlbiBuYWFyIGNvbmZpZ3VyYXRpZXMgaW4gZGUga2xhbnRlbmludGVyZmFjZS4gTWV0IGRlemUgZnVuY3RpZSBrdW4gamUgYmlqdm9vcmJlZWxkIHpvZWtlbiBvcCBjb25maWcgaXRlbSBuYWFtIG1ldCBkaXQgc29vcnQgY29uZGl0aWVzIHpvYWxzICIoKmtleTEqJiYqa2V5MiopIiBvZiAiKCprZXkxKnwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVG9lZ2V3ZXplbiBDSVwncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJXCdzIHRvZWdld2V6ZW4gYWFuIGtsYW50YmVkcmlqZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJXCdzIHRvZWdld2V6ZW4gYWFuIGtsYW50Z2VicnVpa2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluc3RlbGxpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQ29udHJvbGVlciBhbGxlZW4gb3AgZWVuIHVuaWVrZSBuYWFtIGJpbm5lbiBkZXplbGZkZSBDb25maWdJdGVtLWtsYXNzZSAoXCdjbGFzc1wnKSBvZiBnbG9iYWFsIChcJ2dsb2JhbFwnKSwgd2F0IGJldGVrZW50IGRhdCBlbGsgYmVzdGFhbmQgQ29uZmlnSXRlbSBpbiBhYW5tZXJraW5nIHdvcmR0IGdlbm9tZW4gYmlqIGhldCB6b2VrZW4gbmFhciBkdXBsaWNhdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiBuYWFtZ2V2aW5nc3NjaGVtYSBhZiB0ZSBkd2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiBjaWpmZXJzY2hlbWEgYWYgdGUgZHdpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiB2ZXJzaWVzY2hlbWEgYWYgdGUgZHdpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdLaWVzIGtlbm1lcmtlbiBvbSBoZXQgYWFubWFrZW4gdmFuIGVlbiBuaWV1d2UgdmVyc2llIHRlIGFjdGl2ZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnS2llcyBjYXRlZ29yaWXDq24gb20gdG9lIHRlIHdpanplbiBhYW4gZGV6ZSBjb25maWcgaXRlbSBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9tIGNvbmZpZyBpdGVtIGZpbHRlcnMgdm9vciBDb25maWdJdGVtIE92ZXJ6aWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9tbWVuIGRpZSBrdW5uZW4gd29yZGVuIGdlZmlsdGVyZCBpbiBoZXQgY29uZmlnIGl0ZW0gb3ZlcnppY2h0IHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuIE9wbWVya2luZzogQWxsZWVuIENvbmZpZyBJdGVtIGF0dHJpYnV0ZW4gZW4gRHluYW1pc2NoZSB2ZWxkZW4gKER5bmFtaWNGaWVsZF9OYW1lWCkgemlqbiB0b2VnZXN0YWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdDb25maWd1cmF0aWUtaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIHRvZXZvZWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBiZXdlcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aWUtaXRlbSBnZWJldXJ0ZW5pc21vZHVsZSBkaWUgaGV0IGxvZ2dlbiBuYWFyIGdlc2NoaWVkZW5pcyBpbiBkZSBhZ2VudGludGVyZmFjZSBtb2dlbGlqayBtYWFrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIGRpZSBjb25maWcgaXRlbXMgYmlqd2Vya3QgbmFhciBodW4gaHVpZGlnZSBkZWZpbml0aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gZ2VzY2hpZWRlbmlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBhZmRydWtrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gem9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIGJvb21zdHJ1Y3R1dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgdmFuIGRlIHZvbGdlbmRlIGtsYXNzZW4gd29yZGVuIG5pZXQgb3BnZXNsYWdlbiBvcCBkZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gT20gZGl0IHRvZSB0ZSBwYXNzZW4gb3AgYmVzdGFhbmRlIENJcywgbW9ldCBkZSBDSS1taWdyYXRpZSB3b3JkZW4gdWl0Z2V2b2VyZCB2aWEgZGUgY29uc29sZSwgbmEgaGV0IHdpanppZ2VuIHZhbiBkZXplIG9wdGllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZXQgZGUgdm9sZ2VuZGUgZGVwbG95bWVudCBzdGF0ZXMgd29yZGVuIG5pZXQgb3BnZXNsYWdlbiBvcCBkZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gT20gZGl0IHRvZSB0ZSBwYXNzZW4gb3AgYmVzdGFhbmRlIENJcywgbW9ldCBkZSBDSS1taWdyYXRpZSB3b3JkZW4gdWl0Z2V2b2VyZCB2aWEgZGUgY29uc29sZSwgbmEgaGV0IHdpanppZ2VuIHZhbiBkZXplIG9wdGllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aWUgSXRlbSBMaW1pZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpZSBJdGVtIGxpbWlldCBwZXIgcGFnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2Ugdm9vciBjb25maWd1cmF0aWViZWhlZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBidWxrbW9kdWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aWUtaXRlbSB6b2VrIGJhY2tlbmQgcm91dGVyIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQWFubWFrZW4gZW4gYmVoZXJlbiB2YW4gZGVmaW5pdGllcyB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmXDq2VydCB0aWNrZXRzIHZvb3IgQ29uZmlnSXRlbXMgb3Agc3BlY2lmaWVrZSB0aWpkc3RpcHBlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xhbnRlbiBrdW5uZW4gaGlzdG9yaXNjaGUgQ0ktdmVyc2llcyB6aWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGFudGVuIGhlYmJlbiBkZSBtb2dlbGlqa2hlaWQgb20gaGFuZG1hdGlnIHRlIHdpc3NlbGVuIHR1c3NlbiBoaXN0b3Jpc2NoZSBDSS12ZXJzaWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYWFyZCBnZWdldmVucyBvbSB0ZSBnZWJydWlrZW4gb3AgYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gem9la3NjaGVybS4gVm9vcmJlZWxkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYWFyZCBnZWdldmVucyBvbSB0ZSBnZWJydWlrZW4gb3AgYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gem9la3NjaGVybS4gVm9vcmJlZWxkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZWVyIGFjdGllcyB3YWFyYmlqIGVlbiBpbnN0ZWxsaW5nZW5rbm9wIGJlc2NoaWtiYWFyIGlzIGluIGRlIHdpZGdldCB2YW4gZ2Vrb3BwZWxkZSBvYmplY3RlbiAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIb3VkIGVyIHJla2VuaW5nIG1lZSBkYXQgZGV6ZSBhY3RpZXMgZGUgdm9sZ2VuZGUgSlMtIGVuIENTUy1iZXN0YW5kZW4gbW9ldGVuIGhlYmJlbiBnZXJlZ2lzdHJlZXJkOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlbiBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllZXIgZWVuIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtYSB2b29yIHZlcnNpZXN0cmluZ3MuIEFsbGVlbiBnZWJydWlrdCBhbHMgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIGluZ2VzdGVsZCBvcCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5pZWVyIGVlbiBzZXQgdm9vcndhYXJkZW4gd2Fhcm9uZGVyIGVlbiBrbGFudCBlZW4gY29uZmlndXJhdGllLWl0ZW0gbWFnIHppZW4uIFZvb3J3YWFyZGVuIGt1bm5lbiBvcHRpb25lZWwgd29yZGVuIGJlcGVya3QgdG90IGJlcGFhbGRlIGtsYW50Z3JvZXBlbi4gTmFhbSBpcyBoZXQgZW5pZ2UgdmVycGxpY2h0ZSBhdHRyaWJ1dXQuIEFscyBlciBnZWVuIGFuZGVyZSBvcHRpZXMgd29yZGVuIGdlZ2V2ZW4sIHp1bGxlbiBhbGxlIGNvbmZpZ3VyYXRpZS1pdGVtcyB6aWNodGJhYXIgemlqbiBvbmRlciBkaWUgY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgdGUgdmVyd2lqZGVyZW4gbWV0IGJlaHVscCB2YW4gZGUgR2VuZXJpZWtlIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgdmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIElUU00tY29uZmlndXJhdGllLWl0ZW1zIG9wIHRlIGhhbGVuIG1ldCBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgdGUgZG9vcnpvZWtlbiBtZXQgYmVodWxwIHZhbiBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgaW4gdGUgc3RlbGxlbiBtZXQgYmVodWxwIHZhbiBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGVlbiBvdmVyemljaHRzbW9kdWxlIG9tIGRlIGtsZWluZSB3ZWVyZ2F2ZSB2YW4gZWVuIGxpanN0IG1ldCBjb25maWd1cmF0aWUtaXRlbXMgd2VlciB0ZSBnZXZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBvZiBkZSBsYWJlbHMgdmFuIGhldCBsaW5rdHlwZSBtb2V0ZW4gd29yZGVuIHdlZXJnZWdldmVuIGluIGRlIGtub29wcHVudHZlcmJpbmRpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgcmVndWxpZXJlIGV4cHJlc3NpZXMgYWZ6b25kZXJsaWprIHZvb3IgZWxrZSBDb25maWdJdGVtLWtsYXNzZSBvbSBkZSBDb25maWdJdGVtLW5hYW0gdGUgY29udHJvbGVyZW4gZW4gb3ZlcmVlbmtvbXN0aWdlIGZvdXRtZWxkaW5nZW4gd2VlciB0ZSBnZXZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGJlc2NoaWtiYXJlIGtvbG9tbWVuIHZhbiBDSXMgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kga2xhc3NlLiBFbGtlIGVudHJ5IG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHJlc3BlY3RlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBoZXQgc3RhbmRhYXJkIGNvbmZpZyBpdGVtIGF0dHJpYnV1dCB2b29yIGhldCBzb3J0ZXJlbiB2YW4gaGV0IGNvbmZpZyBpdGVtIHZhbiBoZXQgem9la3Jlc3VsdGFhdCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBoZXQgc3RhbmRhYXJkIGNvbmZpZyBpdGVtIGF0dHJpYnV1dCB2b29yIGNvbmZpZyBpdGVtIHNvcnRlcmluZyB2YW4gaGV0IGNvbmZpZyBpdGVtIHpvZWtyZXN1bHRhYXQgdmFuIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBoZXQgc3RhbmRhYXJkIGNvbmZpZyBpdGVtIGF0dHJpYnV1dCB2b29yIGhldCBzb3J0ZXJlbiB2YW4gaGV0IGNvbmZpZyBpdGVtIHpvZWtyZXN1bHRhYXQgdmFuIGRlemUgYmV3ZXJraW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBzdGFuZGFhcmQgdm9sZ29yZGUgdmFuIGNvbmZpZyBpdGVtcyBpbiBoZXQgem9la3Jlc3VsdGFhdCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLiBPbWhvb2c6IG91ZHN0ZSBib3ZlbmFhbi4gT21sYWFnOiBuaWV1d3N0ZSBib3ZlbmFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgc3RhbmRhYXJkIHZvbGdvcmRlIHZhbiBjb25maWcgaXRlbXMgaW4gaGV0IHpvZWtyZXN1bHRhYXQgdmFuIGRlIGtsYW50ZW5pbnRlcmZhY2UuIE9taG9vZzogb3Vkc3RlIGJvdmVuYWFuLiBPbWxhYWc6IG5pZXV3c3RlIGJvdmVuYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCB2b2xnb3JkZSB2YW4gY29uZmlndXJhdGllLWl0ZW1zIGluIGhldCB6b2VrcmVzdWx0YWF0IHZhbiBkZXplIGJld2Vya2luZy4gT21ob29nOiBvdWRzdGUgYm92ZW5hYW4uIE9tbGFhZzogbmlldXdzdGUgYm92ZW5hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCBnZXRvb25kZSBrb2xvbW1lbiB2YW4gQ0lzIGluIGhldCBjb25maWd1cmF0aWUtaXRlbSBvdmVyemljaHQsIGFmaGFua2VsaWprIHZhbiBkZSBDSSBrbGFzc2UuIEVsayBpdGVtIG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gdm9sZG9lbiBhYW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdCZXBhYWx0IGRlIHN0YW5kYWFyZCB0ZSB0b25lbiByZWxhdGllZGllcHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgZ2V0b29uZGUgY29uZmlnIGl0ZW0gem9la2tlbm1lcmsgdm9vciBoZXQgY29uZmlnIGl0ZW0gem9la3NjaGVybS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBnZXRvb25kZSBjb25maWcgaXRlbSB6b2Vra2VubWVyayB2b29yIGhldCBjb25maWcgaXRlbSB6b2Vrc2NoZXJtLiBWb29yYmVlbGQ6ICJLZXkiIG1vZXQgZGUgbmFhbSBoZWJiZW4gdmFuIGhldCBkeW5hbWlzY2hlIHZlbGQgaW4gZGl0IGdldmFsIFwnWFwnLCAiQ29udGVudCIgbW9ldCBkZSB3YWFyZGUgaGViYmVuIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkIGFmaGFua2VsaWprIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkdHlwZSwgVGV4dDogImVlbiB0ZWtzdCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGVuIG9mIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBzdWJvYmplY3QgdmFuIGRlIGtsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGJlc2NoaWtiYXJlIGtvbG9tbWVuIHZhbiBDSXMgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kga2xhc3NlLiBFbGtlIGVudHJ5IG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHJlc3BlY3RlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdCZXBhYWx0IGRlIGhvb2d0ZSB2b29yIGRlIHJpY2ggdGV4dCBlZGl0b3Jjb21wb25lbnQgdm9vciBkaXQgc2NoZXJtLiBWb2VyIGVlbiBnZXRhbCAocGl4ZWxzKSBvZiBlZW4gcHJvY2VudHVlbGUgd2FhcmRlIChyZWxhdGllZikgaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IGFhbnRhbCByaWplbiB2b29yIGRlIENJLWRlZmluaXRpZS1lZGl0b3IgaW4gZGUgYmVoZWVyaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZvbGdvcmRlIHZhbiBkZSBpbmNpZGVudHRvZXN0YW5kZW4gdmFuIGhvb2cgKGJpanYuIGNyaWNpdGFhbCkgbmFhciBsYWFnIChiaWp2LiBmdW5jdGlvbmVlbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSByZWxldmFudGUgZGVwbG95bWVudCBzdGF0ZXMgd2FhciBnZWtvcHBlbGRlIHRpY2tldHMgZGUgc3RhdHVzIHZhbiBlZW4gQ0kga3VubmVuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB6b2VrbGltaWV0IHZvb3IgaGV0IHNjaGVybSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgem9la2xpbWlldCB2b29yIGhldCBzY2hlcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBnZXRvb25kZSBrb2xvbW1lbiB2YW4gQ0lcJ3MgaW4gZGUga29wcGVsdGFiZWwgY29tcGxleGUgd2VlcmdhdmUgdm9vciBhbGxlIENJLWtsYXNzZW4uIEFscyBlciBnZWVuIGludm9lciBpcywgZGFuIHdvcmRlbiBkZSBzdGFuZGFhcmQga29sb21tZW4gZ2V0b29uZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgZ2V0b29uZGUga29sb21tZW4gdmFuIENJcyBpbiBkZSBsaW5rdGFiZWwgY29tcGxleGUgd2VlcmdhdmUsIGFmaGFua2VsaWprIHZhbiBkZSBDSS1rbGFzc2UuIEVsayBpdGVtIG1vZXQgdm9vcmFmZ2VnYWFuIHdvcmRlbiBkb29yIGRlIG5hYW0gdmFuIGRlIGtsYXNzZSBlbiBkdWJiZWxlIGR1YmJlbGUgcHVudGVuIChidi4gQ29tcHV0ZXI6OikuIEVyIHppam4gZWVuIHBhYXIgQ0ktYXR0cmlidXRlbiBkaWUgZ2VtZWVuc2NoYXBwZWxpamsgemlqbiB2b29yIGFsbGUgQ0lcJ3MgKHZvb3JiZWVsZCB2b29yIGRlIGtsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gT20gaW5kaXZpZHVlbGUgQ0ktQXR0cmlidXRlbiB0ZSB0b25lbiB6b2FscyBnZWRlZmluaWVlcmQgaW4gZGUgQ0ktZGVmaW5pdGllLCBtb2V0IGhldCB2b2xnZW5kZSBzY2hlbWEgZ2VicnVpa3Qgd29yZGVuICh2b29yYmVlbGQgdm9vciBkZSBrbGFzc2UgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdGVpdDo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXRlaXQ6OjEuIEFscyBlciBnZWVuIGludm9lciBpcyB2b29yIGVlbiBDSS1rbGFzc2UsIGRhbiB3b3JkZW4gZGUgc3RhbmRhYXJka29sb21tZW4gd2VlcmdlZ2V2ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCB3ZWxrZSBpdGVtcyBiZXNjaGlrYmFhciB6aWpuIHZvb3IgXCdBY3RpZVwnIG9wIGhldCBkZXJkZSBuaXZlYXUgdmFuIGRlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHV1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGtlIGl0ZW1zIGJlc2NoaWtiYWFyIHppam4gaW4gaGV0IGVlcnN0ZSBuaXZlYXUgdmFuIGRlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHV1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCB3ZWxrZSBpdGVtcyBiZXNjaGlrYmFhciB6aWpuIGluIGhldCB0d2VlZGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2VsayB0eXBlIGxpbmsgKGdlbm9lbWQgdmFudWl0IGhldCB0aWNrZXRwZXJzcGVjdGllZikgZGUgc3RhdHVzIHZhbiBlZW4gZ2Vrb3BwZWxkZSBDSSBrYW4gYmXDr252bG9lZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2VsayB0eXBlIHRpY2tldCBkZSBzdGF0dXMgdmFuIGVlbiBnZWtvcHBlbGRlIENJIGthbiBiZcOvbnZsb2VkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGllIGJpandlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gdmVyd2lqZGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdLbGV1ciB2YW4gZGUgaW56ZXRzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2VyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIHZlbGQgZXZlbnQgbW9kdWxlIGRpZSBjb25maWcgaXRlbSBkZWZpbml0aWVzIG1hcmtlZXJ0IGFscyBuaWV0IGdlc3luY2hyb25pc2VlcmQsIGFscyBkZSBkeW5hbWlzY2hlIHZlbGRlbiBkaWUgaGV0IGJldmF0IHZlcmFuZGVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIHZlbGRlbiBkaWUgd29yZGVuIHdlZXJnZWdldmVuIGluIGhldCBleHRyYSBJVFNNLXZlbGRzY2hlcm0gdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIHZlbGRlbiBkaWUgd29yZGVuIHdlZXJnZWdldmVuIGluIGhldCBzY2hlcm0gQ29uZmlnIGl0ZW1vdmVyemljaHQgdmFuIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIHZlbGRlbiBkaWUgd29yZGVuIHdlZXJnZWdldmVuIGluIGhldCB6b2Vrc2NoZXJtIHZvb3IgY29uZmlnIGl0ZW1zIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWFha3QgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIG1vZ2VsaWprLCB6b2RhdCBkZSBhZ2VudCBmcm9udGVuZCBhYW4gbWVlciBkYW4gw6nDqW4gY29uZmlndXJhdGllLWl0ZW0gdGVnZWxpamsga2FuIHdlcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1NjaGFrZWx0IGRlIGZ1bmN0aWUgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIGFsbGVlbiBpbiB2b29yIGRlIHZlcm1lbGRlIGdyb2VwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1NjaGFrZWx0IGRlIGZ1bmN0aW9uYWxpdGVpdCBpbiBvZiB1aXQgb20gSVRTTSBvbmZpZ3VyYXRpZSBpdGVtcyB0ZSBjb250cm9sZXJlbiBvcCB1bmlla2UgbmFtZW4uIFZvb3JkYXQgamUgZGV6ZSBvcHRpZSBpbnNjaGFrZWx0LCBtb2V0IGplIGplIHN5c3RlZW0gY29udHJvbGVyZW4gb3AgYmVzdGFhbmRlIGNvbmZpZ3VyYXRpZS1pdGVtcyBtZXQgZHViYmVsZSBuYW1lbi4gSmUga3VudCBkaXQgZG9lbiBtZXQgaGV0IGNvbnNvbGUgY29tbWFuZG8gQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdHZWJldXJ0ZW5pc21vZHVsZSBvbSBjb25maWdpdGVtLXN0YXR1cyBpbiB0ZSBzdGVsbGVuIG9wIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1ZlbGRlbiB2YW4gZGUgY29uZmlndXJhdGllLWl0ZW1pbmRleCwgZ2VicnVpa3Qgdm9vciBoZXQgem9la2VuIGluIGRlIHZvbGxlZGlnZSB0ZWtzdC4gVmVsZGVuIHdvcmRlbiBvb2sgb3BnZXNsYWdlbiwgbWFhciB6aWpuIG5pZXQgdmVycGxpY2h0IHZvb3IgZGUgYWxnZW1lbmUgZnVuY3Rpb25hbGl0ZWl0LiBIZXQgb3BuZW1lbiB2YW4gYmlqbGFnZW4ga2FuIHdvcmRlbiB1aXRnZXNjaGFrZWxkIGRvb3IgaGV0IGl0ZW0gb3AgMCB0ZSB6ZXR0ZW4gb2YgdGUgdmVyd2lqZGVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdWZWxkZW4gZGllIHppam4gb3BnZXNsYWdlbiBpbiBkZSBpbmRleCB2YW4gaGV0IGNvbmZpZ3VyYXRpZS1pdGVtIGVuIGRpZSB3b3JkZW4gZ2VicnVpa3Qgdm9vciBhbmRlcmUgZGluZ2VuIGRhbiB6b2VrZW4gaW4gZGUgdm9sbGVkaWdlIHRla3N0LiBWb29yIGRlIHZvbGxlZGlnZSBmdW5jdGlvbmFsaXRlaXQgemlqbiBhbGxlIHZlbGRlbiB2ZXJwbGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnVm9vciBlbGtlIHdlYnNlcnZpY2UgKGtleSkga2FuIGVlbiBhcnJheSB2YW4ga2xhc3NlbiAodmFsdWUpIHdvcmRlbiBnZWRlZmluaWVlcmQgd2Fhcm9wIGRlIGltcG9ydCB3b3JkdCBiZXBlcmt0LiBWb29yIGFsbGUgZ2Vrb3plbiBrbGFzc2VuLCBvZiBhbGxlIGJlc3RhYW5kZSBrbGFzc2VuIG1vZXRlbiBkZSBpZGVudGlmaWNlcmVuZGUgYXR0cmlidXRlbiB3b3JkZW4gZ2Vrb3plbiBpbiBkZSBjb25maWcgdmFuIGRlIGludm9rZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlcmVnaXN0cmF0aWUgdm9vciBkZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYWFnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlcmVnaXN0cmF0aWUgdm9vciBkZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYWFnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnT3ZlcnppY2h0IHZhbiBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09tdmF0IGRlcGxveW1lbnQgc3RhdGVzIGluIGhldCB6b2VrZW4gbmFhciBjb25maWd1cmF0aWUtaXRlbXMgaW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1c2llZiBpbmNpZGVudHRvZXN0YW5kZW4gaW4gaGV0IHpvZWtlbiBuYWFyIGNvbmZpZ3VyYXRpZXMgaW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW1hYW50YWwgY29uZmlndXJhdGllLWl0ZW1zIGRhdCBtb2V0IHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgcmVzdWx0YWF0IHZhbiBkZXplIGJld2Vya2luZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgb20gZGUgZ3JvZXAgdGUgY29udHJvbGVyZW4gZGllIHZlcmFudHdvb3JkZWxpamsgaXMgdm9vciBlZW4ga2xhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgb20gZGUgZ3JvZXAgdGUgY29udHJvbGVyZW4gZGllIHZlcmFudHdvb3JkZWxpamsgaXMgdm9vciBlZW4gY29uZmlndXJhdGllLWl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHZvb3IgaGV0IGdlbmVyZXJlbiB2YW4gSVRTTS1jb25maWd1cmF0aWVzdGF0aXN0aWVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFhbSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWFudGFsIGNvbmZpZ3VyYXRpZS1pdGVtcyBkYXQgbW9ldCB3b3JkZW4gd2VlcmdlZ2V2ZW4gb3AgZWxrZSBwYWdpbmEgdmFuIGVlbiB6b2VrcmVzdWx0YWF0IGluIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBYW50YWwgY29uZmlndXJhdGllLWl0ZW1zIGRhdCBtb2V0IHdvcmRlbiB3ZWVyZ2VnZXZlbiBvcCBlbGtlIHBhZ2luYSB2YW4gZWVuIHpvZWtyZXN1bHRhYXQgaW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplY3RlbiB3YWFybmFhciBnZXpvY2h0IG1vZXQgd29yZGVuLCBob2V2ZWVsIGl0ZW1zIGVuIHdlbGtlIGF0dHJpYnV0ZW4gZ2V0b29uZCBtb2V0ZW4gd29yZGVuLiBDb25maWdJdGVtLWF0dHJpYnV0ZW4gbW9ldGVuIGV4cGxpY2lldCB3b3JkZW4gb3BnZXNsYWdlbiB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnT3ZlcnppY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIGNhdGVnb3JpZcOrbiB2b29yIGNvbmZpZyBpdGVtIGtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbiB3ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBrb2xvbWZpbHRlcnMgdmFuIGhldCBrbGVpbmUgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQuIExldCBvcDogYWxzIGplIFwnQWN0aWVmXCcgb3AgMCB6ZXQsIGt1bm5lbiBhZ2VudHMgYWxsZWVuIGRlIGluc3RlbGxpbmdlbiB2YW4gZGV6ZSBncm9lcCBuaWV0IGJld2Vya2VuIGluIGh1biBwZXJzb29ubGlqa2Ugdm9vcmtldXJlbiwgbWFhciBrdW5uZW4gYmVoZWVyZGVycyB3ZWwgZGUgaW5zdGVsbGluZ2VuIHZhbiBlZW4gYW5kZXJlIGdlYnJ1aWtlciBiZXdlcmtlbi4gR2VicnVpayBcJ1ByZWZlcmVuY2VHcm91cFwnIG9tIHRlIGJlcGFsZW4gaW4gd2VsayBnZWJpZWQgZGV6ZSBpbnN0ZWxsaW5nZW4gbW9ldGVuIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBkZSBnZWJydWlrZXJzaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgaW56ZXRzdGF0dXNzZW4ga2xldXJlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBpbnpldHN0YXR1c3NlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgdm9vcmJlZWxkIHBlcmltc3NpZWdyb2VwZW4gdmFuIGRlIGFsZ2VtZW5lIGNhdGFsb2cgYXR0cmlidXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgbmFhbW1vZHVsZSB2b29yIGNvbmZpZyBpdGVtIGtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgbnVtbWVybW9kdWxlIHZvb3IgY29uZmlnIGl0ZW1rbGFzc2VuIGluIGRlIHZvb3JrZXVyZW53ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBwYWdpbmFcJ3MgKHdhYXJvcCBkZSBjb25maWd1cmF0aWUtaXRlbXMgd29yZGVuIHdlZXJnZWdldmVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZSBzdHJpbmcgbW9kdWxlIHZvb3IgY29uZmlnIGl0ZW0ga2xhc3NlbiBpbiBkZSB2b29ya2V1cmVuIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZSBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW4gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZWFjdGl2ZXJpbmcgdm9vciBjb25maWcgaXRlbWtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdWb2VydCBkZSBnZWNvbmZpZ3VyZWVyZGUgYWN0aWUgdWl0IHZvb3IgZWxrZSBnZWJldXJ0ZW5pcyAoYWxzIEludm9rZXIpIHZvb3IgZWxrZSBnZWNvbmZpZ3VyZWVyZGUgd2Vic2VydmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1Blcm1pc3NpZSBncm9lcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gZGUgSVRTTSBjb25maWd1cmF0aWUgaXRlbSBhdHRhY2htZW50IGFjdGllIHRlIGdlYnJ1aWtlbiBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllLWl0ZW0gc2NoZXJtIGluIGRlIGFnZW50IGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCB6b2Vrc2NoZXJtIHZvb3IgSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgaW4gZGUgYWdlbnRpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgem9la3NjaGVybSB2b29yIElUU00tY29uZmlndXJhdGllLWl0ZW1zIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgSVRTTS1jb25maWd1cmF0aWUgaXRlbSBib29tc3RydWN0dXVyIHNjaGVybSB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllIGl0ZW0gem9vbXNjaGVybSB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgc2NoZXJtIElUU00tY29uZmlndXJhdGllLWl0ZW0gdG9ldm9lZ2VuIGluIGRlIGFnZW50aW50ZXJmYWNlIHRlIGdlYnJ1aWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBidWxrIElUU00tY29uZmlndXJhdGllLWl0ZW0gc2NoZXJtIGluIGRlIGFnZW50IGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgc2NoZXJtIElUU00tY29uZmlndXJhdGllLWl0ZW0gYmV3ZXJrZW4gaW4gZGUgYWdlbnRpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllLWl0ZW0gZ2VzY2hpZWRlbmlzIHNjaGVybSBpbiBkZSBhZ2VudCBpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBzY2hlcm0gbWV0IElUU00tY29uZmlndXJhdGllLWl0ZW1zIGFmZHJ1a2tlbiB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdWZXJlaXN0ZSBwcml2aWxlZ2VzIG9tIGNvbmZpZyBpdGVtcyB0ZSB2ZXJ3aWpkZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDb25maWd1cmF0aWUtaXRlbXMgem9la2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU3RlbCBkZSBpbmNpZGVudHN0YXR1cyB2YW4gZWVuIENJIGF1dG9tYXRpc2NoIGluIHdhbm5lZXIgZWVuIHRpY2tldCBpcyBnZWtvcHBlbGQgYWFuIGVlbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGVsdCBkZSB1aXRyb2xzdGF0dXMgaW4gaGV0IGJ1bGtzY2hlcm0gdm9vciBjb25maWd1cmF0aWUtaXRlbXMgdmFuIGRlIGFnZW50aW50ZXJmYWNlIGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGVsdCBkZSBpbmNpZGVudHN0YXR1cyBpbiBpbiBoZXQgYnVsa3NjaGVybSB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcyB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgd2Fhcm1lZSBlZW4gY29uZmlndXJhdGllLWl0ZW0ga2FuIHdvcmRlbiBnZWtvcHBlbGQgYWFuIGVlbiBhbmRlciBvYmplY3QgaW4gZGUgem9vbXdlZXJnYXZlIHZhbiBoZXQgY29uZmlndXJhdGllLWl0ZW0gaW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgdm9vciB0b2VnYW5nIHRvdCBkZSBnZXNjaGllZGVuaXMgdmFuIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgdm9vciB0b2VnYW5nIHRvdCBkZSBnZXNjaGllZGVuaXMgdmFuIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSB0ZSB2ZXJ3aWpkZXJlbiBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZGUgbGlua3MgbmFhciBjb25maWd1cmF0aWUtaXRlbXMgd2VlciB0ZSBnZXZlbiBhbHMgZWVuIGJvb21zdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZWVuIGNvbmZpZ3VyYXRpZSBpdGVtIHRlIGR1cGxpY2VyZW4gaW4gaGV0IGNvbmZpZ3VyYXRpZSBpdGVtIG92ZXJ6aWNodCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBlZW4gY29uZmlndXJhdGllIGl0ZW0gdGUgZHVwbGljZXJlbiBpbiBkZSB6b29tIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBlZW4gY29uZmlndXJhdGllLWl0ZW0gdGUgYmV3ZXJrZW4gaW4gZGUgem9vbXdlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIHRlcnVnIHRlIGdhYW4gaW4gZGUgY29uZmlndXJhdGllIGl0ZW0gem9vbSB3ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSBhZiB0ZSBkcnVra2VuIGluIGRlIHpvb213ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gaW4gdGUgem9vbWVuIG9wIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGRlIGNvbmZpZyBpdGVtIGdlc2NoaWVkZW5pcyAob21nZWtlZXJkIGdlb3JkZW5kKSBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RlIHN0YW5kYWFyZGNhdGVnb3JpZSBkaWUgd29yZHQgd2VlcmdlZ2V2ZW4gYWxzIGVyIGdlZW4gaXMgZ2VzZWxlY3RlZXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRGUgaWRlbnRpZmllciB2b29yIGVlbiBjb25maWd1cmF0aWUtaXRlbSwgYmlqdi4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIERlIHN0YW5kYWFyZHdhYXJkZSBpcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdUcmlnZ2VydCBhdXRvbWF0aXNjaCBDb25maWdJdGVtRmV0Y2ggaW52b2tlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpZSBTdHJpbmcgVWl0ZHJ1a2tpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2llIFN0cmluZyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2llIHRyZWtrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09mIGhldCB1aXR2b2VyZW4gdmFuIENvbmZpZ0l0ZW1BQ0wgdmVybWVkZW4ga2FuIHdvcmRlbiBkb29yIHZlbGRhZmhhbmtlbGlqa2hlZGVuIGluIGRlIGNhY2hlIHRlIGNvbnRyb2xlcmVuLiBEaXQga2FuIGRlIGxhYWR0aWpkIHZhbiBmb3JtdWxpZXJlbiB2ZXJiZXRlcmVuLCBtYWFyIG1vZXQgdWl0Z2VzY2hha2VsZCB3b3JkZW4gYWxzIEFDTE1vZHVsZXMgZ2VicnVpa3QgbW9ldGVuIHdvcmRlbiB2b29yIElUU01Db25maWdJdGVtLSBlbiBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnV2Vsa2UgYWxnZW1lbmUgaW5mb3JtYXRpZSB3b3JkdCB3ZWVyZ2VnZXZlbiBpbiBkZSBrb3B0ZWtzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnd2VyZWxkd2lqZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aWVmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aWVmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aWVmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluY2ggKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW5jaCAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbmNoICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktaW5jaCByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtaW5jaCByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluY2ggKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1pbmNoIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW5jaCAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaCAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW5jaCAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluY2ggKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW5jaCAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW5jaCAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW5jaCAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW5jaCAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaCAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluY2ggKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW5jaCAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbmNoICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbmNoICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2ggKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluY2ggKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluY2ggKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW5jaCAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNoICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluY2ggKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0JvZWtob3VkaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXN0b2V3aWp6aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdCZWhlZXJkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nZSB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBhcHBhcmFhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWNjdWNhcGFjaXRlaXQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJpanR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdHZWJvdXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1c2ludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVS1rbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaXRlaXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXRlaXQgcGVyIGdyYWZpc2NoZSBrYWFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0thYXJ0bnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FhcnRsZXplcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYWFydHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsYW50Y2VydGlmaWNhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIHZvb3Iga2xhbnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUga2xhbnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLbG9rc25lbGhlaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0tsb2tzbmVsaGVpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ29kZSBvbmRlcnRla2VuZW5kZSBjZXJ0aWZpY2F0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0NvbmZlcmVudGlldGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBZHZpZXNvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ05lZW0gY29udGFjdCBvcCBtZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ05lZW0gY29udGFjdCBvcCBtZXQgZGlzdHJpYnV0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnQmVoZWVyIHZhbiBjb250YWluZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cGUgY29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdDb250cmFjdHBlcmlvZGUgdmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0NvbnRyYWN0cGVyaW9kZSB0b3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnRHJhYWRsb3plIHRlbGVmb29uIChERUNULXRlbGVmb29uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0ZW5lZW5oZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQWFudGFsIGxpY2VudGllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnQWFubWFha2RhdHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdSZWsgb3AgbWFhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBHZXJlc2VydmVlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1zZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIGZhY3R1dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIGJlc3RlbGxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdHVtIHZhbiBnYXJhbnRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXR1bSB2YW4gdWl0Z2F2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdGVuIHZvb3IgZG9jdW1lbnRvbmRlcnRla2VuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSS1yZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbGNlcnRpZmljYXRlbiAoUy9NSU1FLWNlcnRpZmljYXRlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQXJiZWlkc292ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0lQLWFkcmVzIGVpbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRWluZGUgb25kZXJzdGV1bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1ZlcnZhbGRhdHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm5lIGhhcmRlIHNjaGlqZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdWbGllZ3dpZWwgRW5lcmdpZW9wc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ1Zvcm1mYWN0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZW92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0FsZ2VtZW5lIGluZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaXNjaGUga2FhcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlzY2hlIGthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkd2FyZW1vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0dld2ljaHQgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hvb2ZkdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1wcm90b2NvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZWl0cy0gZW4gdG9lZ2FuZ3NiZWhlZXIgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFyaXNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0ZXJpbmdza29zdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFjdHV1cm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RvZXRzZW5ib3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1tb25pdG9yICh2bG9laWJhYXIta3Jpc3RhbHNjaGVybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yIChsaWNodGVtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdWYXN0ZSB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdCcmVlZHRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGFhZyAxOiBGeXNpZWtlIGxhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFhZyAyOiBEYXRhbGlua2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhYWcgMzogbmV0d2Vya2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFhZyAzOiBuZXR3ZXJrbGFhZyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhYWcgNDogVHJhbnNwb3J0bGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGFhZyA1OiBTZXNzaWVsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhYWcgNjogUHJlc2VudGF0aWVsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFhZyA3OiBUb2VwYXNzaW5nc2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnSHV1cm92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VudGllb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnRpZXNsZXV0ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW50aWUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW50aWVwZXJpb2RlIHZhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VudGllcGVyaW9kZSB0b3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0taWp6ZXJmb3NmYWF0YmF0dGVyaWogKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbiAoTGktaW9uKSBiYXR0ZXJpaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xlbmluZ3NvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0dldmVzdGlnZCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMZW5ndGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpa2FudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWF4aW1hYWwgZHJhYWd2ZXJtb2dlbiAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnR2VoZXVnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUeXBlIGdlaGV1Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmllbCBudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWVsIGluZ2ViZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsIEJlc2NocmlqdmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9ycmVzb2x1dGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ0FmbWV0aW5nIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOZXR3ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHdlcmsgaW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnTmV0d2Vya2luZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHdlcmtsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWNhZG1pdW1iYXR0ZXJpaiAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWxtZXRhYWxoeWRyaWRlIChOaU1IKSBiYXR0ZXJpaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdHZWhlaW1ob3VkaW5nc292ZXJlZW5rb21zdCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQWFudGFsIENQVVwncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdBYW50YWwgUkFNLW1vZHVsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQWFudGFsIGdyYWZpc2NoZSBrYWFydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELW1vbml0b3IgKG9yZ2FuaXNjaGUgbGljaHRlbWl0dGVyZW5kZSBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQmVkcmlqZnNrb3N0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdGVsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3ZlcmlnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVWl0Z2FuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzY2hhcHNvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9vbm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvb24gVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Z5c2lla2Uga2VybmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryb29tdm9vcnppZW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdHZWtvY2h0IGJpaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnRGllcHRlIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ0VlbmhlZGVuIHJlayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0thbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUy1jZXJ0aWZpY2F0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdWZXJrb29wY29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaWV0IHRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1ZlcnplZ2VsZGUgbG9vZHp1dXJiYXR0ZXJpaiAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlcmllbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlciBTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNldGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cGUgc3RvcGNvbnRhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0x1aWRzcHJla2Vycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFkcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdPcHNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdPcHNsYWdwYXJ0aXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RvY2h0ZXJvbmRlcm5lbWluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtZW52YXR0aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0RyYWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhYWwgUkFNLWdlaGV1Z2VuIGdyYWZpc2NoZSBrYWFydCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWFsIFJBTS1nZWhldWdlbiAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbiBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9yZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1odWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1rb3B0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/pl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPZ8OzbG5lIGRhbmUgb3BlcmFjeWpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnVXN0YXdpZW5pYSBkbGEgcHJ6eWNob2R6xIVjeWNoIGRhbnljaCDFvMSFZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdVc3Rhd2llbmlhIHd5Y2hvZHrEhWN5Y2ggZGFueWNoIG9kcG93aWVkemknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabWllxYQgZGVmaW5pY2rEmSBrbGFzeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm1pYW5hIGRlZmluaWNqaSByb2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFraWV0eSBrbGFzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1dGFqIG1vxbxuYSBpbXBvcnRvd2HEhyBwYWtpZXR5IGtsYXMgUmVhZHkySW1wb3J0IHByZXplbnR1asSFY2UgbmFzemUgbmFqYmFyZHppZWogdHlwb3dlIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaS4gTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgbW/FvGUgYnnEhyB3eW1hZ2FuYSBkb2RhdGtvd2Ega29uZmlndXJhY2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBa3R1YWxpemFjamEgaXN0bmllasSFY3ljaCBwb2RtaW90w7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dWogcGFraWV0eSBrbGFzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc2EgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1JvbGEgZWxlbWVudHUga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIGRsYSBrbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1phem5hY3oga2xhc8SZIG5hIGxpxZtjaWUgYWJ5IHV0d29yennEhyBub3dlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnQWtjamEgZ3J1cG93YSBuYSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUG/FgsSFY3ogeiBpbm55bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmllcHJhd2lkxYJvd3kgbnVtZXIgQ0khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bWVyIGlubmVnbyBlbGVtZW50dSBrb25maWd1cmFjamksIHoga3TDs3J5bSBuYWxlxbx5IHNpxJkgcG/FgsSFY3p5xIcuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQ3p5IG5hcHJhd2TEmSBjaGNlc3ogdXN1bsSFxIcgdGVuIGVsZW1lbnQga29uZmlndXJhY2ppPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXp3YSB0ZWdvIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYXp3YSBqZXN0IGp1xbwgdcW8eXdhbmEgcHJ6ZXogQ0kgbyBuYXN0xJlwdWrEhWN5Y2ggbnVtZXJhY2g6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnV2Vyc2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW1lciB3ZXJzamkgdGVnbyBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOdW1lciB3ZXJzamkgamVzdCBqdcW8IHXFvHl3YW55IHByemV6IENvbmZpZ0l0ZW1zIHogbmFzdMSZcHVqxIVjeW0gbnVtZXJlbSAobnVtZXJhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnWmF3YXJ0b8WbxIcgaGlzdG9yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1V0d29yem9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdXaWRvayBzemN6ZWfDs8WCb3d5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0xpY3piYSBDSSBuYSBzdHJvbmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOaWUgem5hbGV6aW9ubyBkYW55Y2ggZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1d5YmllcnogdGVuIGVsZW1lbnQga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVXJ1Y2hvbSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnVXd6Z2zEmWRuacSHIHBvcHJ6ZWRuaWUgd2Vyc2plPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGRsYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnUG96aW9tIGfFgsSZYm9rb8WbY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQb3dpxJlrc3phbmllL3VzdXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ09zacSFZ25pxJl0byBtYWtzeW1hbG55IHBvemlvbSBsaW5rw7N3IGRsYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgbyBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1YWxueSBzdGFuIHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVhbG55IHN0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnT3N0YXRuaW8gem1pZW5pb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSBwcnpleic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0VsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdXeXN6dWtpd2FuaWUgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVHlwIG9iaWVrdHUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cnVqIHBvIHR5cGllJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnWmFpbXBvcnRvd2FuZSB6b3N0YW7EhSBuYXN0xJlwdWrEhWNlIGtsYXN5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1phaW1wb3J0b3dhbmUgem9zdGFuxIUgbmFzdMSZcHVqxIVjZSByb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05hbGXFvHkgcGFtacSZdGHEhywgxbxlIHpvc3RhbsSFIHLDs3duaWXFvCB1dHdvcnpvbmUgb2Rwb3dpZWRuaWUgcG9sYSBkeW5hbWljem5lIGkga2xhc3kgR2VuZXJhbENhdGFsb2csIGt0w7NyZSBuaWUgem9zdGFuxIUgYXV0b21hdHljem5pZSB1c3VuacSZdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ3p5IGNoY2VzeiBrb250eW51b3dhxIc/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lZWQgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaWNqYSBuaWUgamVzdCBwcmF3aWTFgm93eW0gaGFzaGVtIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUHJ6ZWdsxIVkOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnUG90cnplYm55IGplc3QgY28gbmFqbW5pZWogamVkZW4gd3licmFueSBlbGVtZW50IGtvbmZpZ3VyYWNqaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOaWUgbWFzeiBkb3N0xJlwdSBkbyB6YXBpc3UgdGVnbyBlbGVtZW50dSBrb25maWd1cmFjamk6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOaWUgemRlZmluaW93YW5vIGRlZmluaWNqaSBkbGEga2xhc3kgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNqaSAiJXMiIG5pZSB6b3N0YcWCIHpuYWxlemlvbnkgdyBiYXppZSBkYW55Y2ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmllIHVkYcWCbyBzacSZIHVzdW7EhcSHIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05pZSB6bmFsZXppb25vIHdlcnNqaSBkbGEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgYW5pIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdCcmFrIGRvc3TEmXB1ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBoaXN0b3JpaSwgbmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIG1vxbxuYSB3ecWbd2lldGxpxIcgaGlzdG9yaWksIG5pZSBwb2Rhbm8gcHJhdyBkb3N0xJlwdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vd3kgZWxlbWVudCBrb25maWd1cmFjamkgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm93YSB3ZXJzamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1pha3R1YWxpem93YW5vIHN0YW4gd2Ryb8W8ZW5pYSAobm93eT0lcywgc3Rhcnk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1pha3R1YWxpem93YW5vIHN0YW4gaW5jeWRlbnR1IChub3d5PSVzLCBzdGFyeT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdVc3VuacSZdG8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnRG9kYW5vIGxpbmsgZG8gJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIGRvICVzICh0eXBlPSVzKSB1c3VuacSZdHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ1pha3R1YWxpem93YW5vIGRlZmluaWNqxJkgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmF6d2EgemFrdHVhbGl6b3dhbmEgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cnlidXQgJXMgemFrdHVhbGl6b3dhbnkgeiAiJXMiIGRvICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnV2Vyc2phICVzIHVzdW5pxJl0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCBsdWIgVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBlbGVtZW50dSBrb25maWd1cmFjamksIG5pZSBwb2Rhbm8gcHJhdyBkb3N0xJlwdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmllIHpvc3RhxYIgem5hbGV6aW9ueSB3IGJhemllIGRhbnljaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICd3eWRydWtvd2FueSBwcnpleiAlcyB3ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdQb2Rwb3dpZWR6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ05pZXByYXdpZMWCb3d5IGlkZW50eWZpa2F0b3IgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTmllIHByenl6bmFubyBwcmF3IGRvc3TEmXB1IGRsYSB0ZWoga2xhc3khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdCcmFrIFd5bmlrw7N3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1d5bmlraSB3eXN6dWtpd2FuaWEgcG96eWNqaSBrb25maWd1cmFjamknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGVsZW1lbnR1LCBuaWUgcG9kYW5vIHByYXcgZG9zdMSZcHUgZG8gQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnTmllIHpuYWxlemlvbm8gZWxlbWVudHUgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmllIHpuYWxlemlvbm8gxbxhZG55Y2ggd2Vyc2ppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ29zdHJ6ZcW8ZW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY3lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGFuIHdkcm/FvGVuaWEgdGVnbyBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW4gemRhcnplbmlhIHRlZ28gQ0knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdCcmFrIHVwcmF3bmllxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHIgbmllcHJhd2lkxYJvd3khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbWV0cnkgd3lzenVraXdhbmlhIHPEhSBuaWVwcmF3aWTFgm93ZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdXecWbd2lldGxhbmUgZWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cCBzdGFudSB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0FrdHVhbG55IHR5cCBzdGFudSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdQb21pxJlkenknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09ncmFuaWN6ZW5pYSBrbGFzeSBkbGEgZWxlbWVudHUga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdXeWJpZXJ6IGplZG7EhSBsdWIgd2nEmWNlaiBrbGFzLCBhYnkgb2dyYW5pY3p5xIcgd3liaWVyYW5lIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT2dyYW5pY3plbmlhIGtsYXN5IGRsYSBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdXeWJpZXJ6IGplZG7EhSBsdWIgd2nEmWNlaiBrbGFzLCBhYnkgb2dyYW5pY3p5xIcgd3liaWVyYW5lIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWN6bnkgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHdlcnNqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwIG9kbm/Fm25pa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGN6eSBwb3dpxIV6YW5pZSBkb3R5Y3p5IENvbmZpZ0l0ZW0sIGN6eSBzdGF0eWN6bmVqIHdlcnNqaSBvYmlla3R1IG9kbmllc2llbmlhLiBPYmxpY3phbmllIGJpZcW8xIVjZWdvIHN0YW51IGluY3lkZW50dSBqZXN0IHd5a29ueXdhbmUgdHlsa28gdyBwcnp5cGFka3UgxYLEhWN6eSBkeW5hbWljem55Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnV3liaWVyeiBhdHJ5YnV0LCB3ZWTFgnVnIGt0w7NyZWdvIGLEmWTEhSB3eXN6dWtpd2FuZSBlbGVtZW50eSBrb25maWd1cmFjamknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWt0dXJhIGJhem93YSBqZXN0IG5pZXByYXdpZMWCb3dhLiBQb2RhaiBoYXNoIHogZGFueW1pIHcgZm9ybWFjaWUgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdXeW1hZ2FuZSBqZXN0IHJvenBvY3rEmWNpZSBjacSFZ3UgWUFNTCBvZCAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmllIG1vxbxuYSB3eWN6ecWbY2nEhyB0YWJlbGkgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmllIHpuYWxlemlvbm8gb2Rwb3dpZWRuaWNoIHDDs2wgZHluYW1pY3pueWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmllIG1vxbxuYSB3c3Rhd2nEhyBkbyB0YWJlbGkgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdXc3Rhd2lvbm8gMCB3aWVyc3p5IGRvIHRhYmVsaSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrc3ltYWxuYSBsaWN6YmEgd3lzdMSFcGllxYQgcG9qZWRueWN6ZWdvIGVsZW1ldG50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnQvZWtzcG9ydCB6YcWCxIVjem5pa8OzdyAoamFrbyBvc3RhdG5pZSB3cGlzeSB3IHdpZXJzenUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnQ2nEhWcgem5ha8OzdyB3ZXJzamknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnQsWCxIVkIHN5bmNocm9uaXphY2ppIGRlZmluaWNqaS4gU3ByYXdkxbogZHppZW5uaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnTWFzeiBkZWZpbmljamUgSVRTTUNvbmZpZ0l0ZW0sIGt0w7NyZSBuaWUgc8SFIHpzeW5jaHJvbml6b3dhbmUuIE5hbGXFvHkgd2Ryb8W8ecSHIHptaWFueSBwb2xhIGR5bmFtaWN6bmVnbyBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1d5Z2FzxYJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVXRyenltYW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90YcW8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFub3dhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnTmFwcmF3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnV3ljb2ZhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUHJ6ZWdsxIVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQcnplZ2zEhWQgaSBwb3R3aWVyZHplbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydG93YW5pZSBrbGFzL3LDs2wgaSBwb3dpxIV6YW55Y2ggeiBuaW1pIHDDs2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdXeXN0xIVwacWCIGLFgsSFZCBwb2RjemFzIGltcG9ydG93YW5pYSBrbGFzeS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFVrcnl0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gcG9rYXphbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W8bGl3aWEgcm96c3plcnpvbmUgd2FydW5raSB3eXN6dWtpd2FuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEuIER6acSZa2kgdGVqIGZ1bmtjamkgbW/FvG5hIHd5c3p1a2l3YcSHIG5wLiBuYXp3xJkgZWxlbWVudHUga29uZmlndXJhY2ppIHphIHBvbW9jxIUgdGVnbyByb2R6YWp1IHdhcnVua8OzdywgdGFraWNoIGphayAiKCprZXkxKiYmKmtleTIqKSIgbHViICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxbxsaXdpYSByb3pzemVyem9uZSB3YXJ1bmtpIHd5c3p1a2l3YW5pYSB3IGludGVyZmVqc2llIGtsaWVudGEuIER6acSZa2kgdGVqIGZ1bmtjamkgbW/FvG5hIHd5c3p1a2l3YcSHIG5wLiBuYXp3xJkgZWxlbWVudHUga29uZmlndXJhY2ppIHphIHBvbW9jxIUgdGVnbyByb2R6YWp1IHdhcnVua8OzdywgdGFraWNoIGphayAiKCprZXkxKiYmKmtleTIqKSIgbHViICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnUHJ6eXBpc2FuZSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHByenlwaXNhbmkgZG8gZmlybXkga2xpZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHByenlwaXNhbmUgZG8gdcW8eXRrb3duaWthIGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1VzdGF3aWVuaWEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU3ByYXdkemFuaWUgdW5pa2FsbmVqIG5hend5IHR5bGtvIHcgb2JyxJliaWUgdGVqIHNhbWVqIGtsYXN5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIGx1YiBnbG9iYWxuaWUgKCJnbG9iYWwiKSwgY28gb3puYWN6YSwgxbxlIGthxbxkeSBpc3RuaWVqxIVjeSBDb25maWdJdGVtIGplc3QgYnJhbnkgcG9kIHV3YWfEmSBwb2RjemFzIHd5c3p1a2l3YW5pYSBkdXBsaWthdMOzdy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBuYXpld25pY3R3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBsaWN6Ym93eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnV3liaWVyeiBtb2R1xYIsIGFieSB3eW11c2nEhyBzY2hlbWF0IGNpxIVnw7N3IHdlcnNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdXeWJpZXJ6IGF0cnlidXR5LCBhYnkgdXJ1Y2hvbWnEhyB0d29yemVuaWUgbm93ZWogd2Vyc2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdXeWJpZXJ6IGthdGVnb3JpZSwga3TDs3JlIGNoY2VzeiBwcnp5cGlzYcSHIGRvIHRlaiBrbGFzeSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJ5IGtvbHVtbiBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBkbGEgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbHVtbnksIGt0w7NyZSBtb8W8bmEgZmlsdHJvd2HEhyB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4gVXdhZ2E6IERvendvbG9uZSBzxIUgdHlsa28gYXRyeWJ1dHkgcG96eWNqaSBrb25maWd1cmFjamkgaSBwb2xhIGR5bmFtaWN6bmUgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnRG9kYW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWR5Y2phIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1xYIgemRhcnplxYQgZWxlbWVudHUga29uZmlndXJhY2ppLCBrdMOzcnkgdW1vxbxsaXdpYSByZWplc3Ryb3dhbmllIGRvIGhpc3RvcmlpIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1xYIgemRhcnplxYQgZWxlbWVudMOzdyBrb25maWd1cmFjamksIGt0w7NyeSBha3R1YWxpenVqZSBlbGVtZW50eSBrb25maWd1cmFjamkgZG8gaWNoIGJpZcW8xIVjZWogZGVmaW5pY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdXeWRydWsgZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1Bvd2nEmWtzemVuaWUgZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1dpZG9rIGRyemV3YSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbmFzdMSZcHVqxIVjeWNoIGtsYXMgbmllIGLEmWTEhSBwcnplY2hvd3l3YW5lIG5hIHNlcndlcnplIEVsYXN0aWNzZWFyY2guIEFieSB6YXN0b3Nvd2HEhyB0byBkbyBpc3RuaWVqxIVjeWNoIENJLCBtaWdyYWNqYSBDSSBtdXNpIHpvc3RhxIcgdXJ1Y2hvbWlvbmEgemEgcG/Fm3JlZG5pY3R3ZW0ga29uc29saSwgcG8gem1pYW5pZSB0ZWogb3BjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0VsZW1lbnR5IENvbmZpZ0l0ZW1zIHogbmFzdMSZcHVqxIVjeW1pIHN0YW5hbWkgd2Ryb8W8ZW5pYSBuaWUgYsSZZMSFIHByemVjaG93eXdhbmUgbmEgc2Vyd2VyemUgRWxhc3RpY3NlYXJjaC4gQWJ5IHphc3Rvc293YcSHIHRvIGRvIGlzdG5pZWrEhWN5Y2ggQ0ksIG1pZ3JhY2phIENJIG11c2kgem9zdGHEhyB1cnVjaG9taW9uYSB6YSBwb8WbcmVkbmljdHdlbSBrb25zb2xpLCBwbyB6bWlhbmllIHRlaiBvcGNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXQgbGljemJ5IENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdMaW1pdCBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBuYSBzdHJvbsSZLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBkYW55Y2ggemFyesSFZHphbmlhIGtvbmZpZ3VyYWNqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1xYIgemJpb3JjenkgZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbGVtZW50IGtvbmZpZ3VyYWNqaSB3eXN6dWtpd2FuaWEgcm91dGVyYSB6YXBsZWN6YSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVHdvcnplbmllIGkgemFyesSFZHphbmllIGRlZmluaWNqYW1pIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1R3b3J6eSBiaWxldHkgZGxhIENvbmZpZ0l0ZW1zIHcgb2tyZcWbbG9ueWNoIHB1bmt0YWNoIGN6YXNvd3ljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW5jaSBtb2fEhSB6b2JhY3p5xIcgaGlzdG9yeWN6bmUgd2Vyc2plIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbmNpIG1hasSFIG1vxbxsaXdvxZvEhyByxJljem5lZ28gcHJ6ZcWCxIVjemFuaWEgc2nEmSBtacSZZHp5IGhpc3Rvcnljem55bWkgd2Vyc2phbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRG9tecWbbG5lIGRhbmUgZG8gdcW8eWNpYSB3IGF0cnlidWNpZSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4gUHJ6eWvFgmFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RvbXnFm2xuZSBkYW5lIGRvIHXFvHljaWEgdyBhdHJ5YnVjaWUgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuIFByenlrxYJhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBha2NqZSwgdyBrdMOzcnljaCBwcnp5Y2lzayB1c3Rhd2llxYQgamVzdCBkb3N0xJlwbnkgdyB3aWTFvGVjaWUgcG/FgsSFY3pvbnljaCBvYmlla3TDs3cgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgdGUgYWtjamUgbXVzesSFIG1pZcSHIHphcmVqZXN0cm93YW5lIG5hc3TEmXB1asSFY2UgcGxpa2kgSlMgaSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pdWplIHNjaGVtYXQgVGVtcGxhdGU6OlRvb2xraXQgZGxhIGNpxIVnw7N3IHdlcnNqaS4gVcW8eXdhbmUgdHlsa28gamXFm2xpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBqZXN0IHVzdGF3aW9ueSBuYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5pdWplIHplc3RhdyB3YXJ1bmvDs3csIG5hIHBvZHN0YXdpZSBrdMOzcnljaCBrbGllbnQgbW/FvGUgem9iYWN6ecSHIGVsZW1lbnQga29uZmlndXJhY2ppLiBXYXJ1bmtpIG1vZ8SFIGJ5xIcgb3Bjam9uYWxuaWUgb2dyYW5pY3pvbmUgZG8gb2tyZcWbbG9ueWNoIGdydXAga2xpZW50w7N3LiBOYXp3YSBqZXN0IGplZHlueW0gb2Jvd2nEhXprb3d5bSBhdHJ5YnV0ZW0uIEplxZtsaSBuaWUgcG9kYW5vIMW8YWRueWNoIGlubnljaCBvcGNqaSwgd3N6eXN0a2llIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSBixJlkxIUgd2lkb2N6bmUgdyB0ZWoga2F0ZWdvcmlpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgd3ltYWdhbmUgdXByYXduaWVuaWEgZG8gdXN1d2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSBwcnp5IHXFvHljaXUgaW50ZXJmZWpzdSBvZ8OzbG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml1amUgd3ltYWdhbmUgdXByYXduaWVuaWEgZG8gdXp5c2tpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSBwcnp5IHXFvHljaXUgaW50ZXJmZWpzdSBvZ8OzbG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml1amUgd3ltYWdhbmUgdXByYXduaWVuaWEgZG8gd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gcHJ6eSB1xbx5Y2l1IGludGVyZmVqc3Ugb2fDs2xuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHVzdGF3aWFuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSBwcnp5IHXFvHljaXUgaW50ZXJmZWpzdSBvZ8OzbG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBtb2R1xYIgcHJ6ZWdsxIVkdSBkbyB3ecWbd2lldGxhbmlhIG1hxYJlZ28gd2lkb2t1IGxpc3R5IGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdPa3JlxZtsYSwgY3p5IGV0eWtpZXR5IHR5cHUgxYLEhWN6YSBtdXN6xIUgYnnEhyB3ecWbd2lldGxhbmUgdyBwb8WCxIVjemVuaWFjaCB3xJl6xYLDs3cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbml1amUgd3lyYcW8ZW5pYSByZWd1bGFybmUgaW5keXdpZHVhbG5pZSBkbGEga2HFvGRlaiBrbGFzeSBDb25maWdJdGVtIHcgY2VsdSBzcHJhd2R6ZW5pYSBuYXp3eSBDb25maWdJdGVtIGkgd3nFm3dpZXRsZW5pYSBvZHBvd2llZG5pY2gga29tdW5pa2F0w7N3IG8gYsWCxJlkYWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb3N0xJlwbmUga29sdW1ueSBDSSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHphbGXFvG5vxZtjaSBvZCBrbGFzeSBDSS4gS2HFvGR5IHdwaXMgbXVzaSBza8WCYWRhxIcgc2nEmSB6IG5hend5IGtsYXN5IGkgdGFibGljeSBkb3N0xJlwbnljaCBww7NsIGRsYSBvZHBvd2llZG5pZWoga2xhc3kuIFdwaXN5IHDDs2wgZHluYW1pY3pueWNoIG11c3rEhSBiecSHIHpnb2RuZSB6ZSBzY2hlbWF0ZW0gRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbnkgYXRyeWJ1dCBlbGVtZW50dSBrb25maWd1cmFjamkgZGxhIHNvcnRvd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3eW5pa2FjaCB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9tecWbbG55IGF0cnlidXQgcG96eWNqaSBrb25maWd1cmFjamkgZGxhIHNvcnRvd2FuaWEgcG96eWNqaSBrb25maWd1cmFjamkgdyB3eW5pa2FjaCB3eXN6dWtpd2FuaWEgcG96eWNqaSBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xueSBhdHJ5YnV0IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBkbGEgc29ydG93YW5pYSB3eW5pa8OzdyB3eXN6dWtpd2FuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIHRlaiBvcGVyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xuxIUga29sZWpub8WbxIcgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3eW5pa2FjaCB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyBpbnRlcmZlanNpZSBhZ2VudGEuIFcgZ8OzcsSZOiBuYWpzdGFyc3p5IG5hIGfDs3J6ZS4gVyBkw7PFgjogbmFqbm93c3plIG5hIGfDs3J6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xuxIUga29sZWpub8WbxIcgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3eW5pa2FjaCB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyBpbnRlcmZlanNpZSBrbGllbnRhLiBXIGfDs3LEmTogbmFqc3RhcnN6ZSBuYSBnw7NyemUuIFcgZMOzxYI6IG5ham5vd3N6ZSBuYSBnw7NyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xuxIUga29sZWpub8WbxIcgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3eW5pa2FjaCB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdGVqIG9wZXJhY2ppLiBXIGfDs3LEmTogbmFqc3RhcnN6ZSBuYSBnw7NyemUuIFcgZMOzxYI6IG5ham5vd3N6ZSBuYSBnw7NyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9tecWbbG5pZSB3ecWbd2lldGxhbmUga29sdW1ueSBDSSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHphbGXFvG5vxZtjaSBvZCBrbGFzeSBDSS4gS2HFvGR5IHdwaXMgbXVzaSBza8WCYWRhxIcgc2nEmSB6IG5hend5IGtsYXN5IGkgdGFibGljeSBkb3N0xJlwbnljaCBww7NsIGRsYSBvZHBvd2llZG5pZWoga2xhc3kuIFdwaXN5IHDDs2wgZHluYW1pY3pueWNoIG11c3rEhSBiecSHIHpnb2RuZSB6ZSBzY2hlbWF0ZW0gRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnT2tyZcWbbGEgZG9tecWbbG7EhSBnxYLEmWJva2/Fm8SHIHd5xZt3aWV0bGFueWNoIHJlbGFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xuaWUgd3nFm3dpZXRsYW55IGF0cnlidXQgd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGRsYSBla3JhbnUgd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG5pZSB3ecWbd2lldGxhbnkgYXRyeWJ1dCB3eXN6dWtpd2FuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIGRsYSBla3JhbnUgd3lzenVraXdhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4gUHJ6eWvFgmFkOiAiS2x1Y3oiIG11c2kgbWllxIcgbmF6d8SZIHBvbGEgZHluYW1pY3puZWdvLCB3IHR5bSBwcnp5cGFka3UgIlgiLCAiWmF3YXJ0b8WbxIciIG11c2kgbWllxIcgd2FydG/Fm8SHIHBvbGEgZHluYW1pY3puZWdvIHcgemFsZcW8bm/Fm2NpIG9kIHR5cHUgcG9sYSBkeW5hbWljem5lZ28sIFRla3N0OiAidGVrc3QiLCBMaXN0YSByb3p3aWphbmE6ICIxIiwgRGF0YS9nb2R6aW5hOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgaSBsdWIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xueSBwb2RvYmlla3Qga2xhc3kgIklUU01Db25maWdJdGVtIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb3N0xJlwbmUga29sdW1ueSBDSSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHphbGXFvG5vxZtjaSBvZCBrbGFzeSBDSS4gS2HFvGR5IHdwaXMgbXVzaSBza8WCYWRhxIcgc2nEmSB6IG5hend5IGtsYXN5IGkgdGFibGljeSBkb3N0xJlwbnljaCBww7NsIGRsYSBvZHBvd2llZG5pZWoga2xhc3kuIFdwaXN5IHDDs2wgZHluYW1pY3pueWNoIG11c3rEhSBiecSHIHpnb2RuZSB6ZSBzY2hlbWF0ZW0gRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnT2tyZcWbbGEgd3lzb2tvxZvEhyBlbGVtZW50dSBlZHl0b3JhIHRla3N0dSBzZm9ybWF0b3dhbmVnbyBkbGEgdGVnbyBla3JhbnUuIFdwcm93YWTFuiBsaWN6YsSZIChwaWtzZWxlKSBsdWIgd2FydG/Fm8SHIHByb2NlbnRvd8SFICh3emdsxJlkbsSFKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGljemLEmSB3aWVyc3p5IGVkeXRvcmEgZGVmaW5pY2ppIENJIHcgaW50ZXJmZWpzaWUgYWRtaW5pc3RyYXRvcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGtvbGVqbm/Fm8SHIHN0YW7Ds3cgemRhcnplbmlhIG9kIHd5c29raWVnbyAobnAuIHN0YW4ga3J5dHljem55KSBkbyBuaXNraWVnbyAobnAuIHN0YW4gZnVua2Nqb25hbG55KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbml1amUgb2Rwb3dpZWRuaWUgc3Rhbnkgd2Ryb8W8ZW5pYSwgdyBrdMOzcnljaCBwb3dpxIV6YW5lIHpnxYJvc3plbmlhIG1vZ8SFIHdwxYJ5d2HEhyBuYSBzdGFuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpbWl0IHd5c3p1a2l3YW5pYSBkbGEgZWtyYW51IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGltaXQgd3lzenVraXdhbmlhIGRsYSBla3JhbnUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBsaW1pdCB3eXN6dWtpd2FuaWEgZGxhIGVrcmFudSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpbWl0IHd5c3p1a2l3YW5pYSBkbGEgZWtyYW51IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnT2tyZcWbbGEgd3nFm3dpZXRsYW5lIGtvbHVtbnkgQ0kgdyB3aWRva3UgesWCb8W8b255bSB0YWJlbGkgbGlua8OzdyBkbGEgd3N6eXN0a2ljaCBrbGFzIENJLiBKZcWbbGkgbmllIG1hIHdwaXN1LCB3ecWbd2lldGxhbmUgc8SFIGtvbHVtbnkgZG9tecWbbG5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5xZt3aWV0bGFuZSBrb2x1bW55IENJIHcgd2lkb2t1IHrFgm/FvG9ueW0gdGFiZWxpIGxpbmvDs3csIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIGJ5xIcgcG9wcnplZHpvbnkgbmF6d8SFIGtsYXN5IGkgcG9kd8Ozam55bWkgZHd1a3JvcGthbWkgKG5wLiBDb21wdXRlcjo6KS4gSXN0bmllamUga2lsa2EgYXRyeWJ1dMOzdyBDSSwga3TDs3JlIHPEhSB3c3DDs2xuZSBkbGEgd3N6eXN0a2ljaCBDSSAocHJ6eWvFgmFkIGRsYSBrbGFzeSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gQWJ5IHd5xZt3aWV0bGnEhyBwb3N6Y3plZ8OzbG5lIGF0cnlidXR5IENJIHpkZWZpbmlvd2FuZSB3IGRlZmluaWNqaSBDSSwgbmFsZcW8eSB1xbx5xIcgbmFzdMSZcHVqxIVjZWdvIHNjaGVtYXR1IChwcnp5a8WCYWQgZGxhIGtsYXN5IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEplxZtsaSBuaWUgbWEgd3Bpc3UgZGxhIGtsYXN5IENJLCB3ecWbd2lldGxhbmUgc8SFIGtvbHVtbnkgZG9tecWbbG5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcmUgZWxlbWVudHkgc8SFIGRvc3TEmXBuZSBkbGEgIkFjdGlvbiIgbmEgdHJ6ZWNpbSBwb3ppb21pZSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGt0w7NyZSBlbGVtZW50eSBzxIUgZG9zdMSZcG5lIG5hIHBpZXJ3c3p5bSBwb3ppb21pZSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcmUgZWxlbWVudHkgc8SFIGRvc3TEmXBuZSBuYSBkcnVnaW0gcG96aW9taWUgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3J5IHR5cCBwb3dpxIV6YW5pYSAobmF6d2FueSB6IHBlcnNwZWt0eXd5IHpnxYJvc3plbmlhKSBtb8W8ZSB3cMWCeXdhxIcgbmEgc3RhdHVzIHBvd2nEhXphbmVnbyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3J5IHR5cCB6Z8WCb3N6ZW5pYSBtb8W8ZSB3cMWCeXdhxIcgbmEgc3RhdHVzIHBvd2nEhXphbmVnbyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpemFjamEgZGVmaW5pY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdVc3XFhCBlbGVtZW50IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0tvbG9yIHN0YW51IHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdcWCIHpkYXJ6ZcWEIHDDs2wgZHluYW1pY3pueWNoLCBrdMOzcnkgb3puYWN6YSBkZWZpbmljamUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgamFrbyBuaWV6c3luY2hyb25pem93YW5lLCBqZcWbbGkgemF3aWVyYWrEhWNlIGplIHBvbGEgZHluYW1pY3puZSB1bGVnbsSFIHptaWFuaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2xhIGR5bmFtaWN6bmUgd3nFm3dpZXRsYW5lIG5hIGVrcmFuaWUgZG9kYXRrb3d5Y2ggcMOzbCBJVFNNIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljem5lIHBvbGEgd3nFm3dpZXRsYW5lIG5hIGVrcmFuaWUgcHJ6ZWdsxIVkdSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljem5lIHBvbGEgd3nFm3dpZXRsYW5lIG5hIGVrcmFuaWUgd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdXxYLEhWN6YSBmdW5rY2rEmSBtYXNvd2VqIGFrY2ppIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBkbGEgaW50ZXJmZWpzdSBhZ2VudGEsIGFieSBwcmFjb3dhxIcgbmEgd2nEmWNlaiBuacW8IGplZG55bSBlbGVtZW5jaWUga29uZmlndXJhY2ppIG5hcmF6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2NqxJkgYWtjamkgemJpb3JjemVqIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB0eWxrbyBkbGEgd3ltaWVuaW9ueWNoIGdydXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1fFgsSFY3phL3d5xYLEhWN6YSBmdW5rY2rEmSBzcHJhd2R6YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHBvZCBrxIV0ZW0gdW5pa2FsbnljaCBuYXp3LiBQcnplZCB3xYLEhWN6ZW5pZW0gdGVqIG9wY2ppIG5hbGXFvHkgc3ByYXdkemnEhyBzeXN0ZW0gcG9kIGvEhXRlbSBqdcW8IGlzdG5pZWrEhWN5Y2ggZWxlbWVudMOzdyBrb25maWd1cmFjamkgemUgemR1cGxpa293YW55bWkgbmF6d2FtaS4gTW/FvG5hIHRvIHpyb2JpxIcgemEgcG9tb2PEhSBwb2xlY2VuaWEga29uc29saSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBkbyB1c3Rhd2lhbmlhIHN0YXR1c3UgZWxlbWVudHUga29uZmlndXJhY2ppIG5hIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1BvbGEgaW5kZWtzdSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSwgdcW8eXdhbmUgZG8gd3lzenVraXdhbmlhIHBlxYJub3Rla3N0b3dlZ28uIFBvbGEgc8SFIHLDs3duaWXFvCBwcnplY2hvd3l3YW5lLCBhbGUgbmllIHPEhSBvYm93acSFemtvd2UgZGxhIG9nw7NsbmVqIGZ1bmtjam9uYWxub8WbY2kuIERvxYLEhWN6YW5pZSB6YcWCxIVjem5pa8OzdyBtb8W8bmEgd3nFgsSFY3p5xIcsIHVzdGF3aWFqxIVjIHdhcnRvxZvEhyB3cGlzdSBuYSAwIGx1YiB1c3V3YWrEhWMgZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdQb2xhIHByemVjaG93eXdhbmUgdyBpbmRla3NpZSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSwga3TDs3JlIHPEhSB3eWtvcnp5c3R5d2FuZSBkbyBpbm55Y2ggY2Vsw7N3IG5pxbwgd3lzenVraXdhbmllIHBlxYJub3Rla3N0b3dlLiBEbGEgcGXFgm5laiBmdW5rY2pvbmFsbm/Fm2NpIHdzenlzdGtpZSBwb2xhIHPEhSBvYm93acSFemtvd2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnRGxhIGthxbxkZWogdXPFgnVnaSB3ZWJzZXJ2aWNlIChrbHVjeikgbW/FvG5hIHpkZWZpbmlvd2HEhyB0YWJsaWPEmSBrbGFzICh3YXJ0b8WbxIcpLCBkbGEga3TDs3J5Y2ggaW1wb3J0IGplc3Qgb2dyYW5pY3pvbnkuIERsYSB3c3p5c3RraWNoIHd5YnJhbnljaCBrbGFzIGx1YiB3c3p5c3RraWNoIGlzdG5pZWrEhWN5Y2gga2xhcyBhdHJ5YnV0eSBpZGVudHlmaWt1asSFY2UgYsSZZMSFIG11c2lhxYJ5IHpvc3RhxIcgd3licmFuZSB3IGtvbmZpZ3VyYWNqaSB3eXdvxYJ1asSFY2Vnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVqZXN0cmFjamEgbW9kdcWCdSBHZW5lcmljSW50ZXJmYWNlIGRsYSB3YXJzdHd5IHd5d2/FgnVqxIVjZWogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlamVzdHJhY2phIG1vZHXFgnUgR2VuZXJpY0ludGVyZmFjZSBkbGEgd2Fyc3R3eSB3eXdvxYJ1asSFY2VqIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVqZXN0cmFjamEgbW9kdcWCdSBHZW5lcmljSW50ZXJmYWNlIGRsYSB3YXJzdHd5IHd5d2/FgnVqxIVjZWogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQcnplZ2zEhWQgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09iZWptdWplIHN0YW55IHdkcm/FvGVuaWEgdyB3eXN6dWtpd2FuaXUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2Jlam11amUgc3RhbnkgaW5jeWRlbnTDs3cgdyB3eXN6dWtpd2FuaXUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc3ltYWxuYSBsaWN6YmEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgZG8gd3nFm3dpZXRsZW5pYSB3IHd5bmlrdSB0ZWogb3BlcmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdcWCIHNwcmF3ZHphasSFY3kgZ3J1cMSZIG9kcG93aWVkemlhbG7EhSB6YSBrbGFzxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdcWCIGRvIHNwcmF3ZHphbmlhIGdydXB5IG9kcG93aWVkemlhbG5laiB6YSBlbGVtZW50IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1xYIgZG8gZ2VuZXJvd2FuaWEgc3RhdHlzdHlrIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmF6d2EgbW9kdcWCdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdcWCIG51bWVyeWN6bnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGljemJhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHd5xZt3aWV0bGFueWNoIG5hIGthxbxkZWogc3Ryb25pZSB3eW5pa8OzdyB3eXN6dWtpd2FuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpY3piYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3ecWbd2lldGxhbnljaCBuYSBrYcW8ZGVqIHN0cm9uaWUgd3luaWvDs3cgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmlla3R5IGRvIHd5c3p1a2FuaWEsIGlsZSB3cGlzw7N3IGkga3TDs3JlIGF0cnlidXR5IHBva2F6YcSHLiBBdHJ5YnV0eSBDb25maWdJdGVtIG11c3rEhSBiecSHIGphd25pZSBwcnplY2hvd3l3YW5lIHByemV6IEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByemVnbMSFZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEga2F0ZWdvcmlpIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGRsYSBmaWx0csOzdyBrb2x1bW4gdyBtYcWCeW0gcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLiBVd2FnYTogdXN0YXdpZW5pZSAiQWN0aXZlIiBuYSAwIHVuaWVtb8W8bGl3aSBhZ2VudG9tIGVkeWNqxJkgdXN0YXdpZcWEIHRlaiBncnVweSB3IGljaCBvc29iaXN0eWNoIHByZWZlcmVuY2phY2gsIGFsZSBuYWRhbCBwb3p3b2xpIGFkbWluaXN0cmF0b3JvbSBlZHl0b3dhxIcgdXN0YXdpZW5pYSB3IGltaWVuaXUgaW5uZWdvIHXFvHl0a293bmlrYS4gVcW8eWogIlByZWZlcmVuY2VHcm91cCIsIGFieSBrb250cm9sb3dhxIcsIHcga3TDs3J5bSBvYnN6YXJ6ZSB0ZSB1c3Rhd2llbmlhIHBvd2lubnkgYnnEhyB3ecWbd2lldGxhbmUgdyBpbnRlcmZlanNpZSB1xbx5dGtvd25pa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyIG9rbmEgcHVscGl0dSB6Z8WCb3N6ZcWEIHBvZHJ6xJlkbnljaCBpbnRlcmZlanN1IGFnZW50YS4gIkxpbWl0IiBqZXN0IGxpY3pixIUgd2llcnN6eSBwb2thenl3YW7EhSBkb215xZtsbmllLiAiR3JvdXAiIGplc3QgdcW8eXdhbmEgZG8gb2dyYW5pY3plbmlhIGRvc3TEmXB1IGRvIHd0eWN6a2kgKG5wLjogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIG9rcmXFm2xhIGN6eSB3dHljemthIGplc3QgZG9tecWbbG5pZSB3xYLEhWN6b25hIGx1YiBjenkgdcW8eXRrb3duaWsgbW/FvGUgd8WCxIVjennEhyBqxIUgcsSZY3puaWUuICJDYWNoZVRUTExvY2FsIiBqZXN0IGN6YXNlbSBwb2RhbnltIHcgbWludXRhY2ggb2tyZcWbbGFqxIVjeW0gY3phcyBjYWNoZVwnb3dhbmlhIHd0eWN6a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyYW1ldHIgb2tuYSBwdWxwaXR1IHpnxYJvc3plxYQgcG9kcnrEmWRueWNoIGludGVyZmVqc3UgYWdlbnRhLiAiTGltaXQiIGplc3QgbGljemLEhSB3aWVyc3p5IHBva2F6eXdhbsSFIGRvbXnFm2xuaWUuICJHcm91cCIgamVzdCB1xbx5d2FuYSBkbyBvZ3JhbmljemVuaWEgZG9zdMSZcHUgZG8gd3R5Y3praSAobnAuOiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2tyZcWbbGEgY3p5IHd0eWN6a2EgamVzdCBkb215xZtsbmllIHfFgsSFY3pvbmEgbHViIGN6eSB1xbx5dGtvd25payBtb8W8ZSB3xYLEhWN6ecSHIGrEhSByxJljem5pZS4gIkNhY2hlVFRMTG9jYWwiIGplc3QgY3phc2VtIHBvZGFueW0gdyBtaW51dGFjaCBva3JlxZtsYWrEhWN5bSBjemFzIGNhY2hlXCdvd2FuaWEgd3R5Y3praS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkga29sb3LDs3cgc3RhbsOzdyB3ZHJvxbxlbmlhIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBzdGFuw7N3IHdkcm/FvGVuaWEgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgcHJ6eWvFgmFkb3d5Y2ggZ3J1cCB1cHJhd25pZcWEIGF0cnlidXTDs3cga2F0YWxvZ3UgZ8WCw7N3bmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdcWCdSBuYXp3eSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSBsaWN6YnkgZGxhIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgc3Ryb24gKG5hIGt0w7NyeWNoIHd5xZt3aWV0bGFuZSBzxIUgZWxlbWVudHkga29uZmlndXJhY2ppKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGRsYSBtb2R1xYJ1IMWCYcWEY3VjaGEgd2Vyc2ppIGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSBzemFibG9udSDFgmHFhGN1Y2hhIHdlcnNqaSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHd5endhbGFjemEgd2Vyc2ppIGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1d5a29udWplIHphcGxhbm93YW5lIGFrY2plIGRsYSBrYcW8ZGVnbyB3eWRhxbxlbmlhIChqYWtvIFd6eXdhasSFY3kpIGRsYSBrYcW8ZGVqIHNrb25maWd1cm93YW5laiB1c8WCdWdpIHNpZWNpb3dlai4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBhIFVwcmF3bmllxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBha2NqaSBkb8WCxIVjemFuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgd2lkb2t1IGRyemV3YSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBwb3dpxJlrc3plbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGRvZGF3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZWxlbWVudHUga29uZmlndXJhY2ppIHpiaW9yY3plaiBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcHJhd25pZW5pYSB3eW1hZ2FuZSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBlZHljamkgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwcmF3bmllbmlhIHd5bWFnYW5lIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIGhpc3RvcmlpIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZHJ1a293YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHVzdXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1d5c3p1a2FqIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1VzdGF3IHN0YW4gaW5jeWRlbnR1IENJIGF1dG9tYXR5Y3puaWUsIGdkeSBUaWNrZXQgamVzdCBwb3dpxIV6YW55IHogQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBzdGFuIHdkcm/FvGVuaWEgbmEgZWtyYW5pZSB6YmlvcmN6eW0gZWxlbWVudHUga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIHN0YW4gemRhcnplbmlhIG5hIGVrcmFuaWUgemJpb3JjenltIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51LCBrdMOzcmUgdW1vxbxsaXdpYSBwb3dpxIV6YW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkgeiBpbm55bSBvYmlla3RlbSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBkb3N0xJlwIGRvIGhpc3RvcmlpIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgZG9zdMSZcCBkbyBoaXN0b3JpaSBlbGVtZW50dSBrb25maWd1cmFjamkgdyB3aWRva3UgcG93acSZa3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSB1c3VuacSZY2llIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSwgYWJ5IHd5xZt3aWV0bGnEhyDFgsSFY3phIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IGRyemV3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IGRvIGR1cGxpa293YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdyBjZWx1IHBvd2llbGVuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBlZHljasSZIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgcG93csOzdCBkbyB3aWRva3UgcG93acSZa3N6ZW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2Ugd3lkcnVrb3dhbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIHBvd2nEmWtzemVuaWUgZWxlbWVudHUga29uZmlndXJhY2ppIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSBoaXN0b3JpxJkgZWxlbWVudMOzdyBrb25maWd1cmFjamkgKHcgb2R3cm90bmVqIGtvbGVqbm/Fm2NpKSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRG9tecWbbG5hIGthdGVnb3JpYSwga3TDs3JhIGplc3Qgd3nFm3dpZXRsYW5hLCBqZcWbbGkgbmllIHd5YnJhbm8gxbxhZG5lai4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50eWZpa2F0b3IgZWxlbWVudHUga29uZmlndXJhY2ppLCBucC4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIERvbXnFm2xuaWUgamVzdCB0byBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbWF0eWN6bmllIHVydWNoYW1pYSB3eXdvxYJhbmllIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1dlcnNqYSBXeXJhxbxlbmllIMWCYcWEY3VjaG93ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNb2R1xYIgY2nEhWd1IHdlcnNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdXeXp3YWxhY3ogd2Vyc2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdDenkgbW/FvG5hIHVuaWtuxIXEhyB3eWtvbmFuaWEgQ29uZmlnSXRlbUFDTCBwb3ByemV6IHNwcmF3ZHplbmllIHphbGXFvG5vxZtjaSBww7NsIHcgcGFtacSZY2kgcG9kcsSZY3puZWouIE1vxbxlIHRvIHBvcHJhd2nEhyBjemFzIMWCYWRvd2FuaWEgZm9ybXVsYXJ6eSwgYWxlIG11c2kgYnnEhyB3ecWCxIVjem9uZSwgamXFm2xpIEFDTE1vZHVsZXMgbWFqxIUgYnnEhyB1xbx5d2FuZSBkbGEgSVRTTUNvbmZpZ0l0ZW0tIGkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0luZm9ybWFjamUgb2fDs2xuZSBzxIUgd3nFm3dpZXRsYW5lIHcgbmFnxYLDs3drdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWtjeWpueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJ6ZWRwcm9kdWtjeWpueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdHl3bnknOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgY2FsYSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGNhbGkgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBjYWxhICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGNhbGEgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1jYWxvd3kgc3RvamFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBjYWxhICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGNhbGkgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLWNhbG93eSBzdG9qYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGNhbGEgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1jYWxvd3kgc3RvamFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBjYWxhICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBjYWxlICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBjYWxhICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgY2FsYSAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBjYWxhICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBjYWxhICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBjYWxhICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBjYWxhICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBjYWxlICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgY2FsYSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGNhbGEgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBjYWxhICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBjYWxhICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGNhbGEgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgY2FsYSAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGNhbGEgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBjYWxlICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgY2FsaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgY2FsYSAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgY2FsYSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBjYWxhICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGNhbGkgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgY2FsYSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnS3NpxJlnb3dvxZvEhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ1ByenlkemlhxYIgYWRyZXPDs3cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsZWZvbiBhbmFsb2dvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cCB1cnrEhWR6ZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnUG9qZW1ub8WbxIcgYWt1bXVsYXRvcmEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUeXAgYWt1bXVsYXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWR5bmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZlanMgbWFnaXN0cmFsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnS2xhc2EgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdQb2plbW5vxZvEhyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnUG9qZW1ub8WbxIcgbmEga2FydMSZIGdyYWZpY3puxIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW1lciBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0N6eXRuaWsga2FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnT3Byb2dyYW1vd2FuaWUga2xpZW5ja2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpYSBrbGllbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydHlmaWthdHkgcG9kcGlzeXdhbmlhIGtvZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb24ga29uZmVyZW5jeWpueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1Vtb3dhIGtvbnN1bHRpbmdvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgeiBkeXN0cnlidXRvcmVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGtvbnRlbmVyYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnVW1vd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cCB1bW93eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ09rcmVzIG9ib3dpxIV6eXdhbmlhIHVtb3d5IG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ09rcmVzIG9ib3dpxIV6eXdhbmlhIHVtb3d5IGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb24gYmV6cHJ6ZXdvZG93eSAodGVsZWZvbiBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdKZWRub3N0a2Ega29zenR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljemJhIGxpY2VuY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRhIHV0d29yemVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ05pZXN0YW5kYXJkb3d5IHN0b2phayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBaYXJlemVyd293YW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ3ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRhIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgemFtw7N3aWVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGEgZ3dhcmFuY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgd3lkYW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydHlmaWthdHkgcG9kcGlzeXdhbmlhIGRva3VtZW50w7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnU3RvamFrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnR5ZmlrYXR5IHBvY3p0eSBlLW1haWwgKGNlcnR5ZmlrYXR5IFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnVW1vd2EgbyBwcmFjxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdLb8WEY293eSBhZHJlcyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0tvbmllYyB3c3BhcmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGEgd3lnYcWbbmnEmWNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnWmV3bsSZdHJ6bnkgZHlzayB0d2FyZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ09wcm9ncmFtb3dhbmllIHVrxYJhZG93ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ01hZ2F6eW5vd2FuaWUgZW5lcmdpaSB3IGtvbGUgemFtYWNob3d5bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ1dzcMOzxYJjenlubmlrIGtzenRhxYJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnVW1vd2EgZnJhbmN6eXp5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBvZ8OzbG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnS2FydHkgZ3JhZmljem5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdLYXJ0YSBncmFmaWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdTcHJ6xJl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWwgc3ByesSZdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnV2FnYSBzcHJ6xJl0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnWmVzdGF3IHPFgnVjaGF3a293eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva8OzxYIgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnWmFyesSFZHphbmllIHRvxbxzYW1vxZtjacSFIGkgZG9zdMSZcGVtIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW1lciBpbndlbnRhcnpvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdLb3N6dHkgaW53ZXN0eWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bWVyIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF3aWF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEICh3ecWbd2lldGxhY3ogY2lla8WCb2tyeXN0YWxpY3pueSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kYSBlbGVrdHJvbHVtaW5lc2NlbmN5am5hKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlZm9uIHN0YWNqb25hcm55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1N6ZXJva2/Fm8SHIGdlb2dyYWZpY3puYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ1dhcnN0d2EgMTogV2Fyc3R3YSBmaXp5Y3puYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdXYXJzdHdhIDI6IFdhcnN0d2EgxYLEhWN6YSBkYW55Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1dhcnN0d2EgMzogV2Fyc3R3YSBzaWVjaW93YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdXYXJzdHdhIDM6IFdhcnN0d2Egc2llY2lvd2EgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdXYXJzdHdhIDQ6IFdhcnN0d2EgdHJhbnNwb3J0b3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdXYXJzdHdhIDU6IFdhcnN0d2Egc2VzamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnV2Fyc3R3YSA2OiBXYXJzdHdhIHByZXplbnRhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnV2Fyc3R3YSA3OiBXYXJzdHdhIGFwbGlrYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdVbW93YSBuYWptdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ1Vtb3dhIGxpY2VuY3lqbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0tsdWN6IGxpY2VuY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGxpY2VuY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdPa3JlcyBsaWNlbmNqaSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ09rcmVzIGxpY2VuY2ppIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIGxpdG93by3FvGVsYXpvd28tZm9zZm9yYW5vd3kgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIGxpdG93by1qb25vd3kgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdVbW93YSBwb8W8eWN6a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1puYWpkdWplIHNpxJkgdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdExYJ1Z2/Fm8SHIGdlb2dyYWZpY3puYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUHJvZHVjZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzeW1hbG5lIG9iY2nEhcW8ZW5pZSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnUGFtacSZxIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUeXAgcGFtacSZY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTnVtZXIgdGVsZWZvbnUga29tw7Nya293ZWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsZS9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnT3BpcyBtb2RlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUm96ZHppZWxjem/Fm8SHIG1vbml0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1Jvem1pYXIgbW9uaXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNeXN6a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1NpZcSHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjamUgbyBzaWVjaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBvIHNpZWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdXYXJzdHdhIHNpZWNpb3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQWt1bXVsYXRvciBuaWtsb3dvLWthZG1vd3kgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQWt1bXVsYXRvciBuaWtsb3dvLXdvZG9ya293eSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnVW1vd2EgbyB6YWNob3dhbml1IHBvdWZub8WbY2kgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RhdG5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0xpY3piYSBwcm9jZXNvcsOzdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdMaWN6YmEgbW9kdcWCw7N3IHBhbWnEmWNpIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdMaWN6YmEga2FydCBncmFmaWN6bnljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChvcmdhbmljem5hIGRpb2RhIGVsZWt0cm9sdW1pbmVzY2VuY3lqbmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0tvc3p0eSBvcGVyYWN5am5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ051bWVyIHphbcOzd2llbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnSW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnV3lqxZtjaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnVW1vd2EgcGFydG5lcnNrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ051bWVyIHRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXAgdGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdSZHplbmllIGZpenljem5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnWmFzaWxhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnWmFrdXBpb25lIHcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0fFgsSZYm9rb8WbxIcgc3RvamFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JlZ2HFgnkgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdQb2vDs2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0eWZpa2F0eSBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnVW1vd2Egc3ByemVkYcW8eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUZWxlZm9uIHNhdGVsaXRhcm55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1VzemN6ZWxuaW9ueSBha3VtdWxhdG9yIGt3YXNvd28tb8WCb3dpb3d5IChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTnVtZXIgc2VyeWpueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdPcHJvZ3JhbW93YW5pZSBzZXJ3ZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVW1vd2EgbyDFm3dpYWRjemVuaWUgdXPFgnVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnWm5hY3puaWsgdXPFgnVnaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXAgZ25pYXpkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ09wcm9ncmFtb3dhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnR8WCb8WbbmlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnUG9jesSFdGtvd3kgYWRyZXMgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1ByemVjaG93eXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydHljamEgcGFtacSZY2kgbWFzb3dlaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0plZG5vc3RrYSB6YWxlxbxuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUG9kc3Vtb3dhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2llbmtpIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnTmljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdDYcWCa293aXRhIHBhbWnEmcSHIFJBTSBrYXJ0eSBncmFmaWN6bmVqIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdDYcWCa293aXRhIHBhbWnEmcSHIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIHogZWtyYW5lbSBkb3R5a293eW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdXaWXFvGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0tvbmNlbnRyYXRvciBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdaZXN0YXcgc8WCdWNoYXdrb3d5IFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnS2FtZXJhIGludGVybmV0b3dhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/pt_BR_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgb3BlcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgc29saWNpdGHDp8OjbyBkZSBlbnRyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgcmVzcG9zdGEgZGUgc2HDrWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ011ZGFyIGRlZmluacOnw6NvIGRlIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQWx0ZXJhciBhIGRlZmluacOnw6NvIGRhIGZ1bsOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFjb3RlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0FxdWkgdm9jw6ogcG9kZSBpbXBvcnRhciBvcyBwYWNvdGVzIGRlIGNsYXNzZXMgZG8gUmVhZHkySW1wb3J0IHF1ZSBhcHJlc2VudGFtIG5vc3NvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBtYWlzIGNvbXVucy4gT2JzZXJ2ZSBxdWUgcG9kZSBzZXIgbmVjZXNzw6FyaWEgYWxndW1hIGNvbmZpZ3VyYcOnw6NvIGFkaWNpb25hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXR1YWxpemFyIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgb3MgcGFjb3RlcyBkZSBjbGFzc2VzIGRvIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0Z1bsOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjaW9uZSB1bWEgY2xhc3NlIGEgcGFydGlyIGRhIGxpc3RhIHBhcmEgY3JpYXIgdW0gbm92byBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0HDp8OjbyBlbSBNYXNzYSBlbSBJQ3MgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0Fzc29jaWFyIGEgb3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ07Dum1lcm8gZGUgSXRlbSBkZSBDb25maWd1cmHDp8OjbyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ08gbsO6bWVybyBkZSBvdXRybyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIHBhcmEgYXNzb2NpYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGVzZWphIHJlYWxtZW50ZSBleGNsdWlyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBub21lIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05vbWUgasOhIGVtIHVzbyBwZWxvcyBJQ3MgY29tIG9zIHNlZ3VpbnRlcyBOw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3NlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6Egc2VuZG8gdXNhZG8gcGVsb3MgQ29uZmlnSXRlbXMgY29tIG8ocykgc2VndWludGUocykgbsO6bWVybyhzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZcO6ZG8gZG8gSGlzdMOzcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzw6NvIGRlIGRldGFsaGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnSXRlbnMgZGUgY29uZmlndXJhw6fDo28gcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05lbmh1bSBkYWRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZm9pIGVuY29udHJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNpb25lIGVzc2UgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1Byb2N1cmFyIG5hcyB2ZXLDtWVzIGFudGVyaW9yZXMgdGFtYsOpbT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBwYXJhIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdOw612ZWwgZGUgcHJvZnVuZGlkYWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQXVtZW50YXIgZSBkaW1pbnVpciBvIHpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTsOtdmVsIG3DoXhpbW8gZGUgbGlua3MgYXRpbmdpZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxhbnRhw6fDo28gQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBJbmNpZGVudGUgQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbWEgbW9kaWZpY2HDp8OjbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTZXVzIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcG8gZGUgb2JqZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJhciBwb3IgdGlwbyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0FzIHNlZ3VpbnRlcyBjbGFzc2VzIHNlcsOjbyBpbXBvcnRhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0FzIHNlZ3VpbnRlcyBmdW7Dp8O1ZXMgc2Vyw6NvIGltcG9ydGFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnT2JzZXJ2ZSBxdWUgb3MgY2FtcG9zIGRpbsOibWljb3MgZSBhcyBjbGFzc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRlbnRlcyB0YW1iw6ltIHNlcsOjbyBjcmlhZG9zIGUgbsOjbyBoYXZlcsOhIHJlbW/Dp8OjbyBhdXRvbcOhdGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWb2PDqiBxdWVyIHByb3NzZWd1aXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1ByZWNpc2EgZGUgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0EgZGVmaW5pw6fDo28gbsOjbyDDqSB1bSBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWaXPDo28gZ2VyYWw6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gQ29uZmlnSXRlbUlEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVm9jw6ogcHJlY2lzYSBzZWxlY2lvbmFyIHBlbG8gbWVub3MgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdWb2PDqiBuw6NvIHRlbSBhY2Vzc28gZGUgZXNjcml0YSBwYXJhIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbzogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05lbmh1bWEgZGVmaW5pw6fDo28gcGFyYSBhIGNsYXNzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28gIiVzIiBuw6NvIGVuY29udHJhZG8gbmEgYmFzZSBkZSBkYWRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgZXhjbHVpciBvIElEIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOZW5odW1hIHZlcnPDo28gZW5jb250cmFkYSBwYXJhIG8gQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvdSBDbGFzc0lEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdOZW5odW0gYWNlc3NvIMOpIGRhZG8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIGV4aWJpciBoaXN0w7NyaWNvLiBOZW5odW0gQ29uZmlnSXRlbUlEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgZXhpYmlyIGhpc3TDs3JpY28uIE5lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92byBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdmEgdmVyc8OjbyAoSUQgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIGF0dWFsaXphZG8gKG5vdm89JXMgLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBpbmNpZGVudGUgYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0l0ZW0gZGUgQ29uZmlndXJhw6fDo28gKElEPSVzKSBleGNsdcOtZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdWw61uY3VsbyBwYXJhICVzICh0aXBvPSVzKSBhZGljaW9uYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdWw61uY3VsbyBwYXJhICVzICh0aXBvPSVzKSBkZWxldGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pw6fDo28gZGUgSXRlbSBkZSBDb25maWd1cmHDp8OjbyAoSUQ9JXMpIGF0dWFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhdHVhbGl6YWRvIGRlICIlcyIgcGFyYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnPDo28gJXMgZXhjbHXDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDb25maWdJdGVtSUQgb3UgVmVyc2lvbklEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBleGliaXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gTmVuaHVtIGRpcmVpdG8gZGUgYWNlc3NvIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG7Do28gZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnSW1wcmVzc28gcG9yICVzIGVtICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcsOqbmNpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDbGFzc0lEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTmVuaHVtIGRpcmVpdG8gZGUgYWNlc3NvIHBhcmEgZXN0YSBjbGFzc2Ugw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lbmh1bSByZXN1bHRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkYSBwZXNxdWlzYSBkZSBJdGVucyBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4aWJpciBpdGVtLiBOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gcGFyYSBDb25maWdJdGVtIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbsOjbyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOZW5odW1hIHZlcnPDo28gZW5jb250cmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYXZpc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28gZGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gZXN0YWRvIGRlIGluY2lkZW50ZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2VtIFBlcm1pc3PDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXLDom1ldHJvcyBkZSBwZXNxdWlzYSBpbnbDoWxpZG9zISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0V4aWJpciBpdGVucyBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIEVzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0VzdGFkbyBBdHVhbCBkZSBJbmNpZGVudGUgcG9yIHRpcG8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyacOnw7VlcyBkZSBjbGFzc2UgcGFyYSBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjaW9uZSB1bWEgb3UgbWFpcyBjbGFzc2VzIHBhcmEgcmVzdHJpbmdpciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZWxlY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjaW9uZSB1bWEgb3UgbWFpcyBjbGFzc2VzIHBhcmEgcmVzdHJpbmdpciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZWxlY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbsOibWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAodmVyc8OjbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcsOqbmNpYSBkZSBsaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NlIGVzc2UgbGluayBzZSBhcGxpY2EgYW8gQ29uZmlnSXRlbSBvdSDDoCB2ZXJzw6NvIGVzdMOhdGljYSBkbyBvYmpldG8gZGUgcmVmZXLDqm5jaWEuIE8gY8OhbGN1bG8gZG8gZXN0YWRvIGF0dWFsIGRvIGluY2lkZW50ZSBzw7Mgw6kgcmVhbGl6YWRvIGVtIGxpbmtzIGRpbsOibWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNpb25lIG8gYXRyaWJ1dG8gcGVsbyBxdWFsIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlcsOjbyBwZXNxdWlzYWRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdBIGVzdHJ1dHVyYSBiw6FzaWNhIG7Do28gw6kgdsOhbGlkYS4gRm9ybmXDp2EgdW0gaGFzaCBjb20gZGFkb3Mgbm8gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ8OJIG5lY2Vzc8OhcmlvIGluaWNpYXIgYSBzdHJpbmcgWUFNTCBjb20gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGxpbXBhciBhIHRhYmVsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGNhbXBvcyBkaW7Dom1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgaW5zZXJpciBuYSB0YWJlbGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcml1IDAgbGluaGFzIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVtIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGFyL0V4cG9ydGFyIGFuZXhvcyAoY29tbyBhcyDDumx0aW1hcyBlbnRyYWRhcyBwb3IgbGluaGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnQ2FkZWlhIGRlIGNhcmFjdGVyZXMgZGEgdmVyc8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvIGFvIHNpbmNyb25pemFyIGFzIGRlZmluacOnw7Vlcy4gVmVyaWZpcXVlIG8gcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVm9jw6ogdGVtIGRlZmluacOnw7VlcyBkZSBJVFNNQ29uZmlnSXRlbSBxdWUgbsOjbyBlc3TDo28gc2luY3Jvbml6YWRhcy4gSW1wbGVtZW50ZSBzdWFzIGFsdGVyYcOnw7VlcyBkZSBjYW1wbyBkaW7Dom1pY28gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW7Dp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVqYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RlIGRlIFF1YWxpZGFkZSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVmlzw6NvIGdlcmFsIGUgY29uZmlybWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhw6fDo28gZGUgY2xhc3Nlcy9mdW7Dp8O1ZXMgZSBzZXVzIGNhbXBvcyByZWxhY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdPY29ycmV1IHVtIGVycm8gZHVyYW50ZSBhIGltcG9ydGHDp8OjbyBkYSBjbGFzc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBPY3VsdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1vc3RyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpw6fDtWVzIGRlIHBlc3F1aXNhIGVzdGVuZGlkYXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQ29tIGVzc2UgcmVjdXJzbywgdm9jw6ogcG9kZSBwZXNxdWlzYXIsIHBvciBleGVtcGxvLCBvIG5vbWUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBjb20gZXNzZSB0aXBvIGRlIGNvbmRpw6fDo28sIGNvbW8gIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacOnw7VlcyBkZSBwZXNxdWlzYSBlc3RlbmRpZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBDb20gZXNzZSByZWN1cnNvLCB2b2PDqiBwb2RlIHBlc3F1aXNhciwgcG9yIGV4ZW1wbG8sIG8gbm9tZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbSBlc3NlIHRpcG8gZGUgY29uZGnDp8OjbywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQ3MgYXRyaWJ1w61kb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdJQyBhdHJpYnVpZG8gw6AgZW1wcmVzYSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnSUMgYXRyaWJ1aWRvIGFvIHVzdcOhcmlvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYcOnw7VlcyBkbyBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmlxdWUgc2UgbyBub21lIMOpIMO6bmljbyBhcGVuYXMgZGVudHJvIGRhIG1lc21hIGNsYXNzZSBkZSBJQyAoXCdjbGFzc2UpIG91IGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbyBxdWUgc2lnbmlmaWNhIHF1ZSBjYWRhIElDIGV4aXN0ZW50ZSDDqSBsZXZhZG8gZW0gY29udGEgYW8gcHJvY3VyYXIgcG9yIGR1cGxpY2HDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgZGUgbm9tZW5jbGF0dXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIHN0cmluZyBkZSB2ZXJzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0VzY29saGEgYXRyaWJ1dG9zIHBhcmEgYWNpb25hciBhIGNyaWHDp8OjbyBkZSB1bWEgbm92YSB2ZXJzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFc2NvbGhhIGFzIGNhdGVnb3JpYXMgYSBzZXJlbSBhdHJpYnXDrWRhcyBhIGVzc2EgY2xhc3NlIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBjb2x1bmEgcGFyYSBWaXPDo28gZ2VyYWwgZG8gQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVuYXMgcXVlIHBvZGVtIHNlciBmaWx0cmFkYXMgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gT2JzZXJ2YcOnw6NvOiBTb21lbnRlIGF0cmlidXRvcyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGUgY2FtcG9zIGRpbsOibWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkgc8OjbyBwZXJtaXRpZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQWRpY2lvbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdGFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBxdWUgcGVybWl0ZSByZWdpc3RyYXIgbyBoaXN0w7NyaWNvIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIGF0dWFsaXphIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHBhcmEgc3VhIGRlZmluacOnw6NvIGF0dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3TDs3Jpdm8gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmVzc8OjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1pvb20gZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdWaXN1YWxpemHDp8OjbyBlbSDDoXJ2b3JlIGRvIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc8OjbyBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ09zIENvbmZpZ0l0ZW1zIGRhcyBzZWd1aW50ZXMgY2xhc3NlcyBuw6NvIHNlcsOjbyBhcm1hemVuYWRvcyBubyBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgaXNzbyBhb3MgQ0lzIGV4aXN0ZW50ZXMsIGEgbWlncmHDp8OjbyBkbyBDSSBkZXZlIHNlciBleGVjdXRhZGEgcG9yIG1laW8gZG8gY29uc29sZSwgYXDDs3MgYSBhbHRlcmHDp8OjbyBkZXNzYSBvcMOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBjb20gb3Mgc2VndWludGVzIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuw6NvIHNlcsOjbyBhcm1hemVuYWRvcyBubyBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgaXNzbyBhb3MgQ0lzIGV4aXN0ZW50ZXMsIGEgbWlncmHDp8OjbyBkbyBDSSBkZXZlIHNlciBleGVjdXRhZGEgcG9yIG1laW8gZG8gY29uc29sZSwgYXDDs3MgYSBhbHRlcmHDp8OjbyBkZXNzYSBvcMOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZGUgSXRlbSBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnTGltaXRlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcG9yIHDDoWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdDb25maWd1cmHDp8OjbyBkbyBHZXJlbmNpYW1lbnRvIGRvIEJhbmNvIGRlIERhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBhw6fDo28gZW0gbWFzc2EgZW0gSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvdGVhZG9yIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JpYXIgZSBnZXJlbmNpYXIgYXMgZGVmaW5pw6fDtWVzIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyaWEgdMOtcXVldGVzIHBhcmEgQ29uZmlnSXRlbXMgZW0gcG9udG9zIGRlIHRlbXBvIGVzcGVjw61maWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnT3MgY2xpZW50ZXMgcG9kZW0gdmVyIG8gaGlzdMOzcmljbyBkYXMgdmVyc8O1ZXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ09zIGNsaWVudGVzIHTDqm0gYSBwb3NzaWJpbGlkYWRlIGRlIGFsdGVybmFyIG1hbnVhbG1lbnRlIGVudHJlIGFzIHZlcnPDtWVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhZG9zIHBhZHLDo28gYSBzZXJlbSB1c2Fkb3Mgbm8gYXRyaWJ1dG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYWRvcyBwYWRyw6NvIGEgc2VyZW0gdXNhZG9zIG5vIGF0cmlidXRvIHBhcmEgYSB0ZWxhIGRlIHBlc3F1aXNhIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEV4ZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmEgQcOnw7VlcyBvbmRlIHVtIGJvdMOjbyBkZSBjb25maWd1cmHDp8O1ZXMgZXN0w6EgZGlzcG9uw612ZWwgbm8gd2lkZ2V0IGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGU9ImNvbXBsZXgiKS4gT2JzZXJ2ZSBxdWUgZXNzYXMgYcOnw7VlcyBkZXZlbSB0ZXIgcmVnaXN0cmFkbyBvcyBzZWd1aW50ZXMgYXJxdWl2b3MgSlMgZSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGUgQ29yZS5BZ2VudCAuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgY2FkZWlhcyBkZSBjYXJhY3RlcmVzIGRlIHZlcnPDo28uIFVzYWRvIHNvbWVudGUgc2UgbyBWZXJzaW9uIFN0cmluZyBNb2R1bGUgZXN0aXZlciBkZWZpbmlkbyBjb21vIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW0gY29uanVudG8gZGUgY29uZGnDp8O1ZXMgc29iIGFzIHF1YWlzIHVtIGNsaWVudGUgdGVtIHBlcm1pc3PDo28gcGFyYSB2ZXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gQXMgY29uZGnDp8O1ZXMgcG9kZW0sIG9wY2lvbmFsbWVudGUsIHNlciByZXN0cml0YXMgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBPIG5vbWUgw6kgbyDDum5pY28gYXRyaWJ1dG8gb2JyaWdhdMOzcmlvLiBTZSBuZW5odW1hIG91dHJhIG9ww6fDo28gZm9yIGZvcm5lY2lkYSwgdG9kb3Mgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZmljYXLDo28gdmlzw612ZWlzIG5lc3NhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHBlcm1pc3PDo28gbmVjZXNzw6FyaW8gcGFyYSByZW1vdmVyIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgcmVxdWVyaWRhcyBwYXJhIG9idGVyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyByZXF1ZXJpZGFzIHBhcmEgbG9jYWxpemFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBkZWZpbmlyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gdXNhbmRvIGEgaW50ZXJmYWNlIGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgdmlzw6NvIGdlcmFsIHBhcmEgbW9zdHJhciBhIHZpc8OjbyBwZXF1ZW5hIGRhIGxpc3RhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmUgc2Ugb3MgcsOzdHVsb3MgZGUgdGlwbyBkZSBsaW5rIGRldmVtIHNlciBleGliaWRvcyBuYXMgY29uZXjDtWVzIGRlIG7Dsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWUgZXhwcmVzc8O1ZXMgcmVndWxhcmVzIGluZGl2aWR1YWxtZW50ZSBwYXJhIGNhZGEgY2xhc3NlIGRlIElDIHBhcmEgdmVyaWZpY2FyIG8gbm9tZSBkbyBJQyBlIHBhcmEgZXhpYmlyIGFzIG1lbnNhZ2VucyBkZSBlcnJvIGNvcnJlc3BvbmRlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkaXNwb27DrXZlaXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgY29uc2lzdGlyIGVtIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvIGRpbsOibWljbyBkZXZlbSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBhZHLDo28gcGFyYSBhIGNsYXNzaWZpY2HDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcGFkcsOjbyBwYXJhIGEgY2xhc3NpZmljYcOnw6NvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBhZHLDo28gcGFyYSBhIGNsYXNzaWZpY2HDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzc2Egb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkZXNzYSBvcGVyYcOnw6NvLiBBY2ltYTogbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIHBhZHLDo28gZXhpYmlkYXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgY29uc2lzdGlyIGVtIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvIGRpbsOibWljbyBkZXZlbSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZSBhIHByb2Z1bmRpZGFkZSBwYWRyw6NvIGRhcyByZWxhw6fDtWVzIGEgc2VyZW0gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbW9zdHJhZG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBtb3N0cmFkbyBwYXJhIGEgdGVsYSBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiS2V5IiAoQ2hhdmUpIGRldmUgdGVyIG8gbm9tZSBkbyBjYW1wbyBkaW7Dom1pY28sIG5lc3NlIGNhc28gXCdYXCcsICJDb250ZW50IiAoQ29udGXDumRvKSBkZXZlIHRlciBvIHZhbG9yIGRvIGNhbXBvIGRpbsOibWljbywgZGVwZW5kZW5kbyBkbyB0aXBvIGRlIGNhbXBvIGRpbsOibWljbywgVGV4dCAoVGV4dG8pOiBcJ3VtIHRleHRvXCcsIERyb3Bkb3duIChNZW51IHN1c3BlbnNvKTogXCcxXCcsIERhdGUvVGltZSAoRGF0YS9Ib3JhKTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGUgb3UgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lIG8gc3Vib2JqZXRvIHBhZHLDo28gZGEgY2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRpc3BvbsOtdmVpcyBkZSBJQ3MgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBjb25zaXN0aXIgZW0gdW0gbm9tZSBkZSBjbGFzc2UgZSB1bWEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb27DrXZlaXMgcGFyYSBhIGNsYXNzZSBjb3JyZXNwb25kZW50ZS4gQXMgZW50cmFkYXMgZGUgY2FtcG8gZGluw6JtaWNvIGRldmVtIHJlc3BlaXRhciBvIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIGRvIGNvbXBvbmVudGUgZGUgZWRpw6fDo28gcmljaCB0ZXh0IGRlc3RhIHRlbGEuIFJlZ2lzdHJlIHVtIG7Dum1lcm8gKHBpeGVscykgb3UgdW1hIHBvcmNlbnRhZ2VtIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIG7Dum1lcm8gZGUgbGluaGFzIGRvIGVkaXRvciBkZSBkZWZpbmnDp8OjbyBkbyBJQyBuYSBpbnRlcmZhY2UgZGUgYWRtaW5pc3RyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBkb3MgZXN0YWRvcyBkZSBpbmNpZGVudGUgZGUgYWx0byAoZXg6IGNyw610aWNvKSBwYXJhIGJhaXhvIChleDogZnVuY2lvbmFsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gb25kZSBjaGFtYWRvcyBhc3NvY2lhZG9zIHBvZGVtIGFmZXRhciBvIGVzdGFkb3MgZGUgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGUgSUNzIG1vc3RyYWRhcyBuYSB2aXN1YWxpemHDp8OjbyBjb21wbGV4YSBkYSB0YWJlbGEgZGUgbGlua3MgcGFyYSB0b2RhcyBhcyBjbGFzc2VzIGRlIElDcy4gU2UgbsOjbyBob3V2ZXIgbmVuaHVtYSBlbnRyYWRhLCBhcyBjb2x1bmFzIHBhZHLDo28gc2Vyw6NvIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRlIElDcyBleGliaWRhcyBuYSB0ZWxhIGRlIHRhYmVsYSBjb21wbGV4YSBkZSBsaW5rcywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBwcmVmaXhhZGEgY29tIG8gbm9tZSBkYSBjbGFzc2UgZSBkdXBsbyBkb2lzIHBvbnRvcyAoZXguIENvbXB1dGFkb3I6OikuIEjDoSBhbGd1bnMgYXRyaWJ1dG9zIGRlIElDIHF1ZSBzw6NvIGNvbXVucyBhIHRvZG9zIG9zIElDcyAodGFsIGNvbW8gYSBjbGFzc2UgQ29tcHV0YWRvcjogQ29tcHV0YWRvcjo6Tm9tZSwgQ29tcHV0YWRvcjo6RXN0YWRvSW1wbEF0dWFsLCBDb21wdXRhZG9yOjpIb3JhQ3JpYWNhbykuIFBhcmEgZXhpYmlyIGF0cmlidXRvcyBkZSBJQyBpbmRpdmlkdWFsbWVudGUgY29tbyBkZWZpbmlkbyBuYSBkZWZpbmnDp8OjbyBkbyBJQywgbyBzZWd1aW50ZSBlc3F1ZW1hIGRldmUgc2VyIHVzYWRvIChjbGFzc2UgQ29tcHV0YWRvciwgcG9yIGV4ZW1wbG8pOiBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MSwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjE6OkNhcGFjaWRhZGU6OjEsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoyLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6Mjo6Q2FwYWNpZGFkZTo6MS4gU2UgbsOjbyBow6EgZW50cmFkYSBwYXJhIGEgY2xhc3NlIElDLCBlbnTDo28gYXMgY29sdW5hcyBwYWRyw6NvIHPDo28gZXhpYmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWlzIGl0ZW5zIGVzdMOjbyBkaXNwb27DrXZlaXMgcGFyYSAiQcOnw6NvIiBubyB0ZXJjZWlybyBuw612ZWwgZGEgZXN0cnV0dXJhIGRvIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWFpcyBpdGVucyBlc3TDo28gZGlzcG9uw612ZWlzIG5vIHByaW1laXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWFpcyBpdGVucyBlc3TDo28gZGlzcG9uw612ZWlzIG5vIHNlZ3VuZG8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWwgdGlwbyBkZSBhc3NvY2lhw6fDo28gKG5vbWVhZG8gYSBwYXJ0aXIgZGEgcGVyc3BlY3RpdmEgZG8gY2hhbWFkbykgcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgYXNzb2NpYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWFsIHRpcG8gZGUgY2hhbWFkbyBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBhc3NvY2lhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQXR1YWxpemHDp8OjbyBkYSBkZWZpbmnDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRXhjbHVpciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29yIGRvIEVzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkYSBpbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgY2FtcG8gZGluw6JtaWNvIHF1ZSBtYXJjYSBhcyBkZWZpbmnDp8O1ZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gY29tbyBmb3JhIGRlIHNpbmNyb25pYSwgc2Ugb3MgY2FtcG9zIGRpbsOibWljb3MgY29udGlkb3MgZm9yZW0gYWx0ZXJhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5vIGNhbXBvIGRlIHRlbGEgSVRTTSBhZGljaW9uYWwgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bsOnw6NvIGRlIGHDp8OjbyBlbSBtYXNzYSBlbSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlIHBhcmEgdHJhYmFsaGFyIGVtIG1haXMgZGUgdW0gSUMgcG9yIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuw6fDo28gZGUgYcOnw6NvIGVtIG1hc3NhIGVtIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwZW5hcyBwYXJhIGdydXBvcyBsaXN0YWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQXRpdmEvZGVzYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBwYXJhIHZlcmlmaWNhciBzZSBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIHTDqm0gbm9tZXMgZXhjbHVzaXZvcy4gQW50ZXMgZGUgYXRpdmFyIGVzc2Egb3DDp8Ojbywgdm9jw6ogZGV2ZSB2ZXJpZmljYXIgc2UgaMOhIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGrDoSBleGlzdGVudGVzIGNvbSBub21lcyBkdXBsaWNhZG9zIGVtIHNldSBzaXN0ZW1hLiBWb2PDqiBwb2RlIGZhemVyIGlzc28gY29tIG8gY29tYW5kbyBkbyBjb25zb2xlIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBFdmVudG8gcGFyYSBjb25maWd1cmFyIG8gZXN0YWRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVhbmRvIHVtIGNoYW1hZG8gZm9yIGFzc29jaWFkbyBhIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZG8gw61uZGljZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCB1c2Fkb3MgcGFyYSBhIHBlc3F1aXNhIGRlIHRleHRvIGNvbXBsZXRvLiBPcyBjYW1wb3MgdGFtYsOpbSBzw6NvIGFybWF6ZW5hZG9zLCBtYXMgbsOjbyBzw6NvIG9icmlnYXTDs3Jpb3MgcGFyYSBhIGZ1bmNpb25hbGlkYWRlIGdlcmFsLiBBIGluY2x1c8OjbyBkZSBhbmV4b3MgcG9kZSBzZXIgZGVzYXRpdmFkYSBkZWZpbmluZG8gYSBlbnRyYWRhIGNvbW8gMCBvdSBleGNsdWluZG8tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhcm1hemVuYWRvcyBubyDDrW5kaWNlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIHPDo28gdXNhZG9zIHBhcmEgb3V0cmFzIGNvaXNhcyBhbMOpbSBkZSBwZXNxdWlzYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgYSBmdW5jaW9uYWxpZGFkZSBjb21wbGV0YSwgdG9kb3Mgb3MgY2FtcG9zIHPDo28gb2JyaWdhdMOzcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQYXJhIGNhZGEgc2VydmnDp28gZGEgV2ViIChjaGF2ZSksIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBtYXRyaXogZGUgY2xhc3NlcyAodmFsb3IpIG5hIHF1YWwgYSBpbXBvcnRhw6fDo28gw6kgcmVzdHJpdGEuIFBhcmEgdG9kYXMgYXMgY2xhc3NlcyBlc2NvbGhpZGFzIG91IHRvZGFzIGFzIGNsYXNzZXMgZXhpc3RlbnRlcywgb3MgYXRyaWJ1dG9zIGRlIGlkZW50aWZpY2HDp8OjbyBkZXZlcsOjbyBzZXIgZXNjb2xoaWRvcyBuYSBjb25maWd1cmHDp8OjbyBkbyBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnVmlzw6NvIEdlcmFsICBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVpIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGluY2lkZW50ZXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBzZXJlbSBleGliaWRvcyBubyByZXN1bHRhZG8gZGVzc2Egb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIG8gZ3J1cG8gcmVzcG9uc8OhdmVsIHBvciB1bWEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlcmFyIGVzdGF0w61zdGljYXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWUgZG8gbcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTsO6bWVybyBkbyBtw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBzZXJlbSBleGliaWRvcyBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBzZXJlbSBleGliaWRvcyBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBzZXJlbSBwZXNxdWlzYWRvcywgcXVhbnRhcyBlbnRyYWRhcyBlIHF1YWlzIGF0cmlidXRvcyBkZXZlbSBzZXIgZXhpYmlkb3MuIE9zIGF0cmlidXRvcyBkbyBDb25maWdJdGVtIGRldmVtIHNlciBhcm1hemVuYWRvcyBleHBsaWNpdGFtZW50ZSBwb3IgbWVpbyBkbyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXPDo28gR2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIGFzIGNhdGVnb3JpYXMgZGUgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvcyBmaWx0cm9zIGRlIGNvbHVuYSBkYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwZXF1ZW5hLiBPYnNlcnZhw6fDo286IGEgZGVmaW5pw6fDo28gZGUgIkFjdGl2ZSIgY29tbyAwIGltcGVkaXLDoSBhcGVuYXMgcXVlIG9zIGFnZW50ZXMgZWRpdGVtIGFzIGNvbmZpZ3VyYcOnw7VlcyBkZXNzZSBncnVwbyBlbSBzdWFzIHByZWZlcsOqbmNpYXMgcGVzc29haXMsIG1hcyBhaW5kYSBwZXJtaXRpcsOhIHF1ZSBvcyBhZG1pbmlzdHJhZG9yZXMgZWRpdGVtIGFzIGNvbmZpZ3VyYcOnw7VlcyBlbSBub21lIGRlIG91dHJvIHVzdcOhcmlvLiBVc2UgIlByZWZlcmVuY2VHcm91cCIgcGFyYSBjb250cm9sYXIgZW0gcXVlIMOhcmVhIGVzc2FzIGNvbmZpZ3VyYcOnw7VlcyBkZXZlbSBzZXIgbW9zdHJhZGFzIG5hIGludGVyZmFjZSBkbyB1c3XDoXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZGUgcGFpbmVsIGRhIHZpc8OjbyBnZXJhbCBkYSBsaXN0YSBkZSB1c3XDoXJpb3MgY2xpZW50ZXMgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4gIkxpbWl0IiDDqSBvIG7Dum1lcm8gZGUgZW50cmFkYXMgZXhpYmlkYXMgY29tbyBwYWRyw6NvLiAiR3JvdXAiIMOpIHV0aWxpemFkbyBwYXJhIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gcGx1Z2luIChleGVtcGxvIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgYXRpdmFkbyBjb21vIHBhZHLDo28gb3Ugc2UgbyB1c3XDoXJpbyBwcmVjaXNhIGF0aXZhciBtYW51YWxtZW50ZS4gIkNhY2hlVFRMTG9jYWwiIMOpIG8gdGVtcG8gZGUgY2FjaGUsIGVtIG1pbnV0b3MsIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGJhY2tlbmQgZGUgcGFpbmVsIGRhIHZpc8OjbyBnZXJhbCBkYSBsaXN0YSBkZSB1c3XDoXJpb3MgY2xpZW50ZXMgbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4gIkxpbWl0IiDDqSBvIG7Dum1lcm8gZGUgZW50cmFkYXMgZXhpYmlkYXMgY29tbyBwYWRyw6NvLiAiR3JvdXAiIMOpIHV0aWxpemFkbyBwYXJhIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gcGx1Z2luIChleGVtcGxvIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmEgc2UgbyBwbHVnaW4gw6kgYXRpdmFkbyBjb21vIHBhZHLDo28gb3Ugc2UgbyB1c3XDoXJpbyBwcmVjaXNhIGF0aXZhciBtYW51YWxtZW50ZS4gIkNhY2hlVFRMTG9jYWwiIMOpIG8gdGVtcG8gZGUgY2FjaGUsIGVtIG1pbnV0b3MsIHBhcmEgbyBwbHVnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhIGNvciBkb3MgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG5hIHRlbGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIGVzdGFkbyBkZSBpbXBsYW50YcOnw6NvIG5hcyBwcmVmZXLDqm5jaWFzIGRlIGV4aWJpw6fDo28gZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZG8gZ3J1cG9zIGRlIHBlcm1pc3PDo28gZGUgZXhlbXBsbyBkb3MgYXRyaWJ1dG9zIGRvIGNhdMOhbG9nbyBnZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBub21lIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBuw7ptZXJvcyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkYXMgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzw6NvIG1vc3RyYWRvcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIHN0cmluZyBkZSB2ZXJzw6NvIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZG8ga2l0IGRlIGZlcnJhbWVudGFzIGRlIG1vZGVsbyBkZSBzdHJpbmcgZGUgdmVyc8OjbyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gYWNpb25hZG9yIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdFeGVjdXRhIGEgYcOnw6NvIGNvbmZpZ3VyYWRhIHBhcmEgY2FkYSBldmVudG8gKGNvbW8gdW0gSW52b2NhZG9yKSBwYXJhIGNhZGEgV2Vic2VydmljZSBjb25maWd1cmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBvIGRlIHBlcm1pc3PDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIGHDp8OjbyBkZSBhbmV4YcOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZG8gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gSVRTTSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSB2aXN1YWxpemHDp8OjbyBlbSDDoXJ2b3JlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZG8gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBhZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGUgSVRTTSBlbSBtYXNzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBlZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgaGlzdMOzcmljbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGltcHJlc3PDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWzDqWdpb3MgbmVjZXNzw6FyaW9zIHBhcmEgYXBhZ2FyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Byb2N1cmFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQ29uZmlndXJhciBvIGVzdGFkbyBkZSB1bSBJQyBhdXRvbWF0aWNhbWVudGUgcXVhbmRvIHVtIENoYW1hZG8gZm9yIGFzc29jaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmEgbyBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBuYSB0ZWxhIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBJQ3MgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhIG8gZXN0YWRvIGRlIGluY2lkZW50ZSBuYSB0ZWxhIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBJQ3MgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGFzc29jaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIHVtIG91dHJvIG9iamV0byBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSB1bSBJQyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZXNzYXIgbyBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFwYWdhciBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgVmlzw6NvIERldGFsaGFkYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGV4aWJpciBvcyBsaW5rcyBkb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gY29tbyB1bWEgdmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZHVwbGljYXIgdW0gSUMgbmEgdmlzw6NvIGdlcmFsIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkdXBsaWNhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIHJldG9ybmFyIMOgIHRlbGEgZGUgdmlzw6NvIGRlIGRldGFsaGVzIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gbWVzbW8gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZGV0YWxoYXIgdW0gSUMgbmEgdmlzw6NvIGdlcmFsIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyBoaXN0w7NyaWNvIGRvIGl0ZW0gY29uZmlndXJhw6fDo28gKG9yZGVtIHJldmVyc2EpIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0EgY2F0ZWdvcmlhIHBhZHLDo28gcXVlIMOpIG1vc3RyYWRhLCBzZSBuZW5odW1hIGZvciBzZWxlY2lvbmFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGV4LiBJdGVtQ29uZmlnIywgTWV1SXRlbUNvbmZpZyMuIE8gcGFkcsOjbyDDqSBJdGVtQ29uZmlnIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBY2lvbmEgbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoIGF1dG9tYXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3PDo28gZGUgY2FkZWlhIGRlIGNhcmFjdGVyZXMgZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzw6NvIFN0cmluZyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnQWNpb25hZG9yIGRlIHZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NlIGEgZXhlY3XDp8OjbyBkbyBDb25maWdJdGVtQUNMIHBvZGUgc2VyIGV2aXRhZGEgcGVsYSB2ZXJpZmljYcOnw6NvIGRhcyBkZXBlbmTDqm5jaWFzIGRlIGNhbXBvIGVtIGNhY2hlLiBJc3NvIHBvZGUgbWVsaG9yYXIgbyB0ZW1wbyBkZSBjYXJyZWdhbWVudG8gZG9zIGZvcm11bMOhcmlvcywgbWFzIGRldmUgc2VyIGRlc2F0aXZhZG8gc2Ugb3MgQUNMTW9kdWxlcyBmb3JlbSB1c2Fkb3MgcGFyYSBJVFNNQ29uZmlnSXRlbS0gZSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVhaXMgaW5mb3JtYcOnw7VlcyBnZXJhaXMgc8OjbyBtb3N0cmFkYXMgbm8gY2FiZcOnYWxoby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdww7NzLXByb2R1dGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnaW1wcm9kdXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1dGl2byc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogNDQsNDUgY20gKDE3LDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwb2xlZ2FkYXMgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcG9sZWdhZGFzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAxOSBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwb2xlZ2FkYXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMjEgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBwb2xlZ2FkYXMgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDIzIHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcG9sZWdhZGFzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwb2xlZ2FkYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBvbGVnYWRhcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwb2xlZ2FkYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBvbGVnYWRhcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcG9sZWdhZGFzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwb2xlZ2FkYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBvbGVnYWRhcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBvbGVnYWRhcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBvbGVnYWRhcyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHBvbGVnYWRhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDE4Niw2OSBjbSAoNzMsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBvbGVnYWRhcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnMTIwMCBtbSAoNDcsMiBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwb2xlZ2FkYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwb2xlZ2FkYXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb250YWJpbGlkYWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWxvY2HDp8OjbyBkZSBlbmRlcmXDp29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVmb25lIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmVsaG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZGUgZGEgYmF0ZXJpYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1ZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBiYXJyYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9jZXNzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWRlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWRlIHBvciBwbGFjYSBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWl0b3IgZGUgY2FydMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmlhIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVGF4YSBkZSByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkZSBkbyByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGFzc2luYXR1cmEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbmUgZGUgY29uZmVyw6puY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgY29uc3VsdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0VudHJlIGVtIGNvbnRhdG8gY29tIG8gZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBjb250w6ppbmVyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGEgcGFydGlyIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGF0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsZWZvbmUgc2VtIGZpbyAodGVsZWZvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pZGFkZSBkZSBjdXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0NvbnRhZ2VtIGRlIGxpY2Vuw6dhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JhY2sgcGVyc29uYWxpemFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgZG8gcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGRhIGdhcmFudGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgZGUgbGFuw6dhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBlLW1haWwgKGNlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJhbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kZXJlw6dvIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmltIGRvIHN1cG9ydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRhIGRlIGV4cGlyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyByw61naWRvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQXJtYXplbmFtZW50byBkZSBlbmVyZ2lhIG5vIHZvbGFudGUgZG8gbW90b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYXRvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgZnJhbnF1aWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMaXZyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDtWVzIGdlcmFpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1BsYWNhcyBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1BsYWNhIGRlIHbDrWRlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZG8gaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0ZvbmUgZGUgb3V2aWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgaWRlbnRpZGFkZSBlIGFjZXNzbyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnTDoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0N1c3RvcyBkZSBpbnZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRhIGZhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKHRlbGEgZGUgY3Jpc3RhbCBsw61xdWlkbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgZGUgTEVEIChkaW9kbyBlbWlzc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWZvbmUgZml4byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnQ2FtYWRhIDE6IENhbWFkYSBmw61zaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NhbWFkYSAyOiBDYW1hZGEgZGUgZW5sYWNlIGRlIGRhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYW1hZGEgMzogQ2FtYWRhIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ2FtYWRhIDM6IENhbWFkYSBkZSByZWRlIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnQ2FtYWRhIDQ6IENhbWFkYSBkZSB0cmFuc3BvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDYW1hZGEgNTogQ2FtYWRhIGRlIHNlc3PDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FtYWRhIDY6IENhbWFkYSBkZSBhcHJlc2VudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NhbWFkYSA3OiBDYW1hZGEgZGUgYXBsaWNhdGl2b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgbG9jYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgbGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NoYXZlIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2Vuw6dhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW7Dp2EgYXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBmb3NmYXRvIGRlIGZlcnJvIGUgbMOtdGlvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSDDrW9uLWzDrXRpbyAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIEVtcHLDqXN0aW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMb2NhbGl6YWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmljYW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpZGFkZSBtw6F4aW1hIGRlIGNhcmdhIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1RpcG8gZGUgbWVtw7NyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBjZWx1bGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZlbC9pbmNvcnBvcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyacOnw6NvIGRvIG1vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHXDp8OjbyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWFuaG8gZG8gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWHDp8O1ZXMgc29icmUgYSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDtWVzIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NhbWFkYSBkZSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBuw61xdWVsLWPDoWRtaW8gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBoaWRyZXRvIG1ldMOhbGljbyBkZSBuw61xdWVsIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdDb250cmF0byBkZSBjb25maWRlbmNpYWxpZGFkZSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0NhZGVybm8gZGUgYW5vdGHDp8O1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOw7ptZXJvIGRlIENQVXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBkZSBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSBwbGFjYXMgZGUgdsOtZGVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKGRpb2RvIG9yZ8OibmljbyBlbWlzc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQ3VzdG9zIG9wZXJhY2lvbmFpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ091dHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYcOtZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHBhcmNlcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0ZWxlZm9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWxlZm9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ07DumNsZW9zIGbDrXNpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRm9ybmVjaW1lbnRvIGRlIGVuZXJnaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWRlIGRvIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnU2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0NhcnTDo28gU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB2ZW5kYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZWZvbmUgdmlhIHNhdMOpbGl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXRlcmlhIHNlbGFkYSBkZSBjaHVtYm8tw6FjaWRvIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTsO6bWVybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgZGUgc2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBzZXJ2acOnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aXF1ZXRhIGRlIHNlcnZpw6dvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGUgc29xdWV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0by1mYWxhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdQYWRyw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdFbmRlcmXDp28gSVAgaW5pY2lhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQXJtYXplbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpw6fDo28gZGUgYXJtYXplbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1N1YnNpZGnDoXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmVzdW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBmaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkYSBwbGFjYSBncsOhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgY29tIHRlbGEgc2Vuc8OtdmVsIGFvIHRvcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdGb25lIGRlIG91dmlkbyBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uZSBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/pt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgZnVuY2lvbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnRGVmaW5pw6fDtWVzIHBhcmEgZGFkb3MgZGUgcGVkaWRvcyByZWNlYmlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdEZWZpbmnDp8O1ZXMgcGFyYSBvcyBkYWRvcyBkZSByZXNwb3N0YSBkZSBzYcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXVkYXIgZGVmaW5pw6fDo28gZGUgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYXIgZGVmaW5pw6fDo28gZGUgZnVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdQYWNvdGVzIGRlIGNsYXNzZXMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQXF1aSBwb2RlIGltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQgcXVlIGFwcmVzZW50YW0gb3Mgbm9zc29zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG1haXMgY29tdW5zLiBUZW5oYSBlbSBhdGVuw6fDo28gcXVlIHBvZGVyw6Egc2VyIG5lY2Vzc8OhcmlhIGFsZ3VtYSBjb25maWd1cmHDp8OjbyBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0F0dWFsaXphciBlbnRpZGFkZXMgZXhpc3RlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIEZ1bsOnw6NvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0l0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBhcmEgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY2lvbmUgdW1hIGNsYXNzZSBhIHBhcnRpciBkYSBsaXN0YSBwYXJhIGNyaWFyIHVtIG5vdm8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBw6fDo28gZW0gbWFzc2EgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaWdhw6fDo28gYSBvdXRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTsO6bWVybyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTyBuw7ptZXJvIGRlIG91dHJvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gYSBsaWdhci4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdQcmV0ZW5kZSBtZXNtbyBlbGltaW5hciBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gbm9tZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG5vbWUgasOhIGVzdMOhIGEgc2VyIHV0aWxpemFkbyBwZWxvcyBDb25maWdJdGVtcyBjb20gbyhzKSBzZWd1aW50ZShzKSBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6EgYSBzZXIgdXRpbGl6YWRvIHBlbG9zIENvbmZpZ0l0ZW1zIGNvbSBvKHMpIHNlZ3VpbnRlKHMpIG7Dum1lcm8ocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0w7NyaWNvIGRvIGNvbnRlw7pkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgZGUgZGV0YWxoZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVucyBkZSBjb25maWd1cmHDp8OjbyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2lvbmFyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1Byb2N1cmFyIG5hcyB2ZXJzw7VlcyBhbnRlcmlvcmVzIHRhbWLDqW0/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTsOtdmVsIGRlIHByb2Z1bmRpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0F1bWVudGFyIGUgZGltaW51aXIgbyB6b29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ07DrXZlbCBtw6F4aW1vIGRlIGxpZ2HDp8O1ZXMgYXRpbmdpZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxlbWVudGHDp8OjbyBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1hIG1vZGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ09zIHNldXMgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUGVzcXVpc2EgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVGlwbyBkZSBvYmpldG8nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmFyIHBvciB0aXBvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Vyw6NvIGltcG9ydGFkYXMgYXMgc2VndWludGVzIGNsYXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Vyw6NvIGltcG9ydGFkYXMgYXMgc2VndWludGVzIGZ1bsOnw7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RlLXNlIHF1ZSB0YW1iw6ltIHNlcsOjbyBjcmlhZG9zIG9zIGNhbXBvcyBkaW7Dom1pY29zIGUgYXMgY2xhc3NlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kZW50ZXMgZSBuw6NvIGjDoSByZW1vw6fDo28gYXV0b23DoXRpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnUXVlcmVzIGNvbnRpbnVhcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVjZXNzaXRhIGRlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBIGRlZmluacOnw6NvIG7Do28gw6kgdW0gaGFzaCBZQU1MIHbDoWxpZG8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnVmlzw6NvIGdlcmFsOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBmb3JuZWNpZG8gbmVuaHVtIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfDiSBuZWNlc3PDoXJpbyBwZWxvIG1lbm9zIHVtIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gc2VsZWNpb25hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTsOjbyB0ZW0gYWNlc3NvIGRlIGVzY3JpdGEgYSBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo286ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOw6NvIGZvaSBkZWZpbmlkYSBuZW5odW1hIGRlZmluacOnw6NvIHBhcmEgYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvICIlcyIgbsOjbyBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGVsaW1pbmFyIG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ07Do28gZm9pIGVuY29udHJhZGEgbmVuaHVtYSB2ZXJzw6NvIHBhcmEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOw6NvIMOpIGZvcm5lY2lkbyBuZW5odW0gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvdSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBkYWRvIGFjZXNzbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGhpc3TDs3JpY28sIG7Do28gw6kgZm9ybmVjaWRvIG5lbmh1bSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGhpc3TDs3JpY28sIG7Do28gZm9yYW0gZGFkb3MgZGlyZWl0b3MgZGUgYWNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92byBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdmEgdmVyc8OjbyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRhIGltcGxhbnRhw6fDo28gYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZG8gaW5jaWRlbnRlIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZWxpbWluYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGlnYcOnw6NvIGEgJXMgKHRpcG89JXMpIGFkaWNpb25hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpZ2HDp8OjbyBhICVzICh0aXBvPSVzKSBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluacOnw6NvIGRlIENvbmZpZ0l0ZW0gYWN0dWFsaXphZGEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWUgYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXRvICVzIGF0dWFsaXphZG8gZGUgIiVzIiBwYXJhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc8OjbyAlcyBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBpbmRpY2FkbyBuZW5odW0gQ29uZmlnSXRlbUlEIG91IFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIG7Do28gZm9yYW0gZGFkb3MgZGlyZWl0b3MgZGUgYWNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuw6NvIGZvaSBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpbXByZXNzbyBwb3IgJXMgZW0gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6puY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBpbmRpY2FkbyBuZW5odW0gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOw6NvIHPDo28gY29uY2VkaWRvcyBkaXJlaXRvcyBkZSBhY2Vzc28gYSBlc3RhIGNsYXNzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1NlbSByZXN1bHRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGl0ZW0sIG7Do28gZm9yYW0gZGFkb3MgZGlyZWl0b3MgZGUgYWNlc3NvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuw6NvIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkYXMgdmVyc8O1ZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2aXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdPIGVzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gZXN0YWRvIGRlIGluY2lkZW50ZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2VtIHBlcm1pc3PDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOibWV0cm9zIGRlIHBlc3F1aXNhIGludsOhbGlkb3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnSXRlbnMgZGUgY29uZmlndXJhw6fDo28gYXByZXNlbnRhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIEltcGxlbWVudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gQXR1YWwgZGUgSW5jaWRlbnRlIHBvciB0aXBvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmnDp8O1ZXMgZGUgY2xhc3NlIHBhcmEgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW1hIG91IG1haXMgY2xhc3NlcyBwYXJhIHJlc3RyaW5naXIgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2VsZWNjaW9uw6F2ZWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6JtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNvIChWZXJzw6NvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyw6puY2lhIGRlIGxpZ2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTZSBlc3RhIGxpZ2HDp8OjbyBzZSBhcGxpY2EgYW8gQ29uZmlnSXRlbSBvdSDDoCB2ZXJzw6NvIGVzdMOhdGljYSBkbyBvYmpldG8gZGUgcmVmZXLDqm5jaWEuIE8gY8OhbGN1bG8gZG8gZXN0YWRvIGF0dWFsIGRvIGluY2lkZW50ZSBzw7Mgw6kgZWZlY3R1YWRvIGVtIGxpZ2HDp8O1ZXMgZGluw6JtaWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY2Npb25lIG8gYXRyaWJ1dG8gcGVsbyBxdWFsIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlcsOjbyBwZXNxdWlzYWRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdBIGVzdHJ1dHVyYSBkZSBiYXNlIG7Do28gw6kgdsOhbGlkYS4gRm9ybmXDp2EgdW0gaGFzaCBjb20gZGFkb3MgZW0gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ8OJIG5lY2Vzc8OhcmlvIGluaWNpYXIgYSBjYWRlaWEgWUFNTCBjb20gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIHB1cmdhciBhIHRhYmVsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGNhbXBvcyBkaW7Dom1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgaW5zZXJpciBuYSB0YWJlbGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcml1IDAgbGluaGFzIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVtIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGFyL0V4cG9ydGFyIGFuZXhvcyAoY29tbyBhcyDDumx0aW1hcyBlbnRyYWRhcyBwb3IgbGluaGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc8OjbyBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJybyBhbyBzaW5jcm9uaXphciBhcyBkZWZpbmnDp8O1ZXMuIFZlcmlmaWNhciBvIHJlZ2lzdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGVtIGRlZmluacOnw7VlcyBJVFNNQ29uZmlnSXRlbSBxdWUgbsOjbyBlc3TDo28gc2luY3Jvbml6YWRhcy4gUG9yIGZhdm9yLCBpbXBsZW1lbnRlIGFzIGFsdGVyYcOnw7VlcyBkbyBjYW1wbyBkaW7Dom1pY28gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW7Dp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc8OjbyBnZXJhbCBlIGNvbmZpcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YcOnw6NvIGRlIGNsYXNzZXMvZnVuw6fDtWVzIGUgcmVzcGVjdGl2b3MgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ09jb3JyZXUgdW0gZXJybyBkdXJhbnRlIGEgaW1wb3J0YcOnw6NvIGRhIGNsYXNzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgYWxhcmdhZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIENvbSBlc3RhIGZ1bmNpb25hbGlkYWRlLCDDqSBwb3Nzw612ZWwgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpw6fDtWVzIGRlIHBlc3F1aXNhIGFsYXJnYWRhcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQ29tIGVzdGEgZnVuY2lvbmFsaWRhZGUsIHBvZGUgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQ3MgYXRyaWJ1w61kb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdJQ3MgYXRyaWJ1w61kYXMgw6AgZW1wcmVzYSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnSUNzIGF0cmlidcOtZGFzIGFvIHV0aWxpemFkb3IgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnRGVmaW5pw6fDtWVzIGRhIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1ZlcmlmaWNhIHVtIG5vbWUgw7puaWNvIGFwZW5hcyBkZW50cm8gZGEgbWVzbWEgY2xhc3NlIGRlIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykgb3UgZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBvIHF1ZSBzaWduaWZpY2EgcXVlIHRvZG9zIG9zIENvbmZpZ0l0ZW0gZXhpc3RlbnRlcyBzw6NvIHRpZG9zIGVtIGNvbnRhIGFvIHByb2N1cmFyIGR1cGxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgZGUgbm9tZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdTZWxlY2lvbmFyIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgZGUgY2FkZWlhIGRlIHZlcnPDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1NlbGVjaW9uYXIgYXRyaWJ1dG9zIHBhcmEgYWNpb25hciBhIGNyaWHDp8OjbyBkZSB1bWEgbm92YSB2ZXJzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFc2NvbGhhIGNhdGVnb3JpYXMgcGFyYSBhdHJpYnVpciBhIGVzdGEgY2xhc3NlIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGUgY29sdW5hIHBhcmEgVmlzw6NvIGdlcmFsIGRvIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bmFzIHF1ZSBwb2RlbSBzZXIgZmlsdHJhZGFzIG5hIHPDrW50ZXNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIE5vdGE6IEFwZW5hcyBzw6NvIHBlcm1pdGlkb3MgYXRyaWJ1dG9zIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvIGUgQ2FtcG9zIERpbsOibWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0l0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZGljaW9uYXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBwZXJtaXRlIHJlZ2lzdGFyIG8gaGlzdMOzcmljbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBhY3R1YWxpemEgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBhIHN1YSBkZWZpbmnDp8OjbyBhdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaWNvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdJbXByaW1pciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXIgbyB6b29tIGRvIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgZW0gw6Fydm9yZSBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBkYXMgc2VndWludGVzIGNsYXNzZXMgbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzdG8gYW9zIElDcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gSUMgdGVtIGRlIHNlciBleGVjdXRhZGEgYXRyYXbDqXMgZGEgY29uc29sYSwgZGVwb2lzIGRlIGFsdGVyYXIgZXN0YSBvcMOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBjb20gb3Mgc2VndWludGVzIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuw6NvIHNlcsOjbyBhcm1hemVuYWRvcyBubyBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgaXN0byBhb3MgSUNzIGV4aXN0ZW50ZXMsIGEgbWlncmHDp8OjbyBkbyBJQyB0ZW0gZGUgc2VyIGV4ZWN1dGFkYSBhdHJhdsOpcyBkYSBjb25zb2xhLCBkZXBvaXMgZGUgYWx0ZXJhciBlc3RhIG9ww6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkZSBJdGVtcyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhw6fDo28gTGltaXRlIGRlIGl0ZW5zIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkYWRvcyBkZSBnZXN0w6NvIGRhIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOzZHVsbyBlbSBibG9jbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3V0ZXIgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmlhciBlIGdlcmlyIGFzIGRlZmluacOnw7VlcyBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmlhIGJpbGhldGVzIHBhcmEgQ29uZmlnSXRlbXMgZW0gcG9udG9zIGRlIHRlbXBvIGVzcGVjw61maWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnT3MgY2xpZW50ZXMgcG9kZW0gdmVyIHZlcnPDtWVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdPcyBjbGllbnRlcyB0w6ptIGEgcG9zc2liaWxpZGFkZSBkZSBhbHRlcm5hciBtYW51YWxtZW50ZSBlbnRyZSB2ZXJzw7VlcyBoaXN0w7NyaWNhcyBkZSBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYWRvcyBwcmVkZWZpbmlkb3MgYSB1dGlsaXphciBubyBhdHJpYnV0byBwYXJhIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28uIEV4ZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGFkb3MgcHJlZGVmaW5pZG9zIGEgdXRpbGl6YXIgbm8gYXRyaWJ1dG8gcGFyYSBvIGVjcsOjIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pciBBY8Onw7VlcyBvbmRlIHVtIGJvdMOjbyBkZSBjb25maWd1cmHDp8O1ZXMgZXN0w6EgZGlzcG9uw612ZWwgbmEgd2lkZ2V0IHRoZSBvYmplY3RvcyBsaWdhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuICBFc3RhcyBBY8Onw7VlcyBkZXZlbSBlc3RhciByZWdpc3RhZGFzIG5vcyBzZWd1aW50ZXMgZmljaGVpcm9zIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBzdHJpbmdzIGRlIHZlcnPDo28uIEFwZW5hcyB1dGlsaXphZG8gc2UgbyBtw7NkdWxvIFZlcnNpb24gU3RyaW5nIGVzdGl2ZXIgZGVmaW5pZG8gY29tbyBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGNvbmp1bnRvIGRlIGNvbmRpw6fDtWVzIHNvYiBhcyBxdWFpcyB1bSBjbGllbnRlIMOpIGF1dG9yaXphZG8gYSB2ZXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gQXMgY29uZGnDp8O1ZXMgcG9kZW0sIG9wY2lvbmFsbWVudGUsIHNlciByZXN0cmluZ2lkYXMgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBPIG5vbWUgw6kgbyDDum5pY28gYXRyaWJ1dG8gb2JyaWdhdMOzcmlvLiBTZSBuw6NvIGZvcmVtIGRhZGFzIG91dHJhcyBvcMOnw7VlcywgdG9kb3Mgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2Vyw6NvIHZpc8OtdmVpcyBuZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgZWxpbWluYXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgaW50ZXJmYWNlIGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBvYnRlciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBpbnRlcmZhY2UgZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHBlc3F1aXNhciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBJbnRlcmZhY2UgR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGRlZmluaXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgdmlzdGEgZ2VyYWwgcGFyYSBtb3N0cmFyIGEgdmlzdGEgcGVxdWVuYSBkYSBsaXN0YSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNlIGFzIGV0aXF1ZXRhcyBkbyB0aXBvIGRlIGxpZ2HDp8OjbyBkZXZlbSBzZXIgYXByZXNlbnRhZGFzIG5hcyBsaWdhw6fDtWVzIGRvcyBuw7NzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc3PDtWVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNzZSBDb25maWdJdGVtIHBhcmEgdmVyaWZpY2FyIG8gbm9tZSBkbyBDb25maWdJdGVtIGUgbW9zdHJhciBhcyBtZW5zYWdlbnMgZGUgZXJybyBjb3JyZXNwb25kZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGlzcG9uw612ZWlzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBjb21wb3N0YSBwb3IgdW0gbm9tZSBkZSBjbGFzc2UgZSB1bWEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb27DrXZlaXMgcGFyYSBhIGNsYXNzZSBjb3JyZXNwb25kZW50ZS4gQXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOibWljb3MgdMOqbSBkZSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcHJlZGVmaW5pZG8gcGFyYSBhIG9yZGVuYcOnw6NvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzdGEgb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG8gbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBvIG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzdGEgb3BlcmHDp8Ojby4gUGFyYSBjaW1hOiBvIG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgZXhpYmlkYXMgcG9yIHBhZHLDo28gbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgYSBwcm9mdW5kaWRhZGUgZGFzIHJlbGHDp8O1ZXMgcHJlZGVmaW5pZGFzIGEgc2VyZW0gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG1vc3RyYWRvIHBvciBkZWZlaXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBtb3N0cmFkbyBwb3IgZGVmZWl0byBwYXJhIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIktleSIgKENoYXZlKSBkZXZlIHRlciBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvLCBuZXN0ZSBjYXNvICJYIiwgIkNvbnRlbnQiIChDb250ZcO6ZG8pIGRldmUgdGVyIG8gdmFsb3IgZG8gY2FtcG8gZGluw6JtaWNvLCBkZXBlbmRlbmRvIGRvIHRpcG8gZGUgY2FtcG8gZGluw6JtaWNvLCBUZXh0IChUZXh0byk6ICJ1bSB0ZXh0byIsIERyb3Bkb3duIChNZW51IHN1c3BlbnNvKTogIjEiLCBEYXRlL1RpbWUgKERhdGEvSG9yYSk6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG91IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHN1Ym9iamV0byBwb3Igb21pc3PDo28gZGEgY2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRpc3BvbsOtdmVpcyBkZSBJQ3MgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgZG8gY29tcG9uZW50ZSBkbyBlZGl0b3IgZGUgcmljaCB0ZXh0IHBhcmEgZXN0ZSBlY3LDoy4gSW50cm9kdXphIG8gbsO6bWVybyAocGl4w6lpcykgb3UgbyB2YWxvciBwZXJjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIG7Dum1lcm8gZGUgbGluaGFzIHBhcmEgbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZGUgSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgaW5jaWRlbnRlcyBkZSBhbHRvIChwb3IgZXhlbXBsbywgY3JpY2l0YWwpIHBhcmEgYmFpeG8gKHBvciBleGVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gcmVsZXZhbnRlcyBvbmRlIG9zIHRpY2tldHMgdmluY3VsYWRvcyBwb2RlbSBhZmV0YXIgbyBzdGF0dXMgZGUgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIG8gZWNyw6MgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBsaW1pdGUgZGUgcGVzcXVpc2EgcGFyYSBvIGVjcsOjIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRlIElDcyBhcHJlc2VudGFkYXMgbmEgdmlzdGEgY29tcGxleGEgZGEgdGFiZWxhIGRlIGxpZ2HDp8O1ZXMgcGFyYSB0b2RhcyBhcyBjbGFzc2VzIGRlIElDcy4gU2UgbsOjbyBob3V2ZXIgbmVuaHVtYSBlbnRyYWRhLCBlbnTDo28gYXMgY29sdW5hcyBwYWRyw6NvIHPDo28gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIGRvcyBJQ3MgbmEgdmlzw6NvIGNvbXBsZXhhIGRhIHRhYmVsYSBkZSBsaWdhw6fDtWVzLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgc2VyIHByZWZpeGFkYSBjb20gbyBub21lIGRhIGNsYXNzZSBlIGRvaXMgcG9udG9zIGR1cGxvcyAocG9yIGV4ZW1wbG8sIENvbXB1dGFkb3I6OikuIEV4aXN0ZW0gYWxndW5zIGF0cmlidXRvcyBkZSBJQyBxdWUgc8OjbyBjb211bnMgYSB0b2RvcyBvcyBJQ3MgKGV4ZW1wbG8gcGFyYSBhIGNsYXNzZSBDb21wdXRhZG9yOiBDb21wdXRhZG9yOjpOb21lLCBDb21wdXRhZG9yOjpDdXJEZXBsU3RhdGUsIENvbXB1dGFkb3I6OkNyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgYXRyaWJ1dG9zIGRlIElDIGluZGl2aWR1YWlzLCB0YWwgY29tbyBkZWZpbmlkb3MgbmEgZGVmaW5pw6fDo28gZGUgSUMsIGRldmUgc2VyIHV0aWxpemFkbyBvIHNlZ3VpbnRlIGVzcXVlbWEgKGV4ZW1wbG8gcGFyYSBhIGNsYXNzZSBDb21wdXRhZG9yKTogQ29tcHV0YWRvcjo6SGFyZERpc2s6OjEsIENvbXB1dGFkb3I6OkhhcmREaXNrOjoxOjpDYXBhY2lkYWRlOjoxLCBDb21wdXRhZG9yOjpIYXJkRGlzazo6MiwgQ29tcHV0YWRvcjo6SGFyZERpc2s6OjI6OkNhcGFjaWRhZGU6OjEuIFNlIG7Do28gZXhpc3RpciBxdWFscXVlciByZWdpc3RvIHBhcmEgdW1hIGNsYXNzZSBkZSBJQywgc8OjbyBhcHJlc2VudGFkYXMgYXMgY29sdW5hcyBwcmVkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGl0ZW5zIHF1ZSBlc3TDo28gZGlzcG9uw612ZWlzIHBhcmEgIkHDp8OjbyIgbm8gdGVyY2Vpcm8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBkbyBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgb3MgaXRlbnMgcXVlIGVzdMOjbyBkaXNwb27DrXZlaXMgbm8gcHJpbWVpcm8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBkbyBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGl0ZW5zIHF1ZSBlc3TDo28gZGlzcG9uw612ZWlzIG5vIHNlZ3VuZG8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBkbyBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1ZSB0aXBvIGRlIGxpZ2HDp8OjbyAobm9tZWFkYSBhIHBhcnRpciBkYSBwZXJzcGV0aXZhIGRvIGJpbGhldGUpIHBvZGUgYWZldGFyIG8gZXN0YWRvIGRlIHVtIElDIGxpZ2Fkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXVlIHRpcG8gZGUgYmlsaGV0ZSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBsaWdhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQXR1YWxpemHDp8OjbyBkYSBkZWZpbmnDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxpbWluYXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvciBkbyBlc3RhZG8gZGUgaW1wbGFudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGUgaW1wbGFudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGNhbXBvIGRpbsOibWljbyBxdWUgbWFyY2EgYXMgZGVmaW5pw6fDtWVzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gZm9yYSBkZSBzaW5jcm9uaWEsIHNlIG9zIGNhbXBvcyBkaW7Dom1pY29zIGNvbnRpZG9zIGZvcmVtIGFsdGVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBubyBlY3LDoiBhZGljaW9uYWwgSVRTTSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBhcHJlc2VudGFkb3Mgbm8gZWNyw6MgZGUgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBhcHJlc2VudGFkb3Mgbm8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBxdWUgbyBmcm9udGVuZCBkbyBhZ2VudGUgdHJhYmFsaGUgZW0gbWFpcyBkbyBxdWUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBjYWRhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0F0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgYcOnw6NvIGVtIG1hc3NhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwZW5hcyBwYXJhIG9zIGdydXBvcyBsaXN0YWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQXRpdmEvZGVzYWN0aXZhIGEgZnVuY2lvbmFsaWRhZGUgcGFyYSB2ZXJpZmljYXIgc2Ugb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB0w6ptIG5vbWVzIMO6bmljb3MuIEFudGVzIGRlIGF0aXZhciBlc3RhIG9ww6fDo28sIGRldmUgdmVyaWZpY2FyIHNlIGV4aXN0ZW0gbm8gc2V1IHNpc3RlbWEgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gY29tIG5vbWVzIGR1cGxpY2Fkb3MuIFBvZGUgZmF6w6otbG8gY29tIG8gY29tYW5kbyBkYSBjb25zb2xhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgZGVmaW5pciBvIGVzdGFkbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIGxpbmsgdGlja2V0LWNvbmZpZ2l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkbyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLCB1dGlsaXphZG9zIHBhcmEgYSBwZXNxdWlzYSBkZSB0ZXh0byBpbnRlZ3JhbC4gT3MgY2FtcG9zIHRhbWLDqW0gc8OjbyBhcm1hemVuYWRvcywgbWFzIG7Do28gc8OjbyBvYnJpZ2F0w7NyaW9zIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBnZXJhbC4gQSBpbmNsdXPDo28gZGUgYW5leG9zIHBvZGUgc2VyIGRlc2FjdGl2YWRhIGRlZmluaW5kbyBhIGVudHJhZGEgY29tbyAwIG91IGVsaW1pbmFuZG8tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhcm1hemVuYWRvcyBubyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBzw6NvIHV0aWxpemFkb3MgcGFyYSBvdXRyYXMgY29pc2FzIHBhcmEgYWzDqW0gZGUgcGVzcXVpc2FzIGRlIHRleHRvIGludGVncmFsLiBQYXJhIHVtYSBmdW5jaW9uYWxpZGFkZSBjb21wbGV0YSwgdG9kb3Mgb3MgY2FtcG9zIHPDo28gb2JyaWdhdMOzcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQYXJhIGNhZGEgc2VydmnDp28gV2ViIChjaGF2ZSkgcG9kZSBzZXIgZGVmaW5pZG8gdW0gY29uanVudG8gZGUgY2xhc3NlcyAodmFsb3IpIMOgcyBxdWFpcyBhIGltcG9ydGHDp8OjbyDDqSBsaW1pdGFkYS4gUGFyYSB0b2RhcyBhcyBjbGFzc2VzIGVzY29saGlkYXMsIG91IHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBleGlzdGVudGVzLCBvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYcOnw6NvIHRlcsOjbyBkZSBzZXIgZXNjb2xoaWRvcyBuYSBjb25maWd1cmHDp8OjbyBkbyBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdG8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdG8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnU8OtbnRlc2UgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVpIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGluY2lkZW50ZXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBhcHJlc2VudGFyIG5vIHJlc3VsdGFkbyBkZXN0YSBvcGVyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VyYXIgZXN0YXTDrXN0aWNhcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tZSBkbyBtw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOw7ptZXJvIE3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIGFwcmVzZW50YXIgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgYXByZXNlbnRhciBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVjdG9zIGEgcHJvY3VyYXIsIHF1YW50YXMgZW50cmFkYXMgZSBxdWFpcyBvcyBhdHJpYnV0b3MgYSBtb3N0cmFyLiBPcyBhdHJpYnV0b3MgQ29uZmlnSXRlbSB0w6ptIGRlIHNlciBhcm1hemVuYWRvcyBleHBsaWNpdGFtZW50ZSBhdHJhdsOpcyBkbyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXPDo28gR2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIGFzIGNhdGVnb3JpYXMgZGUgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvcyBmaWx0cm9zIGRlIGNvbHVuYSBkYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwZXF1ZW5vLiBOb3RhOiBhIGRlZmluacOnw6NvIGRlICJBY3RpdmUiIChBdGl2bykgcGFyYSAwIGFwZW5hcyBpbXBlZGUgb3MgYWdlbnRlcyBkZSBlZGl0YXJlbSBhcyBkZWZpbmnDp8O1ZXMgZGVzdGUgZ3J1cG8gbmFzIHN1YXMgcHJlZmVyw6puY2lhcyBwZXNzb2FpcywgbWFzIGNvbnRpbnVhIGEgcGVybWl0aXIgcXVlIG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0ZW0gYXMgZGVmaW5pw6fDtWVzIGVtIG5vbWUgZGUgb3V0cm8gdXRpbGl6YWRvci4gVXRpbGl6ZSAiUHJlZmVyZW5jZUdyb3VwIiBwYXJhIGNvbnRyb2xhciBlbSBxdWUgw6FyZWEgZXN0YXMgZGVmaW5pw6fDtWVzIGRldmVtIHNlciBhcHJlc2VudGFkYXMgbmEgaW50ZXJmYWNlIGRvIHV0aWxpemFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBiYWNrZW5kIGRvIHBhaW5lbCBkZSB2aXPDo28gZ2VyYWwgZGUgdGlja2V0cyBtZXN0cmUgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4gIkxpbWl0ZSIgw6kgYSBxdWFudGlkYWRlIGRlIHJlZ2lzdHJvcyBleGliaWRhIHBvciBwYWRyw6NvLiAiR3J1cG8iIMOpIHVzYWRvIHBhcmEgcmVzdHJpbmdpciBvIGFjZXNzbyBhbyBwbHVnaW4gKGV4LjogR3J1cG86IGFkbWluO2dydXBvMTtncnVwbzIpLiAiUGFkcsOjbyIgZGV0ZXJtaW5hIHNlIG8gcGx1Z2luIMOpIGhhYmlsaXRhZG8gcG9yIHBhZHLDo28gb3Ugc2UgbyB1c3XDoXJpbyBwcmVjaXNhIGhhYmlsaXTDoS1sbyBtYW51YWxtZW50ZS4gIkNhY2hlVFRMTG9jYWwiIMOpIG8gdGVtcG8gZGUgY2FjaGUgZW0gbWludXRvcyBwYXJhIG8gcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBiYWNrZW5kIGRvIHBhaW5lbCBkZSB2aXPDo28gZ2VyYWwgZGUgdGlja2V0cyBtZXN0cmUgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4gIkxpbWl0ZSIgw6kgYSBxdWFudGlkYWRlIGRlIHJlZ2lzdHJvcyBleGliaWRhIHBvciBwYWRyw6NvLiAiR3J1cG8iIMOpIHVzYWRvIHBhcmEgcmVzdHJpbmdpciBvIGFjZXNzbyBhbyBwbHVnaW4gKGV4LjogR3J1cG86IGFkbWluO2dydXBvMTtncnVwbzIpLiAiUGFkcsOjbyIgZGV0ZXJtaW5hIHNlIG8gcGx1Z2luIMOpIGhhYmlsaXRhZG8gcG9yIHBhZHLDo28gb3Ugc2UgbyB1c3XDoXJpbyBwcmVjaXNhIGhhYmlsaXTDoS1sbyBtYW51YWxtZW50ZS4gIkNhY2hlVFRMTG9jYWwiIMOpIG8gdGVtcG8gZGUgY2FjaGUgZW0gbWludXRvcyBwYXJhIG8gcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYSBjb3IgZG9zIGVzdGFkb3MgZGUgaW1wbGVtZW50YcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBlc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIG5hcyBwcmVmZXLDqm5jaWFzIGRlIHZpc3VhbGl6YcOnw6NvIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRvIGdydXBvcyBkZSBwZXJtaXNzw6NvIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28gZ2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbm9tZXMgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIG7Dum1lcm9zIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRhcyBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHPDo28gdmlzdWFsaXphZG9zKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgY2FkZWlhIGRlIHZlcnPDtWVzIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZG8gY29uanVudG8gZGUgZmVycmFtZW50YXMgZG8gbW9kZWxvIGRlIGNhZGVpYSBkZSB2ZXJzw7VlcyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gYWNpb25hZG9yIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdFeGVjdXRhIGEgYcOnw6NvIGNvbmZpZ3VyYWRhIHBhcmEgY2FkYSBldmVudG8gKGNvbW8gSW52b2NhZG9yKSBwYXJhIGNhZGEgV2Vic2VydmljZSBjb25maWd1cmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1Blcm1pc3PDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXRpbGl6YXIgYSBhw6fDo28gZGUgYW5leGHDp8OjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHV0aWxpemFyIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIHZpc3VhbGl6YcOnw6NvIGVtIMOhcnZvcmUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBhZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZW0gbWFzc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGVkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgaW1wcmVzc8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOpZ2lvcyBuZWNlc3PDoXJpb3MgcGFyYSBlbGltaW5hciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdQcm9jdXJhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXIgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIGRlIHVtIElDIGF1dG9tYXRpY2FtZW50ZSBxdWFuZG8gdW0gdGlja2V0IMOpIHZpbmN1bGFkbyBhIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGVzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gbm8gZWNyw6MgZW0gYmxvY28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIG5vIGVjcsOjIGVtIGJsb2NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGFzc29jaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gYSBvdXRybyBvYmpldG8gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGFjZWRlciBhbyBoaXN0w7NyaWNvIGRlIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZWRlciBvIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGVsaW1pbmFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc3VhIHZpc3RhIGRlIHpvb20gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhcHJlc2VudGFyIGFzIGxpZ2HDp8O1ZXMgZG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gdW1hIFZpc3RhIGVtIMOBcnZvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSB2b2x0YXIgw6AgdmlzdGEgZGUgem9vbSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhbXBsaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBvIGhpc3TDs3JpY28gZG8gaXRlbSBjb25maWd1cmHDp8OjbyAob3JkZW0gaW52ZXJzYSkgbm8gaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnQSBjYXRlZ29yaWEgcHJlZGVmaW5pZGEgcXVlIMOpIG1vc3RyYWRhLCBzZSBuw6NvIGZvciBzZWxlY2lvbmFkYSBuZW5odW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIGRlIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIHBvciBleGVtcGxvLCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gQSBwcmVkZWZpbmnDp8OjbyDDqSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBY2Npb25hIGF1dG9tYXRpY2FtZW50ZSBvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzw6NvIEV4cHJlc3PDo28gZGUgY2FkZWlhIGRlIGNhcmFjdGVyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc8OjbyBTdHJpbmcgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY2lvbmFkb3IgZGUgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2UgYSBleGVjdcOnw6NvIGRlIENvbmZpZ0l0ZW1BQ0wgcG9kZSBzZXIgZXZpdGFkYSBhdHJhdsOpcyBkYSB2ZXJpZmljYcOnw6NvIGRhcyBkZXBlbmTDqm5jaWFzIGRlIGNhbXBvIGVtIGNhY2hlLiBJc3RvIHBvZGUgbWVsaG9yYXIgb3MgdGVtcG9zIGRlIGNhcnJlZ2FtZW50byBkb3MgZm9ybXVsw6FyaW9zLCBtYXMgdGVtIGRlIHNlciBkZXNhdGl2YWRvLCBzZSBvcyBBQ0xNb2R1bGVzIHRpdmVyZW0gZGUgc2VyIHV0aWxpemFkb3MgcGFyYSBJVFNNQ29uZmlnSXRlbS0gZSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlIGluZm9ybWHDp8O1ZXMgZ2VyYWlzIHPDo28gYXByZXNlbnRhZGFzIG5vIGNhYmXDp2FsaG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3DDs3MtcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcsOpLXByb2R1dGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHV0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBvbGVnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBvbGVnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBvbGVnYWRhcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwb2xlZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcG9sZWdhZGFzICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBvbGVnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAyMSBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBvbGVnYWRhcyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0VzdGFudGUgZGUgMjMgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb2xlZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBvbGVnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcG9sZWdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcG9sZWdhZGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBvbGVnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG9sZWdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwb2xlZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvbGVnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcG9sZWdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG9sZWdhZGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcG9sZWdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcG9sZWdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcG9sZWdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvbGVnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBvbGVnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcG9sZWdhZGFzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcG9sZWdhZGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBvbGVnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBdHJpYnVpw6fDo28gZGUgZW5kZXJlw6dvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9uZSBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJlbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2lkYWRlIGRhIGJhdGVyaWEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUaXBvIGRlIGJhdGVyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdQcsOpZGlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UgZGUgYmFycmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzc2Fkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc3NlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpZGFkZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpZGFkZSBwb3IgcGxhY2EgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWl0b3IgZGUgY2FydMO1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkZSBjYXJ0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3JpYSBkZSBjbGllbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdWZWxvY2lkYWRlIGRvIHJlbMOzZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWZWxvY2lkYWRlIGRvIHJlbMOzZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgYXNzaW5hdHVyYSBkZSBjw7NkaWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlZm9uZSBkZSBjb25mZXLDqm5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBjb25zdWx0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3RhciBvIGRpc3RyaWJ1aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3TDo28gZGUgY29udGVudG9yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGEgcGFydGlyIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGF0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsZWZvbmUgc2VtIGZpb3MgKHRlbGVmb25lIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0N1c3RvIHVuaXTDoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ07Dum1lcm8gZGUgbGljZW7Dp2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRhIGRlIGNyaWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnRXN0YW50ZSBwZXJzb25hbGl6YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2Vydmlkb3IgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRhIGRhIGZhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0YSBkYSBlbmNvbWVuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGEgZGEgZ2FyYW50aWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0YSBkZSBsYW7Dp2FtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnw4FyZWEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgYXNzaW5hdHVyYSBkZSBkb2N1bWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnQmFzdGlkb3IgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNvcnJlaW8gZWxldHLDs25pY28gKENlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJhbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kZXJlw6dvIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmltIGRvIGFwb2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0YSBkZSBleHBpcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gcsOtZ2lkbyBleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FybWF6ZW5hbWVudG8gZGUgZW5lcmdpYSBubyB2b2xhbnRlIGRvIG1vdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmF0b3IgZGUgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGZyYW5xdWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTGl2cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw7VlcyBnZXJhaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdQbGFjYXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdQbGFjYSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZG8gaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0F1c2N1bHRhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3TDo28gZGUgSWRlbnRpZGFkZSBlIEFjZXNzbyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnTDoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0N1c3RvcyBkZSBpbnZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRhIGZhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGVjcsOjIGRlIGNyaXN0YWlzIGzDrXF1aWRvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChEw61vZG8gRW1pc3NvciBkZSBMdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGZpeG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAncG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYW1hZGEgMTogQ2FtYWRhIGbDrXNpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnQ2FtYWRhIDI6IENhbWFkYSBkZSBsaWdhw6fDo28gZGUgZGFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NhbWFkYSAzOiBDYW1hZGEgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdDYW1hZGEgMzogQ2FtYWRhIGRlIHJlZGUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYW1hZGEgNDogQ2FtYWRhIGRlIHRyYW5zcG9ydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0NhbWFkYSA1OiBDYW1hZGEgZGUgc2Vzc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDYW1hZGEgNjogQ2FtYWRhIGRlIGFwcmVzZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnQ2FtYWRhIDc6IENhbWFkYSBkZSBhcGxpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBhcnJlbmRhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBMaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2hhdmUgZGUgbGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBkZSBsaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGUgbGljZW7Dp2EgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZSBsaWNlbsOnYSBhdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGZvc2ZhdG8gZGUgZmVycm8gZSBsw610aW8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGnDtWVzIGRlIGzDrXRpbyAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGVtcHLDqXN0aW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMb2NhbGl6YWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmljYW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpZGFkZSBtw6F4aW1hIGRlIGNhcmdhIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1RpcG8gZGUgbWVtw7NyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0ZWxlbcOzdmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZlbC9FbWJhcmNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBkbyBtb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUmVzb2x1w6fDo28gZG8gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYW1hbmhvIGRvIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWHDp8O1ZXMgc29icmUgYSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDtWVzIHNvYnJlIGEgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ2FtYWRhIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIG7DrXF1ZWwtY8OhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGhpZHJldG8gbWV0w6FsaWNvIGRlIG7DrXF1ZWwgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0Fjb3JkbyBkZSBuw6NvIGRpdnVsZ2HDp8OjbyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0NhZGVybm8gZGUgbm90YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOw7ptZXJvIGRlIENQVXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBkZSBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSBwbGFjYXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKETDrW9kbyBFbWlzc29yIGRlIEx1eiBPcmfDom5pY28pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0N1c3RvcyBkZSBmdW5jaW9uYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgZW5jb21lbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1Nhw61kYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQWNvcmRvIGRlIHBhcmNlcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0ZWxlZm9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWxlZm9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ07DumNsZW9zIGbDrXNpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRm9ybmVjaW1lbnRvIGRlIGVuZXJnaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWRlIGRhIGVzdGFudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnU2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0NhcnTDo28gU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB2ZW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUZWxlZm9uZSBwb3Igc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgc2VsYWRhIGRlIGNodW1iby3DoWNpZG8gKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpw6dvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmnDp28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSB0b21hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0FsdGlmYWxhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdQYWRyw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdFbmRlcmXDp28gSVAgaW5pY2lhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQXJtYXplbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpw6fDo28gZGUgYXJtYXplbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmVzdW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBmaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkYSBwbGFjYSBncsOhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgZGUgZWNyw6MgdMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdBdXJpY3VsYXIgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWZvbmUgVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ro_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRlIGdlbmVyYWxlIGRlIGZ1bmPIm2lvbmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnU2V0xINyaSBwZW50cnUgZGF0ZWxlIGRlIHNvbGljaXRhcmUgcHJpbWl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1NldMSDcmkgcGVudHJ1IGllyJlpcmVhIGRhdGVsb3IgZGUgcsSDc3B1bnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uYXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhcmVhIGRlZmluacibaWVpIGNsYXNlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpY2FyZWEgZGVmaW5pyJtpZWkgcm9sdWx1aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2hldGUgZGUgY2xhc2UgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQWljaSBwdXRlyJtpIGltcG9ydGEgcGFjaGV0ZSBkZSBjbGFzZSBSZWFkeTJJbXBvcnQgY2FyZSBwcmV6aW50xIMgY2VsZSBtYWkgdXp1YWxlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlLiBWxIMgcnVnxINtIHPEgyByZcibaW5lyJtpIGPEgyBlc3RlIHBvc2liaWwgc8SDIGZpZSBuZWNlc2FyxIMgbyBhbnVtaXTEgyBjb25maWd1cmFyZSBzdXBsaW1lbnRhcsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBY3R1YWxpemFyZWEgZW50aXTEg8ibaWxvciBleGlzdGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRhyJtpIHBhY2hldGVsZSBkZSBjbGFzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNhIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSb2x1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cnUgcGVudHJ1IGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjdGHIm2kgbyBjbGFzxIMgZGluIGxpc3TEgyBwZW50cnUgYSBjcmVhIHVuIG5vdSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGFyZWEgZGUgZGVzZsSDyJl1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXJlYSBpbmNpZGVudHVsdWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGVnxIN0dXJhIGN1IHVuIGFsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtxINyIGRlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtxINydWwgdW51aSBhbHQgZWxlbWVudCBkZSBjb25maWd1cmFyZSBjdSBjYXJlIHNlIGZhY2UgbGVnxIN0dXJhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0NoaWFyIGRvcmnIm2kgc8SDIMiZdGVyZ2XIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZWxlIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTnVtZWxlIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3Eg3J1bCB2ZXJzaXVuaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcSDcnVsIGRlIHZlcnNpdW5lIGFsIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ051bcSDcnVsIGRlIHZlcnNpdW5lIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdHVsIGluY2lkZW50dWx1aSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSXN0b3JpY3VsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc3RvcmllIENvbsibaW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWZWRlcmUgZGUgZGV0YWxpdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudGUgcGUgcGFnaW7Egyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTnUgcy1hdSBnxINzaXQgZGF0ZSBkZXNwcmUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdGHIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1J1bGHIm2kgY8SDdXRhcmVhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0RlIGFzZW1lbmVhLCBjxIN1dGHIm2kgw65uIHZlcnNpdW5pbGUgYW50ZXJpb2FyZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBwZW50cnUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsdWwgZGUgYWTDom5jaW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBJbi9PdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTml2ZWx1bCBtYXhpbSBkZSBsZWfEg3R1cmkgYSBmb3N0IGF0aW5zIHBlbnRydSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnQgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcibaWkgZGVzcHJlIGVsZW1lbnR1bCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGFyZWEgYWN0dWFsxIMgZGUgZGVzZsSDyJl1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnU3RhcmVhIGFjdHVhbMSDIGEgaW5jaWRlbnR1bHVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1VsdGltYSBtb2RpZmljYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ01vZGlmaWNhdCB1bHRpbWEgZGF0xIMgZGUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdFbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0PEg3V0YXJlIENvbmZpZ0l0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcCBkZSBvYmllY3QnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cnUgZHVwxIMgdGlwJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Ugdm9yIGltcG9ydGEgdXJtxIN0b2FyZWxlIGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1VybcSDdG9hcmVsZSByb2x1cmkgdm9yIGZpIGltcG9ydGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdSZcibaW5lyJtpIGPEgyB2b3IgZmkgY3JlYXRlIMiZaSBjw6JtcHVyaWxlIGRpbmFtaWNlIGNvcmVzcHVuesSDdG9hcmUgyJlpIGNsYXNlbGUgR2VuZXJhbENhdGFsb2cgyJlpIGPEgyBudSBleGlzdMSDIG8gZWxpbWluYXJlIGF1dG9tYXTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWcmXIm2kgc8SDIGNvbnRpbnVhyJtpPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmnIm2lhIG51IGVzdGUgdW4gaGFzaCBZQU1MIHZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBkYXQgbmljaXVuIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIGNlbCBwdcibaW4gdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSBzZWxlY3RhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOdSBhdmXIm2kgYWNjZXMgZGUgc2NyaWVyZSBsYSBhY2VzdCBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTnUgYSBmb3N0IGRlZmluaXTEgyBuaWNpbyBkZWZpbmnIm2llIHBlbnRydSBjbGFzYSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0VsZW1lbnR1bCBkZSBjb25maWd1cmFyZSAiJXMiIG51IHNlIGfEg3NlyJl0ZSDDrm4gYmF6YSBkZSBkYXRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ051IGEgZm9zdCBwb3NpYmlsxIMgyJl0ZXJnZXJlYSBjb25maWdpdGVtdWx1aSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ051IHMtYSBnxINzaXQgbmljaW8gdmVyc2l1bmUgcGVudHJ1IENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBpbmRpY2F0IG5pY2l1biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHNhdSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTnUgc2Ugb2ZlcsSDIGFjY2VzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOdSBzZSBwb2F0ZSBhZmnImWEgaXN0b3JpY3VsLCBudSBlc3RlIGRhdCBuaWNpdW4gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBpc3RvcmljdWwsIG51IHNlIGFjb3JkxIMgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3UgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdWZXJzaXVuZSBub3XEgyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhcmVhIGRlIGltcGxlbWVudGFyZSBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGFyZWEgaW5jaWRlbnR1bHVpIGEgZm9zdCBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSDImXRlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIGPEg3RyZSAlcyAodGlwPSVzKSBhZMSDdWdhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBjxIN0cmUgJXMgKHRpcD0lcykgyJl0ZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnIm2llIENvbmZpZ0l0ZW0gYWN0dWFsaXphdMSDIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOdW1lIGFjdHVhbGl6YXQgKG5vdT0lcywgdmVjaGk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dHVsICVzIGEgZm9zdCBhY3R1YWxpemF0IGRlIGxhICIlcyIgbGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaXVuZWEgJXMgyJl0ZWFyc8SDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ051IGVzdGUgaW5kaWNhdCBuaWNpdW4gQ29uZmlnSXRlbUlEIHNhdSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG51IGEgZm9zdCBnxINzaXQgw65uIGJhemEgZGUgZGF0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3RpcMSDcml0IGRlICVzIGxhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmluyJvEgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOdSBlc3RlIGRhdCBuaWNpdW4gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOdSBzZSBhY29yZMSDIGRyZXB0dXJpIGRlIGFjY2VzIHBlbnRydSBhY2Vhc3TEgyBjbGFzxIMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOaWNpIHVuIHJlenVsdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlenVsdGF0ZWxlIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMgcGVudHJ1IENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbnUgYSBmb3N0IGfEg3NpdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTnUgcy1hdSBnxINzaXQgdmVyc2l1bmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmHIm2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGl6YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlIGEgYWNlc3R1aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhcmVhIGluY2lkZW50xIMgYSBhY2VzdHVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOdSBhaSBwZXJtaXNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50ZSBkZSBjb25maWd1cmFyZSBhZmnImWF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXAgZGUgc3RhdCBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcHVsIGRlIHN0YXQgYWwgaW5jaWRlbnR1bHVpIGN1cmVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfDjm50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWPIm2lpIGRlIGNsYXPEgyBwZW50cnUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY8ibaWkgZGUgY2xhc8SDIHBlbnRydSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaWMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpdW5lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXB1bCBkZSByZWZlcmluyJvEgyBhIGxlZ8SDdHVyaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnRGFjxIMgYWNlYXN0xIMgbGVnxIN0dXLEgyBzZSBhcGxpY8SDIGxhIENvbmZpZ0l0ZW0gc2F1IGxhIHZlcnNpdW5lYSBzdGF0aWPEgyBhIG9iaWVjdHVsdWkgZGUgcmVmZXJpbsibxIMuIENhbGN1bHVsICJDdXJyZW50IEluY2lkZW50IFN0YXRlIiBzZSBlZmVjdHVlYXrEgyBudW1haSDDrm4gY2F6dWwgbGVnxIN0dXJpbG9yIGRpbmFtaWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdGHIm2kgYXRyaWJ1dHVsIGR1cMSDIGNhcmUgdm9yIGZpIGPEg3V0YXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWN0dXJhIGRlIGJhesSDIG51IGVzdGUgdmFsaWTEgy4gVsSDIHJ1Z8SDbSBzxIMgZnVybml6YcibaSB1biBoYXNoIGN1IGRhdGUgw65uIGZvcm1hdCBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzdGUgbmVjZXNhciBjYSDImWlydWwgWUFNTCBzxIMgw65uY2VhcMSDIGN1ICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOdSBzLWEgcHV0dXQgY3VyxIPIm2EgdGFiZWx1bCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOdSBhdSBmb3N0IGfEg3NpdGUgY8OibXB1cmkgZGluYW1pY2UgcmVsZXZhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTnUgcy1hIHB1dHV0IGluc2VyYSDDrm4gdGFiZWx1bCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyYXRlIDAgcsOibmR1cmkgw65uIHRhYmVsdWwgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ051bcSDcnVsIG1heGltIGFsIHVudWkgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnQvRXhwb3J0IGF0YciZYW1lbnRlIChjYSB1bHRpbWVsZSBpbnRyxINyaSBwZSBsaW5pZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaXVuZWEgU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vyb2FyZSBkZSBzaW5jcm9uaXphcmUgYSBkZWZpbmnIm2lpbG9yLiBWxIMgcnVnxINtIHPEgyB2ZXJpZmljYcibaSBqdXJuYWx1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdBdmXIm2kgZGVmaW5pyJtpaSBJVFNNQ29uZmlnSXRlbSBjYXJlIG51IHN1bnQgc2luY3Jvbml6YXRlLiBWxIMgcnVnxINtIHPEgyBpbXBsZW1lbnRhyJtpIG1vZGlmaWPEg3JpbGUgY8OibXB1cmlsb3IgZGluYW1pY2UgYWxlIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OObnRyZcibaW5lcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmlmaWNhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmHIm2lpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXp1aXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0YXJlL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQcmV6ZW50YXJlIGdlbmVyYWzEgyDImWkgY29uZmlybWFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnR1bCBjbGFzZWxvci9yb2x1cmlsb3IgyJlpIGFsIGPDom1wdXJpbG9yIGFmZXJlbnRlIGFjZXN0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnUy1hIHByb2R1cyBvIGVyb2FyZSDDrm4gdGltcHVsIGltcG9ydHVsdWkgY2xhc2VpLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gQXNjdW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBBZmnImWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpyJtpaSBkZSBjxIN1dGFyZSBleHRpbnNlIMOubiBjxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBDdSBhY2Vhc3TEgyBmdW5jyJtpZSBwdXRlyJtpIGPEg3V0YSwgZGUgZXhlbXBsdSwgbnVtZWxlIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGN1IGFjZXN0IHRpcCBkZSBjb25kacibaWksIGN1bSBhciBmaSAiKCprZXkxKiYmJiprZXkyKikiIHNhdSAiKCprZXkxKnx8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpyJtpaSBkZSBjxIN1dGFyZSBleHRpbnNlIMOubiBjxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLiBDdSBhY2Vhc3TEgyBmdW5jyJtpZSBwdXRlyJtpIGPEg3V0YSwgZGUgZXhlbXBsdSwgbnVtZWxlIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGN1IGFjZXN0IHRpcCBkZSBjb25kacibaWksIGN1bSBhciBmaSAiKCprZXkxKiYmJiprZXkyKikiIHNhdSAiKCprZXkxKnx8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQyBhdHJpYnVpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdJQyBhdHJpYnVpdGUgc29jaWV0xIPIm2lpIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0lDIGF0cmlidWl0ZSB1dGlsaXphdG9ydWx1aSBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1NldMSDcmkgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVmVyaWZpY8SDIHVuIG51bWUgdW5pYyBudW1haSDDrm4gY2FkcnVsIGFjZWxlaWHImWkgY2xhc2UgZGUgQ29uZmlnSXRlbSAoImNsYXNzIikgc2F1IGxhIG5pdmVsIGdsb2JhbCAoImdsb2JhbCIpLCBjZWVhIGNlIMOubnNlYW1uxIMgY8SDIGZpZWNhcmUgQ29uZmlnSXRlbSBleGlzdGVudCBlc3RlIGx1YXQgw65uIGNvbnNpZGVyYXJlIGF0dW5jaSBjw6JuZCBzZSBjYXV0xIMgZHVwbGljYXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQWxlZ2XIm2kgdW4gbW9kdWwgcGVudHJ1IGEgaW1wdW5lIG8gc2NoZW3EgyBkZSBkZW51bWlyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0FsZWdlyJtpIHVuIG1vZHVsIHBlbnRydSBhIGFwbGljYSBvIHNjaGVtxIMgZGUgbnVtZXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdBbGVnZcibaSB1biBtb2R1bCBwZW50cnUgYSBhcGxpY2EgbyBzY2hlbcSDIGRlIMiZaXJ1cmkgZGUgdmVyc2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnQWxlZ2XIm2kgYXRyaWJ1dGVsZSBwZW50cnUgYSBkZWNsYW7ImWEgY3JlYXJlYSB1bmVpIG5vaSB2ZXJzaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnQWxlZ2XIm2kgY2F0ZWdvcmlpbGUgcGUgY2FyZSBzxIMgbGUgYXRyaWJ1acibaSBhY2VzdGVpIGNsYXNlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmUgZGUgY29sb2FuxIMgcGVudHJ1IGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUgcGVudHJ1IENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2xvYW5lIGNhcmUgcG90IGZpIGZpbHRyYXRlIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuIE5vdMSDOiBTdW50IHBlcm1pc2UgbnVtYWkgYXRyaWJ1dGVsZSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSDImWkgY8OibXB1cmlsZSBkaW5hbWljZSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudGUgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0FkxIN1Z2FyZSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhcmUgZWxlbWVudCBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bHVsIGRlIGV2ZW5pbWVudGUgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgY2FyZSBwZXJtaXRlIMOubnJlZ2lzdHJhcmVhIMOubiBpc3RvcmljIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgZGUgZXZlbmltZW50IGFsIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGNhcmUgYWN0dWFsaXplYXrEgyBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlIGxhIGRlZmluacibaWEgbG9yIGN1cmVudMSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0lzdG9yaWN1bCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmltYXJlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhyJtpIHpvb211bCBlbGVtZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIFRyZWUgVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdWZXJzaXVuZWEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkaW4gdXJtxIN0b2FyZWxlIGNsYXNlIG51IHZvciBmaSBzdG9jYXRlIHBlIHNlcnZlcnVsIEVsYXN0aWNzZWFyY2guIFBlbnRydSBhIGFwbGljYSBhY2VzdCBsdWNydSBsYSBJQy11cmlsZSBleGlzdGVudGUsIG1pZ3JhcmVhIElDLXVyaWxvciB0cmVidWllIHPEgyBmaWUgZXhlY3V0YXTEgyBwcmluIGludGVybWVkaXVsIGNvbnNvbGVpLCBkdXDEgyBtb2RpZmljYXJlYSBhY2VzdGVpIG9wyJtpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBjdSB1cm3Eg3RvYXJlbGUgc3TEg3JpIGRlIGltcGxlbWVudGFyZSBudSB2b3IgZmkgc3RvY2F0ZSBwZSBzZXJ2ZXJ1bCBFbGFzdGljc2VhcmNoLiBQZW50cnUgYSBhcGxpY2EgYWNlc3QgbHVjcnUgbGEgSUMtdXJpbGUgZXhpc3RlbnRlLCBtaWdyYXJlYSBJQy11cmlsb3IgdHJlYnVpZSBzxIMgZmllIGV4ZWN1dGF0xIMgcHJpbiBpbnRlcm1lZGl1bCBjb25zb2xlaSwgZHVwxIMgbW9kaWZpY2FyZWEgYWNlc3RlaSBvcMibaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ29uZmlndXJhyJtpZSBFbGVtZW50IGxpbWl0xIMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYcibaWUgTGltaXRhIGRlIGVsZW1lbnRlIHBlIHBhZ2luxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXphIGRlIGRhdGUgZGUgZ2VzdGlvbmFyZSBhIGNvbmZpZ3VyYcibaWVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnRWxlbWVudCBkZSBjb25maWd1cmFyZSBtb2R1bCBidWxrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbGVtZW50dWwgZGUgY29uZmlndXJhcmUgY8SDdXRhcmUgcm91dGVyIGJhY2tlbmQgYWwgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhyJtpIMiZaSBnZXN0aW9uYcibaSBkZWZpbmnIm2lpbGUgcGVudHJ1IGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlZWF6xIMgYmlsZXRlIHBlbnRydSBDb25maWdJdGVtcyBsYSBhbnVtaXRlIG1vbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0NsaWVuyJtpaSBwb3QgdmVkZWEgdmVyc2l1bmlsZSBpc3RvcmljZSBhbGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0NsaWVuyJtpaSBhdSBwb3NpYmlsaXRhdGVhIGRlIGEgY29tdXRhIG1hbnVhbCDDrm50cmUgdmVyc2l1bmlsZSBpc3RvcmljZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRlIGltcGxpY2l0ZSBjYXJlIHRyZWJ1aWUgdXRpbGl6YXRlIMOubiBhdHJpYnV0dWwgcGVudHJ1IGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4gRXhlbXBsdTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRlIGltcGxpY2l0ZSBjYXJlIHRyZWJ1aWUgdXRpbGl6YXRlIMOubiBhdHJpYnV0dWwgcGVudHJ1IGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4gRXhlbXBsdTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluacibaSBhY8ibaXVuaWxlIMOubiBjYXJlIGVzdGUgZGlzcG9uaWJpbCB1biBidXRvbiBkZSBzZXTEg3JpIMOubiB3aWRnZXR1bCBvYmllY3RlbG9yIGxlZ2F0ZSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBSZcibaW5lyJtpIGPEgyBhY2VzdGUgYWPIm2l1bmkgdHJlYnVpZSBzxIMgYWlixIMgw65ucmVnaXN0cmF0ZSB1cm3Eg3RvYXJlbGUgZmnImWllcmUgSlMgyJlpIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgyJlpIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluacibaSBvIHNjaGVtxIMgVGVtcGxhdGU6OlRvb2xraXQgcGVudHJ1IMiZaXJ1cmlsZSBkZSB2ZXJzaXVuaS4gU2UgdXRpbGl6ZWF6xIMgbnVtYWkgZGFjxIMgbW9kdWx1bCBkZSDImWlydXJpIGRlIHZlcnNpdW5pIGVzdGUgc2V0YXQgbGEgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluacibaSB1biBzZXQgZGUgY29uZGnIm2lpIMOubiBjYXJlIHVuIGNsaWVudCBhcmUgdm9pZSBzxIMgdmFkxIMgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZS4gQ29uZGnIm2lpbGUgcG90IGZpIG9wyJtpb25hbCByZXN0cmljyJtpb25hdGUgbGEgYW51bWl0ZSBncnVwdXJpIGRlIGNsaWVuyJtpLiBOdW1lbGUgZXN0ZSBzaW5ndXJ1bCBhdHJpYnV0IG9ibGlnYXRvcml1LiBEYWPEgyBudSBzZSBvZmVyxIMgYWx0ZSBvcMibaXVuaSwgdG9hdGUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSB2b3IgZmkgdml6aWJpbGUgw65uIGNhdGVnb3JpYSByZXNwZWN0aXbEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgcGVybWlzaXVuaWxlIG5lY2VzYXJlIHBlbnRydSBhIMiZdGVyZ2UgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSBvYsibaW5lIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gdXRpbGl6w6JuZCBpbnRlcmZhyJthIGdlbmVyaWPEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgcGVybWlzaXVuaWxlIG5lY2VzYXJlIHBlbnRydSBhIGPEg3V0YSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSBzZXRhIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gdXRpbGl6w6JuZCBpbnRlcmZhyJthIGdlbmVyaWPEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSB1biBtb2R1bCBkZSBwcmV6ZW50YXJlIGdlbmVyYWzEgyBwZW50cnUgYSBhZmnImWEgdml6dWFsaXphcmVhIG1pY8SDIGEgdW5laSBsaXN0ZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBkYWPEgyBldGljaGV0ZWxlIHRpcHVsdWkgZGUgbGVnxIN0dXLEgyB0cmVidWllIHPEgyBmaWUgYWZpyJlhdGUgw65uIGNvbmV4aXVuaWxlIG5vZHVyaWxvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZXhwcmVzaWkgcmVndWxhdGUgaW5kaXZpZHVhbCBwZW50cnUgZmllY2FyZSBjbGFzxIMgQ29uZmlnSXRlbSBwZW50cnUgYSB2ZXJpZmljYSBudW1lbGUgQ29uZmlnSXRlbSDImWkgcGVudHJ1IGEgYWZpyJlhIG1lc2FqZWxlIGRlIGVyb2FyZSBjb3Jlc3B1bnrEg3RvYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgY29sb2FuZWxlIGRpc3BvbmliaWxlIHBlbnRydSBJQyDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIGZ1bmPIm2llIGRlIGNsYXNhIElDLiBGaWVjYXJlIGludHJhcmUgdHJlYnVpZSBzxIMgZmllIGNvbXB1c8SDIGRpbnRyLXVuIG51bWUgZGUgY2xhc8SDIMiZaSBvIG1hdHJpY2UgZGUgY8OibXB1cmkgZGlzcG9uaWJpbGUgcGVudHJ1IGNsYXNhIGNvcmVzcHVuesSDdG9hcmUuIEludHLEg3JpbGUgZGUgY8OibXB1cmkgZGluYW1pY2UgdHJlYnVpZSBzxIMgcmVzcGVjdGUgc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGF0cmlidXR1bCBpbXBsaWNpdCBhbCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBwZW50cnUgc29ydGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGF0cmlidXR1bCBpbXBsaWNpdCBhbCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBwZW50cnUgc29ydGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGFsIHJlenVsdGF0dWx1aSBjxIN1dMSDcmlpIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBhY2Vhc3TEgyBvcGVyYcibaXVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgb3JkaW5lYSBpbXBsaWNpdMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuIFN1czogY2VsIG1haSB2ZWNoaSDDrm4gcGFydGVhIGRlIHN1cy4gSm9zOiBjZWwgbWFpIHJlY2VudCDDrm4gcGFydGVhIGRlIHN1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgb3JkaW5lYSBpbXBsaWNpdMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuIFN1czogY2VsIG1haSB2ZWNoaSDDrm4gcGFydGVhIGRlIHN1cy4gSm9zOiBjZWwgbWFpIHJlY2VudCDDrm4gcGFydGVhIGRlIHN1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBvcmRpbmVhIGltcGxpY2l0xIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSDDrm4gcmV6dWx0YXR1bCBjxIN1dMSDcmlpIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBhY2Vhc3TEgyBvcGVyYcibaXVuZS4gw45uIHN1czogY2VsIG1haSB2ZWNoaSDDrm4gc3VzLiBKb3M6IGNlbCBtYWkgcmVjZW50IMOubiBwYXJ0ZWEgZGUgc3VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjb2xvYW5lbGUgYWZpyJlhdGUgw65uIG1vZCBpbXBsaWNpdCBhbGUgSUMgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBjb21wdXPEgyBkaW50ci11biBudW1lIGRlIGNsYXPEgyDImWkgbyBtYXRyaWNlIGRlIGPDom1wdXJpIGRpc3BvbmliaWxlIHBlbnRydSBjbGFzYSBjb3Jlc3B1bnrEg3RvYXJlLiBJbnRyxINyaWxlIGRlIGPDom1wdXJpIGRpbmFtaWNlIHRyZWJ1aWUgc8SDIHJlc3BlY3RlIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmXImXRlIGFkw6JuY2ltZWEgaW1wbGljaXTEgyBhIHJlbGHIm2lpbG9yIGNhcmUgdXJtZWF6xIMgc8SDIGZpZSBhZmnImWF0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBhZmnImWF0IMOubiBtb2QgaW1wbGljaXQgcGVudHJ1IGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgYXRyaWJ1dHVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgYWZpyJlhdCDDrm4gbW9kIGltcGxpY2l0IHBlbnRydSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuIEV4ZW1wbHU6ICJLZXkiIHRyZWJ1aWUgc8SDIGFpYsSDIG51bWVsZSBjw6JtcHVsdWkgZGluYW1pYywgw65uIGFjZXN0IGNheiAiWCIsICJDb250ZW50IiB0cmVidWllIHPEgyBhaWLEgyB2YWxvYXJlYSBjw6JtcHVsdWkgZGluYW1pYyDDrm4gZnVuY8ibaWUgZGUgdGlwdWwgZGUgY8OibXAgZGluYW1pYywgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFN0b3BTZWNvbmQ9NTk7XCcgyJlpIHNhdSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHN1Ym9iaWVjdHVsIGltcGxpY2l0IGFsIGNsYXNlaSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjb2xvYW5lbGUgZGlzcG9uaWJpbGUgcGVudHJ1IElDIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSDDrm4gZnVuY8ibaWUgZGUgY2xhc2EgSUMuIEZpZWNhcmUgaW50cmFyZSB0cmVidWllIHPEgyBmaWUgY29tcHVzxIMgZGludHItdW4gbnVtZSBkZSBjbGFzxIMgyJlpIG8gbWF0cmljZSBkZSBjw6JtcHVyaSBkaXNwb25pYmlsZSBwZW50cnUgY2xhc2EgY29yZXNwdW56xIN0b2FyZS4gSW50csSDcmlsZSBkZSBjw6JtcHVyaSBkaW5hbWljZSB0cmVidWllIHPEgyByZXNwZWN0ZSBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSDDrm7Eg2zIm2ltZWEgcGVudHJ1IGNvbXBvbmVudGEgZWRpdG9yIGRlIHRleHQgYm9nYXQgcGVudHJ1IGFjZXN0IGVjcmFuLiBJbnRyb2R1Y2XIm2kgbnVtxINydWwgKHBpeGVsaSkgc2F1IHZhbG9hcmVhIHByb2NlbnR1YWzEgyAocmVsYXRpdsSDKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBudW3Eg3J1bCBkZSByw6JuZHVyaSBwZW50cnUgZWRpdG9ydWwgZGUgZGVmaW5pyJtpaSBDSSBkaW4gaW50ZXJmYcibYSBkZSBhZG1pbmlzdHJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgb3JkaW5lYSBzdMSDcmlsb3IgaW5jaWRlbnRlIGRlIGxhIG1hcmUgKGRlIGV4ZW1wbHUsIGNyaWNpdGFsxIMpIGxhIG1pY8SDIChkZSBleGVtcGx1LCBmdW5jyJtpb25hbMSDKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHN0xINyaWxlIGRlIGltcGxlbWVudGFyZSByZWxldmFudGUgw65uIGNhcmUgYmlsZXRlbGUgbGVnYXRlIHBvdCBhZmVjdGEgc3RhcmVhIHVudWkgSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBsaW1pdGEgZGUgY8SDdXRhcmUgcGVudHJ1IGVjcmFudWwgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGxpbWl0YSBkZSBjxIN1dGFyZSBwZW50cnUgZWNyYW51bCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgbGltaXRhIGRlIGPEg3V0YXJlIHBlbnRydSBlY3JhbnVsIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBsaW1pdGEgZGUgY8SDdXRhcmUgcGVudHJ1IGVjcmFudWwgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBhZmnImWF0ZSBhbGUgSUMgw65uIHZpenVhbGl6YXJlYSBjb21wbGV4xIMgYSB0YWJlbHVsdWkgZGUgbGVnxIN0dXJpIHBlbnRydSB0b2F0ZSBjbGFzZWxlIGRlIElDLiBEYWPEgyBudSBleGlzdMSDIG5pY2lvIGludHJhcmUsIHN1bnQgYWZpyJlhdGUgY29sb2FuZWxlIGltcGxpY2l0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgY29sb2FuZWxlIGFmaciZYXRlIGFsZSBJQyDDrm4gdml6dWFsaXphcmVhIGNvbXBsZXjEgyBhIHRhYmVsdWx1aSBkZSBsZWfEg3R1cmksIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBwcmVjZWRhdMSDIGRlIG51bWVsZSBjbGFzZWkgyJlpIGRlIGRvdcSDIHB1bmN0ZSBkZSBzdXNwZW5zaWUgKGRlIGV4ZW1wbHUsIENvbXB1dGVyOjo6KS4gRXhpc3TEgyBjw6J0ZXZhIENJLUF0dHJpYnV0ZXMgY2FyZSBzdW50IGNvbXVuZSB0dXR1cm9yIElDLXVyaWxvciAoZXhlbXBsdSBwZW50cnUgY2xhc2EgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBlbnRydSBhIGFmaciZYSBhdHJpYnV0ZWxlIGluZGl2aWR1YWxlIGFsZSBJQywgYXN0ZmVsIGN1bSBzdW50IGRlZmluaXRlIMOubiBkZWZpbmnIm2lhIElDLCB0cmVidWllIHV0aWxpemF0xIMgdXJtxIN0b2FyZWEgc2NoZW3EgyAoZXhlbXBsdSBwZW50cnUgY2xhc2EgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gRGFjxIMgbnUgZXhpc3TEgyBuaWNpbyBpbnRyYXJlIHBlbnRydSBvIGNsYXPEgyBkZSBJQywgc3VudCBhZmnImWF0ZSBjb2xvYW5lbGUgaW1wbGljaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZWxlbWVudGVsZSBjYXJlIHN1bnQgZGlzcG9uaWJpbGUgcGVudHJ1ICJBY8ibaXVuZSIgw65uIGFsIHRyZWlsZWEgbml2ZWwgYWwgc3RydWN0dXJpaSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIGVsZW1lbnRlIHN1bnQgZGlzcG9uaWJpbGUgw65uIHByaW11bCBuaXZlbCBhbCBzdHJ1Y3R1cmlpIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIGVsZW1lbnRlIHN1bnQgZGlzcG9uaWJpbGUgw65uIGFsIGRvaWxlYSBuaXZlbCBhbCBzdHJ1Y3R1cmlpIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIHRpcCBkZSBsZWfEg3R1csSDIChudW1pdMSDIGRpbiBwZXJzcGVjdGl2YSBiaWxldHVsdWkpIHBvYXRlIGFmZWN0YSBzdGFyZWEgdW51aSBJQyBsZWdhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIHRpcCBkZSB0aWNoZXQgcG9hdGUgYWZlY3RhIHN0YXJlYSB1bnVpIElDIGxlZ2F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FjdHVhbGl6YXJlIGRlZmluacibaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ8iYdGVyZ2VyZWEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDdWxvYXJlYSBzdMSDcmlpIGRlIGRlc2bEg8iZdXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgZGUgZXZlbmltZW50IHBlbnRydSBjw6JtcHVyaSBkaW5hbWljZSBjYXJlIG1hcmNoZWF6xIMgZGVmaW5pyJtpaWxlIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGNhIGZpaW5kIG5lc2luY3Jvbml6YXRlLCBkYWPEgyBzZSBtb2RpZmljxIMgY8OibXB1cmlsZSBkaW5hbWljZSBjYXJlIGxlIGNvbsibaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDw6JtcHVyaSBkaW5hbWljZSBhZmnImWF0ZSDDrm4gZWNyYW51bCBjw6JtcHVsdWkgSVRTTSBzdXBsaW1lbnRhciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0PDom1wdXJpIGRpbmFtaWNlIGFmaciZYXRlIMOubiBlY3JhbnVsIGRlIHByZXplbnRhcmUgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ8OibXB1cmkgZGluYW1pY2UgYWZpyJlhdGUgw65uIGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZWF6xIMgY2FyYWN0ZXJpc3RpY2EgZGUgYWPIm2l1bmUgw65uIG1hc8SDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgcGVudHJ1IGNhIGZyb250ZW5kLXVsIGFnZW50dWx1aSBzxIMgbHVjcmV6ZSBsYSBtYWkgbXVsdCBkZSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIG9kYXTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2ZWF6xIMgZnVuY8ibaWEgZGUgYWPIm2l1bmUgw65uIGJsb2MgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBudW1haSBwZW50cnUgZ3J1cHVyaWxlIGVudW1lcmF0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZlYXrEgy9kZXphY3RpdmVhesSDIGZ1bmPIm2lvbmFsaXRhdGVhIGRlIHZlcmlmaWNhcmUgYSBlbGVtZW50ZWxvciBkZSBvbmZpZ3VyYXJlIElUU00gcGVudHJ1IG51bWUgdW5pY2UuIMOObmFpbnRlIGRlIGEgYWN0aXZhIGFjZWFzdMSDIG9wyJtpdW5lLCBhciB0cmVidWkgc8SDIHZlcmlmaWNhyJtpIGRhY8SDIGV4aXN0xIMgZGVqYSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBjdSBudW1lIGR1cGxpY2F0ZSDDrm4gc2lzdGVtLiBQdXRlyJtpIGZhY2UgYWNlc3QgbHVjcnUgY3UgYWp1dG9ydWwgY29tZW56aWkgZGUgY29uc29sxIMgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bHVsIGRlIGV2ZW5pbWVudCBwZW50cnUgYSBzZXRhIHN0YXJlYSBhcnRpY29sdWx1aSBkZSBjb25maWd1cmFyZSBwZSBiaWxldHVsLWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ8OibXB1cmkgYWxlIGluZGV4dWx1aSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSwgdXRpbGl6YXRlIHBlbnRydSBjxIN1dGFyZWEgZnVsbHRleHQuIEPDom1wdXJpbGUgc3VudCwgZGUgYXNlbWVuZWEsIHN0b2NhdGUsIGRhciBudSBzdW50IG9ibGlnYXRvcmlpIHBlbnRydSBmdW5jyJtpb25hbGl0YXRlYSBnZW5lcmFsxIMuIEluY2x1ZGVyZWEgYXRhyJlhbWVudGVsb3IgcG9hdGUgZmkgZGV6YWN0aXZhdMSDIHByaW4gc2V0YXJlYSBpbnRyxINyaWkgbGEgMCBzYXUgcHJpbiDImXRlcmdlcmVhIGFjZXN0ZWlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ8OibXB1cmkgc3RvY2F0ZSDDrm4gaW5kZXh1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjYXJlIHN1bnQgdXRpbGl6YXRlIHBlbnRydSBhbHRlIHNjb3B1cmkgw65uIGFmYXLEgyBkZSBjxIN1dMSDcmlsZSBmdWxsdGV4dC4gUGVudHJ1IG8gZnVuY8ibaW9uYWxpdGF0ZSBjb21wbGV0xIMsIHRvYXRlIGPDom1wdXJpbGUgc3VudCBvYmxpZ2F0b3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQZW50cnUgZmllY2FyZSBzZXJ2aWNpdSB3ZWIgKGNoZWllKSBzZSBwb2F0ZSBkZWZpbmkgbyBzZXJpZSBkZSBjbGFzZSAodmFsb2FyZSkgcGVudHJ1IGNhcmUgc2UgbGltaXRlYXrEgyBpbXBvcnR1bC4gUGVudHJ1IHRvYXRlIGNsYXNlbGUgYWxlc2Ugc2F1IHBlbnRydSB0b2F0ZSBjbGFzZWxlIGV4aXN0ZW50ZSwgYXRyaWJ1dGVsZSBkZSBpZGVudGlmaWNhcmUgdm9yIHRyZWJ1aSBzxIMgZmllIGFsZXNlIMOubiBjb25maWd1cmHIm2lhIGludm9jYXRvcnVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ8OObnJlZ2lzdHJhcmVhIG1vZHVsdWx1aSBHZW5lcmljSW50ZXJmYWNlIHBlbnRydSBzdHJhdHVsIGRlIGludm9jYXJlIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ8OObnJlZ2lzdHJhcmVhIG1vZHVsdWx1aSBHZW5lcmljSW50ZXJmYWNlIHBlbnRydSBzdHJhdHVsIGRlIGludm9jYXJlIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJlemVudGFyZSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZSBzdMSDcmlsZSBkZSBpbXBsZW1lbnRhcmUgw65uIGPEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlIHN0xINyaWxlIGluY2lkZW50ZWxvciDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ051bcSDcnVsIG1heGltIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIGNhcmUgdXJtZWF6xIMgc8SDIGZpZSBhZmnImWF0ZSDDrm4gcmV6dWx0YXR1bCBhY2VzdGVpIG9wZXJhyJtpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIGRlIHZlcmlmaWNhcmUgYSBncnVwdWx1aSByZXNwb25zYWJpbCBwZW50cnUgbyBjbGFzxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZGUgdmVyaWZpY2FyZSBhIGdydXB1bHVpIHJlc3BvbnNhYmlsIHBlbnRydSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIGRlIGdlbmVyYXJlIGEgc3RhdGlzdGljaWxvciBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ0RlbnVtaXJlIG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW3Eg3IgTW9kdWx1bCBkZSBudW1lcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtxINydWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlIMOubiBmaWVjYXJlIHBhZ2luxIMgYSB1bnVpIHJlenVsdGF0IGRlIGPEg3V0YXJlIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtxINydWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlIHBlIGZpZWNhcmUgcGFnaW7EgyBhIHVudWkgcmV6dWx0YXQgZGUgY8SDdXRhcmUgw65uIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iaWVjdGVsZSBjYXJlIHRyZWJ1aWUgY8SDdXRhdGUsIGPDonRlIGludHLEg3JpIMiZaSBjZSBhdHJpYnV0ZSB0cmVidWllIGFmaciZYXRlLiBBdHJpYnV0ZWxlIENvbmZpZ0l0ZW0gdHJlYnVpZSBzxIMgZmllIHN0b2NhdGUgw65uIG1vZCBleHBsaWNpdCBwcmluIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgY2F0ZWdvcmlpbGUgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgZmlsdHJlbGUgZGUgY29sb2FuxIMgZGluIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIG1pY2kuIFbEgyBydWfEg20gc8SDIHJlyJtpbmXIm2k6IHNldGFyZWEgIkFjdGl2ZSIgbGEgMCB2YSDDrm1waWVkaWNhIGRvYXIgYWdlbsibaWkgc8SDIGVkaXRlemUgc2V0xINyaWxlIGFjZXN0dWkgZ3J1cCDDrm4gcHJlZmVyaW7Im2VsZSBsb3IgcGVyc29uYWxlLCBkYXIgdmEgcGVybWl0ZSDDrm4gY29udGludWFyZSBhZG1pbmlzdHJhdG9yaWxvciBzxIMgZWRpdGV6ZSBzZXTEg3JpbGUgw65uIG51bWVsZSB1bnVpIGFsdCB1dGlsaXphdG9yLiBVdGlsaXphyJtpICJQcmVmZXJlbmNlR3JvdXAiIHBlbnRydSBhIGNvbnRyb2xhIMOubiBjZSB6b27EgyB0cmVidWllIGFmaciZYXRlIGFjZXN0ZSBzZXTEg3JpIMOubiBpbnRlcmZhyJthIGN1IHV0aWxpemF0b3J1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgY3Vsb2FyZWEgc3TEg3JpbG9yIGRlIGRlc2bEg8iZdXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgc3TEg3JpbGUgZGUgZGVzZsSDyJl1cmFyZSBkaW4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgZ3J1cHVyaWxlIGRlIHBlcm1pc2l1bmkgZGUgZXhlbXBsdSBhbGUgYXRyaWJ1dGVsb3IgZ2VuZXJhbGUgYWxlIGNhdGFsb2d1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgbnVtZSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgbnVtZXJlIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBwYWdpbmkgKMOubiBjYXJlIHN1bnQgYWZpyJlhdGUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBtb2R1bHVsIHNldHVsdWkgZGUgaW5zdHJ1bWVudGUgZGUgyJlhYmxvYW5lIGRlIMiZaXJ1cmkgZGUgdmVyc2l1bmkgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGRlY2xhbsiZYXJlYSB2ZXJzaXVuaWkgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRWZlY3R1ZWF6xIMgYWPIm2l1bmVhIGNvbmZpZ3VyYXTEgyBwZW50cnUgZmllY2FyZSBldmVuaW1lbnQgKGNhIEludm9rZXIpIHBlbnRydSBmaWVjYXJlIHNlcnZpY2l1IHdlYiBjb25maWd1cmF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnRHJlcHR1cmkgR3J1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgYWPIm2l1bmVhIGRlIGF0YciZYXJlIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBJVFNNIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIElUU00gw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgdml6dWFsaXphcmUgYSBhcmJvcmVsdWkgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIG3Eg3JpcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSBhZMSDdWdhcmUgYSB1bnVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gw65uIG1hc8SDIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgZWRpdGFyZSBhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIElUU00gZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBjdSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIGlzdG9yaWMgw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgdGlwxINyaXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWxlZ2lpIG5lY2VzYXJlIHBlbnRydSBhIMiZdGVyZ2UgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZXRhyJtpIGF1dG9tYXQgc3RhcmVhIGRlIGluY2lkZW50IGEgdW51aSBJQyBhdHVuY2kgY8OibmQgdW4gYmlsZXQgZXN0ZSBsZWdhdCBkZSB1biBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGFiaWxlyJl0ZSBzdGFyZWEgZGUgZGVzZsSDyJl1cmFyZSDDrm4gZWNyYW51bCBkZSBhbnNhbWJsdSBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0YWJpbGXImXRlIHN0YXJlYSBpbmNpZGVudHVsdWkgw65uIGVjcmFudWwgZGUgYW5zYW1ibHUgYWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBjYXJlIHBlcm1pdGUgY29yZWxhcmVhIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSBjdSB1biBhbHQgb2JpZWN0IMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgYWNjZXNhIGlzdG9yaWN1bCB1bnVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGFjY2VzYSBpc3RvcmljdWwgdW51aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgyJl0ZXJnZSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgc2EgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBhZmnImWEgbGVnxIN0dXJpbGUgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgc3ViIGZvcm3EgyBkZSBUcmVlIFZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGR1cGxpY2EgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgZHVwbGljYSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBlZGl0YSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSByZXZlbmkgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBpbXByaW1hIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBtxINyaSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIGlzdG9yaWN1bCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSAow65uIG9yZGluZSBpbnZlcnPEgykgw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdDYXRlZ29yaWEgaW1wbGljaXTEgyBjYXJlIGVzdGUgYWZpyJlhdMSDIGRhY8SDIG51IGVzdGUgc2VsZWN0YXTEgyBuaWNpdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmljYXRvcnVsIHBlbnRydSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLCBkZSBleGVtcGx1IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBWYWxvYXJlYSBpbXBsaWNpdMSDIGVzdGUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRGVjbGFuyJllYXrEgyBhdXRvbWF0IGludm9jYXRvcnVsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpdW5lIEV4cHJlc2llIMiZaXIgZGUgY2FyYWN0ZXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpdW5lIMiYaXIgZGUgY2FyYWN0ZXJlIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpdW5lIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0RhY8SDIGV4ZWN1yJtpYSBDb25maWdJdGVtQUNMIHBvYXRlIGZpIGV2aXRhdMSDIHByaW4gdmVyaWZpY2FyZWEgZGVwZW5kZW7Im2Vsb3IgZGUgY8OibXB1cmkgZGluIG1lbW9yaWEgY2FjaGUuIEFjZXN0IGx1Y3J1IHBvYXRlIMOubWJ1bsSDdMSDyJtpIHRpbXBpaSBkZSDDrm5jxINyY2FyZSBhIGZvcm11bGFyZWxvciwgZGFyIHRyZWJ1aWUgZGV6YWN0aXZhdCBkYWPEgyBzZSB1dGlsaXplYXrEgyBBQ0xNb2R1bGVzIHBlbnRydSBJVFNNQ29uZmlnSXRlbS0gyJlpIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdDZSBpbmZvcm1hyJtpaSBnZW5lcmFsZSBzdW50IGFmaciZYXRlIMOubiBhbnRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXbEgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdDbMSDZGlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYcibxIMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ8iYb2FyZWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZcibZWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbHRlbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0llyJlpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdDYW1lcsSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU0xBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ru_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuNC1INC00LDQvdC90YvQtSDQv9C+INGN0LrRgdC/0LvRg9Cw0YLQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC00LvRjyDQstGF0L7QtNGP0YnQuNGFINC00LDQvdC90YvRhSDQt9Cw0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQtNC70Y8g0LjRgdGF0L7QtNGP0YnQuNGFINC+0YLQstC10YLQvdGL0YUg0LTQsNC90L3Ri9GFJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0LzQuCDQtdC00LjQvdC40YbQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LjRgtGMINC+0L/QuNGB0LDQvdC40LUg0LrQu9Cw0YHRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LXQvdC40LUg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRgNC+0LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ9Cf0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfQl9C00LXRgdGMINCy0Ysg0LzQvtC20LXRgtC1INC40LzQv9C+0YDRgtC40YDQvtCy0LDRgtGMINC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQsINC00LXQvNC+0L3RgdGC0YDQuNGA0YPRjtGJ0LjQtSDQvdCw0YjQuCDRgdCw0LzRi9C1INC+0LHRi9GH0L3Ri9C1INGN0LvQtdC80LXQvdGC0Ysg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQntCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0YLQviDQvNC+0LbQtdGCINC/0L7RgtGA0LXQsdC+0LLQsNGC0YzRgdGPINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdCw0Y8g0L3QsNGB0YLRgNC+0LnQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfQntCx0L3QvtCy0LvQtdC90LjQtSDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0YHRg9GJ0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNGD0LnRgtC1INC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGB0YEg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GMINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ce0YHQvdC+0LLQvdGL0LUg0YHRgNC10LTRgdGC0LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRjNGC0YAg0LTQu9GPINC60LvQsNGB0YHQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LrQu9Cw0YHRgSDQuNC3INGB0L/QuNGB0LrQsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtINC80LDRgdGB0L7QstC+0LUg0LTQtdC50YHRgtCy0LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQodCy0Y/Qt9Cw0YLRjCDRgSDQtNGA0YPQs9C40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstC10YDQvdGL0Lkg0L3QvtC80LXRgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LTRgNGD0LPQuNGFINCa0JUg0LTQu9GPINGB0LLRj9C30YvQstCw0L3QuNGPLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNGPINGN0YLQvtCz0L4g0YPRh9C10YLQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80Y8g0YPQttC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNGA0YPQs9C+0Lkg0JrQlSDRgdC+INGB0LvQtdC00YPRjtGJ0LjQvCDQvdC+0LzQtdGA0L7QvCAo0LDQvNC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfQndC+0LzQtdGAINCy0LXRgNGB0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdC40Lgg0Y3RgtC+0LPQviDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9Cd0L7QvNC10YAg0LLQtdGA0YHQuNC4INGD0LbQtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gQ29uZmlnSXRlbXMg0YHQviDRgdC70LXQtNGD0Y7RidC40Lwg0L3QvtC80LXRgNC+0LwgKNC90L7QvNC10YDQsNC80LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0Ys6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1INC40YHRgtC+0YDQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0J/QvtC00YDQvtCx0L3Ri9C5INC/0L7QutCw0LcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGINC90LAg0YHRgtGA0LDQvdC40YbRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1INC+0LEg0Y3Qu9C10LzQtdC90YLQsNGFINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQvdC1INC90LDQudC00LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0Y3RgtC+0YIg0Y3Qu9C10LzQtdC90YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0JLRi9C/0L7Qu9C90LjRgtGMINC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn0JjRgdC60LDRgtGMINC4INCyINC/0YDQtdC00YvQtNGD0YnQuNGFINCy0LXRgNGB0LjRj9GFPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3INC00LvRjyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn0KPRgNC+0LLQtdC90Ywg0LPQu9GD0LHQuNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfQo9Cy0LXQu9C40YfQtdC90LjQtS/Rg9C80LXQvdGM0YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfQlNC+0YHRgtC40LPQvdGD0YIg0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGD0YDQvtCy0LXQvdGMINGB0YHRi9C70L7QuiDQtNC70Y8gQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcg0JjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0JrQvtC90YQuINC10LQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQktGA0LXQvNGPINC/0L7RgdC70LXQtNC90LXQs9C+INC40LfQvNC10L3QtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQkNCy0YLQvtGAINC/0L7RgdC70LXQtNC90LXQs9C+INC40LfQvNC10L3QtdC90LjRjyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ9CS0LDRiNC4IENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Cf0L7QuNGB0LogQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn0KLQuNC/INC+0LHRitC10LrRgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAn0KTQuNC70YzRgiDQv9C+INGC0LjQv9GDJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0JHRg9C00YPRgiDQuNC80L/QvtGA0YLQuNGA0L7QstCw0L3RiyDRgdC70LXQtNGD0Y7RidC40LUg0LrQu9Cw0YHRgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9Ch0LvQtdC00YPRjtGJ0LjQtSDRgNC+0LvQuCDQsdGD0LTRg9GCINC40LzQv9C+0YDRgtC40YDQvtCy0LDQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ9Ce0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtSwg0YfRgtC+INGC0LDQutC20LUg0LHRg9C00YPRgiDRgdC+0LfQtNCw0L3RiyDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40LUg0LTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPINC4INC60LvQsNGB0YHRiyBHZW5lcmFsQ2F0YWxvZywg0Lgg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0LTQsNC70LXQvdC40Y8g0L3QtSDQv9GA0L7QuNC30L7QudC00LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQltC10LvQsNC10YLQtSDQv9GA0L7QtNC+0LvQttC40YLRjD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn0J3Rg9C20L3RiyDQv9GA0LjQvNC10YDRiyDQutC70LDRgdGB0L7QsiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQvdC1INGP0LLQu9GP0LXRgtGB0Y8g0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90YvQvCDRhdGN0YjQtdC8IFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn0J7QsdC30L7RgDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXRgiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn0JLQsNC8INC90YPQttC90LAg0YXQvtGC0Y8g0LHRiyDQvtC00L3QsCDQstGL0LHRgNCw0L3QvdCw0Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINC90LXRgiDQtNC+0YHRgtGD0L/QsCDQvdCwINC30LDQv9C40YHRjCDRjdGC0L7QuSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRizogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ9Ca0LvQsNGB0YEgJXMg0L3QtSDQsdGL0Lsg0L7Qv9GA0LXQtNC10LvQtdC9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAgIiVzIiDQvdC1INC90LDQudC00LXQvdCwINCyINCx0LDQt9C1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YPQtNCw0LvQuNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMg0YEgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfQndC1INC90LDQudC00LXQvdCwINCy0LXRgNGB0LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQv9GA0LjRgdCy0L7QtdC9IENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQg0LjQu9C4IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQndC10YIg0LTQvtGB0YLRg9C/0LAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0LjRgdGC0L7RgNC40Y4sINC90LXRgiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L/QvtC60LDQt9Cw0YLRjCDQuNGB0YLQvtGA0LjRjiwg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0YDQsNCyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn0J3QvtCy0LDRjyDQmtCVIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCw0Y8g0LLQtdGA0YHQuNGPIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L7QsdC90L7QstC70LXQvdC+ICjQvdC+0LLQvtC1PSVzLCDRgdGC0LDRgNC+0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0L7QsdC90L7QstC70LXQvdC+ICjQvdC+0LLQvtC1PSVzLCDRgdGC0LDRgNC+0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn0JrQlSAoSUQ9JXMpINGD0LTQsNC70LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn0KHQstGP0LfRjCDRgSAlcyAo0YLQuNC/PSVzKSDQtNC+0LHQsNCy0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9Ch0LLRj9C30Ywg0YEgJXMgKNGC0LjQvz0lcykg0YPQtNCw0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ9Ce0L/QuNGB0LDQvdC40LUg0JrQlSDQvtCx0L3QvtCy0LvQtdC90L4gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9CY0LzRjyDQvtCx0L3QvtCy0LvQtdC90L4gKNC90L7QstC+0LU9JXMsINGB0YLQsNGA0L7QtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfQkNGC0YDQuNCx0YPRgiAlcyDQvtCx0L3QvtCy0LvQtdC9INGBICIlcyIg0LTQviAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ9CS0LXRgNGB0LjRjyAlcyDRg9C00LDQu9C10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfQndC1INC/0YDQuNGB0LLQvtC10L0gQ29uZmlnSXRlbUlEINC40LvQuCBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDLCDQvdC10YIg0LTQvtGB0YLRg9C/0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAgJXMg0L3QtSDQvdCw0LnQtNC10L3QsCDQsiDQsdCw0LfQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QsNGPINC10LTQuNC90LjRhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfQvdCw0L/QtdGH0LDRgtCw0L3QviAlcyDQsiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn0KHRgdGL0LvQutCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn0J3QtdCy0LXRgNC90YvQuSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQg0L3QtSDQv9GA0LjRgdCy0L7QtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9Cd0LXRgiDQtNC+0YHRgtGD0L/QsCDQtNC70Y8g0Y3RgtC+0LPQviDQutC70LDRgdGB0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQndC10YIg0YDQtdC30YPQu9GM0YLQsNGC0LAv0KDQtdGI0LXQvdC40Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GM0YLQsNGC0Ysg0L/QvtC40YHQutCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0Y3Qu9C10LzQtdC90YIsINC90LXQtNC+0YHRgtCw0YLQvtGH0L3QviDQv9GA0LDQsiDQtNC70Y8g0JrQlSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSDQvdC1INC90LDQudC00LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn0JLQtdGA0YHQuNC4INC90LUg0L3QsNC50LTQtdC90YshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn0L7Qv9C10YDQsNGC0LjQstC90LDRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9C40L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDRjdGC0L7QuSDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQtNC70Y8g0Y3RgtC+0Lkg0JrQlSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfQpNC40LvRjNGC0YAg0L3QtdC00LXQudGB0YLQstC40YLQtdC70LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ9Cd0LXQtNC+0L/Rg9GB0YLQuNC80YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QvtC40YHQutCwISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ9Cf0L7QutCw0LfQsNC90L3Ri9C1INGN0LvQtdC80LXQvdGC0Ysg0L3QsNGB0YLRgNC+0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDQodC+0YHRgtC+0Y/QvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INCi0LXQutGD0YnQtdCz0L4g0YHQvtGB0YLQvtGP0L3QuNGPINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfQnNC10LbQtNGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC60LvQsNGB0YHQsCDQtNC70Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CS0YvQsdC10YDQuNGC0LUg0L7QtNC40L0g0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviDQutC70LDRgdGB0L7Qsiwg0YfRgtC+0LHRiyDQvtCz0YDQsNC90LjRh9C40YLRjCDQstGL0LHQvtGAINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40Y8g0LrQu9Cw0YHRgdCwINC00LvRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CS0YvQsdC10YDQuNGC0LUg0L7QtNC40L0g0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviDQutC70LDRgdGB0L7Qsiwg0YfRgtC+0LHRiyDQvtCz0YDQsNC90LjRh9C40YLRjCDQstGL0LHQvtGAINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfQlNC40L3QsNC80LjRh9C10YHQutC40LkgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfQodGC0LDRgtC40LrQsCAo0LLQtdGA0YHQuNGPKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfQotC40L8g0YHRgdGL0LvQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ9Cf0YDQuNC80LXQvdGP0LXRgtGB0Y8g0LvQuCDRjdGC0LAg0YHRgdGL0LvQutCwINC6IENvbmZpZ0l0ZW0g0LjQu9C4INC6INGB0YLQsNGC0LjRh9C10YHQutC+0Lkg0LLQtdGA0YHQuNC4INGB0YHRi9C70LDRjtGJ0LXQs9C+0YHRjyDQvtCx0YrQtdC60YLQsC4g0KDQsNGB0YfQtdGCINGC0LXQutGD0YnQtdCz0L4g0YHQvtGB0YLQvtGP0L3QuNGPINC40L3RhtC40LTQtdC90YLQsCDQstGL0L/QvtC70L3Rj9C10YLRgdGPINGC0L7Qu9GM0LrQviDQtNC70Y8g0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINGB0YHRi9C70L7Qui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfQktGL0LHQtdGA0LjRgtC1INCw0YLRgNC40LHRg9GCLCDQv9C+INC60L7RgtC+0YDQvtC80YMg0LHRg9C00LXRgiDQvtGB0YPRidC10YHRgtCy0LvRj9GC0YzRgdGPINC/0L7QuNGB0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfQkdCw0LfQvtCy0LDRjyDRgdGC0YDRg9C60YLRg9GA0LAg0L3QtdC00LXQudGB0YLQstC40YLQtdC70YzQvdCwLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L/RgNC10LTQvtGB0YLQsNCy0YzRgtC1INGF0Y3RiCDRgSDQtNCw0L3QvdGL0LzQuCDQsiDRhNC+0YDQvNCw0YLQtSBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC+INC90LDRh9C40L3QsNGC0Ywg0YHRgtGA0L7QutGDIFlBTUwg0YEgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGH0LjRgdGC0LjRgtGMINGC0LDQsdC70LjRhtGDIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ9Ch0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8g0L3QtSDQvdCw0LnQtNC10L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LLRgdGC0LDQstC40YLRjCDQsiDRgtCw0LHQu9C40YbRgyBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0YHRgtCw0LLQu9C10L3QviAwINGB0YLRgNC+0Log0LIg0YLQsNCx0LvQuNGG0YMgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQvtC00L3QvtCz0L4g0Y3Qu9C10LzQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICfQmNC80L/QvtGA0YIv0Y3QutGB0L/QvtGA0YIg0LLQu9C+0LbQtdC90LjQuSAo0LrQsNC6INC/0L7RgdC70LXQtNC90LjQtSDQt9Cw0L/QuNGB0Lgg0LIg0YHRgtGA0L7QutC1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9Ch0YLRgNC+0LrQsCDQstC10YDRgdC40LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn0J7RiNC40LHQutCwINGB0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNC4INC+0L/RgNC10LTQtdC70LXQvdC40LkuINCf0L7QttCw0LvRg9C50YHRgtCwLCDQv9GA0L7QstC10YDRjNGC0LUg0LbRg9GA0L3QsNC7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ9CjINCy0LDRgSDQtdGB0YLRjCDQvtC/0YDQtdC00LXQu9C10L3QuNGPIElUU01Db25maWdJdGVtLCDQutC+0YLQvtGA0YvQtSDQvdC1INGB0LjQvdGF0YDQvtC90LjQt9C40YDQvtCy0LDQvdGLLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0YDQsNC30LLQtdGA0L3QuNGC0LUg0LjQt9C80LXQvdC10L3QuNGPINC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5IElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0KPRgdGC0LDRgNC10LvQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ci0LXRhdC90LjRh9C10YHQutC+0LUg0L7QsdGB0LvRg9C20LjQstCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn0K3QutGB0L/QtdGA0LjQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0JfQsNC/0LvQsNC90LjRgNC+0LLQsNC90L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQoNC10LzQvtC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ9Ch0L/QuNGB0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Ct0LrRgdC/0LXRgNGC0LjQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgtC40YDQvtCy0LDQvdC40LUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9Ce0LHQt9C+0YAg0Lgg0L/QvtC00YLQstC10YDQttC00LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn0JjQvNC/0L7RgNGCINC60LvQsNGB0YHQvtCyL9GA0L7Qu9C10Lkg0Lgg0YHQstGP0LfQsNC90L3Ri9GFINGBINC90LjQvNC4INC/0L7Qu9C10LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfQktC+INCy0YDQtdC80Y8g0LjQvNC/0L7RgNGC0LAg0LrQu9Cw0YHRgdCwINC/0YDQvtC40LfQvtGI0LvQsCDQvtGI0LjQsdC60LAuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDQodC60YDRi9GC0YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g0L/QvtC60LDQt9Cw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J/QvtC30LLQvtC70Y/QtdGCINGA0LDRgdGI0LjRgNC40YLRjCDRg9GB0LvQvtCy0LjRjyDQv9C+0LjRgdC60LAg0L/RgNC4INC/0L7QuNGB0LrQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0KEg0L/QvtC80L7RidGM0Y4g0Y3RgtC+0Lkg0YTRg9C90LrRhtC40Lgg0LLRiyDQvNC+0LbQtdGC0LUg0LjRgdC60LDRgtGMLCDQvdCw0L/RgNC40LzQtdGALCDQuNC80Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0YEg0YLQsNC60LjQvNC4INGD0YHQu9C+0LLQuNGP0LzQuCwg0LrQsNC6ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9C10YIg0YDQsNGB0YjQuNGA0LjRgtGMINGD0YHQu9C+0LLQuNGPINC/0L7QuNGB0LrQsCDQv9GA0Lgg0L/QvtC40YHQutC1INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LrQu9C40LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuINChINC/0L7QvNC+0YnRjNGOINGN0YLQvtC5INGE0YPQvdC60YbQuNC4INCy0Ysg0LzQvtC20LXRgtC1INC40YHQutCw0YLRjCwg0L3QsNC/0YDQuNC80LXRgCwg0LjQvNGPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGBINGC0LDQutC40LzQuCDRg9GB0LvQvtCy0LjRj9C80LgsINC60LDQuiAiKCprZXkxKiYmKmtleTIqKSIg0LjQu9C4ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn0J3QsNC30L3QsNGH0LDQtdC80YvQtSDQmtCYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn0JrQmCwg0LfQsNC60YDQtdC/0LvQtdC90L3Ri9C1INC30LAg0LrQvtC80L/QsNC90LjQtdC5LdC60LvQuNC10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfQmtCYLCDQvdCw0LfQvdCw0YfQtdC90L3Ri9C1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiDQutC70LjQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4IENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNC60LAg0YPQvdC40LrQsNC70YzQvdC+0YHRgtC4INCY0LzQtdC90Lgg0LLQvdGD0YLRgNC4INGC0LXQutGD0YnQtdCz0L4g0LrQu9Cw0YHRgdCwINCa0JUoXCdjbGFzc1wnKSDQuNC70Lgg0LPQu9C+0LHQsNC70YzQvdC+IChcJ2dsb2JhbFwnKSzRh9GC0L4g0L7Qt9C90LDRh9Cw0LXRgiwg0YfRgtC+INC70Y7QsdCw0Y8g0YHRg9GJ0LXRgdGC0LLRg9GO0YnQsNGPINCa0JUg0YPRh9C40YLRi9Cy0LDQtdGC0YHRjyDQv9GA0Lgg0L/QvtC40YHQutC1INC00YPQsdC70LjQutCw0YLQvtCyICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQvNC+0LTRg9C70Ywg0LTQu9GPINC/0YDQuNC80LXQvdC10L3QuNGPINGB0YXQtdC80Ysg0LjQvNC10L3QvtCy0LDQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC40LzQtdC90LXQvdC40Y8g0YHRhdC10LzRiyDRgdGH0LjRgdC70LXQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LzQvtC00YPQu9GMINC00LvRjyDQv9GA0LjQvNC10L3QtdC90LjRjyDRgdGF0LXQvNGLINGB0YLRgNC+0Log0LLQtdGA0YHQuNC5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LDRgtGA0LjQsdGD0YLRiyDQtNC70Y8g0LfQsNC/0YPRgdC60LAg0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCy0LXRgNGB0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQutCw0YLQtdCz0L7RgNC40LgsINC60L7RgtC+0YDRi9C1INCx0YPQtNGD0YIg0L3QsNC30L3QsNGH0LXQvdGLINGN0YLQvtC80YMg0LrQu9Cw0YHRgdGDINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ9Ck0LjQu9GM0YLRgNGLINGB0YLQvtC70LHRhtC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQtNC70Y8gQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ9Ch0YLQvtC70LHRhtGLLCDQutC+0YLQvtGA0YvQtSDQvNC+0LbQvdC+INGE0LjQu9GM0YLRgNC+0LLQsNGC0Ywg0LIg0L7QsdC30L7RgNC1INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiDQn9GA0LjQvNC10YfQsNC90LjQtTog0KDQsNC30YDQtdGI0LXQvdGLINGC0L7Qu9GM0LrQviDQsNGC0YDQuNCx0YPRgtGLINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvQtSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0KHQvtC30LTQsNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtICjQmtCVKSBldmVudCBtb2R1bGUg0LLQtdC00YPRidC40Lkg0LfQsNC/0LjRgdGMINCyINC40YHRgtC+0YDQuNGOINCyINCw0LPQtdC90YLRgdC60L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINGB0L7QsdGL0YLQuNC5INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC60L7RgtC+0YDRi9C5INC+0LHQvdC+0LLQu9GP0LXRgiDRjdC70LXQvNC10L3RgtGLINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Lgg0YEg0LjRhSDRgtC10LrRg9GJ0LjQvCDQvtC/0YDQtdC00LXQu9C10L3QuNC10LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0J/QtdGH0LDRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0J/RgNC+0YHQvNC+0YLRgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ9CU0YDQtdCy0L7QstC40LTQvdC+0LUg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfQktC10YDRgdC40Y8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyDRgdC70LXQtNGD0Y7RidC40YUg0LrQu9Cw0YHRgdC+0LIg0L3QtSDQsdGD0LTRg9GCINGF0YDQsNC90LjRgtGM0YHRjyDQvdCwINGB0LXRgNCy0LXRgNC1IEVsYXN0aWNzZWFyY2guINCn0YLQvtCx0Ysg0L/RgNC40LzQtdC90LjRgtGMINGN0YLQviDQuiDRgdGD0YnQtdGB0YLQstGD0Y7RidC40LwgQ0ksINC90LXQvtCx0YXQvtC00LjQvNC+INC30LDQv9GD0YHRgtC40YLRjCDQvNC40LPRgNCw0YbQuNGOIENJINGH0LXRgNC10Lcg0LrQvtC90YHQvtC70Ywg0L/QvtGB0LvQtSDQuNC30LzQtdC90LXQvdC40Y8g0Y3RgtC+0Lkg0L7Qv9GG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0YHQviDRgdC70LXQtNGD0Y7RidC40LzQuCDRgdC+0YHRgtC+0Y/QvdC40Y/QvNC4INGA0LDQt9Cy0LXRgNGC0YvQstCw0L3QuNGPINC90LUg0LHRg9C00YPRgiDRhdGA0LDQvdC40YLRjNGB0Y8g0L3QsCDRgdC10YDQstC10YDQtSBFbGFzdGljc2VhcmNoLiDQp9GC0L7QsdGLINC/0YDQuNC80LXQvdC40YLRjCDRjdGC0L4g0Log0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC8IENJLCDQvdC10L7QsdGF0L7QtNC40LzQviDQt9Cw0L/Rg9GB0YLQuNGC0Ywg0LzQuNCz0YDQsNGG0LjRjiBDSSDRh9C10YDQtdC3INC60L7QvdGB0L7Qu9GMINC/0L7RgdC70LUg0LjQt9C80LXQvdC10L3QuNGPINGN0YLQvtC5INC+0L/RhtC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyDQm9C40LzQuNGCINCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Cb0LjQvNC40YIg0JrQlSDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9CR0LDQt9CwINGD0L/RgNCw0LLQu9C10L3QuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfQntCx0YrQtdC80L3Ri9C5INC80L7QtNGD0LvRjCDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQv9C+0LjRgdC60LAg0JrQlSDQsiDQsNCz0LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn0KHQvtC30LTQsNC90LjQtSDQuCDRg9C/0YDQsNCy0LvQtdC90LjQtSDQvtC/0LjRgdCw0L3QuNGP0LzQuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn0KHQvtC30LTQsNC10YIg0YLQuNC60LXRgtGLINC00LvRjyBDb25maWdJdGVtcyDQsiDQvtC/0YDQtdC00LXQu9C10L3QvdGL0LUg0LzQvtC80LXQvdGC0Ysg0LLRgNC10LzQtdC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ9Ca0LvQuNC10L3RgtGLINC80L7Qs9GD0YIg0LLQuNC00LXRgtGMINC40YHRgtC+0YDQuNGH0LXRgdC60LjQtSDQstC10YDRgdC40LggQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ9CjINC60LvQuNC10L3RgtC+0LIg0LXRgdGC0Ywg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQstGA0YPRh9C90YPRjiDQv9C10YDQtdC60LvRjtGH0LDRgtGM0YHRjyDQvNC10LbQtNGDINC40YHRgtC+0YDQuNGH0LXRgdC60LjQvNC4INCy0LXRgNGB0LjRj9C80LggQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn0JTQsNC90L3Ri9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLCDQuNGB0L/QvtC70YzQt9GD0LXQvNGL0LUg0LIg0LDRgtGA0LjQsdGD0YLQtSDQtNC70Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQn9GA0LjQvNC10YA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn0JTQsNC90L3Ri9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLCDQuNGB0L/QvtC70YzQt9GD0LXQvNGL0LUg0LIg0LDRgtGA0LjQsdGD0YLQtSDQtNC70Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQn9GA0LjQvNC10YA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0JTQtdC50YHRgtCy0LjRjy9BY3Rpb25zINC60L7Qs9C00LAg0LrQvdC+0L/QutCwINC90LDRgdGC0YDQvtC50LrQuCDQtNC+0YHRgtGD0L/QvdCwINCyINGB0LLRj9C30LDQvdC90L7QvCDQstC40LTQttC10YLQtSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQntCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0YLQviDRjdGC0Lgg0JTQtdC50YHRgtCy0LjRjy9BY3Rpb25zINC00L7Qu9C20L3RiyDQuNC80LXRgtGMINC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdC90YvQtSBKUyDQuNC70LggQ1NTINGE0LDQudC70Ys6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINGB0YXQtdC80YMgVGVtcGxhdGU6OlRvb2xraXQg0LTQu9GPINGB0YLRgNC+0Log0LLQtdGA0YHQuNC5LiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INCyINGC0L7QvCDRgdC70YPRh9Cw0LUsINC10YHQu9C4INC00LvRjyBWZXJzaW9uIFN0cmluZyBNb2R1bGUg0YPRgdGC0LDQvdC+0LLQu9C10L3QviDQt9C90LDRh9C10L3QuNC1IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9C40YLQtSDQvdCw0LHQvtGAINGD0YHQu9C+0LLQuNC5LCDQv9GA0Lgg0LrQvtGC0L7RgNGL0YUg0LrQu9C40LXQvdGC0YMg0YDQsNC30YDQtdGI0LDQtdGC0YHRjyDQstC40LTQtdGC0Ywg0Y3Qu9C10LzQtdC90YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQo9GB0LvQvtCy0LjRjyDQvNC+0LPRg9GCINCx0YvRgtGMINC+0LPRgNCw0L3QuNGH0LXQvdGLINC+0L/RgNC10LTQtdC70LXQvdC90YvQvNC4INCz0YDRg9C/0L/QsNC80Lgg0LrQu9C40LXQvdGC0L7Qsi4g0J3QsNC30LLQsNC90LjQtSAtINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0Lkg0LDRgtGA0LjQsdGD0YIuINCV0YHQu9C4INC00YDRg9Cz0LjQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L3QtSDRg9C60LDQt9Cw0L3Riywg0LLRgdC1INGN0LvQtdC80LXQvdGC0Ysg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCx0YPQtNGD0YIg0LLQuNC00L3RiyDQsiDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNGC0Ywg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINGD0LTQsNC70LXQvdC40Y8gSVRTTSDQmtCVINGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyBJVFNNINCa0JUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgtGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0L/QvtC40YHQutCwIElUU00g0JrQlSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IEdlbmVyaWMgSW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvdC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDRg9GB0YLQsNC90L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINGBINC/0L7QvNC+0YnRjNGOINC+0LHRidC10LPQviDQuNC90YLQtdGA0YTQtdC50YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC80L7QtNGD0LvRjCDQv9GA0L7RgdC80L7RgtGA0LAg0JrQlSDQsiDQutGA0LDRgtC60L7QvCDQstC40LTQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC00L7Qu9C20L3RiyDQu9C4INC80LXRgtC60Lgg0YLQuNC/0L7QsiDRgdCy0Y/Qt9C10Lkg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPINCyINGB0L7QtdC00LjQvdC10L3QuNGP0YUg0YPQt9C70L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgNC10LPRg9C70Y/RgNC90YvQtSDQstGL0YDQsNC20LXQvdC40Y8g0LTQu9GPINC60LDQttC00L7Qs9C+INC+0YLQtNC10LvRjNC90L7Qs9C+INC60LvQsNGB0YHQsCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQuNC80LXQvSDQmtCVINC4INCy0YvQtNCw0YfQuCDRgdC+0L7QsdGJ0LXQvdC40Lkg0L7QsSDQvtGI0LjQsdC60LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQtNC+0YHRgtGD0L/QvdGL0LUg0YHRgtC+0LvQsdGG0YsgQ0kg0LIg0L7QsdC30L7RgNC1INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60LvQsNGB0YHQsCBDSS4g0JrQsNC20LTQsNGPINC30LDQv9C40YHRjCDQtNC+0LvQttC90LAg0YHQvtGB0YLQvtGP0YLRjCDQuNC3INC40LzQtdC90Lgg0LrQu9Cw0YHRgdCwINC4INC80LDRgdGB0LjQstCwINC00L7RgdGC0YPQv9C90YvRhSDQv9C+0LvQtdC5INC00LvRjyDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC10LPQviDQutC70LDRgdGB0LAuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQtNC+0LvQttC90Ysg0YHQvtC+0YLQstC10YLRgdGC0LLQvtCy0LDRgtGMINGB0YXQtdC80LUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCw0YLRgNC40LHRg9GCINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LDRgtGA0LjQsdGD0YIg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQutC70LjQtdC90YLRgdC60L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQsNGC0YDQuNCx0YPRgiDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0YHQvtGA0YLQuNGA0L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRjdGC0L7QuSDQvtC/0LXRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L/QvtGA0Y/QtNC+0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0JLQstC10YDRhTog0YHQsNC80YvQuSDRgdGC0LDRgNGL0Lkg0YHQstC10YDRhdGDLiDQktC90LjQtzog0YHQsNC80YvQuSDQv9C+0YHQu9C10LTQvdC40Lkg0YHQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L/QvtGA0Y/QtNC+0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLiDQktCy0LXRgNGFOiDRgdCw0LzRi9C5INGB0YLQsNGA0YvQuSDRgdCy0LXRgNGF0YMuINCS0L3QuNC3OiDRgdCw0LzRi9C5INC/0L7RgdC70LXQtNC90LjQuSDRgdCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9GA0Lgg0LLRi9C/0L7Qu9C90LXQvdC40Lgg0Y3RgtC+0Lkg0L7Qv9C10YDQsNGG0LjQuC4g0JLQstC10YDRhTog0YHQsNC80YvQuSDRgdGC0LDRgNGL0Lkg0YHQstC10YDRhdGDLiDQktC90LjQtzog0YHQsNC80YvQuSDQv9C+0YHQu9C10LTQvdC40Lkg0YHQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINGB0YLQvtC70LHRhtGLIENJINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC70LDRgdGB0LAgQ0kuINCa0LDQttC00LDRjyDQt9Cw0L/QuNGB0Ywg0LTQvtC70LbQvdCwINGB0L7RgdGC0L7Rj9GC0Ywg0LjQtyDQuNC80LXQvdC4INC60LvQsNGB0YHQsCDQuCDQvNCw0YHRgdC40LLQsCDQtNC+0YHRgtGD0L/QvdGL0YUg0L/QvtC70LXQuSDQtNC70Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQtdCz0L4g0LrQu9Cw0YHRgdCwLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0LTQvtC70LbQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRgdGF0LXQvNC1IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCz0LvRg9Cx0LjQvdGDINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L7RgtC90L7RiNC10L3QuNC5INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0Lkg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LDRgtGA0LjQsdGD0YIg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC00LvRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C5INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINCw0YLRgNC40LHRg9GCINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQtNC70Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J/RgNC40LzQtdGAOiAiS2V5IiDQtNC+0LvQttC90L4g0YHQvtC00LXRgNC20LDRgtGMINC40LzRjyDQtNC40L3QsNC80LjRh9C10YHQutC+0LPQviDQv9C+0LvRjywg0LIg0LTQsNC90L3QvtC8INGB0LvRg9GH0LDQtSBcJ1hcJywgIkNvbnRlbnQiINC00L7Qu9C20L3QviDRgdC+0LTQtdGA0LbQsNGC0Ywg0LfQvdCw0YfQtdC90LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC+0LPQviDQv9C+0LvRjyDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0YLQuNC/0LAg0LTQuNC90LDQvNC40YfQtdGB0LrQvtCz0L4g0L/QvtC70Y8sIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0Lgg0LjQu9C4IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRg9C80LDQu9GH0LjQstCw0LzRi9C5INC/0L7QtNC+0LHRitC10LrRgiDQtNC70Y8g0LrQu9Cw0YHRgdCwIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC00L7RgdGC0YPQv9C90YvQtSDRgdGC0L7Qu9Cx0YbRiyBDSSDQsiDQvtCx0LfQvtGA0LUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0LrQu9Cw0YHRgdCwIENJLiDQmtCw0LbQtNCw0Y8g0LfQsNC/0LjRgdGMINC00L7Qu9C20L3QsCDRgdC+0YHRgtC+0Y/RgtGMINC40Lcg0LjQvNC10L3QuCDQutC70LDRgdGB0LAg0Lgg0LzQsNGB0YHQuNCy0LAg0LTQvtGB0YLRg9C/0L3Ri9GFINC/0L7Qu9C10Lkg0LTQu9GPINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LXQs9C+INC60LvQsNGB0YHQsC4g0JfQsNC/0LjRgdC4INC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC00L7Qu9C20L3RiyDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YHRhdC10LzQtSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LLRi9GB0L7RgtGDINC+0LrQvdCwINGC0LXQutGB0YLQvtCy0L7Qs9C+INGA0LXQtNCw0LrRgtC+0YDQsCDQvdCwINGN0YLQvtC8INGN0LrRgNCw0L3QtS4g0JLQstC10LTQuNGC0LUg0YfQuNGB0LvQviDQv9C40LrRgdC10LvQtdC5INC4INC30L3QsNGH0LXQvdC40LUg0LIg0L/RgNC+0YbQtdC90YLQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtGA0L7QuiDQtNC70Y8g0YDQtdC00LDQutGC0L7RgNCwINC+0L/QuNGB0LDQvdC40Lkg0JrQlSAoQ0kpINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LTQvNC40L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0L7RgNGP0LTQvtC6INGB0L7RgdGC0L7Rj9C90LjQuSDQuNC90YbQuNC00LXQvdGC0L7QsiDQvtGCINCy0YvRgdC+0LrQuNGFICjQvdCw0L/RgNC40LzQtdGALCDQutGA0LjRgtC40YfQtdGB0LrQuNGFKSDQtNC+INC90LjQt9C60LjRhSAo0L3QsNC/0YDQuNC80LXRgCwg0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDRgdC+0YHRgtC+0Y/QvdC40Y8g0YDQsNC30LLQtdGA0YLRi9Cy0LDQvdC40Y8sINC60L7Qs9C00LAg0YHQstGP0LfQsNC90L3Ri9C1INC30LDRj9Cy0LrQuCDQvNC+0LPRg9GCINCy0LvQuNGP0YLRjCDQvdCwINGB0YLQsNGC0YPRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQu9C40LzQuNGCINC/0L7QuNGB0LrQsCDQvtCx0YrQtdC60YLQvtCyINC00LvRjyDRjdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQu9C40LzQuNGCINC/0L7QuNGB0LrQsCDQvtCx0YrQtdC60YLQvtCyINC00LvRjyDRjdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0YDQtdC00LXQuyDQv9C+0LjRgdC60LAg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0YDQtdC00LXQuyDQv9C+0LjRgdC60LAg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDRgdGC0L7Qu9Cx0YbRiyDQmtCYINCyINC60L7QvNC/0LvQtdC60YHQvdC+0Lwg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0YLQsNCx0LvQuNGG0Ysg0YHQstGP0LfQtdC5INC00LvRjyDQstGB0LXRhSDQutC70LDRgdGB0L7QsiDQmtCYLiDQldGB0LvQuCDQt9Cw0L/QuNGB0Ywg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiwg0YLQviDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0YHRgtC+0LvQsdGG0Ysg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0L/QtdGA0LXRh9C10L3RjCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0YHRgtC+0LvQsdGG0L7QsiDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0JrQlSDQsiDRgtCw0LHQu9C40YbQtSDQv9GA0Lgg0YHQvtC30LTQsNC90LjQuCDRgdCy0Y/Qt9C4LCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0LrQu9Cw0YHRgdCwLiDQmtCw0LbQtNC+0LUg0LjQvNGPINCw0YLRgNC40LHRg9GC0LAg0LTQvtC70LbQvdC+INC40LzQtdGC0Ywg0LIg0LrQsNGH0LXRgdGC0LLQtSDQv9GA0LXRhNC40LrRgdCwIC0g0LjQvNGPINC60LvQsNGB0YHQsCDQuCDQtNCy0LAg0LTQstC+0LXRgtC+0YfQuNGPIChpLmUuIENvbXB1dGVyOjopLiDQldGB0YLRjCDRgNGP0LQg0LDRgtGA0LjQsdGD0YLQvtCyLCDQvtCx0YnQuNGFINC00LvRjyDQstGB0LXRhSDQutC70LDRgdGB0L7QsiAo0L3QsNC/0YDQuNC80LXRgCwg0LTQu9GPINC60LvQsNGB0YHQsCBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LjQvdC00LjQstC40LTRg9Cw0LvRjNC90YvRhSDQsNGC0YDQuNCx0YPRgtC+0LIsINGB0L/QtdGG0LjRhNC40YfQvdGL0YUg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LrQu9Cw0YHRgdCwINC40Lcg0L7Qv9C40YHQsNC90LjRjyDQmtCVIChDSS1EZWZpbml0aW9uKSwg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINGB0LvQtdC00YPRjtGJ0LjQuSDRgdC40L3RgtCw0LrRgdC40YEgKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDQutC70LDRgdGB0LAgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0JXRgdC70Lgg0L3QtdGCINCw0YLRgNC40LHRg9GC0L7QsiDQtNC70Y8g0LrQvtC90LrRgNC10YLQvdC+0LPQviDQutC70LDRgdGB0LAsINC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDRgdGC0L7Qu9Cx0YbRiyDQt9Cw0LTQsNC90L3Ri9C1INC/0LDRgNCw0LzQtdGC0YDQvtC8IElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQuNC1INGN0LvQtdC80LXQvdGC0Ysg0LTQvtGB0YLRg9C/0L3RiyDQtNC70Y8gItCU0LXQudGB0YLQstC40Y8iINC90LAg0YLRgNC10YLRjNC10Lwg0YPRgNC+0LLQvdC1INGB0YLRgNGD0LrRgtGD0YDRiyBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiwg0LrQsNC60LjQtSDRjdC70LXQvNC10L3RgtGLINC00L7RgdGC0YPQv9C90Ysg0L3QsCDQv9C10YDQstC+0Lwg0YPRgNC+0LLQvdC1INGB0YLRgNGD0LrRgtGD0YDRiyBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC60LDQutC40LUg0Y3Qu9C10LzQtdC90YLRiyDQtNC+0YHRgtGD0L/QvdGLINC90LAg0LLRgtC+0YDQvtC8INGD0YDQvtCy0L3QtSDRgdGC0YDRg9C60YLRg9GA0YsgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQvtC5INGC0LjQvyDRgdCy0Y/Qt9C4ICjQvdCw0LfQstCw0L3QvdGL0Lkg0YEg0YLQvtGH0LrQuCDQt9GA0LXQvdC40Y8g0LfQsNGP0LLQutC4KSDQvNC+0LbQtdGCINC/0L7QstC70LjRj9GC0Ywg0L3QsCDRgdGC0LDRgtGD0YEg0YHQstGP0LfQsNC90L3QvtC5INCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC60LDQutC+0Lkg0YLQuNC/INC30LDRj9Cy0LrQuCDQvNC+0LbQtdGCINC/0L7QstC70LjRj9GC0Ywg0L3QsCDRgdGC0LDRgtGD0YEg0YHQstGP0LfQsNC90L3QvtC5INCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn0J7QsdC90L7QstC70LXQvdC40LUg0L7Qv9GA0LXQtNC10LvQtdC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfQptCy0LXRgiDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9Cg0LXQt9C10YDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDRgdC+0LHRi9GC0LjQuSDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSwg0LrQvtGC0L7RgNGL0Lkg0L/QvtC80LXRh9Cw0LXRgiDQvtC/0YDQtdC00LXQu9C10L3QuNGPINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LrQsNC6INGA0LDRgdGB0LjQvdGF0YDQvtC90LjQt9C40YDQvtCy0LDQvdC90YvQtSwg0LXRgdC70Lgg0YHQvtC00LXRgNC20LDRidC40LXRgdGPINCyINC90LjRhSDQtNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8g0LjQt9C80LXQvdGP0Y7RgtGB0Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC/0L7QutCw0LfQsNC90L3Ri9C1INC90LAg0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90L7QvCDRjdC60YDQsNC90LUg0L/QvtC70Y8gSVRTTSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INC90LAg0Y3QutGA0LDQvdC1INC+0LHQt9C+0YDQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0L3QsCDRjdC60YDQsNC90LUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0LTQu9GPINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsCDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC90LXRgdC60L7Qu9GM0LrQuNC80Lgg0JrQlSDQvtC00L3QvtCy0YDQtdC80LXQvdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0YLQvtC70YzQutC+INC00LvRjyDQv9C10YDQtdGH0LjRgdC70LXQvdC90YvRhSDQs9GA0YPQv9C/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCL9Cy0YvQutC70Y7Rh9Cw0LXRgiDRhNGD0L3QutGG0LjRjiDQv9GA0L7QstC10YDQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQvdCwINC90LDQu9C40YfQuNC1INGD0L3QuNC60LDQu9GM0L3Ri9GFINC40LzQtdC9LiDQn9C10YDQtdC0INCy0LrQu9GO0YfQtdC90LjQtdC8INGN0YLQvtC5INC+0L/RhtC40Lgg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/RgNC+0LLQtdGA0LjRgtGMINGB0LjRgdGC0LXQvNGDINC90LAg0L3QsNC70LjRh9C40LUg0YPQttC1INGB0YPRidC10YHRgtCy0YPRjtGJ0LjRhSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGBINC00YPQsdC70LjRgNGD0Y7RidC40LzQuNGB0Y8g0LjQvNC10L3QsNC80LguINCt0YLQviDQvNC+0LbQvdC+INGB0LTQtdC70LDRgtGMINGBINC/0L7QvNC+0YnRjNGOINC60L7QvdGB0L7Qu9GM0L3QvtC5INC60L7QvNCw0L3QtNGLIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINGD0YHRgtCw0L3QvtCy0LrQuCDRgdGC0LDRgtGD0YHQsCDQmtCVINC00LvRjyDRgdCy0Y/Qt9Cw0L3QvdC+0Lkg0YEg0L3QtdC5INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn0J/QvtC70Y8g0LjQvdC00LXQutGB0LAg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQtNC70Y8g0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+INC/0L7QuNGB0LrQsC4g0J/QvtC70Y8g0YLQsNC60LbQtSDRgdC+0YXRgNCw0L3Rj9GO0YLRgdGPLCDQvdC+INC90LUg0Y/QstC70Y/RjtGC0YHRjyDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0LzQuCDQtNC70Y8g0L7QsdGJ0LXQuSDRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3QvtGB0YLQuC4g0JLQutC70Y7Rh9C10L3QuNC1INCy0LvQvtC20LXQvdC40Lkg0LzQvtC20L3QviDQvtGC0LrQu9GO0YfQuNGC0YwsINGD0YHRgtCw0L3QvtCy0LjQsiDQtNC70Y8g0LfQsNC/0LjRgdC4INC30L3QsNGH0LXQvdC40LUgMCDQuNC70Lgg0YPQtNCw0LvQuNCyINC10LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfQn9C+0LvRjywg0YXRgNCw0L3Rj9GJ0LjQtdGB0Y8g0LIg0LjQvdC00LXQutGB0LUg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC60L7RgtC+0YDRi9C1INC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQvdC1INGC0L7Qu9GM0LrQviDQtNC70Y8g0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+INC/0L7QuNGB0LrQsC4g0JTQu9GPINC/0L7Qu9C90L7QuSDRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3QvtGB0YLQuCDQstGB0LUg0L/QvtC70Y8g0Y/QstC70Y/RjtGC0YHRjyDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0LzQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICfQlNC70Y8g0LrQsNC20LTQvtCz0L4g0LLQtdCxLdGB0LXRgNCy0LjRgdCwICjQutC70Y7Rhykg0LzQvtC20LXRgiDQsdGL0YLRjCDQvtC/0YDQtdC00LXQu9C10L0g0LzQsNGB0YHQuNCyINC60LvQsNGB0YHQvtCyICjQt9C90LDRh9C10L3QuNC1KSwg0LTQu9GPINC60L7RgtC+0YDRi9GFINC40LzQv9C+0YDRgiDQvtCz0YDQsNC90LjRh9C10L0uINCU0LvRjyDQstGB0LXRhSDQstGL0LHRgNCw0L3QvdGL0YUg0LrQu9Cw0YHRgdC+0LIg0LjQu9C4INC00LvRjyDQstGB0LXRhSDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0LrQu9Cw0YHRgdC+0LIg0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC40L3QstC+0LrQtdGA0LAg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LHRg9C00LXRgiDQstGL0LHRgNCw0YLRjCDQuNC00LXQvdGC0LjRhNC40YbQuNGA0YPRjtGJ0LjQtSDQsNGC0YDQuNCx0YPRgtGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRg9GA0L7QstC90Y8g0LjQvdCy0L7QutC10YDQsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQvNC+0LTRg9C70Y8gR2VuZXJpY0ludGVyZmFjZSDQtNC70Y8g0YPRgNC+0LLQvdGPINC40L3QstC+0LrQtdGA0LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRg9GA0L7QstC90Y8g0LjQvdCy0L7QutC10YDQsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9Ce0LHQt9C+0YAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjRjyDRgNCw0LfQstC10YDRgtGL0LLQsNC90LjRjyDQsiDQv9C+0LjRgdC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjRjyDQuNC90YbQuNC00LXQvdGC0LAg0LIg0L/QvtC40YHQuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC60L7RgtC+0YDRi9C1INCx0YPQtNGD0YIg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPINCyINGA0LXQt9GD0LvRjNGC0LDRgtC1INGN0YLQvtC5INC+0L/QtdGA0LDRhtC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDQv9GA0L7QstC10YDQutC4INCz0YDRg9C/0L/RiyDQvtGC0LLQtdGC0YHRgtCy0LXQvdC90L7QuSDQt9CwINC60LvQsNGB0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINC/0YDQvtCy0LXRgNC60Lgg0LPRgNGD0L/Qv9GLINC+0YLQstC10YLRgdGC0LLQtdC90L3QvtC5INC30LAg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDRhNC+0YDQvNC40YDQvtCy0LDQvdC40Y8g0YHRgtCw0YLQuNGB0YLQuNC60Lgg0L/QviDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDQuNC80LXQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfQndC+0LzQtdGA0L3QvtC5INC80L7QtNGD0LvRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQvdCwINC60LDQttC00L7QuSDRgdGC0YDQsNC90LjRhtC1INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L/QvtC40YHQutCwINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9Ce0LHRitC10LrRgtGLINC00LvRjyDQv9C+0LjRgdC60LAsINC60L7Qu9C40YfQtdGB0YLQstC+INC30LDQv9C40YHQtdC5INC4INCw0YLRgNC40LHRg9GC0Ysg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8uINCQ0YLRgNC40LHRg9GC0YsgQ29uZmlnSXRlbSDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0Y/QstC90L4g0YHQvtGF0YDQsNC90LXQvdGLINGH0LXRgNC10LcgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn0J7QsdC30L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQutCw0YLQtdCz0L7RgNC40Lkg0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YTQuNC70YzRgtGA0L7QsiDRgdGC0L7Qu9Cx0YbQvtCyINC+0LHQt9C+0YDQsCDRjdC70LXQvNC10L3RgtC+0LIg0LzQsNC70L7QuSDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguINCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtTog0L/RgNC4INGD0YHRgtCw0L3QvtCy0LrQtSDQt9C90LDRh9C10L3QuNGPIFwnQWN0aXZlXCcg0LIgMCDQsNCz0LXQvdGC0Ysg0L3QtSDRgdC80L7Qs9GD0YIg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INGN0YLQvtC5INCz0YDRg9C/0L/RiyDQsiDRgdCy0L7QuNGFINC70LjRh9C90YvRhSDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Y/RhSwg0L3QviDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNGLINGB0LzQvtCz0YPRgiDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0L7RgiDQuNC80LXQvdC4INC00YDRg9Cz0L7Qs9C+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy4g0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSBcJ1ByZWZlcmVuY2VHcm91cFwnINC00LvRjyDRg9C/0YDQsNCy0LvQtdC90LjRjyDRgtC10LwsINCyINC60LDQutC+0Lkg0L7QsdC70LDRgdGC0Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC+0LPQviDQuNC90YLQtdGA0YTQtdC50YHQsCDQtNC+0LvQttC90Ysg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPINGN0YLQuCDQvdCw0YHRgtGA0L7QudC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YDQsNC30LTQtdC70LAg0JTQsNC50LTQttC10YHRgtCwINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsCDRgSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5INC+INGB0L/QuNGB0LrQtSDQutC70LjQtdC90YLQvtCyINC60L7QvNC/0LDQvdC40LguICJHcm91cCIg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC00L7RgdGC0YPQv9CwINC6INGA0LDQt9C00LXQu9GDICjQvdCw0L/RgNC40LzQtdGALCBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgLSDQt9Cw0LTQsNC10YIsINCx0YPQtNC10YIg0LvQuCDRgNCw0LfQtNC10Lsg0LTQvtGB0YLRg9C/0LXQvSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQuNC70Lgg0LDQs9C10L3RgiDQtNC+0LvQttC10L0g0LDQutGC0LjQstC40YDQvtCy0LDRgtGMINC10LPQviDQstGA0YPRh9C90YPRji4gIkNhY2hlVFRMTG9jYWwiIC0g0LLRgNC10LzRjyDQvtCx0L3QvtCy0LvQtdC90LjRjyDQutGN0YjQsCDQsiDQvNC40L3Rg9GC0LDRhSDQtNC70Y8g0Y3RgtC+0LPQviDRgNCw0LfQtNC10LvQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGA0LDQt9C00LXQu9CwINCU0LDQudC00LbQtdGB0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAg0YEg0LjQvdGE0L7RgNC80LDRhtC40LXQuSDQviDRgdC/0LjRgdC60LUg0LrQu9C40LXQvdGC0L7QsiDQutC+0LzQv9Cw0L3QuNC4LiAiR3JvdXAiINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0L7Qs9GA0LDQvdC40YfQtdC90LjRjyDQtNC+0YHRgtGD0L/QsCDQuiDRgNCw0LfQtNC10LvRgyAo0L3QsNC/0YDQuNC80LXRgCwgR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIC0g0LfQsNC00LDQtdGCLCDQsdGD0LTQtdGCINC70Lgg0YDQsNC30LTQtdC7INC00L7RgdGC0YPQv9C10L0g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LjQu9C4INCw0LPQtdC90YIg0LTQvtC70LbQtdC9INCw0LrRgtC40LLQuNGA0L7QstCw0YLRjCDQtdCz0L4g0LLRgNGD0YfQvdGD0Y4uICJDYWNoZVRUTExvY2FsIiAtINCy0YDQtdC80Y8g0L7QsdC90L7QstC70LXQvdC40Y8g0LrRjdGI0LAg0LIg0LzQuNC90YPRgtCw0YUg0LTQu9GPINGN0YLQvtCz0L4g0YDQsNC30LTQtdC70LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRhtCy0LXRgtC+0LIg0L7QsdC+0LfQvdCw0YfQsNGO0YnQuNGFINGB0L7RgdGC0L7Rj9C90LjRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQmtCVINCyINC90LDRgdGC0YDQvtC50LrQsNGFINC+0LHQt9C+0YDQvtCyINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGB0L7RgdGC0L7Rj9C90LjQuSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQmtCVINCyINC90LDRgdGC0YDQvtC50LrQsNGFINC+0LHQt9C+0YDQvtCyINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQv9GA0LjQvNC10YDQvdGL0YUg0LPRgNGD0L/Qv9C+0LLRi9GFINC/0YDQsNCyINC00LvRjyDQsNGC0YDQuNCx0YPRgtC+0LIg0J7QsdGJ0LXQs9C+INC60LDRgtCw0LvQvtCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LzQvtC00YPQu9GPINC40LzQtdC90Lgg0LTQu9GPINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0LzQvtC00YPQu9GPINC60L7Qu9C40YfQtdGB0YLQstCwINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINGB0YLRgNCw0L3QuNGGICjQvdCwINC60L7RgtC+0YDRi9GFINC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDQmtCVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LzQvtC00YPQu9GPINGB0YLRgNC+0LrQuCDQstC10YDRgdC40Lgg0LTQu9GPINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LzQvtC00YPQu9GPINC40L3RgdGC0YDRg9C80LXQvdGC0LDRgNC40Y8g0YjQsNCx0LvQvtC90LAg0YHRgtGA0L7QutC4INCy0LXRgNGB0LjQuCDQtNC70Y8g0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGC0YDQuNCz0LPQtdGA0LAg0LLQtdGA0YHQuNC4INC00LvRjyDQutC70LDRgdGB0L7QsiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INC/0YDQtdC00L/QvtGH0YLQtdC90LjQuSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn0JLRi9C/0L7Qu9C90Y/QtdGCINC30LDQtNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0YHQvtCx0YvRgtC40Y8gKNC60LDQuiBJbnZva2VyKSDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0L3QsNGB0YLRgNC+0LXQvdC90L7Qs9C+IFdlYnNlcnZpY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9C/0LAg0YDQsNC30YDQtdGI0LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LTQtdC50YHRgtCy0LjRjyDQv9GA0LjQutGA0LXQv9C70LXQvdC40Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L7QsdC30L7RgNCwINCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQv9C+0LjRgdC60LAg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNGL0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0LrRgNCw0L3QsCDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNGL0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0LrRgNCw0L3QsCDQv9GA0L7RgdC80L7RgtGA0LAg0LTQtdGA0LXQstCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0JrQlSAoem9vbSB2aWV3KSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDRjdC60YDQsNC90LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0YHQvtC00LXRgNC20LjQvNC+0LPQviDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0YDQvtGB0LzQvtGC0YDQsCDQuNGB0YLQvtGA0LjQuCDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0LXRh9Cw0YLQuCDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNGLINC/0YDQsNCy0LAg0LTQu9GPINGD0LTQsNC70LXQvdC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7QuNGB0Log0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0KPRgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQmtCVINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4LCDQutC+0LPQtNCwINC30LDRj9Cy0LrQsCDRgdCy0Y/Qt9Cw0L3QsCDRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L3QsCDRjdC60YDQsNC90LUg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQvdCwINGN0LrRgNCw0L3QtSDQvNCw0YHRgdC+0LLRi9GFINC00LXQudGB0YLQstC40Lkg0YEg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQodCy0Y/Qt9Cw0YLRjCAoTGluaykg0LTQu9GPINC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0YHQstGP0LfQuCDQmtCVINGBINC00YDRg9Cz0LjQvCDQvtCx0YrQtdC60YLQvtC8INC90LAg0Y3QutGA0LDQvdC1INC/0L7Qu9C90L7Qs9C+ICh6b29tIHZpZXcpINC/0YDQvtGB0LzQvtGC0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0LTQu9GPINC00L7RgdGC0YPQv9CwINC6INC40YHRgtC+0YDQuNC4INCa0JUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQmNGB0YLQvtGA0LjRjyDQtNC70Y8g0L/RgNC+0YHQvNC+0YLRgNCwINC40YHRgtC+0YDQuNC4INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINC00LvRjyDRg9C00LDQu9C10L3QuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLINC/0YDQuCDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ9Cj0LrQsNC30YvQstCw0LXRgiDRgdGB0YvQu9C60YMg0LIg0LzQtdC90Y4g0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgdGL0LvQvtC6INC90LAg0Y3Qu9C10LzQtdC90YLRiyDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LLQuNC00LUg0LTRgNC10LLQvtCy0LjQtNC90L7Qs9C+INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0JTRg9Cx0LvQuNGA0L7QstCw0YLRjCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCa0JUg0L/Rg9GC0LXQvCDQutC+0L/QuNGA0L7QstCw0L3QuNGPINGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INGC0LXQutGD0YnQtdC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQlNGD0LHQu9C40YDQvtCy0LDRgtGMINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0Lkg0JrQlSDQv9GD0YLQtdC8INC60L7Qv9C40YDQvtCy0LDQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0YLQtdC60YPRidC10Lkg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQtNC70Y8g0LjQt9C80LXQvdC10L3QuNGPINGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0J3QsNC30LDQtCDQv9GA0Lgg0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0J/QtdGH0LDRgtGMINC00LvRjyDQv9C10YfQsNGC0Lgg0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0LTQu9GPINC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQmtCVINC/0YDQuCDQvtCx0LfQvtGA0LUg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0Lcg0LjRgdGC0L7RgNC40Lgg0YHQvtC00LXRgNC20LjQvNC+0LPQviDQmtCVICjQv9C+0YDRj9C00L7QuiDQv9C+0LrQsNC30LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0LrQvtGC0L7RgNCw0Y8g0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPLCDQtdGB0LvQuCDQvdC1INCy0YvQsdGA0LDQvdCwINC90Lgg0L7QtNC90LAg0LjQtyDQvdC40YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCAo0L/RgNC10YTQuNC60YEpINC6INC90L7QvNC10YDRgyDQmtCVLCDRgi7QtSDQmtCVX+KEliwg0JrQlSMsINCj0YfQtdGC0L3Ri9C5X9GN0LvQtdC80LXQvdGCX+KEli4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gLSBDb25maWdJdGVtIyAo0LjQu9C4INC10LPQviDQv9C10YDQtdCy0L7QtCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lgg0LfQsNC/0YPRgdC60LDQtdGCINC40L3QstC+0LrQtdGAIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDQvtC60L7QstC+0LUg0LLRi9GA0LDQttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRgdGC0YDQvtC6INCy0LXRgNGB0LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfQotGA0LjQs9Cz0LXRgCDQstC10YDRgdC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9Cc0L7QttC90L4g0LvQuCDQuNC30LHQtdC20LDRgtGMINCy0YvQv9C+0LvQvdC10L3QuNGPIENvbmZpZ0l0ZW1BQ0wsINC/0YDQvtCy0LXRgNGP0Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9C1INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L/QvtC70LXQuS4g0K3RgtC+INC80L7QttC10YIg0YPQu9GD0YfRiNC40YLRjCDQstGA0LXQvNGPINC30LDQs9GA0YPQt9C60Lgg0YTQvtGA0LzRg9C70Y/RgNC+0LIsINC90L4g0LTQvtC70LbQvdC+INCx0YvRgtGMINC+0YLQutC70Y7Rh9C10L3Qviwg0LXRgdC70LggQUNMTS3QvNC+0LTRg9C70Lgg0LHRg9C00YPRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINC00LvRjyBJVFNNQ29uZmlnSXRlbS0g0LggRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9Ca0LDQutCw0Y8g0L7QsdGJ0LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0LIg0LfQsNCz0L7Qu9C+0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGB0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70YzQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfQv9C+0YHRgtC/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn0L/RgNC10LTQv9GA0L7QtNGD0LrRgtC40LLQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9C/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSDQtNGO0LnQvNC+0LIgKDQ0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxINC00Y7QudC8ICg1MywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSDQtNGO0LnQvNCwICg2Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUg0LTRjtC50LzQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC00Y7QudC80LAgKDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDQtNGO0LnQvNC+0LIgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1INC00Y7QudC80L7QsiAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2INC00Y7QudC80LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LTRjtC50LzQsCAoMTA2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSDQtNGO0LnQvNCwICgxMjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSDQtNGO0LnQvNCwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LTRjtC50LzQsCAoMTMzLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSDQtNGO0LnQvNCwICg4MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1INC00Y7QudC80LAgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LTRjtC50LzQsCAoOTAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDQtNGO0LnQvNCwICgxNjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDQtNGO0LnQvNCwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQtNGO0LnQvNCwICgxNzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSDQtNGO0LnQvNCwICgxMywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1INC00Y7QudC80LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQtNGO0LnQvNCwICgxMTAwINC80LwpOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUg0LTRjtC50LzQsCAoMjAwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIg0LTRjtC50LzQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LTRjtC50LzQsCAoMjEzLDM2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcg0LTRjtC50LzQvtCyICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC00Y7QudC80LAgKDIyLDIzINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUg0LTRjtC50LzQvtCyICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LTRjtC50LzQsCAoMzEsMTIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0INC00Y7QudC80L7QsiAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC00Y7QudC80LAgKDQwLDAxINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn0JHRg9GF0LPQsNC70YLQtdGA0YHQutC40Lkg0YPRh9C10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfQoNCw0YHQv9GA0LXQtNC10LvQtdC90LjQtSDQsNC00YDQtdGB0L7Qsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn0JDQvdCw0LvQvtCz0L7QstGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9Ci0LjQvyDQv9GA0LjQsdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn0JXQvNC60L7RgdGC0Ywg0LDQutC60YPQvNGD0LvRj9GC0L7RgNCwICjQkNGHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfQotC40L8g0LHQsNGC0LDRgNC10LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQl9C00LDQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10LnRgSDRiNC40L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0KbQn9CjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9Ca0LvQsNGB0YEg0L/RgNC+0YbQtdGB0YHQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ9CV0LzQutC+0YHRgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9CV0LzQutC+0YHRgtGMINC90LAg0L7QtNC90YMg0LLQuNC00LXQvtC60LDRgNGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC60LDRgNGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfQo9GB0YLRgNC+0LnRgdGC0LLQviDQtNC70Y8g0YfRgtC10L3QuNGPINC60LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9Ci0LjQvyDQutCw0YDRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLINC60LvQuNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ9Ca0LvQuNC10L3RgtGB0LrQvtC1INC/0YDQvtCz0YDQsNC80LzQvdC+0LUg0L7QsdC10YHQv9C10YfQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8g0LrQu9C40LXQvdGC0L7Qsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfQp9Cw0YHQvtCy0L7QuSDQv9C+0Y/RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLRiyDQv9C+0LTQv9C40YHQuCDQutC+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn0JrQvtC90YTQtdGA0LXQvdGGLdGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn0KHQvtCz0LvQsNGI0LXQvdC40LUg0L4g0LrQvtC90YHRg9C70YzRgtC40YDQvtCy0LDQvdC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ9Ch0LLRj9C30LDRgtGM0YHRjyDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn0KHQstGP0LfQsNGC0YzRgdGPINGBINC00LjRgdGC0YDQuNCx0YzRjtGC0L7RgNC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQutC+0L3RgtC10LnQvdC10YDQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfQmtC+0L3RgtGA0LDQutGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQotC40L8g0LrQvtC90YLRgNCw0LrRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn0KHRgNC+0Log0LTQtdC50YHRgtCy0LjRjyDQutC+0L3RgtGA0LDQutGC0LAg0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn0KHRgNC+0Log0LTQtdC50YHRgtCy0LjRjyDQutC+0L3RgtGA0LDQutGC0LAg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfQkdC10YHQv9GA0L7QstC+0LTQvdC+0Lkg0YLQtdC70LXRhNC+0L0gKERFQ1QgUGhvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ9CV0LTQuNC90LjRhtCwINC40LfQvNC10YDQtdC90LjRjyDRgdGC0L7QuNC80L7RgdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQu9C40YbQtdC90LfQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfQlNCw0YLQsCDRgdC+0LfQtNCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfQmNC90LTQuNCy0LjQtNGD0LDQu9GM0L3QsNGPINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDQl9Cw0YDQtdC30LXRgNCy0LjRgNC+0LLQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy3RgdC10YDQstC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9CU0LDRgtCwINGB0YfQtdGC0LAt0YTQsNC60YLRg9GA0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ9CU0LDRgtCwINC30LDQutCw0LfQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn0JTQsNGC0LAg0LLRi9C00LDRh9C4INCz0LDRgNCw0L3RgtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn0JTQsNGC0LAg0LLRi9GF0L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQndCw0YHRgtC+0LvRjNC90YvQuSDQn9CaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLINC/0L7QtNC/0LjRgdC4INC00L7QutGD0LzQtdC90YLQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAn0KHRgtC+0LnQutCwIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Ysg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLICjRgdC10YDRgtC40YTQuNC60LDRgtGLIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn0KLRgNGD0LTQvtCy0L7QuSDQtNC+0LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9Ca0L7QvdC10YfQvdGL0LkgSVAt0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ9Ce0LrQvtC90YfQsNC90LjQtSDQv9C+0LTQtNC10YDQttC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfQlNCw0YLQsCDQuNGB0YLQtdGH0LXQvdC40Y8g0YHRgNC+0LrQsCDQtNC10LnRgdGC0LLQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfQktC90LXRiNC90LjQuSDQttC10YHRgtC60LjQuSDQtNC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ9CR0YDQsNC90LTQvNCw0YPRjdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn0J/RgNC+0YjQuNCy0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ9Cd0LDQutC+0L/QuNGC0LXQu9C4INGN0L3QtdGA0LPQuNC4INC90LAg0LzQsNGF0L7QstC40LrQsNGFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn0KTQvtGA0Lwt0YTQsNC60YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDRhNGA0LDQvdGI0LjQt9GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQvdC+0LUg0J/Qnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfQntCx0YnQsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn0JPRgNCw0YTQuNGH0LXRgdC60LjQtSDQutCw0YDRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfQk9GA0LDRhNC40YfQtdGB0LrQsNGPINC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfQkNC/0L/QsNGA0LDRgtC90L7QtSDQvtCx0LXRgdC/0LXRh9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn0JzQvtC00LXQu9GMINC+0LHQvtGA0YPQtNC+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfQktC10YEg0L7QsdC+0YDRg9C00L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfQk9Cw0YDQvdC40YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICfQn9GA0L7RgtC+0LrQvtC7IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC40LTQtdC90YLQuNGE0LjQutCw0YbQuNC10Lkg0Lgg0LTQvtGB0YLRg9C/0L7QvCAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn0JjQvdCy0LXQvdGC0LDRgNC90YvQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn0JjQvdCy0LXRgNGB0LjQvtC90L3Ri9C1INGA0LDRgdGF0L7QtNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgdGH0LXRgtCwLdGE0LDQutGC0YPRgNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0JrQu9Cw0LLQuNCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAn0JbQmi3QvNC+0L3QuNGC0L7RgCAo0LbQuNC00LrQvtC60YDQuNGB0YLQsNC70LvQuNGH0LXRgdC60LjQuSDQtNC40YHQv9C70LXQuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ9Ch0LLQtdGC0L7QtNC40L7QtNC90YvQuSDQvNC+0L3QuNGC0L7RgCAo0YHQstC10YLQvtC40LfQu9GD0YfQsNGO0YnQuNC5INC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfQodGC0LDRhtC40L7QvdCw0YDQvdGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0J3QvtGD0YLQsdGD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfQqNC40YDQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAxOiDRhNC40LfQuNGH0LXRgdC60LjQuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAyOiDRg9GA0L7QstC10L3RjCDQv9C10YDQtdC00LDRh9C4INC00LDQvdC90YvRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgMzog0YHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn0KPRgNC+0LLQtdC90YwgMzog0YHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwgKNCh0YPQv9C10YDRgdC10YLRjCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgNDog0KLRgNCw0L3RgdC/0L7RgNGC0L3Ri9C5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA1OiDRgdC10LDQvdGB0L7QstGL0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgNjog0YPRgNC+0LLQtdC90Ywg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA3OiDQn9GA0LjQutC70LDQtNC90L7QuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDQsNGA0LXQvdC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfQm9C40YbQtdC90LfQuNC+0L3QvdC+0LUg0YHQvtCz0LvQsNGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9Cb0LjRhtC10L3Qt9C40L7QvdC90YvQuSDQutC70Y7Rhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfQotC40L8g0LvQuNGG0LXQvdC30LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn0KHRgNC+0Log0LTQtdC50YHRgtCy0LjRjyDQu9C40YbQtdC90LfQuNC4INC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC70LjRhtC10L3Qt9C40Lgg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JvQuNGC0LjQuS3QttC10LvQtdC30L4t0YTQvtGB0YTQsNGC0L3QsNGPIChMaUZlUE80KSDQsdCw0YLQsNGA0LXRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn0JvQuNGC0LjQuS3QuNC+0L3QvdGL0LkgKExpLWlvbikg0LDQutC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LDQudC80LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cd0LDRhdC+0LTQuNGC0YHRjyDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfQlNC+0LvQs9C+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn0J/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LDRjyDQs9GA0YPQt9C+0L/QvtC00YrQtdC80L3QvtGB0YLRjCAo0JLRgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC80Y/RgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn0KLQuNC/INC/0LDQvNGP0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn0JzQuNC90Lgt0YHRgtC+0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC80L7QsdC40LvRjNC90L7Qs9C+INGC0LXQu9C10YTQvtC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn0JzQvtCx0LjQu9GM0L3Ri9C5L9Cy0YHRgtGA0L7QtdC90L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQvNC+0LTQtdC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn0KDQsNC30YDQtdGI0LXQvdC40LUg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfQoNCw0LfQvNC10YAg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9Cc0YvRiNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Ch0LXRgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC+INGB0LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDRgdC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn0KHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfQndC40LrQtdC70Ywt0LrQsNC00LzQuNC10LLQsNGPIChOaUNkKSDQsdCw0YLQsNGA0LXRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9Cd0LjQutC10LvRjC3QvNC10YLQsNC70LvQs9C40LTRgNC40LTQvdGL0LkgKE5pTUgpINCw0LrQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn0KHQvtCz0LvQsNGI0LXQvdC40LUg0L4g0L3QtdGA0LDQt9Cz0LvQsNGI0LXQvdC40LggKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC70L7QutC90L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC/0YDQvtGG0LXRgdGB0L7RgNC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LzQvtC00YPQu9C10Lkg0L7Qv9C10YDQsNGC0LjQstC90L7QuSDQv9Cw0LzRj9GC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LLQuNC00LXQvtC60LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELdC80L7QvdC40YLQvtGAICjQvtGA0LPQsNC90LjRh9C10YHQutC40Lkg0YHQstC10YLQvtC40LfQu9GD0YfQsNGO0YnQuNC5INC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfQntC/0LXRgNCw0YbQuNC+0L3QvdGL0LUg0YDQsNGB0YXQvtC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQt9Cw0LrQsNC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQlNGA0YPQs9C+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CS0YvRhdC+0LTRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfQn9Cw0YDRgtC90LXRgNGB0LrQvtC1INGB0L7Qs9C70LDRiNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfQotC40L8g0YLQtdC70LXRhNC+0L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0LjQt9C40YfQtdGB0LrQuNC1INGP0LTRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn0JTQvtGB0YLQsNCy0LrQsCDRjdC70LXQutGC0YDQvtGN0L3QtdGA0LPQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn0J/RgNC40L7QsdGA0LXRgtC10L3QviDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn0JPQu9GD0LHQuNC90LAg0YHRgtC+0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0KHRgtC+0LnQutC4IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0JrQsNCx0LjQvdC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0t0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0YsgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC60YPQv9C70Lgt0L/RgNC+0LTQsNC20LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn0KHQv9GD0YLQvdC40LrQvtCy0YvQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQk9C10YDQvNC10YLQuNGH0L3QsNGPINGB0LLQuNC90YbQvtCy0L4t0LrQuNGB0LvQvtGC0L3QsNGPINCx0LDRgtCw0YDQtdGPIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0LjQudC90YvQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0LXRgNCy0LXRgNC90L7QtSDQv9GA0L7Qs9GA0LDQvNC80L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDQvtCxINC+0LrQsNC30LDQvdC40Lgg0YPRgdC70YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ9Ch0LXRgNCy0LjRgdC90LDRjyDQvNC10YLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDRgNC+0LfQtdGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Cf0YDQvtCz0YDQsNC80LzQvdC+0LUg0L7QsdC10YHQv9C10YfQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ9CU0LjQvdCw0LzQuNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn0KHRgtCw0L3QtNCw0YDRgtC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn0KHRgtCw0YDRgtC+0LLRi9C5IElQLdCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9Cl0YDQsNC90LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfQoNCw0LfQtNC10Lsg0LTQu9GPINGF0YDQsNC90LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfQlNC+0YfQtdGA0L3Rj9GPINC60L7QvNC/0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9Cg0LXQt9GO0LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ9Ci0L7QvdC60LjQuSDQutC70LjQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ9Cd0LjRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0LDRjyDQvtC/0LXRgNCw0YLQuNCy0L3QsNGPINC/0LDQvNGP0YLRjCDQstC40LTQtdC+0LrQsNGA0YLRiyAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfQntCx0YnQsNGPINC+0L/QtdGA0LDRgtC40LLQvdCw0Y8g0L/QsNC80Y/RgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn0KHQtdC90YHQvtGA0L3Ri9C5INC80L7QvdC40YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JHQsNGI0L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLdC60L7QvdGG0LXQvdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9CT0LDRgNC90LjRgtGD0YDQsCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLdGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfQktC10LEt0LrQsNC80LXRgNCwJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/sk_SK_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNrX1NLX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWxaFlb2JlY27DqSBwcmV2w6FkemtvdsOpIMO6ZGFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTmFzdGF2ZW5pYSBwcmUgcHJpY2jDoWR6YWrDumNlIMO6ZGFqZSDFvmlhZG9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbmlhIHByZSDDumRhamUgb2RjaMOhZHphasO6Y2VqIG9kcG92ZWRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1ptZW5hIGRlZmluw61jaWUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdabWVuYSBkZWZpbsOtY2llIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0JhbMOta3kgdHJpZWQgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVHUgbcO0xb5ldGUgaW1wb3J0b3ZhxaUgYmFsw61reSB0cmllZCBSZWFkeTJJbXBvcnQsIGt0b3LDqSBwcmVkc3RhdnVqw7ogbmHFoWUgbmFqYmXFvm5lasWhaWUga29uZmlndXJhxI1uw6kgcG9sb8W+a3kuIFVwb3pvcsWIdWplbWUsIMW+ZSBtw7TFvmUgYnnFpSBwb3RyZWJuw6EgZG9kYXRvxI1uw6Ega29uZmlndXLDoWNpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXrDoWNpYSBleGlzdHVqw7pjaWNoIHN1Ympla3Rvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydCB6dsOkemtvdiB0cmllZCBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ1RyaWVkYSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfDmmxvaGEgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdQb2xvxb5rYSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBwcmUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0FrIGNoY2V0ZSB2eXR2b3JpxaUgbm92w7ogcG9sb8W+a3Uga29uZmlndXLDoWNpZSwgdnliZXJ0ZSB0cmllZHUgem8gem96bmFtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUcmllZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjaWEgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF2IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXYgaW5jaWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1ByZXBvamVuaWUgbmEgaW7DvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuZSDEjcOtc2xvIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfEjMOtc2xvIGluZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSwgcyBrdG9yb3Ugc2EgbcOhIHByZXBvamnFpS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdOYW96YWogY2hjZXRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUgb2RzdHLDoW5pxaU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07DoXpvdiB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsOhem92IHNhIHXFviBwb3XFvsOtdmEgdiBwb2xvxb5rZSBDb25maWdJdGVtcyBzIG5hc2xlZHVqw7pjaW0gxI3DrXNsb20gKMSNw61zbGFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8SMw61zbG8gdmVyemllIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfEjMOtc2xvIHZlcnppZSBzYSB1xb4gcG91xb7DrXZhIHYgcG9sb8W+a2UgQ29uZmlnSXRlbXMgcyBuYXNsZWR1asO6Y2ltIMSNw61zbG9tICjEjcOtc2xhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdiBuYXNhZGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF2IGluY2lkZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmlhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ09ic2FoIGhpc3TDs3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdadsOkxI3FoWnFpSBwb2jEvmFkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW5hxaFsaSBzYSDFvmlhZG5lIMO6ZGFqZSBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGnFpSB2eWjEvmFkw6F2YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdWeWjEvmFkw6F2YW5pZSBhaiB2IHByZWRjaMOhZHphasO6Y2ljaCB2ZXJ6acOhY2g/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcHJlIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfDmnJvdmXFiCBoxLpia3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQcmlibMOtxb5lbmllL29kZGlhbGVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4aW3DoWxuYSDDunJvdmXFiCBvZGthem92IGRvc2lhaG51dMOhIHByZSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvbG/FvmthIGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3Jtw6FjaWUgbyBwb2xvxb5rZSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxueSBzdGF2IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnQWt0dcOhbG55IHN0YXYgaW5jaWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Bvc2xlZG7DoSB6bWVuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdOYXBvc2xlZHkgem1lbmlsJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVmHFoWUgcG9sb8W+a3kgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnVnloxL5hZMOhdmFuaWUgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVHlwIG9iamVrdHUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIHRyaWVkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdVcG96b3LFiHVqZW1lLCDFvmUgc2Egdnl0dm9yaWEgYWogcHLDrXNsdcWhbsOpIGR5bmFtaWNrw6kgcG9saWEgYSB0cmllZHkgR2VuZXJhbENhdGFsb2cgYSBuZWTDtGpkZSBrIGljaCBhdXRvbWF0aWNrw6ltdSBvZHN0csOhbmVuaXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmHFpT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUG90cmVidWpldGUgcHLDrWtsYWR5IHRyaWVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsOtY2lhIG5pZSBqZSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcmVoxL5hZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBqZSB6YWRhbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdHJlYnVqZXRlIGFzcG/FiCBqZWRudSB2eWJyYW7DuiBwb2xvxb5rdSBrb25maWd1csOhY2llISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0sgdGVqdG8ga29uZmlndXJhxI1uZWogcG9sb8W+a2UgbmVtw6F0ZSBwcsOtc3R1cCBuYSB6w6FwaXM6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcmUgdHJpZWR1ICVzIG5lYm9sYSBkZWZpbm92YW7DoSDFvmlhZG5hIGRlZmluw61jaWEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DoSBwb2xvxb5rYSAiJXMiIG5lYm9sYSBuw6FqZGVuw6EgdiBkYXRhYsOhemUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmVwb2RhcmlsbyBzYSBvZHN0csOhbmnFpSBrb25maWd1cmHEjW7DuiBwb2xvxb5rdSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1ByZSBDb25maWdJdGVtSUQgJXMgbmVib2xhIG7DoWpkZW7DoSDFvmlhZG5hIHZlcnppYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbmkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1Byw61zdHVwIG5pZSBqZSB1bW/Fvm5lbsO9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgamUgemFkYW7DqSDFvmlhZG5lIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgc8O6IGRhbsOpIMW+aWFkbmUgcHLDrXN0dXBvdsOpIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydm9rIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92w6EgdmVyemlhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2FkZW5pYSBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXYgaW5jaWRlbnR1IGFrdHVhbGl6b3ZhbsO9IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZGFuw70gb2RrYXogbmEgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdPZGtheiBuYSAlcyAodHlwZT0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbsOtY2lhIHBvbG/Fvmt5IENvbmZpZ0l0ZW0gYWt0dWFsaXpvdmFuw6EgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ07DoXpvdiBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWLDunQgJXMgYWt0dWFsaXpvdmFuw70geiAiJXMiIG5hICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyemlhICVzIG9kc3Ryw6FuZW7DoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaWUgamUgdXZlZGVuw6kgxb5pYWRuZSBDb25maWdJdGVtSUQgYW5pIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIGplIG1vxb5uw6kgem9icmF6acWlIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBzYSBuZW5hxaFsbyB2IGRhdGFiw6F6ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Z5dGxhxI1lbsOpICVzIG5hICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmVwbGF0bsOpIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdQcmUgdMO6dG8gdHJpZWR1IG5pZSBzw7ogdWRlbGVuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb1pYWRueSB2w71zbGVkb2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnVsO9c2xlZGt5IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOaWUgamUgbW/Fvm7DqSB6b2JyYXppxaUgcG9sb8W+a3UsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhIHByZSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYm9sYSBuw6FqZGVuw6EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbmHFoWxpIHNhIMW+aWFkbmUgdmVyemllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3ByZXbDoWR6a292w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3Vwb3pvcm5lbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXYgbmFzYWRlbmlhIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IGluY2lkZW50dSB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9aWFkbmUgcG92b2xlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdWeWjEvmFkw6F2YWNpZSBwYXJhbWV0cmUgc8O6IG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIHN0YXZ1IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXAgYWt0dcOhbG5laG8gaW5jaWRlbnR1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lZHppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YmVyIGplZG5laiBhbGVibyB2aWFjZXLDvWNoIHRyaWVkIG5hIG9ibWVkemVuaWUgdnliZXJhdGXEvm7DvWNoIHBvbG/FvmllayBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWJlciBqZWRuZWogYWxlYm8gdmlhY2Vyw71jaCB0cmllZCBuYSBvYm1lZHplbmllIHZ5YmVyYXRlxL5uw71jaCBwb2xvxb5pZWsga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWNrw70gKHZlcnppYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwIG9ka2F6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfEjGkgc2EgdG90byBwcmVwb2plbmllIHZ6xaVhaHVqZSBuYSBDb25maWdJdGVtIGFsZWJvIHN0YXRpY2vDuiB2ZXJ6aXUgb2RrYXp1asO6Y2VobyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG5laG8gc3RhdnUgaW5jaWRlbnR1IHNhIHZ5a29uw6F2YSBsZW4gcHJpIGR5bmFtaWNrw71jaCBvZGthem9jaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmliw7p0LCBwb2TEvmEga3RvcsOpaG8gc2EgYnVkw7ogdnloxL5hZMOhdmHFpSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1rDoWtsYWRuw6EgxaF0cnVrdMO6cmEgbmllIGplIHBsYXRuw6EuIFBvc2t5dG5pdGUgaGFzaCBzIMO6ZGFqbWkgdm8gZm9ybcOhdGUgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdSZcWlYXplYyBZQU1MIHNhIG11c8OtIHphxI3DrW5hxaUgem5ha29tIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05lcG9kYXJpbG8gc2EgdnnEjWlzdGnFpSB0YWJ1xL5rdSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZWJvbGkgbsOhamRlbsOpIMW+aWFkbmUgcmVsZXZhbnRuw6kgZHluYW1pY2vDqSBwb2xpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05lcG9kYXJpbG8gc2Egdmxvxb5pxaUgZG8gdGFidcS+a3kgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdWbG/FvmVuaWUgMCByaWFka292IGRvIHRhYnXEvmt5IGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbcOhbG55IHBvxI1ldCBqZWRuw6lobyBwcnZrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnQvZXhwb3J0IHByw61sb2ggKGFrbyBwb3NsZWRuw6kgcG9sb8W+a3kgbmEgcmlhZGt1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1JlxaVhemVjIHZlcnppZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdDaHliYSBwcmkgc3luY2hyb25pesOhY2lpIGRlZmluw61jacOtLiBTa29udHJvbHVqdGUsIHByb3PDrW0sIHByb3Rva29sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ03DoXRlIGRlZmluw61jaWUgSVRTTUNvbmZpZ0l0ZW0sIGt0b3LDqSBuaWUgc8O6IHN5bmNocm9uaXpvdmFuw6kuIE5hc2HEj3RlIGR5bmFtaWNrw6kgem1lbnkgcG9sw60gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdWeXByxaFhbGEgcGxhdG5vc8WlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnw5pkcsW+YmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGzDoW5vdmFuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnT3ByYXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICduYSBkw7RjaG9ka3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUHJlaMS+YWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RvdmFuaWUvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1ByZWjEvmFkIGEgcG90dnJkZW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRvdmFuaWUgdHJpZWQvcm9sw60gYSBpY2ggc8O6dmlzaWFjaWNoIHBvbMOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnUG/EjWFzIGltcG9ydHUgdHJpZWR5IGRvxaFsbyBrIGNoeWJlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gU2tyeXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gWm9icmF6ZW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxb7FiHVqZSByb3rFocOtcmVuw6kgcG9kbWllbmt5IHZ5aMS+YWTDoXZhbmlhIHYga29uZmlndXJhxI1uZWogcG9sb8W+a2UgdnloxL5hZMOhdmFuaWEgdiByb3pocmFuw60gYWdlbnRhLiBQb21vY291IHRlanRvIGZ1bmtjaWUgbcO0xb5ldGUgdnloxL5hZMOhdmHFpSBuYXByLiBuw6F6b3Yga29uZmlndXJhxI1uZWogcG9sb8W+a3kgcyBwb2RtaWVua2FtaSB0eXB1ICIoKmtleTEqJiYqa2V5MiopIiBhbGVibyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W+xYh1amUgcm96xaHDrXJlbsOpIHBvZG1pZW5reSB2eWjEvmFkw6F2YW5pYSB2byB2eWjEvmFkw6F2YW7DrSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4gUG9tb2NvdSB0ZWp0byBmdW5rY2llIG3DtMW+ZXRlIHZ5aMS+YWTDoXZhxaUgbmFwci4gbsOhem92IGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHBvbW9jb3UgcG9kbWllbm9rIHR5cHUgIigqa2V5MSomJiprZXkyKikiIGFsZWJvICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnUHJpcmFkZW7DqSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHByaXJhZGVuw6kgayB6w6FrYXpuw61ja2VqIHNwb2xvxI1ub3N0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHByaXJhZGVuw6kgcG91xb7DrXZhdGXEvm92aSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnTmFzdGF2ZW5pYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdLb250cm9sb3ZhxaUgamVkaW5lxI1uw70gbsOhem92IGxlbiB2IHLDoW1jaSB0ZWogaXN0ZWogdHJpZWR5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIGFsZWJvIGdsb2LDoWxuZSAoImdsb2JhbCIpLCDEjW8gem5hbWVuw6EsIMW+ZSBwcmkgaMS+YWRhbsOtIGR1cGxpa8OhdG92IHNhIGJlcmllIGRvIMO6dmFoeSBrYcW+ZMO9IGV4aXN0dWrDumNpIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWeWJlcnRlIG1vZHVsIG5hIHZ5bsO6dGVuaWUgc2Now6lteSBwb21lbm92YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1Z5YmVydGUgc2kgbW9kdWwgbmEgdnluw7p0ZW5pZSDEjcOtc2VsbmVqIHNjaMOpbXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1Z5YmVydGUgbW9kdWwgbmEgdnluw7p0ZW5pZSBzY2jDqW15IHJlxaVhemNhIHZlcnppw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVnliZXJ0ZSBhdHJpYsO6dHksIGt0b3LDqSBzcHVzdGlhIHZ5dHZvcmVuaWUgbm92ZWogdmVyemllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWeWJlcnRlIGthdGVnw7NyaWUsIGt0b3LDqSBjaGNldGUgcHJpcmFkacWlIHRlanRvIHRyaWVkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJlIHN0xLpwY292w71jaCBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBwcmUgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1N0xLpwY2UsIGt0b3LDqSBtb8W+bm8gZmlsdHJvdmHFpSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuIFBvem7DoW1rYTogUG92b2xlbsOpIHPDuiBsZW4gYXRyaWLDunR5IGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IGEgZHluYW1pY2vDqSBwb2xpYSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnUG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnUHJpZGFuaWUgcG9sb8W+a3kga29uZmlndXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfDmnByYXZhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgdWRhbG9zdMOtIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBrdG9yw70gdW1vxb7FiHVqZSB6YXpuYW1lbsOhdmFuaWUgZG8gaGlzdMOzcmllIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgdWRhbG9zdMOtIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLCBrdG9yw70gYWt0dWFsaXp1amUga29uZmlndXJhxI1uw6kgcG9sb8W+a3kgcG9kxL5hIGljaCBha3R1w6FsbmVqIGRlZmluw61jaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnVsO9c3R1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdUbGHEjSBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdQcmlibMOtxb5lbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1N0cm9tb3bDqSB6b2JyYXplbmllIHBvbG/Fvmt5IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyemlhIHBvbG/Fvmt5IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnUG9sb8W+a3kgQ29uZmlnSXRlbXMgbmFzbGVkdWrDumNpY2ggdHJpZWQgbmVidWTDuiB1bG/FvmVuw6kgbmEgc2VydmVyaSBFbGFzdGljc2VhcmNoLiBBayBjaGNldGUgdMO6dG8gbW/Fvm5vc8WlIHBvdcW+acWlIG5hIGV4aXN0dWrDumNlIENJLCBqZSBwb3RyZWJuw6kgcG8gem1lbmUgdGVqdG8gbW/Fvm5vc3RpIHNwdXN0acWlIG1pZ3LDoWNpdSBDSSBwcm9zdHJlZG7DrWN0dm9tIGtvbnpvbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ1BvbG/Fvmt5IENvbmZpZ0l0ZW1zIHMgbmFzbGVkdWrDumNpbWkgc3Rhdm1pIG5hc2FkZW5pYSBuZWJ1ZMO6IHVsb8W+ZW7DqSBuYSBzZXJ2ZXJpIEVsYXN0aWNzZWFyY2guIEFrIGNoY2V0ZSB0w7p0byBtb8W+bm9zxaUgcG91xb5pxaUgbmEgZXhpc3R1asO6Y2UgQ0ksIGplIHBvdHJlYm7DqSBwbyB6bWVuZSB0ZWp0byBtb8W+bm9zdGkgc3B1c3RpxaUgbWlncsOhY2l1IENJIHByb3N0cmVkbsOtY3R2b20ga29uem9seS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXQgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXLDoWNpYSBMaW1pdCBwb2xvxb5reSBuYSBzdHLDoW5rdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiw6F6YSBuYSBzcHLDoXZ1IGtvbmZpZ3Vyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdIcm9tYWRuw70gbW9kdWwga29uZmlndXJhxI1uZWogcG9sb8W+a3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Z5aMS+YWTDoXZhbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IGJhY2tlbmRvdsOpaG8gc21lcm92YcSNYSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdWeXR2b3JlbmllIGEgc3Byw6F2YSBkZWZpbsOtY2nDrSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdWeXR2w6FyYSBsw61zdGt5IHByZSBwb2xvxb5reSBDb25maWdJdGVtcyB2IHVyxI1pdMO9Y2ggxI1hc292w71jaCBib2RvY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1rDoWthem7DrWNpIG3DtMW+dSB2aWRpZcWlIGhpc3Rvcmlja8OpIHZlcnppZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnWsOha2F6bsOtY2kgbWFqw7ogbW/Fvm5vc8WlIG1hbnXDoWxuZSBwcmVww61uYcWlIG1lZHppIGhpc3Rvcmlja8O9bWkgdmVyemlhbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnUHJlZHZvbGVuw6kgw7pkYWplLCBrdG9yw6kgc2EgbWFqw7ogcG91xb5pxaUgbmEgb2JyYXpvdmtlIHZ5aMS+YWTDoXZhbmlhIGF0cmliw7p0b3Yga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuIFByw61rbGFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ByZWR2b2xlbsOpIMO6ZGFqZSwga3RvcsOpIHNhIG1hasO6IHBvdcW+acWlIG5hIG9icmF6b3ZrZSB2eWjEvmFkw6F2YW5pYSBhdHJpYsO6dG92IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBQcsOta2xhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmludWp0ZSBBa2NpZSwgcHJpIGt0b3LDvWNoIGplIHZvIHdpZGdldGUgcHJlcG9qZW7DvWNoIG9iamVrdG92IGsgZGlzcG96w61jaWkgdGxhxI1pZGxvIG5hc3RhdmVuaWEgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvem9yxYh1amVtZSwgxb5lIHRpZXRvIEFrY2llIG11c2lhIG1hxaUgemFyZWdpc3Ryb3ZhbsOpIG5hc2xlZHVqw7pjZSBzw7pib3J5IEpTIGEgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmlub3ZhbmllIHNjaMOpbXkgVGVtcGxhdGU6OlRvb2xraXQgcHJlIHJlxaVhemNlIHZlcnppw60uIFBvdcW+w612YSBzYSBsZW4gdnRlZHksIGFrIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIG5hc3RhdmVuw70gbmEgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmludWp0ZSBzw7pib3IgcG9kbWllbm9rLCB6YSBrdG9yw71jaCBtw7TFvmUgesOha2F6bsOtayB2aWRpZcWlIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUuIFBvZG1pZW5reSBtw7TFvnUgYnnFpSB2b2xpdGXEvm5lIG9ibWVkemVuw6kgbmEgdXLEjWl0w6kgc2t1cGlueSB6w6FrYXpuw61rb3YuIE7DoXpvdiBqZSBqZWRpbsO9IHBvdmlubsO9IGF0cmliw7p0LiBBayBuaWUgc8O6IHphZGFuw6kgxb5pYWRuZSDEj2FsxaFpZSBtb8W+bm9zdGksIHbFoWV0a3kga29uZmlndXJhxI1uw6kgcG9sb8W+a3kgYnVkw7ogdmlkaXRlxL5uw6kgdiByw6FtY2kgdGVqdG8ga2F0ZWfDs3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSB2eW1hemFuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTSBwb21vY291IHbFoWVvYmVjbsOpaG8gcm96aHJhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHrDrXNrYW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHBvbW9jb3UgdsWhZW9iZWNuw6lobyByb3pocmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgdnloxL5hZMOhdmFuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTSBwb21vY291IHbFoWVvYmVjbsOpaG8gcm96aHJhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIG5hc3RhdmVuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTSBwb21vY291IHbFoWVvYmVjbsOpaG8gcm96aHJhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbnVqZSBtb2R1bCBwcmVoxL5hZHUgbmEgem9icmF6ZW5pZSBtYWzDqWhvIHpvYnJhemVuaWEgem96bmFtdSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW51amUsIMSNaSBzYSB2IHNwb2plbmlhY2ggdXpsb3YgbXVzaWEgem9icmF6b3ZhxaUgem5hxI1reSB0eXB1IHNwb2plbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW51amUgcmVndWzDoXJuZSB2w71yYXp5IGplZG5vdGxpdm8gcHJlIGthxb5kw7ogdHJpZWR1IENvbmZpZ0l0ZW0gbmEga29udHJvbHUgbsOhenZ1IENvbmZpZ0l0ZW0gYSB6b2JyYXplbmllIHByw61zbHXFoW7DvWNoIGNoeWJvdsO9Y2ggc3Byw6F2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIGRvc3R1cG7DqSBzdMS6cGNlIENJIHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgesOhdmlzbG9zdGkgb2QgdHJpZWR5IENJLiBLYcW+ZMOhIHBvbG/FvmthIG11c8OtIHBvem9zdMOhdmHFpSB6IG7DoXp2dSB0cmllZHkgYSBwb8S+YSBkb3N0dXBuw71jaCBwb2zDrSBwcmUgcHLDrXNsdcWhbsO6IHRyaWVkdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c2lhIHJlxaFwZWt0b3ZhxaUgc2Now6ltdSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gYXRyaWLDunQgcG9sb8W+a3kga29uZmlndXLDoWNpZSBwcmUgdHJpZWRlbmllIHBvbG/FvmllayBrb25maWd1csOhY2llIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSBhdHJpYsO6dCBwb2xvxb5reSBrb25maWd1csOhY2llIHByZSB0cmllZGVuaWUgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdm8gdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHBvbG/FvmllayBrb25maWd1csOhY2llIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsO9IGF0cmliw7p0IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgcHJlIHRyaWVkZW5pZSBwb2xvxb5reSBrb25maWd1csOhY2llIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5reSBrb25maWd1csOhY2llIHRlanRvIG9wZXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsOpIHBvcmFkaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdm8gdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4gTmFob3I6IG5hanN0YXLFoWllIG5hIHZyY2h1LiBOYWRvbDogbmFqbm92xaFpZSBuYSB2cmNodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsOpIHBvcmFkaWUgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdm8gdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHBvbG/FvmllayBrb25maWd1csOhY2llIHYgcm96aHJhbsOtIHrDoWthem7DrWthLiBOYWhvcjogbmFqc3RhcsWhaWUgbmEgdnJjaHUuIE5hZG9sOiBuYWpub3bFoWllIG5hIHZyY2h1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSBwb3JhZGllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB0ZWp0byBvcGVyw6FjaWUuIE5haG9yOiBuYWpzdGFyxaFpZSBuYSB2cmNodS4gTmFkb2w6IG5ham5vdsWhaWUgbmEgdnJjaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSB6b2JyYXplbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmludWplIHByZWR2b2xlbsO6IGjEumJrdSB2esWlYWhvdiwga3RvcsOpIHNhIG1hasO6IHpvYnJhem92YcWlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSB6b2JyYXplbsO9IGF0cmliw7p0IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBvYnJhem92a3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSB6b2JyYXplbsO9IGF0cmliw7p0IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBvYnJhem92a3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuIFByw61rbGFkOiAiS2V5IiAoS8S+w7rEjSkgbXVzw60gbWHFpSBuw6F6b3YgZHluYW1pY2vDqWhvIHBvxL5hIHYgdG9tdG8gcHLDrXBhZGUgIlgiLCAiQ29udGVudCIgKE9ic2FoKSBtdXPDrSBtYcWlIGhvZG5vdHUgZHluYW1pY2vDqWhvIHBvxL5hIHYgesOhdmlzbG9zdGkgb2QgdHlwdSBkeW5hbWlja8OpaG8gcG/EvmEsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGEgYWxlYm8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9dMO9xb5kZcWIOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1QcmVkOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gcG9kb2JqZWt0IHRyaWVkeSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvcWha3Uga29tcG9uZW50dSB0ZXh0b3bDqWhvIGVkaXRvcmEgcHJlIHTDunRvIG9icmF6b3ZrdS4gWmFkYWp0ZSDEjcOtc2xvIChwaXhlbHkpIGFsZWJvIHBlcmNlbnR1w6FsbnUgaG9kbm90dSAocmVsYXTDrXZudSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxI1ldCByaWFka292IHByZSBlZGl0b3IgZGVmaW7DrWNpw60gQ0kgdiByb3pocmFuw60gc3Byw6F2Y3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvcmFkaWUgaW5jaWRlbnRuw71jaCBzdGF2b3Ygb2Qgdnlzb2vDqWhvIChuYXByLiBjcmljaXRhbCkgcG8gbsOtemt5IChuYXByLiBmdW5jdGlvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcsOtc2x1xaFuw6kgc3RhdnkgbmFzYWRlbmlhLCB2IGt0b3LDvWNoIG3DtMW+dSBwcmVwb2plbsOpIHRpcHkgb3ZwbHl2bmnFpSBzdGF2IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWjEvmFkw6F2YW5pYSBwcmUgb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnloxL5hZMOhdmFuaWEgcHJlIG9icmF6b3ZrdSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbnVqZSB6b2JyYXplbsOpIHN0xLpwY2UgQ0kgdiBrb21wbGV4bm9tIHpvYnJhemVuw60gdGFidcS+a3kgcHJlcG9qZW7DrSBwcmUgdsWhZXRreSB0cmllZHkgQ0kuIEFrIG5lZXhpc3R1amUgxb5pYWRuYSBwb2xvxb5rYSwgem9icmF6aWEgc2EgcHJlZHZvbGVuw6kgc3TEunBjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmludWplIHpvYnJhemVuw6kgc3TEunBjZSBDSSB2IGtvbXBsZXhub20gem9icmF6ZW7DrSB0YWJ1xL5reSBwcmVwb2plbsOtIHYgesOhdmlzbG9zdGkgb2QgdHJpZWR5IENJLiBLYcW+ZMO9IHrDoXpuYW0gbXVzw60gbWHFpSBwcmVkcG9udSBzIG7DoXp2b20gdHJpZWR5IGEgZHZvaml0w71taSBkdm9qYm9ka2FtaSAodC4gai4gQ29tcHV0ZXI6OikuIEV4aXN0dWplIG5pZWtvxL5rbyBDSS1BdHRyaWJ1dGVzIChhdHJpYsO6dG92IENJKSwga3RvcsOpIHPDuiBzcG9sb8SNbsOpIHByZSB2xaFldGt5IENJIChwcsOta2xhZCBwcmUgdHJpZWR1IENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBOYSB6b2JyYXplbmllIGplZG5vdGxpdsO9Y2ggQ0ktYXRyaWLDunRvdiBkZWZpbm92YW7DvWNoIHYgQ0ktZGVmaW7DrWNpaSBzYSBtdXPDrSBwb3XFvmnFpSBuYXNsZWR1asO6Y2Egc2Now6ltYSAocHLDrWtsYWQgcHJlIHRyaWVkdSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBBayBwcmUgdHJpZWR1IENJIG5lZXhpc3R1amUgxb5pYWRuYSBwb2xvxb5rYSwgem9icmF6aWEgc2EgcHJlZHZvbGVuw6kgc3TEunBjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbnVqZSwga3RvcsOpIHBvbG/Fvmt5IHPDuiBrIGRpc3BvesOtY2lpIHByZSAiQWN0aW9uIiB2IHRyZXRlaiDDunJvdm5pIMWhdHJ1a3TDunJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmludWplLCBrdG9yw6kgcG9sb8W+a3kgc8O6IGRvc3R1cG7DqSB2IHBydmVqIMO6cm92bmkgxaF0cnVrdMO6cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmludWplLCBrdG9yw6kgcG9sb8W+a3kgc8O6IGRvc3R1cG7DqSB2IGRydWhlaiDDunJvdm5pIMWhdHJ1a3TDunJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdVcsSNdWplLCBrdG9yw70gdHlwIHByZXBvamVuaWEgKHBvbWVub3ZhbsO9IHogcG9oxL5hZHUgdGlrZXR1KSBtw7TFvmUgb3ZwbHl2bmnFpSBzdGF2IHByZXBvamVuZWogQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RvcsO9IHR5cCB0aXB1IG3DtMW+ZSBvdnBseXZuacWlIHN0YXYgcHJlcG9qZW5laiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpesOhY2lhIGRlZmluw61jaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ09kc3Ryw6FuZW5pZSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRmFyYmEgc3RhdnUgbmFzYWRlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWvDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bCB1ZGFsb3N0w60gZHluYW1pY2vDvWNoIHBvbMOtLCBrdG9yw70gb3puYcSNw60gZGVmaW7DrWNpZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBha28gbmVzeW5jaHJvbml6b3ZhbsOpLCBhayBzYSB6bWVuaWEgZHluYW1pY2vDqSBwb2xpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6kgcG9saWEgem9icmF6ZW7DqSBuYSBvYnJhem92a2UgxI9hbMWhw61jaCBwb2zDrSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDqSBwb2xpYSB6b2JyYXplbsOpIG5hIG9icmF6b3ZrZSBwcmVoxL5hZHUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OpIHBvbGlhIHpvYnJhemVuw6kgbmEgb2JyYXpvdmtlIHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUG92b2zDrSBmdW5rY2l1IGhyb21hZG5laiBha2NpZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBwcmUgZnJvbnRlbmQgYWdlbnRhIG5hIHByw6FjdSBzIHZpYWMgYWtvIGplZG5vdSBrb25maWd1cmHEjW5vdSBwb2xvxb5rb3UgbmFyYXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdTdGF2IG5hc2FkZW5pYSB0ZWp0byBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1Bvdm9sw60vdnlwbmUgZnVua2NpdSBrb250cm9seSBqZWRpbmXEjW7DvWNoIG7DoXp2b3YgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgSVRTTS4gUHJlZCB6YXBudXTDrW0gdGVqdG8gbW/Fvm5vc3RpIGJ5IHN0ZSBtYWxpIHNrb250cm9sb3ZhxaUgc3lzdMOpbSwgxI1pIHXFviBuZWV4aXN0dWrDuiBrb25maWd1cmHEjW7DqSBwb2xvxb5reSBzIGR1cGxpY2l0bsO9bWkgbsOhenZhbWkuIE3DtMW+ZXRlIHRvIHVyb2JpxaUgcG9tb2NvdSBrb256b2xvdsOpaG8gcHLDrWthenUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCB1ZGFsb3N0aSBuYSBuYXN0YXZlbmllIGNvbmZpZ2l0ZW0tc3RhdHVzIG5hIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1BvbGlhIGluZGV4dSBrb25maWd1cmHEjW5laiBwb2xvxb5reSwga3RvcsOpIHNhIHBvdcW+w612YWrDuiBuYSBmdWxsdGV4dG92w6kgdnloxL5hZMOhdmFuaWUuIFBvbGlhIHPDuiB0aWXFviB1bG/FvmVuw6ksIGFsZSBuaWUgc8O6IHBvdmlubsOpIHByZSBjZWxrb3bDuiBmdW5rxI1ub3PFpS4gWmFocm51dGllIHByw61sb2ggbW/Fvm5vIHpha8OhemHFpSBuYXN0YXZlbsOtbSBwb2xvxb5reSBuYSBob2Rub3R1IDAgYWxlYm8gamVqIHZ5bWF6YW7DrW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdQb2xpYSB1bG/FvmVuw6kgdiBpbmRleGUga29uZmlndXJhxI1uZWogcG9sb8W+a3ksIGt0b3LDqSBzYSBva3JlbSBmdWxsdGV4dG92w6lobyB2eWjEvmFkw6F2YW5pYSBwb3XFvsOtdmFqw7ogYWogbmEgaW7DqSDDusSNZWx5LiBQcmUgw7pwbG7DuiBmdW5rxI1ub3PFpSBzw7ogdsWhZXRreSBwb2xpYSBwb3Zpbm7DqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQcmUga2HFvmTDuiB3ZWJvdsO6IHNsdcW+YnUgKGvEvsO6xI0pIG1vxb5ubyBkZWZpbm92YcWlIHBvbGUgdHJpZWQgKGhvZG5vdGEpLCBuYSBrdG9yw6kgamUgaW1wb3J0IG9ibWVkemVuw70uIFByZSB2xaFldGt5IHZ5YnJhbsOpIHRyaWVkeSBhbGVibyB2xaFldGt5IGV4aXN0dWrDumNlIHRyaWVkeSBzYSBidWTDuiBtdXNpZcWlIHYga29uZmlndXLDoWNpaSBpbnZva2VyYSB6dm9sacWlIGlkZW50aWZpa2HEjW7DqSBhdHJpYsO6dHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHLDoWNpYSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcmUgdnJzdHZ1IHZ5dm9sw6F2YcSNYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0csOhY2lhIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHByZSB2cnN0dnUgdnl2b2zDoXZhxI1hIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0csOhY2lhIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHByZSB2cnN0dnUgdnl2b2zDoXZhxI1hIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJlaMS+YWQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaMWVxYhhIHN0YXZ5IG5hc2FkZW5pYSBkbyB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaMWVxYhhIHN0YXZ5IGluY2lkZW50b3YgZG8gdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYXhpbcOhbG55IHBvxI1ldCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllaywga3RvcsOpIHNhIHpvYnJhemlhIHZvIHbDvXNsZWRrdSB0ZWp0byBvcGVyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgbmEga29udHJvbHUgc2t1cGlueSB6b2Rwb3ZlZG5laiB6YSB0cmllZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgbmEga29udHJvbHUgc2t1cGlueSB6b2Rwb3ZlZG5laiB6YSBwb2xvxb5rdSBrb25maWd1csOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIG5hIGdlbmVyb3ZhbmllIMWhdGF0aXN0w61rIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTsOhem92IG1vZHVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdWwgxI3DrXNsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8SNZXQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWssIGt0b3LDqSBzYSBtYWrDuiB6b2JyYXppxaUgbmEga2HFvmRlaiBzdHLDoW5rZSB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8SNZXQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWssIGt0b3LDqSBzYSBtYWrDuiB6b2JyYXppxaUgbmEga2HFvmRlaiBzdHLDoW5rZSB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0eSwga3RvcsOpIHNhIG1hasO6IHZ5aMS+YWTDoXZhxaUsIGtvxL5rbyB6w6F6bmFtb3YgYSBrdG9yw6kgYXRyaWLDunR5IHNhIG1hasO6IHpvYnJhemnFpS4gQXRyaWLDunR5IENvbmZpZ0l0ZW0gbXVzaWEgYnnFpSBleHBsaWNpdG5lIHVsb8W+ZW7DqSBwcm9zdHJlZG7DrWN0dm9tIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWjEvmFkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBrYXRlZ8OzcmllIHRyaWVkIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0xLpwY292w6kgZmlsdHJlIHByZWjEvmFkdSBtYWzDvWNoIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBVcG96b3JuZW5pZTogbmFzdGF2ZW5pZSBob2Rub3R5ICJBa3TDrXZuZSIgbmEgMCB6YWJyw6FuaSBhZ2VudG9tIHVwcmF2b3ZhxaUgbmFzdGF2ZW5pYSB0ZWp0byBza3VwaW55IGliYSB2IGljaCBvc29ibsO9Y2ggbmFzdGF2ZW5pYWNoLCBhbGUgc3Byw6F2Y29tIHN0w6FsZSB1bW/Fvm7DrSB1cHJhdm92YcWlIG5hc3RhdmVuaWEgdiBtZW5lIGluw6lobyBwb3XFvsOtdmF0ZcS+YS4gUG9tb2NvdSBwb2xvxb5reSBcJ1ByZWZlcmVuY2VHcm91cFwnIG3DtMW+ZXRlIG92bMOhZGHFpSwgdiBrdG9yZWogb2JsYXN0aSBzYSBtYWrDuiB0aWV0byBuYXN0YXZlbmlhIHpvYnJhem92YcWlIHYgcG91xb7DrXZhdGXEvnNrb20gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0YXZ5IG5hc2FkZW5pYSBzYSB2eWZhcmJpYSB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBzdGF2eSBuYXNhZGVuaWEgdiB6b2JyYXplbsOtIHByZWZlcmVuY2nDrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHByw61rbGFkeSBza3Vww61uIG9wcsOhdm5lbsOtIHbFoWVvYmVjbsO9Y2ggYXRyaWLDunRvdiBrYXRhbMOzZ3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIG1vZHVsdSBuw6F6dnUgcHJlIHRyaWVkeSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIG1vZHVsIMSNw61zbGEgcHJlIHRyaWVkeSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBzdHLDoW5vayAobmEga3RvcsO9Y2ggc2Egem9icmF6dWrDuiBrb25maWd1cmHEjW7DqSBwb2xvxb5reSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgbW9kdWwgcmXFpWF6Y2EgdmVyemllIHByZSB0cmllZHkga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6b2JyYXplbsOtIHByZWZlcmVuY2nDrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgbW9kdWwgxaFhYmzDs255IHJlxaVhemNhIHZlcnppZSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBzcMO6xaHFpWHEjSB2ZXJ6aWUgcHJlIHRyaWVkeSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVnlrb27DoSBuYWtvbmZpZ3Vyb3ZhbsO6IGFrY2l1IHByZSBrYcW+ZMO6IHVkYWxvc8WlIChha28gSW52b2tlcikgcHJlIGthxb5kw7ogbmFrb25maWd1cm92YW7DuiB3ZWJvdsO6IHNsdcW+YnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIG9wcsOhdm5lbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvml0aWUgYWtjaWUgcHJpcG9qZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgbmEgdnloxL5hZMOhdmFuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgdnloxL5hZMOhdmFuaWEgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB6b2JyYXplbmlhIHN0cm9tdSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgenbDpMSNxaFlbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHByaWRhbmlhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHBvbG/Fvmt5IGhyb21hZG5laiBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSDDunByYXYgcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcG9sb8W+a3kgaGlzdMOzcmllIGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB0bGHEjSBwb2xvxb5reSBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIG9kc3Ryw6FuZW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdWeWjEvmFkw6F2YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0F1dG9tYXRpY2vDqSBuYXN0YXZlbmllIHN0YXZ1IGluY2lkZW50dSBDSSwga2XEjyBqZSB0aWtldCBwcmVwb2plbsO9IHMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2w60gc3RhdiBuYXNhZGVuaWEgbmEgb2JyYXpvdmtlIGhyb21hZG5laiBwb2xvxb5reSBrb25maWd1csOhY2llIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2w60gc3RhdiB1ZGFsb3N0aSBuYSBvYnJhem92a2UgaHJvbWFkbmVqIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSwga3RvcsO9IHVtb8W+xYh1amUgcHJlcG9qZW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBzIGluw71tIG9iamVrdG9tIHYgem9icmF6ZW7DrSB6dsOkxI3FoWVuaWEga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIHByw61zdHVwIGsgaGlzdMOzcmlpIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgcHLDrXN0dXAgayBoaXN0w7NyaWkga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBqZWogenbDpMSNxaFlbm9tIHpvYnJhemVuw60gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIG9kc3Ryw6FuZW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgem9icmF6ZW5pZSBvZGthem92IG5hIGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IGFrbyBzdHJvbW92w6kgem9icmF6ZW5pZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBkdXBsaWtvdmFuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBkdXBsaWtvdmFuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBqZWogenbDpMSNxaFlbm9tIHpvYnJhemVuw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIMO6cHJhdnUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBqZWogenbDpMSNxaFlbm9tIHpvYnJhemVuw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIG7DoXZyYXQgZG8gem9icmF6ZW5pYSB6dsOkxI3FoWVuaWEga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIHRsYcSNIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgamVqIHp2w6TEjcWhZW5vbSB6b2JyYXplbsOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgcHJpYmzDrcW+ZW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBoaXN0w7NyaXUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgKHYgb3BhxI1ub20gcG9yYWTDrSkgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdQcmVkdm9sZW7DoSBrYXRlZ8OzcmlhLCBrdG9yw6Egc2Egem9icmF6w60sIGFrIG5pZSBqZSB2eWJyYXTDoSDFvmlhZG5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrw6F0b3Iga29uZmlndXJhxI1uZWogcG9sb8W+a3ksIG5hcHIuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQcmVkdm9sZW7DoSBob2Rub3RhIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpY2t5IHNww7rFocWlYSBpbnZva8OhdG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnppYSBSZcWlYXplYyB2eWphZHJlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHVsIHJlxaVhemNhIHZlcnppZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdTcMO6xaHFpWHEjSB2ZXJ6aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ8SMaSBqZSBtb8W+bsOpIHZ5aG7DusWlIHNhIHZ5a29uYW5pdSBwcsOta2F6dSBDb25maWdJdGVtQUNMIGtvbnRyb2xvdSB6w6F2aXNsb3N0w60gcG9sw60gdWxvxb5lbsO9Y2ggdiBtZWR6aXBhbcOkdGkuIFRvdG8gbcO0xb5lIHpsZXDFoWnFpSDEjWFzeSBuYcSNw610YW5pYSBmb3JtdWzDoXJvdiwgYWxlIG11c8OtIGJ5xaUgdnlwbnV0w6ksIGFrIHNhIG1hasO6IHBvdcW+w612YcWlIEFDTE1vZHVseSBwcmUgSVRTTUNvbmZpZ0l0ZW0tIGEgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0t0b3LDqSB2xaFlb2JlY27DqSBpbmZvcm3DoWNpZSBzw7ogdXZlZGVuw6kgdiB6w6FobGF2w60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAndHJpZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWvEjW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlZHByb2R1a8SNbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0w612bmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcGFsY2EgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwYWxjb3YgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwYWxjYSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwYWxjYSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXBhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcGFsY2EgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcGFsY292ICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1wYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBhbGNhICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwYWxjYSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcGFsY292ICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwYWxjYSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHBhbGNhICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBhbGNhICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwYWxjYSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcGFsY2EgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBhbGNhICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwYWxjb3YgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwYWxjYSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBhbGNhICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcGFsY2EgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHBhbGNhICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBhbGNhICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHBhbGNhICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcGFsY2EgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwYWxjb3YgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwYWxjb3YgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHBhbGNhICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBwYWxjYSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwYWxjYSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwYWxjb3YgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcGFsY2EgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ8OaxI10b3Zuw61jdHZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnUHJpZGXEvm92YW5pZSBhZHJpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1NwcsOhdmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWzDs2dvdsO9IHRlbGVmw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXAgc3BvdHJlYmnEjWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0thcGFjaXRhIGJhdMOpcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwIGJhdMOpcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnVkb3ZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdSb3pocmFuaWUgemJlcm5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdUcmllZGEgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0YSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYWNpdGEgbmEgZ3JhZmlja8O6IGthcnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnxIzDrXNsbyBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ8SMw610YcSNa2Ega2FyaWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1R5cCBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWvDoXR5IGtsaWVudG92JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVudHNreSBzb2Z0dsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGtsaWVudG92JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0hvZGlueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnUsO9Y2hsb3PFpSBob2TDrW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBuYSBwb2RwaXNvdmFuaWUga8OzZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuxI1uw70gdGVsZWbDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdEb2hvZGEgbyBwb3JhZGVuc3R2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnS29udGFrdCBuYSBkaXN0cmliw7p0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBrb250YWpuZXJvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1ptbHV2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVHlwIHptbHV2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1ptbHV2bsOpIG9iZG9iaWUgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnT2Jkb2JpZSBwbGF0bm9zdGkgem1sdXZ5IGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0JlemRyw7R0b3bDvSB0ZWxlZsOzbiAodGVsZWbDs24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnTsOha2xhZG92w6EgamVkbm90a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdQb8SNZXQgbGljZW5jacOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEw6F0dW0gdnl0dm9yZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnVmxhc3Ruw70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlemVydm92YW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmVyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRMOhdHVtIGZha3TDunJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEw6F0dW0gb2JqZWRuw6F2a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0TDoXR1bSB6w6FydWt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0TDoXR1bSB2eWRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdTdG9sbsO9IHBvxI3DrXRhxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBuYSBwb2RwaXNvdmFuaWUgZG9rdW1lbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1tYWlsb3bDqSBjZXJ0aWZpa8OhdHkgKGNlcnRpZmlrw6F0eSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1ByYWNvdm7DoSB6bWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdLb25jb3bDoSBJUCBhZHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdVa29uxI1lbmllIHBvZHBvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEw6F0dW0gc2tvbsSNZW5pYSBwbGF0bm9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybsO9IHBldm7DvSBkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtdsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1NrbGFkb3ZhbmllIGVuZXJnaWUgbmEgem90cnZhxI1uw61rdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zha3RvciBmb3JteSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNpbmdvdsOhIHptbHV2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1bFoWVvYmVjbsOpIGluZm9ybcOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlja8OpIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWNrw6Ega2FydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkdsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIGhhcmR2w6lydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIbW90bm9zxaUgaGFyZHbDqXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdOw6FobGF2bsOhIHPDunByYXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnU3Byw6F2YSBpZGVudMOtdCBhIHByw61zdHVwdSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50w6FybmUgxI3DrXNsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ07DoWtsYWR5IG5hIGludmVyc3Ryw6FjaXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfEjMOtc2xvIGZha3TDunJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2zDoXZlc25pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIG1vbml0b3IgKGRpc3BsZWogeiB0ZWt1dMO9Y2gga3J5xaF0w6Fsb3YpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoc3ZldGVsbsOhIGRpw7NkYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWbDs24gcGV2bmVqIGxpbmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1plbWVwaXNuw6EgxaHDrXJrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ1Zyc3R2YSAxOiBGeXppY2vDoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnVnJzdHZhIDI6IHZyc3R2YSBkw6F0b3bDqWhvIHNwb2plbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdWcnN0dmEgMzogU2llxaVvdsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdWcnN0dmEgMzogU2llxaVvdsOhIHZyc3R2YSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ1Zyc3R2YSA0OiBUcmFuc3BvcnRuw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdWcnN0dmEgNTogUmVhbGl6YcSNbsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdWcnN0dmEgNjogcHJlemVudGHEjW7DoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdWcnN0dmEgNzogQXBsaWthxI1uw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ07DoWpvbW7DoSB6bWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbsSNbsOhIHptbHV2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW7EjW7DvSBrxL7DusSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBsaWNlbmNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnT2Jkb2JpZSBwbGF0bm9zdGkgbGljZW5jaWUgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdEb2JhIHBsYXRub3N0aSBsaWNlbmNpZSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0w6lyaWEgcyBmb3Nmw6F0b20gbMOtdGlhIGEgxb5lbGV6YSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0zDrXRpdW0tacOzbm92w6EgKExpLWlvbikgYmF0w6lyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdabWx1dmEgbyBww7TFvmnEjWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdOYWNow6FkemEgc2Egdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdaZW1lcGlzbsOhIGTEusW+a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1bDvXJvYmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbcOhbG5hIG5vc25vc8WlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdQYW3DpMWlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwIHBhbcOkdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmlyYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG7DqSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsbsOpL3Zsb8W+ZW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnUG9waXMgbW9kZWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1JvemzDrcWhZW5pZSBtb25pdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZcS+a29zxaUgbW9uaXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNecWhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdTaWXFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm3DoWNpZSBvIHNpZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm3DoWNpZSBvIHNpZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdTaWXFpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWwta2FkbWlvdsOhIChOaUNkKSBiYXTDqXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsLW1ldGFsaHlkcmlkb3bDoSAoTmlNSCkgYmF0w6lyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnRG9ob2RhIG8gbWzEjWFubGl2b3N0aSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUG/EjWV0IHByb2Nlc29yb3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUG/EjWV0IG1vZHVsb3YgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ1BvxI1ldCBncmFmaWNrw71jaCBrYXJpZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAob3JnYW5pY2vDoSBkacOzZGEgZW1pdHVqw7pjYSBzdmV0bG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1ByZXbDoWR6a292w6kgbsOha2xhZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT2JqZWRuw6F2YWNpZSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnSW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVsO9c3R1cHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcGFydG5lcnN0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZsOzbm5lIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cCB0ZWxlZsOzbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXppY2vDqSBqYWRyw6EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdEb2TDoXZrYSBlbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnWmFrw7pwZW7DqSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdIxLpia2Egc3RvamFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JlZ8OhbG92w6kgamVkbm90a3kgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdJemJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnS2FydGEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWvDoXR5IFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQcmVkYWpuw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRuw70gdGVsZWbDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVXphdnJldMOhIG9sb3ZlbsOhIGJhdMOpcmlhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8OpcmlvdsOpIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyb3bDvSBzb2Z0dsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1ptbHV2YSBvIHBvc2t5dG92YW7DrSBzbHXFvmllYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpc27DvSDFoXTDrXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXAgesOhc3V2a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0dsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1JlcHJvZHVrdG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfFoHRhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1BvxI1pYXRvxI1uw6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfDmmxvxb5pc2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnw5psb8W+bsO9IG9kZGllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0Rjw6lyc2thIHNwb2xvxI1ub3PFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWmhybnV0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUZW5rw70ga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdWbMOha25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0NlbGtvdsOhIHBhbcOkxaUgUkFNIGdyYWZpY2tlaiBrYXJ0eSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnQ2Vsa292w6EgcGFtw6TFpSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnRG90eWtvdsO9IG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdWZcW+YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnUm96Ym/EjW92YcSNIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ07DoWhsYXZuw6Egc8O6cHJhdmEgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWbDs24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Vib3bDoSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/sl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdTcGxvxaFuaSBwb2RhdGtpIG8gZGVsb3Zhbmp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdOYXN0YXZpdHZlIHphIHZob2RuZSBwb2RhdGtlIHphaHRldmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTmFzdGF2aXR2ZSB6YSBpemhvZG5lIG9keml2bmUgcG9kYXRrZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VwcmF2bGphbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIGRlZmluaWNpamUgcmF6cmVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIG9wcmVkZWxpdHZlIHZsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFrZXRpIHJhenJlZG92IFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1IGxhaGtvIHV2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkySW1wb3J0LCBraSBwcmlrYXp1amVqbyBuYcWhZSBuYWpib2xqIG9iacSNYWpuZSBlbGVtZW50ZSBrb25maWd1cmFjaWplLiBVcG/FoXRldmFqdGUsIGRhIGJvIG1vcmRhIHBvdHJlYm5hIGRvZGF0bmEga29uZmlndXJhY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnUG9zb2RvYml0ZXYgb2JzdG9qZcSNaWggZW50aXRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ1V2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdSYXpyZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnVmxvZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIHphIHJhenJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnxIxlIMW+ZWxpdGUgdXN0dmFyaXRpIG5vdiBlbGVtZW50IGtvbmZpZ3VyYWNpamUsIHMgc2V6bmFtYSBpemJlcml0ZSByYXpyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnUmF6cmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTW5vxb5pxI1ubyBkZWphbmplIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbmplIG5hbWVzdGl0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGFuamUgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1BvdmV6YXZhIG5hIGRydWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXByYXZpbG5hIMWhdGV2aWxrYSBlbGVtZW50YSBrb25maWd1cmFjaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfFoHRldmlsa2EgZHJ1Z2VnYSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBzIGthdGVyaW0gc2UgcG92ZcW+ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBbGkgcmVzIMW+ZWxpdGUgaXpicmlzYXRpIHRhIGVsZW1lbnQga29uZmlndXJhY2lqZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSW1lIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnSW1lIGplIMW+ZSB2IHVwb3JhYmkgdiBDb25maWdJdGVtcyB6IG5hc2xlZG5qbygtaW1pKSDFoXRldmlsa28oLWFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxaB0ZXZpbGthIHJhemxpxI1pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgdGV2aWxrYSByYXpsacSNaWNlIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8WgdGV2aWxrYSByYXpsacSNaWNlIGplIMW+ZSB2IHVwb3JhYmkgcHJpIENvbmZpZ0l0ZW1zIHogbmFzbGVkbmpvIMWhdGV2aWxrbyAoxaF0ZXZpbGthbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbmplIHV2YWphbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRHLFvmF2YSBpbmNpZGVudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ1pnb2RvdmluYSBlbGVtZW50YSBrb25maWd1cmFjaWplOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdaZ29kb3ZpbmEgVnNlYmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQb3ZlxI1hbiBwb2dsZWQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXJhY2lqYSBFbGVtZW50aSBuYSBzdHJhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnUG9kYXRrb3YgbyBlbGVtZW50dSBrb25maWd1cmFjaWplIG5pIGJpbG8gbW9nb8SNZSBuYWp0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJemJlcml0ZSB0YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdaYWduYXRpIGlza2FuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnSXNrYW5qZSB0dWRpIHYgcHJlasWhbmppaCByYXpsacSNaWNhaD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdEcmV2ZXNuaSBwb2dsZWQgemEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1JhdmVuIGdsb2JpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQb3ZlxI1hbmplL2l6a2xvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdEb3Nlxb5lbmEgbmFqdmXEjWphIHJhdmVuIHBvdmV6YXYgemEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpamUgbyBwb3N0YXZraSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1RyZW51dG5vIHN0YW5qZSB1dmFqYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVHJlbnV0bm8gc3RhbmplIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdaYWRuamEgc3ByZW1lbWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ05hemFkbmplIHNwcmVtZW5pbCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1ZhxaFpIGVsZW1lbnRpIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gSXNrYW5qZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVnJzdGEgcHJlZG1ldGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdVdm/FvmVuaSBib2RvIG5hc2xlZG5qaSByYXpyZWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1V2b8W+ZW5lIGJvZG8gbmFzbGVkbmplIHZsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1Vwb8WhdGV2YWp0ZSwgZGEgYm9kbyB1c3R2YXJqZW5hIHR1ZGkgdXN0cmV6bmEgZGluYW1pxI1uYSBwb2xqYSBpbiByYXpyZWRpIEdlbmVyYWxDYXRhbG9nLCBraSBuZSBib2RvIHNhbW9kZWpubyBvZHN0cmFuamVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdBbGkgxb5lbGl0ZSBuYWRhbGpldmF0aT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUG90cmVidWpldGUgcmF6cmVkZSBwcmltZXJvdiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pY2lqYSBuaSB2ZWxqYXZuaSBoYXNoIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUHJlZ2xlZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCBuaSBwb2RhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdQb3RyZWJ1amV0ZSB2c2FqIGVuIGl6YnJhbmkgZWxlbWVudCBrb25maWd1cmFjaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pbWF0ZSBkb3N0b3BhIHphIHBpc2FuamUgdiB0byBrb25maWd1cmFjaWpza28gcG9zdGF2a286ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdaYSByYXpyZWQgJXMgbmkgYmlsYSBvcHJlZGVsamVuYSBub2JlbmEgZGVmaW5pY2lqYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ3VyYWNpanNrZWdhIGVsZW1lbnRhICIlcyIgbmkgbW9nb8SNZSBuYWp0aSB2IHpiaXJraSBwb2RhdGtvdiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOaSBiaWxvIG1vZ2/EjWUgaXpicmlzYXRpIGtvbmZpZ3VyYWNpanNrZWdhIGVsZW1lbnRhIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnWmEgQ29uZmlnSXRlbUlEICVzIG5pIGJpbGEgbmFqZGVuYSBub2JlbmEgcmF6bGnEjWljYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmkgcG9kYW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbGkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0Rvc3RvcCBuaSBvbW9nb8SNZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lIG1vcmVtIHByaWthemF0aSB6Z29kb3ZpbmUsIGtlciBuaSBwb2RhbiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmUgbW9yZW0gcHJpa2F6YXRpIHpnb2RvdmluZSwgbmkgcG9kYW5paCBwcmF2aWMgZG9zdG9wYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdiBlbGVtZW50IGtvbmZpZ3VyYWNpamUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92YSByYXpsacSNaWNhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdQb3NvZG9ibGplbm8gc3RhbmplIG5hbWVzdGl0dmUgKG5vdm89JXMsIHN0YXJvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdQb3NvZG9ibGplbm8gc3RhbmplIGluY2lkZW50YSAobm92bz0lcywgc3Rhcm89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGl6YnJpc2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnRG9kYW5hIHBvdmV6YXZhIG5hICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnUG92ZXphdmEgbmEgJXMgKHRpcD0lcykgaXpicmlzYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdPcHJlZGVsaXRldiBlbGVtZW50YSBDb25maWdJdGVtIGplIHBvc29kb2JsamVuYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW1lIHBvc29kb2JsamVubyAobm92bz0lcywgc3Rhcm89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dCAlcyBwb3NvZG9ibGplbiBpeiAiJXMiIHYgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdSYXpsacSNaWNhICVzIGl6YnJpc2FuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaSBwb2RhbiBDb25maWdJdGVtSUQgYWxpIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmkgbW9nb8SNZSBwcmlrYXphdGkgZWxlbWVudGEga29uZmlndXJhY2lqZSwgbmkgcG9kYW5paCBwcmF2aWMgZG9zdG9wYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmkgbmFqZGVuIHYgcG9kYXRrb3ZuaSBiYXppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnbmF0aXNuaWwgJXMgbmEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ05lcHJhdmlsZW4gSUQgcmF6cmVkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdJRCByYXpyZWRhIG5pIG5hdmVkZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnUHJhdmljZSBkb3N0b3BhIHphIHRhIHJhenJlZCBuaXNvIHBvZGFuZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0JyZXogcmV6dWx0YXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlenVsdGF0aSBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0VsZW1lbnRhIG5pIG1vZ2/EjWUgcHJpa2F6YXRpLCBwcmF2aWNlIGRvc3RvcGEgemEgQ29uZmlnSXRlbSBuaXNvIHBvZGFuZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuaSBuYWpkZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05pIGJpbG8gbmFqZGVuaWggcmF6bGnEjWljISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ2RlbG92YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnb3Bvem9yaWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW5qZSB1dmFqYW5qYSB0ZWdhIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGFuamUgaW5jaWRlbnRhIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0JyZXogZG92b2xqZW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgamUgbmV2ZWxqYXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ05ldmVsamF2bmkgcGFyYW1pIGlza2FuamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUHJpa2F6YW5pIGVsZW1lbnRpIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVnJzdGEgc3RhbmphIG5hbWVzdGl0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVnJzdGEgdHJlbnV0bmVnYSBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT21laml0dmUgcmF6cmVkYSB6YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6YmVyaXRlIGVuZWdhIGFsaSB2ZcSNIHJhenJlZG92IHphIG9tZWppdGV2IGl6YmlybmloIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPbWVqaXR2ZSByYXpyZWRhIHphIGVsZW1lbnQga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6YmVyaXRlIGVuZWdhIGFsaSB2ZcSNIHJhenJlZG92IHphIG9tZWppdGV2IGl6YmlybmloIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pxI1ubyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpxI1ubyAocmF6bGnEjWljYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVnJzdGEgc2tsaWNldmFuamEgbmEgcG92ZXphdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQWxpIHRhIHBvdmV6YXZhIHZlbGphIHphIENvbmZpZ0l0ZW0gYWxpIHN0YXRpxI1ubyByYXpsacSNaWNvIG9iamVrdGEsIG5hIGthdGVyZWdhIHNlIHNrbGljdWplLiBJenJhxI11biB0cmVudXRuZWdhIHN0YW5qYSBpbmNpZGVudGEgc2UgaXp2ZWRlIHNhbW8gcHJpIGRpbmFtacSNbmloIHBvdmV6YXZhaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdJemJlcml0ZSBhdHJpYnV0LCBwbyBrYXRlcmVtIHNlIGJvZG8gaXNrYWxpIGVsZW1lbnRpIGtvbmZpZ3VyYWNpamUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnT3Nub3ZuYSBzdHJ1a3R1cmEgbmkgdmVsamF2bmEuIE5hdmVkaXRlIGhhc2ggcyBwb2RhdGtpIHYgb2JsaWtpIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnTml6IFlBTUwgc2UgbW9yYSB6YcSNZXRpIHogXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGFiZWxlIGNvbmZpZ2l0ZW1fbGluayBuaSBiaWxvIG1vZ2/EjWUgb8SNaXN0aXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnVXN0cmV6bmEgZGluYW1pxI1uYSBwb2xqYSBuaXNvIGJpbGEgbmFqZGVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOaSBiaWxvIG1vZ2/EjWUgdnN0YXZpdGkgdiB0YWJlbG8gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdWc3RhdmxqZW5paCAwIHZyc3RpYyB2IHRhYmVsbyBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTmFqdmXEjWplIMWhdGV2aWxvIGVuZWdhIGVsZW1lbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ1V2b3ovaXp2b3ogcHJpcG9uayAoa290IHphZG5qaSB2bm9zaSB2IHZyc3RpY2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyemlqYSBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnTmFwYWthIHByaSBzaW5ocm9uaXphY2lqaSBkZWZpbmljaWouIFByZXZlcml0ZSBkbmV2bmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0ltYXRlIGRlZmluaWNpamUgSVRTTUNvbmZpZ0l0ZW0sIGtpIG5pc28gc2luaHJvbml6aXJhbmUuIFVtZcWhxI1hanRlIHNwcmVtZW1iZSBkaW5hbWnEjW5paCBwb2xqIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnUHJldGVrbGEgdmVsamF2bm9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1Z6ZHLFvmV2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdOYcSNcnRvdmFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdQb3ByYXZpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1Vwb2tvamVuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQcmVnbGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0aXJhbmplL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQcmVnbGVkIGluIHBvdHJkaXRldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdVdm96IHJhenJlZG92L3Zsb2cgaW4geiBuamltaSBwb3ZlemFuaWggcG9saic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1ByaSB1dm96dSByYXpyZWRhIGplIHByacWhbG8gZG8gbmFwYWtlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gU2tyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBwcmlrYXphbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ09tb2dvxI1hIHJhesWhaXJqZW5lIHBvZ29qZSBpc2thbmphIHByaSBpc2thbmp1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLiBTIHRvIGZ1bmtjaWpvIGxhaGtvIGnFocSNZXRlIG5wci4gaW1lIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgcyB0YWvFoW5pbWkgcG9nb2ppLCBrb3Qgc28gIigqa2V5MSomJiprZXkyKikiIGFsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ09tb2dvxI1hIHJhesWhaXJqZW5lIHBvZ29qZSBpc2thbmphIHYgaXNrYW5qdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IHphIHN0cmFua2UuIFMgdG8gZnVua2Npam8gbGFoa28gacWhxI1ldGUgbnByLiBpbWUgZWxlbWVudGEga29uZmlndXJhY2lqZSBzIHRha8WhbmltaSBwb2dvamksIGtvdCBzbyAiKCprZXkxKiYmKmtleTIqKSIgYWxpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnRG9kZWxqZW5pIEtJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS0ksIGRvZGVsamVuaSBwb2RqZXRqdSBzdHJhbmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0ksIGRvZGVsamVuaSB1cG9yYWJuaWt1IHN0cmFua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ05hc3Rhdml0dmUgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUHJldmVyamFuamUgZWRpbnN0dmVuZWdhIGltZW5hIHNhbW8gem5vdHJhaiBpc3RlZ2EgcmF6cmVkYSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIGFsaSBnbG9iYWxubyAoXCdnbG9iYWxcJyksIGthciBwb21lbmksIGRhIHNlIHByaSBpc2thbmp1IHBvZHZvaml0ZXYgdXBvxaF0ZXZhIHZzYWsgb2JzdG9qZcSNaSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnSXpiZXJpdGUgbW9kdWwgemEgdXZlbGphdml0ZXYgc2hlbWUgcG9pbWVub3ZhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnSXpiZXJpdGUgbW9kdWwgemEgdXZlbGphdml0ZXYgxaF0ZXZpbHNrZSBzaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnSXpiZXJpdGUgbW9kdWwgemEgdXZlbGphdml0ZXYgc2hlbWUgdmVyacW+bmloIG5pem92IHJhemxpxI1pYy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdJemJlcml0ZSBhdHJpYnV0ZSB6YSBzcHJvxb5pdGV2IHVzdHZhcmphbmphIG5vdmUgcmF6bGnEjWljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnSXpiZXJpdGUga2F0ZWdvcmlqZSwga2kgamloIMW+ZWxpdGUgZG9kZWxpdGkgdGVtdSByYXpyZWR1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmkgZWxlbWVudGEga29uZmlndXJhY2lqZSBzdG9scGNhIHphIHByZWdsZWQgZWxlbWVudGEga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1N0b2xwY2ksIGtpIGppaCBqZSBtb2dvxI1lIGZpbHRyaXJhdGkgdiBwcmVnbGVkdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4gT3BvbWJhOiBEb3ZvbGplbmkgc28gc2FtbyBhdHJpYnV0aSBlbGVtZW50YSBrb25maWd1cmFjaWplIGluIGRpbmFtacSNbmEgcG9samEgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRpIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0RvZGFqYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1VyZWphbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgemEgZG9nb2RrZSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBraSBvbW9nb8SNYSBiZWxlxb5lbmplIHYgemdvZG92aW5vIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bCBkb2dvZGtvdiB6YSBlbGVtZW50ZSBrb25maWd1cmFjaWplLCBraSBwb3NvZG9iaSBlbGVtZW50ZSBrb25maWd1cmFjaWplIG5hIG5qaWhvdm8gdHJlbnV0bm8gZGVmaW5pY2lqby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdaZ29kb3ZpbmEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1Rpc2thbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlndXJhY2lqYSBwb3ZlxI1hdmUgZWxlbWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnRHJldmVzbmkgcHJpa2F6IGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gUmF6bGnEjWljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdLb25maWd1cmFjaWpza2kgZWxlbWVudGkgbmFzbGVkbmppaCByYXpyZWRvdiBuZSBib2RvIHNocmFuamVuaSB2IHN0cmXFvm5pa3UgRWxhc3RpY3NlYXJjaC4gxIxlIMW+ZWxpdGUgdG8gdXBvcmFiaXRpIHphIG9ic3RvamXEjWUgQ0ksIGplIHRyZWJhIHBvIHNwcmVtZW1iaSB0ZSBtb8W+bm9zdGkgemFnbmF0aSBtaWdyYWNpam8gQ0kgcHJlayBrb256b2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdLb25maWd1cmFjaWpza2kgZWxlbWVudGkgeiBuYXNsZWRuamltaSBzdGFuamkgbmFtZXN0aXR2ZSBuZSBib2RvIHNocmFuamVuaSB2IHN0cmXFvm5pa3UgRWxhc3RpY3NlYXJjaC4gxIxlIMW+ZWxpdGUgdG8gdXBvcmFiaXRpIHphIG9ic3RvamXEjWUgQ0ksIGplIHRyZWJhIHBvIHNwcmVtZW1iaSB0ZSBtb8W+bm9zdGkgemFnbmF0aSBtaWdyYWNpam8gQ0kgcHJlayBrb256b2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdPbWVqaXRldiBwb3N0YXZrZSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFjaWphIE9tZWppdGV2IGVsZW1lbnRvdiBuYSBzdHJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ1BvZGF0a292bmEgemJpcmthIHphIHVwcmF2bGphbmplIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdQb3N0YXZrYSB6YSBrb25maWd1cmFjaWpvIG1vZHVsYSB2IHJhenN1dGVtIHN0YW5qdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudCBrb25maWd1cmFjaWplIHphIGlza2FuamUgemFsZWRuZWdhIHVzbWVyamV2YWxuaWthIHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVXN0dmFyamFuamUgaW4gdXByYXZsamFuamUgZGVmaW5pY2lqIHphIGVsZW1lbnRlIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnVXN0dmFyaSB2b3pvdm5pY2UgemEgZWxlbWVudGUgQ29uZmlnSXRlbXMgdiBkb2xvxI1lbmloIMSNYXNvdm5paCB0b8SNa2FoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdTdHJhbmtlIHNpIGxhaGtvIG9nbGVkYWpvIHByZXRla2xlIHJhemxpxI1pY2UgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ1N0cmFua2UgbGFoa28gcm/EjW5vIHByZWtsYXBsamFqbyBtZWQgcHJldGVrbGltaSByYXpsacSNaWNhbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnUHJpdnpldGUgcG9kYXRrZSwga2kgc2UgdXBvcmFiaWpvIHYgYXRyaWJ1dHUgemEgemFzbG9uIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuIFByaW1lcjogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PWxldG87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdQcml2emV0ZSBwb2RhdGtlLCBraSBzZSB1cG9yYWJpam8gdiBhdHJpYnV0dSB6YSB6YXNsb24gemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4gUHJpbWVyOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnT3ByZWRlbGl0ZSBkZWphbmphLCBwcmkga2F0ZXJpaCBqZSB2IGdyYWRuaWt1IHBvdmV6YW5paCBwcmVkbWV0b3YgbmEgdm9sam8gZ3VtYiB6YSBuYXN0YXZpdHZlIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFVwb8WhdGV2YWp0ZSwgZGEgbW9yYWpvIHRlIGFrY2lqZSByZWdpc3RyaXJhdGkgbmFzbGVkbmplIGRhdG90ZWtlIEpTIGluIENTUzogViB0ZW0gcHJpbWVydSBqZSB0cmViYSB6YSB1cG9yYWJvIG5hc3Rhdml0ZXYgaW4gZnVua2NpaiB6YSBwb3Zlem92YW5qZSBvYmpla3RvdiBpbiBuamlob3ZpaCBmdW5rY2lqIHYgc2lzdGVtdSBuYXN0YXZpdGkgbmFzbGVkbmplIGRhdG90ZWtlOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBpbiBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdPcHJlZGVsaXRldiBzaGVtZSBUZW1wbGF0ZTo6VG9vbGtpdCB6YSBuaXphIHJhemxpxI1pYy4gVXBvcmFibGphIHNlIHNhbW8sIMSNZSBqZSBtb2R1bCBWZXJzaW9uIFN0cmluZyBNb2R1bGUgbmFzdGF2bGplbiBuYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnT3ByZWRlbGl0ZSBuaXogcG9nb2pldiwgcG9kIGthdGVyaW1pIGxhaGtvIHN0cmFua2EgdmlkaSBlbGVtZW50IGtvbmZpZ3VyYWNpamUuIFBvZ29qaSBzbyBsYWhrbyBwbyDFvmVsamkgb21lamVuaSBuYSBkb2xvxI1lbmUgc2t1cGluZSBzdHJhbmsuIEltZSBqZSBlZGluaSBvYnZlem5pIGF0cmlidXQuIMSMZSBuZSBuYXZlZGV0ZSBkcnVnaWggbW/Fvm5vc3RpLCBib2RvIHYgdGVqIGthdGVnb3JpamkgdmlkbmkgdnNpIGVsZW1lbnRpIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSBicmlzYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHogdXBvcmFibyBzcGxvxaFuZWdhIHZtZXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgWmFodGV2YW5hIGRvdm9samVuamEgemEgcHJpZG9iaXRldiBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHogdXBvcmFibyBzcGxvxaFuZWdhIHZtZXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgWmFodGV2YW5hIGRvdm9samVuamEgemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHogdXBvcmFibyBzcGxvxaFuZWdhIHZtZXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgWmFodGV2YW5hIGRvdm9samVuamEgemEgbmFzdGF2bGphbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00geiB1cG9yYWJvIHNwbG/FoW5lZ2Egdm1lc25pa2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIG1vZHVsIHphIHByZWdsZWQsIGtpIHByaWthenVqZSBtYWpoZW4gcG9nbGVkIHNlem5hbWEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RvbG/EjWEsIGFsaSBtb3Jham8gYml0aSB2IHBvdmV6YXZhaCB2b3psacWhxI0gcHJpa2F6YW5lIG96bmFrZSB2cnN0ZSBwb3ZlemF2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ1phIHZzYWsgcmF6cmVkIENvbmZpZ0l0ZW0gcG9zZWJlaiBkb2xvxI1hIHJlZ3VsYXJuZSBpenJhemUgemEgcHJldmVyamFuamUgaW1lbmEgQ29uZmlnSXRlbSBpbiBwcmlrYXogdXN0cmV6bmloIHNwb3JvxI1pbCBvIG5hcGFrYWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgcmF6cG9sb8W+bGppdmUgc3RvbHBjZSBDSSB2IHByZWdsZWR1IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgZ2xlZGUgbmEgcmF6cmVkIENJLiBWc2FrIHZub3MgbW9yYSBiaXRpIHNlc3RhdmxqZW4gaXogaW1lbmEgcmF6cmVkYSBpbiBwb2xqYSByYXpwb2xvxb5saml2aWggcG9saiB6YSB1c3RyZXpuaSByYXpyZWQuIFZub3NpIGRpbmFtacSNbmloIHBvbGogbW9yYWpvIHVwb8WhdGV2YXRpIHNoZW1vIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIGF0cmlidXQgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSByYXp2csWhxI1hbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIGF0cmlidXQgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSByYXp2csWhxI1hbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgcHJpdnpldGkgYXRyaWJ1dCBlbGVtZW50YSBrb25maWd1cmFjaWplIHphIHJhenZyxaHEjWFuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHJlenVsdGF0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB0ZSBvcGVyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIHZyc3RuaSByZWQgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiByZXp1bHRhdHUgaXNrYW5qYSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4gTmF2emdvcjogbmFqc3RhcmVqxaFpIG5hIHZyaHUuIE5hdnpkb2w6IG5ham5vdmVqxaFpIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIHZyc3RuaSByZWQgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiByZXp1bHRhdHUgaXNrYW5qYSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IHphIHN0cmFua2UuIE5hdnpnb3I6IG5hanN0YXJlasWhaSBuYSB2cmh1LiBOYXZ6ZG9sOiBuYWpub3ZlasWhaSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIHZyc3RuaSByZWQgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiByZXp1bHRhdHUgaXNrYW5qYSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB0ZSBvcGVyYWNpamUuIE5hdnpnb3I6IG5hanN0YXJlasWhaSBuYSB2cmh1LiBOYXZ6ZG9sOiBuYWpub3ZlasWhaSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0ZSBwcmlrYXphbmUgc3RvbHBjZSBDSSB2IHByZWdsZWR1IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgZ2xlZGUgbmEgcmF6cmVkIENJLiBWc2FrIHZub3MgbW9yYSBiaXRpIHNlc3RhdmxqZW4gaXogaW1lbmEgcmF6cmVkYSBpbiBwb2xqYSByYXpwb2xvxb5saml2aWggcG9saiB6YSB1c3RyZXpuaSByYXpyZWQuIFZub3NpIGRpbmFtacSNbmloIHBvbGogbW9yYWpvIHVwb8WhdGV2YXRpIHNoZW1vIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RvbG/EjWEgcHJpdnpldG8gZ2xvYmlubyBvZG5vc292LCBraSBzZSBwcmlrYcW+ZWpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRvIHByaWthemFuIGF0cmlidXQgaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplIHphIHphc2xvbiBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRvIHByaWthemFuIGF0cmlidXQgaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplIHphIHphc2xvbiBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuIFByaW1lcjogIktleSIgbW9yYSBpbWV0aSBpbWUgZGluYW1pxI1uZWdhIHBvbGphLCB2IHRlbSBwcmltZXJ1ICJYIiwgIkNvbnRlbnQiIG1vcmEgaW1ldGkgdnJlZG5vc3QgZGluYW1pxI1uZWdhIHBvbGphLCBvZHZpc25vIG9kIHZyc3RlIGRpbmFtacSNbmVnYSBwb2xqYSwgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgaW4gYWxpIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXRlZGVuOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1QcmVkOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgcHJpdnpldGkgcG9kb2JqZWt0IHJhenJlZGEgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgcmF6cG9sb8W+bGppdmUgc3RvbHBjZSBDSSB2IHByZWdsZWR1IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgZ2xlZGUgbmEgcmF6cmVkIENJLiBWc2FrIHZub3MgbW9yYSBiaXRpIHNlc3RhdmxqZW4gaXogaW1lbmEgcmF6cmVkYSBpbiBwb2xqYSByYXpwb2xvxb5saml2aWggcG9saiB6YSB1c3RyZXpuaSByYXpyZWQuIFZub3NpIGRpbmFtacSNbmloIHBvbGogbW9yYWpvIHVwb8WhdGV2YXRpIHNoZW1vIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RvbG/EjWEgdmnFoWlubyBrb21wb25lbnRlIHVyZWpldmFsbmlrYSBib2dhdGVnYSBiZXNlZGlsYSB6YSB0YSB6YXNsb24uIFZuZXNpdGUgxaF0ZXZpbG8gKHBpa3NsaSkgYWxpIG9kc3RvdG5vIHZyZWRub3N0IChyZWxhdGl2bm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEb2xvxI1hIMWhdGV2aWxvIHZyc3RpYyB6YSB1cmVqZXZhbG5payBkZWZpbmljaWogQ0kgdiB1cHJhdml0ZWxqc2tlbSB2bWVzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgdnJzdG5pIHJlZCBzdGFuaiBpbmNpZGVudGEgb2Qgdmlzb2tlZ2EgKG5wci4gY3JpY2l0YWxubykgZG8gbml6a2VnYSAobnByLiBmdW5rY2lvbmFsbm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHVzdHJlem5hIHN0YW5qYSB1dmFqYW5qYSwgdiBrYXRlcmloIGxhaGtvIHBvdmV6YW5lIHZvem92bmljZSB2cGxpdmFqbyBuYSBzdGFuamUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBvbWVqaXRldiBpc2thbmphIHphIHphc2xvbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEb2xvxI1hIG9tZWppdGV2IGlza2FuamEgemEgemFzbG9uIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBvbWVqaXRldiBpc2thbmphIHphIHphc2xvbiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHByaWthemFuZSBzdG9scGNlIEtJIHYga29tcGxla3NuZW0gcG9nbGVkdSBwcmVnbGVkbmljZSBwb3ZlemF2IHphIHZzZSByYXpyZWRlIEtJLiDEjGUgdm5vc2EgbmksIHNvIHByaWthemFuaSBwcml2emV0aSBzdG9scGNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgcHJpa2F6YW5lIHN0b2xwY2UgS0kgdiBrb21wbGVrc25lbSBwb2dsZWR1IHByZWdsZWRuaWNlIHBvdmV6YXYsIG9kdmlzbm8gb2QgcmF6cmVkYSBLSS4gVnNhayB2bm9zIG1vcmEgYml0aSBvcHJlbWxqZW4geiBpbWVub20gcmF6cmVkYSBpbiBkdm9qbmltaSBkdm9wacSNamkgKG5wci4gQ29tcHV0ZXI6OikuIE9ic3RhamEgbmVrYWogYXRyaWJ1dG92IENJLUF0dHJpYnV0ZXMsIGtpIHNvIHNrdXBuaSB2c2VtIENJIChwcmltZXIgemEgcmF6cmVkIFJhxI11bmFsbmlrOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBaYSBwcmlrYXogcG9zYW1lem5paCBDSS1hdHJpYnV0b3YsIGtvdCBzbyBvcHJlZGVsamVuaSB2IGRlZmluaWNpamkgQ0ksIGplIHRyZWJhIHVwb3JhYml0aSBuYXNsZWRuam8gc2hlbW8gKHByaW1lciB6YSByYXpyZWQgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gxIxlIHphIHJhenJlZCBDSSBuaSB2bm9zYSwgc28gcHJpa2F6YW5pIHByaXZ6ZXRpIHN0b2xwY2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUsIGthdGVyaSBlbGVtZW50aSBzbyBuYSB2b2xqbyB6YSAiQWN0aW9uIiBuYSB0cmV0amkgcmF2bmkgc3RydWt0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RvbG/EjWEsIGthdGVyaSBlbGVtZW50aSBzbyBuYSB2b2xqbyBuYSBwcnZpIHJhdm5pIHN0cnVrdHVyZSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRG9sb8SNYSwga2F0ZXJpIGVsZW1lbnRpIHNvIG5hIHZvbGpvIG5hIGRydWdpIHJhdm5pIHN0cnVrdHVyZSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRG9sb8SNYSwga2F0ZXJhIHZyc3RhIHBvdmV6YXZlIChwb2ltZW5vdmFuYSB6IHZpZGlrYSB2b3pvdm5pY2UpIGxhaGtvIHZwbGl2YSBuYSBzdGFuamUgcG92ZXphbmVnYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmEgdnJzdGEgdm96b3ZuaWNlIGxhaGtvIHZwbGl2YSBuYSBzdGFuamUgcG92ZXphbmVnYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdQb3NvZG9iaXRldiBkZWZpbmljaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdCcmlzYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQmFydmEgc3RhbmphIG5hbWVzdGl0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bCB6YSBkb2dvZGtlIGRpbmFtacSNbmloIHBvbGosIGtpIG96bmHEjWkgZGVmaW5pY2lqZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBrb3QgbmVzaW5ocm9uaXppcmFuZSwgxI1lIHNlIHNwcmVtZW5pam8gZGluYW1pxI1uYSBwb2xqYSwga2kgamloIHZzZWJ1amVqby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IGRvZGF0bmVnYSBwb2xqYSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjW5hIHBvbGphLCBwcmlrYXphbmEgbmEgemFzbG9udSB6YSBwcmVnbGVkIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1uYSBwb2xqYSwgcHJpa2F6YW5hIG5hIHphc2xvbnUgemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnT21vZ2/EjWEgZnVua2Npam8gbW5vxb5pxI1uZWdhIGRlbG92YW5qYSB6YSBrb25maWd1cmFjaWpza2UgZWxlbWVudGUgemEgc3ByZWRuamkgZGVsIGFnZW50YSwga2kgZGVsdWplIG5hIHZlxI0ga290IGVuZW0ga29uZmlndXJhY2lqc2tlbSBlbGVtZW50dSBuYWVua3JhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ09tb2dvxI1pIGZ1bmtjaWpvIG1ub8W+acSNbmVnYSBkZWxvdmFuamEga29uZmlndXJhY2lqc2tpaCBlbGVtZW50b3Ygc2FtbyB6YSBuYXZlZGVuZSBza3VwaW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdPbW9nb8SNaS9vZGtsb3BpIGZ1bmtjaW9uYWxub3N0IHByZXZlcmphbmphIGVkaW5zdHZlbmloIGltZW4gZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTS4gUHJlZGVuIG9tb2dvxI1pdGUgdG8gbW/Fvm5vc3QsIG1vcmF0ZSBwcmV2ZXJpdGkgc3ZvaiBzaXN0ZW0gemEgxb5lIG9ic3RvamXEjWUgZWxlbWVudGUga29uZmlndXJhY2lqZSBzIHBvZHZvamVuaW1pIGltZW5pLiBUbyBsYWhrbyBzdG9yaXRlIHMga29uem9sbmltIHVrYXpvbSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsIGRvZ29ka292IHphIG5hc3Rhdml0ZXYgc3RhbmphIGtvbmZpZ3VyYWNpamUgbmEgcG92ZXphdmkgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnUG9samEgaW5kZWtzYSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBraSBzZSB1cG9yYWJsamFqbyB6YSBpc2thbmplIHBvIGNlbG90bmVtIGJlc2VkaWx1LiBQb2xqYSBzbyBwcmF2IHRha28gc2hyYW5qZW5hLCB2ZW5kYXIgbmlzbyBvYnZlem5hIHphIGNlbG90bm8gZnVua2Npb25hbG5vc3QuIFZrbGp1xI1ldmFuamUgcHJpbG9nIGxhaGtvIG9uZW1vZ2/EjWl0ZSB0YWtvLCBkYSB2bm9zIG5hc3Rhdml0ZSBuYSAwIGFsaSBnYSBpemJyacWhZXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnUG9samEsIHNocmFuamVuYSB2IGluZGVrc3UgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUsIGtpIHNlIHBvbGVnIGlza2FuamEgcG8gY2Vsb3RuZW0gYmVzZWRpbHUgdXBvcmFibGpham8gdHVkaSB6YSBkcnVnZSBzdHZhcmkuIFphIHBvcG9sbm8gZnVua2Npb25hbG5vc3Qgc28gdnNhIHBvbGphIG9idmV6bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnWmEgdnNha28gc3BsZXRubyBzdG9yaXRldiAoa2xqdcSNKSBsYWhrbyBkb2xvxI1pdGUgbml6IHJhenJlZG92ICh2cmVkbm9zdCksIHphIGthdGVyZSBqZSB1dm96IG9tZWplbi4gWmEgdnNlIGl6YnJhbmUgcmF6cmVkZSBhbGkgdnNlIG9ic3RvamXEjWUgcmF6cmVkZSBibyB0cmViYSB2IGtvbmZpZ3VyYWNpamkgaW52b2tlcmphIGl6YnJhdGkgaWRlbnRpZmlrYWNpanNrZSBhdHJpYnV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBHZW5lcmljSW50ZXJmYWNlIHphIHNsb2ogaW52b2thdG9yamEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgR2VuZXJpY0ludGVyZmFjZSB6YSBzbG9qIGludm9rYXRvcmphIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBHZW5lcmljSW50ZXJmYWNlIHphIHNsb2ogaW52b2thdG9yamEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQcmVnbGVkIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZrbGp1xI11amUgc3RhbmphIHV2YWphbmphIHYgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWa2xqdcSNdWplIHN0YW5qYSBpbmNpZGVudG92IHYgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOYWp2ZcSNamUgxaF0ZXZpbG8gZWxlbWVudG92IGtvbmZpZ3VyYWNpamUsIGtpIHNlIHByaWthxb5lam8gdiByZXp1bHRhdHUgdGUgb3BlcmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHphIHByZXZlcmphbmplIHNrdXBpbmUsIG9kZ292b3JuZSB6YSByYXpyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgemEgcHJldmVyamFuamUgc2t1cGluZSwgb2Rnb3Zvcm5lIHphIGVsZW1lbnQga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB6YSB1c3R2YXJqYW5qZSBzdGF0aXN0aWtlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnSW1lIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNb2R1bCDFoXRldmlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfFoHRldmlsbyBlbGVtZW50b3Yga29uZmlndXJhY2lqZSwga2kgc2UgcHJpa2HFvmVqbyBuYSB2c2FraSBzdHJhbmkgcmV6dWx0YXRhIGlza2FuamEgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8WgdGV2aWxvIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLCBraSBzZSBwcmlrYcW+ZWpvIG5hIHZzYWtpIHN0cmFuaSByZXp1bHRhdGEgaXNrYW5qYSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnUHJlZG1ldGkgemEgaXNrYW5qZSwga29saWtvIHZub3NvdiBpbiBrYXRlcmkgYXRyaWJ1dGkgbmFqIHNlIHByaWthxb5lam8uIEF0cmlidXRpIENvbmZpZ0l0ZW0gbW9yYWpvIGJpdGkgaXpyZWNubyBzaHJhbmplbmkgcHJlayBzdG9yaXR2ZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVnbGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGthdGVnb3JpamUgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgZmlsdHJlIHN0b2xwY2V2IHYgcHJlZ2xlZHUgbWFqaG5paCBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4gVXBvxaF0ZXZhanRlOiB6IG5hc3Rhdml0dmlqbyAiQWt0aXZubyIgbmEgMCBibyBhZ2VudG9tIHByZXByZcSNZW5vIGxlIHVyZWphbmplIG5hc3Rhdml0ZXYgdGUgc2t1cGluZSB2IG5qaWhvdmloIG9zZWJuaWggbmFzdGF2aXR2YWgsIHZlbmRhciBibyBhZG1pbmlzdHJhdG9yamVtIMWhZSB2ZWRubyBvbW9nb8SNZW5vIHVyZWphbmplIG5hc3Rhdml0ZXYgdiBpbWVudSBkcnVnZWdhIHVwb3JhYm5pa2EuIFMgZnVua2Npam8gXCdQcmVmZXJlbmNlR3JvdXBcJyBsYWhrbyBuYWR6aXJhdGUsIHYga2F0ZXJlbSBvYm1vxI1qdSBuYWogYm9kbyB0ZSBuYXN0YXZpdHZlIHByaWthemFuZSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBiYXJ2byBzdGFuamEgdXZhamFuamEgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YW5qYSB1dmFqYW5qYSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHByaW1lciBza3VwaW4gZG92b2xqZW5qIHNwbG/FoW5paCBhdHJpYnV0b3Yga2F0YWxvZ2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIG1vZHVsIGltZW5hIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIG1vZHVsIMWhdGV2aWxhIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdHJhbmkgKG5hIGthdGVyaWggc28gcHJpa2F6YW5pIGVsZW1lbnRpIGtvbmZpZ3VyYWNpamUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgbW9kdWwgdmVyemlqZSBuaXphIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIG1vZHVsIHByZWRsb2dlIG5pemEgcmF6bGnEjWljIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzcHJvxb5pbGVjIHJhemxpxI1pY2UgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnSXp2ZWRlIGtvbmZpZ3VyaXJhbm8gZGVqYW5qZSB6YSB2c2FrIGRvZ29kZWsgKGtvdCBJbnZva2VyKSB6YSB2c2FrbyBrb25maWd1cmlyYW5vIHNwbGV0bm8gc3Rvcml0ZXYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIGRvdm9samVuaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIGRlamFuamEgcHJpdHJkaXR2ZSBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIGRyZXZlc25lZ2EgcHJpa2F6YSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgcG92ZcSNYXZvIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgRG9kYWogZWxlbWVudCBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSBwb3N0YXZrbyBza3VwaW5za2Uga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgdXJlamFuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgemdvZG92aW5vIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSB0aXNrYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdaYWh0ZXZhbmkgcHJpdmlsZWdpamkgemEgYnJpc2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnSXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ3NhbW9kZWpubyBuYXN0YXZpdGUgc3RhbmplIGluY2lkZW50YSB2IENJLCBrbyBqZSB2b3pvdm5pY2EgcG92ZXphbmEgcyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXZpIHN0YW5qZSB1dmFqYW5qYSBuYSB6YXNsb251IHphIG1ub8W+acSNbmUgZWxlbWVudGUga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2aSBzdGFuamUgaW5jaWRlbnRhIG5hIHphc2xvbnUgemEgbW5vxb5pxI1ubyBrb25maWd1cmFjaWpvIGVsZW1lbnRvdiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSwga2kgb21vZ2/EjWEgcG92ZXphdm8gZWxlbWVudGEga29uZmlndXJhY2lqZSB6IGRydWdpbSBvYmpla3RvbSB2IHBvZ2xlZHUgcG92ZcSNYXZlIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgZG9zdG9wIGRvIHpnb2RvdmluZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcHJlZ2xlZHUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgZG9zdG9wIGRvIHpnb2RvdmluZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBwb3ZlxI1hdmUgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1YgbWVuaWp1IHByaWthxb5lIHBvdmV6YXZvIHphIGJyaXNhbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb3ZlxI1hbmVtIHBvZ2xlZHUgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgcHJpa2F6IHBvdmV6YXYgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBvYmxpa2kgZHJldmVzbmVnYSBwb2dsZWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1YgbWVuaWp1IHByaWthxb5lIHBvdmV6YXZvIHphIHBvZHZvaml0ZXYga29uZmlndXJhY2lqc2tlIGVsZW1lbnRhIHYgcHJlZ2xlZHUga29uZmlndXJhY2lqc2tpaCBlbGVtZW50b3YgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHBvZHZvaml0ZXYgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgcG92ZcSNYXZlIHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHVyZWphbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IHBvdmXEjWF2ZSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWIG1lbmlqdSBwcmlrYcW+ZSBwb3ZlemF2byB6YSB2cm5pdGV2IHYgcG9nbGVkIHBvdmXEjWF2ZSBrb25maWd1cmFjaWpza2UgZW5vdGUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgdGlza2FuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgcG92ZcSNYXZlIHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSBwb3ZlxI1hdm8gZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHByZWdsZWR1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgemdvZG92aW5vIGVsZW1lbnRvdiBrb25maWd1cmFjaWplICh2IG9icmF0bmVtIHZyc3RuZW0gcmVkdSkgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1ByaXZ6ZXRhIGthdGVnb3JpamEsIGtpIHNlIHByaWthxb5lLCDEjWUgbmkgaXpicmFuYSBub2JlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUsIG5wci4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFByaXZ6ZXRvIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1NhbW9kZWpubyBzcHJvxb5pIHNwcm/FvmlsY2EgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnUmF6bGnEjWljYSBTdHJpbmcgSXpyYXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnUmF6bGnEjWljYSBTdHJpbmcgTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnU3Byb8W+aWxuaWsgcmF6bGnEjWljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQWxpIHNlIGxhaGtvIGl6dmVkYmkgQ29uZmlnSXRlbUFDTCBpem9nbmVtbyBzIHByZXZlcmphbmplbSBvZHZpc25vc3RpIHBvbGogdiBwcmVkcG9tbmlsbmlrdS4gVG8gbGFoa28gaXpib2xqxaFhIMSNYXMgbmFsYWdhbmphIG9icmF6Y2V2LCB2ZW5kYXIgbW9yYSBiaXRpIG9uZW1vZ2/EjWVubywgxI1lIHNlIHphIHRpcGUgSVRTTUNvbmZpZ0l0ZW0tIGluIEZvcm0tUmV0dXJuVHlwZSB1cG9yYWJsamFqbyBtb2R1bGkgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS2F0ZXJpIHNwbG/FoW5pIHBvZGF0a2kgc28gcHJpa2F6YW5pIHYgZ2xhdmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAncmF6cmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3Rpdm5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVkcHJvZHVrdGl2bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3Rpdm5vJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBhbGNhICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcGFsY2V2ICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcGFsY2EgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcGFsY2EgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1wYWzEjW5pIG5vc2lsZWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IHBhbGNhICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBhbGNldiAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtcGFsxI1uaSBub3NpbGVjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBwYWxjYSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLXBhbMSNbm8gc3RvamFsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcGFsY2EgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBhbGNldiAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcGFsY2EgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwYWxjYSAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwYWxjYSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcGFsY2EgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBhbGNhICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwYWxjYSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcGFsY2V2ICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcGFsY2EgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwYWxjYSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHBhbGNhICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwYWxjYSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwYWxjYSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBwYWxjYSAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBhbGNhICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgcGFsY2V2ICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcGFsY2V2ICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBwYWxjYSAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgcGFsY2EgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcGFsY2EgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcGFsY2V2ICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHBhbGNhICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSYcSNdW5vdm9kc3R2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0RvZGVsamV2YW5qZSBuYXNsb3Zvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnVXByYXZpdGVsaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2duaSB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdWcnN0YSBuYXByYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdabW9nbGppdm9zdCBiYXRlcmlqZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1Zyc3RhIGJhdGVyaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnU3RhdmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdWbWVzbmlrIHZvZGlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1JhenJlZCBwcm9jZXNvcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdabW9nbGppdm9zdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnWm1vZ2xqaXZvc3QgbmEgZ3JhZmnEjW5vIGthcnRpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfFoHRldmlsa2Ega2FydGljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0JyYWxuaWsga2FydGljJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1Zyc3RhIGthcnRpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIHN0cmFuayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdPZGplbWFsc2thIHByb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpamEgc3RyYW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ8SMYXNvdm5hIHN0b3BuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0hpdHJvc3QgdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIHphIHBvZHBpc292YW5qZSBrb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbmkgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1BvZ29kYmEgbyBzdmV0b3Zhbmp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdQacWhaXRlIG5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdTdGlrIHogZGlzdHJpYnV0ZXJqZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSB6YWJvam5pa292JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnUG9nb2RiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVnJzdGEgcG9nb2RiZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BvZ29kYmVubyBvYmRvYmplIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BvZ29kYmVubyBvYmRvYmplIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0JyZXrFvmnEjW5pIHRlbGVmb24gKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnU3Ryb8Wha292bmEgZW5vdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfFoHRldmlsbyBsaWNlbmMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIHVzdGFub3ZpdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdTdG9qYWxvIHBvIG1lcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmV6ZXJ2aXJhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1N0cmXFvm5payBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIHJhxI11bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIG5hcm/EjWlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gZ2FyYW5jaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIGl6ZGFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTmFtaXpuaSByYcSNdW5hbG5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnUG90cmRpbGEgemEgcG9kcGlzb3ZhbmplIGRva3VtZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ1BvdHJkaWxhIHphIGUtcG/FoXRvIChwb3RyZGlsYSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1BvZ29kYmEgbyB6YXBvc2xpdHZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uxI1uaSBuYXNsb3YgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdLb25lYyBwb2Rwb3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0dW0gaXp0ZWthIHZlbGphdm5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdadW5hbmppIHRyZGkgZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1Bvxb5hcm5pIHppZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ1ZkZWxhbmEgcHJvZ3JhbXNrYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZGnFocSNZW5qZSBlbmVyZ2lqZSB6IHZ6dHJham5pa29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFrdG9yIG9ibGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnUG9nb2RiYSBvIGZyYW7FoWl6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0JyZXpwbGHEjW5hIHByb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1NwbG/FoW5lIGluZm9ybWFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmnEjW5lIGthcnRpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpxI1uYSBrYXJ0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnU3Ryb2puYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBzdHJvam5lIG9wcmVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdUZcW+YSBzdHJvam5lIG9wcmVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnU2x1xaFhbGtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnVXByYXZsamFuamUgaWRlbnRpdGV0IGluIGRvc3RvcGEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybmEgxaF0ZXZpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnU3Ryb8Wha2kgaW52ZXJ6aWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnxaB0ZXZpbGthIHJhxI11bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUaXBrb3ZuaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEICh6YXNsb24gcyB0ZWtvxI1pbWkga3Jpc3RhbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoc3ZldGxlxI1hIGRpb2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTdGFjaW9uYXJuaSB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1ByZW5vc25pIHJhxI11bmFsbmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnWmVtbGplcGlzbmEgxaFpcmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ1BsYXN0IDE6IGZpemnEjW5hIHBsYXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ1BsYXN0IDI6IHBsYXN0IHBvZGF0a292bmloIHBvdmV6YXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1BsYXN0IDM6IG9tcmXFvm5hIHBsYXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJzMuIHBsYXN0OiBvbXJlxb5uYSBwbGFzdCAobmFkb21yZcW+amUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ1Nsb2ogNDogVHJhbnNwb3J0bmkgc2xvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnU2xvaiA1OiBTZWpuaSBzbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1Nsb2ogNjogUHJlZHN0YXZpdHZlbmkgc2xvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1Nsb2ogNzogYXBsaWthY2lqc2tpIHNsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnUG9nb2RiYSBvIG5hamVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VuxI1uYSBwb2dvZGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbsSNbmkga2xqdcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1Zyc3RhIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ09iZG9iamUgbGljZW5jZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ09iZG9iamUgbGljZW5jZSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXJpamUgaXogbGl0aWotxb5lbGV6b3ZlZ2EgZm9zZmF0YSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGlqLWlvbnNrYSAoTGktaW9uKSBiYXRlcmlqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1BvZ29kYmEgbyBwb3NvamlsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTmFoYWphIHNlIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnWmVtbGplcGlzbmEgZG9sxb5pbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2l6dmFqYWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTmFqdmXEjWphIHptb2dsaml2b3N0IG9icmVtZW5pdHZlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdTcG9taW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdWcnN0YSBwb21uaWxuaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIHN0b2phbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsbmEgxaF0ZXZpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsbmkvdmdyYWplbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ09waXMgbW9kZWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ0xvxI1saml2b3N0IG1vbml0b3JqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZWxpa29zdCBtb25pdG9yamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNacWha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ09tcmXFvmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjaWplIG8gb21yZcW+anUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjaWplIG8gb21yZcW+anUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ09tcmXFvm5hIHBsYXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWxqLWthZG1pamV2YSAoTmlDZCkgYmF0ZXJpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtlbGotbWV0YWxoaWRyaWRuYSAoTmlNSCkgYmF0ZXJpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU3BvcmF6dW0gbyBuZXJhemtyaXZhbmp1IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQmVsZcW+bmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ8WgdGV2aWxvIHByb2Nlc29yamV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ8WgdGV2aWxvIG1vZHVsb3YgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ8WgdGV2aWxvIGdyYWZpxI1uaWgga2FydGljJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKG9yZ2Fuc2thIHN2ZXRsZcSNYSBkaW9kYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnU3Ryb8Wha2kgcG9zbG92YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfFoHRldmlsa2EgbmFyb8SNaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRHJ1Z28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0l6aG9kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIHBhcnRuZXJzdHZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbnNrYSDFoXRldmlsa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1Zyc3RhIHRlbGVmb25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6acSNbmEgamVkcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdaYWdvdGF2bGphbmplIG5hcGFqYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0t1cGxqZW5vIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0dsb2JpbmEgcmVnYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnRW5vdGUgc3RvamFsYSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1NvYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0aWNhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQcm9kYWpuYSBwb2dvZGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRza2kgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdaYXBydGEgc3ZpbsSNZW5vLWtpc2xpbnNrYSBiYXRlcmlqYSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1Nlcmlqc2thIMWhdGV2aWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQcm9ncmFtc2thIG9wcmVtYSB6YSBzdHJlxb5uaWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU3BvcmF6dW0gbyBzdG9yaXR2YWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTdG9yaXR2ZW5hIG96bmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdWcnN0YSB2dGnEjW5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtc2thIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1p2b8SNbmlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZG5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdaYcSNZXRuaSBuYXNsb3YgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1NocmFuamV2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1JhemRlbGVrIHphIHNocmFuamV2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1BvZHJ1xb5uaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdQb3Z6ZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RhbmVrIG9kamVtYWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnTml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdTa3VwYWogUkFNIGdyYWZpxI1uZSBrYXJ0aWNlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdTa3VwbmkgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgeiB6YXNsb25vbSBuYSBkb3Rpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1N0b2xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdWb3psacWhxI1lIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ05hZ2xhdm5hIHNsdcWhYWxrYSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1NwbGV0bmEga2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/sr_Cyrl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC00L7Qu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC30LDRhdGC0LXQstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC40LfQu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC+0LTQs9C+0LLQvtGA0LAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ9Ce0LLQtNC1INC80L7QttC10YLQtSDQsNC60YLQuNCy0LjRgNCw0YLQuCBSZWFkeTJBZG9wdCDQv9GA0L7RhtC10YHQtSDQv9GA0LjQvNC10YDQsCDQvdCw0ZjQsdC+0ZnQtSDQv9GA0LDQutGB0LUg0LrQvtGY0Lgg0YHRgyDRgdC/0YDQtdC80L3QuCDQt9CwINGD0L/QvtGC0YDQtdCx0YMuINCc0L7Qu9C40LzQviDQvtCx0YDQsNGC0LjRgtC1INC/0LDQttGa0YMg0LTQsCDRmNC1INC80L7QttC00LAg0L3QtdC+0L/RhdC+0LTQvdCwINC00L7QtNCw0YLQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQutC70LDRgdCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn0JTQsCDQu9C4INC30LDQuNGB0YLQsCDQttC10LvQuNGC0LUg0LTQsCDQuNC30LHRgNC40YjQtdGC0LUg0L7QstGDINC/0YDQvtC80LXQvdGDPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfQkdC+0ZjQsCDRgdGC0LDRgtGD0YHQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ci0LjQvyDRgdGC0LDRmtCwINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0LDQtNGA0LbQsNGYINC40YHRgtC+0YDQuNGY0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNC1INC60YDQtdC40YDQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0J/QvtC60YDQtdC90Lgg0L/RgNC10YLRgNCw0LPRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9CX0LDQtNGa0Lgg0L/Rg9GCINC/0YDQvtC80LXRmtC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQn9GA0L7QvNC10L3QuNC+JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn0KLQuNC/INC+0LHRmNC10LrRgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAn0KTQuNC70YLQtdGAINC/0L4g0YLQuNC/0YMnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9CU0LAg0LvQuCDQttC10LvQuNGC0LUg0LTQsCDQvdCw0YHRgtCw0LLQuNGC0LU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9Cd0LXQvtC/0YXQvtC00LDQvSBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0KHRgtCw0LLQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9Cf0YDQvtC80LXQvdCwICIlcyIg0L3QuNGY0LUg0L3QsNGS0LXQvdCwINGDINCx0LDQt9C4INC/0L7QtNCw0YLQsNC60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0LggQ2hhbmdlSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LjRgdGC0L7RgNC40ZjQsNGCLCDRmNC10YAg0L3QuNGY0LUg0LTQsNGCINCY0JQg0KHRgtCw0LLQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LjRgdGC0L7RgNC40ZjQsNGCLCDQvdC40ZjQtSDQtNCw0YIgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCwINCw0LrRhtC40ZjQsCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ9Ce0LHRgNC40YHQsNC9INGD0YHQu9C+0LIgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9Cf0L7QstC10LfQsNC90L4g0YHQsCAlcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfQntCx0YDQuNGB0LDQvdCwINCy0LXQt9CwINGB0LAgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0J/RgNC+0LzQtdC90LAgIiVzIiDQvdC40ZjQtSDQvdCw0ZLQtdC90LAg0YMg0LHQsNC30Lgg0L/QvtC00LDRgtCw0LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cg0LXRhNC10YDQtdC90YbQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiBDaGFuZ2VJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9Cd0LXQvNCwINGA0LXQt9GD0LvRgtCw0YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQo9C/0L7Qt9C+0YDQtdGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXQvNCwINC00L7Qt9Cy0L7Qu9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0LjQt9C80LXRktGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LjRh9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC90LDQv9GA0LXQtNC90LUg0YPRgdC70L7QstC1INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g0KHQsCDQvtCy0L7QvCDQvtC/0YbQuNGY0L7QvCDQvNC+0ZvQtdGC0LUg0L/RgNC10YLRgNCw0LbQuNCy0LDRgtC4INC90L/RgC4g0L3QsNGB0LvQvtCyINGC0LjQutC10YLQsCDRgdCwINGD0YHQu9C+0LLQuNC80LAg0LrQsNC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQntC80L7Qs9GD0ZvQsNCy0LAg0L3QsNC/0YDQtdC00L3QtSDRg9GB0LvQvtCy0LUg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQodCwINC+0LLQvtC8INC+0L/RhtC40ZjQvtC8INC80L7Rm9C10YLQtSDQv9GA0LXRgtGA0LDQttC40LLQsNGC0Lgg0L3Qv9GALiDQvdCw0YHQu9C+0LIg0YLQuNC60LXRgtCwINGB0LAg0YPRgdC70L7QstC40LzQsCDQutCw0L4gIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9CU0L7QtNC10ZnQtdC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQtNC+0LTQtdGZ0LXQvdC1INGE0LjRgNC80Lgg0LrQu9C40ZjQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC00L7QtNC10ZnQtdC90LUg0LrQu9C40ZjQtdC90YLRgyDQutC+0YDQuNGB0L3QuNC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIg0L/QvtC00LXRiNCw0LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNCwINGY0LXQtNC40L3RgdGC0LLQtdC90L7QsyDQuNC80LXQvdCwINGB0LDQvNC+INGDINC+0LrQstC40YDRgyDQuNGB0YLQtSDQutC70LDRgdC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LggKFwn0LrQu9Cw0YHQsFwnKSDQuNC70Lgg0LPQu9C+0LHQsNC70L3QviAoXCfQs9C70L7QsdCw0LvQvdC+XCcpLCDRiNGC0L4g0LfQvdCw0YfQuCDQtNCwINGY0LUg0YHQstCw0LrQsCDQv9C+0YHRgtC+0ZjQtdGb0LAg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAg0YPQt9C10YLQsCDRgyDQvtCx0LfQuNGAINGDINC/0YDQvtCy0LXRgNC4INC00YPQv9C70LjQutCw0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9CU0L7QtNCw0LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KPRgNC10ZLQuNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LTQvtCz0LDRktCw0ZjQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RmNC4INC+0LzQvtCz0YPRm9Cw0LLQsCDQsdC10LvQtdC20LXRmtC1INGDINC40YHRgtC+0YDQuNGY0LDRgiDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0KjRgtCw0LzQv9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0JTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0L/QviDRgdGC0YDQsNC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDQv9C+0LTQsNGC0LDQutCwINGD0L/RgNCw0LLRmdCw0ZrQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40ZjQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40Lwg0YHRgtCw0LLQutCw0LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAg0L/RgNC10YLRgNCw0LbRg9GY0LUg0L/QvtC30LDQtNC40L3RgdC60Lgg0YDRg9GC0LXRgCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9Ca0YDQtdC40YDQsNGa0LUg0Lgg0YPQv9GA0LDQstGZ0LDRmtC1INC00LXRhNC40L3QuNGG0LjRmNCwINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0LTQsNGG0Lgg0LfQsCDQutC+0YDQuNGI0ZvQtdGa0LUg0L3QsCDQsNGC0YDQuNCx0YPRgtC40LzQsCDQt9CwINC/0YDQuNC60LDQtyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsC4g0J/RgNC40LzQtdGAOiAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0L7QtNCw0YbQuCDQt9CwINC60L7RgNC40YjRm9C10ZrQtSDQvdCwINCw0YLRgNC40LHRg9GC0LjQvNCwINC30LAg0L/RgNC40LrQsNC3INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwLiDQn9GA0LjQvNC10YA6ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCw0LrRhtC40ZjQtSDQs9C00LUg0ZjQtSDQtNGD0LPQvNC1INC/0L7RgdGC0LDQstC60Lgg0LTQvtGB0YLRg9C/0L3QviDRgyDQv9C+0LLQtdC30LDQvdC+0Lwg0LPRgNCw0YTQuNGH0LrQvtC8INC10LvQtdC80LXQvdGC0YMg0L7QsdGY0LXQutGC0LAgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0JzQvtC70LjQvNC+INC00LAg0LjQvNCw0YLQtSDQvdCwINGD0LzRgyDQtNCwINC+0LLQtSDQkNC60YbQuNGY0LUg0LzQvtGA0LDRmNGDINC00LAg0LHRg9C00YMg0YDQtdCz0LjRgdGC0YDQvtCy0LDQvdC1INGDINGB0LvQtdC00LXRm9C40LwgSlMg0LggQ1NTINC00LDRgtC+0YLQtdC60LDQvNCwOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINCx0YDQuNGB0LDRmtC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutGA0L7QtyDQs9C10L3QtdGA0LjRh9C60Lgg0LjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvdC10L7Qv9GF0L7QtNC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQtNC+0LHQuNGY0LDRmtC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutC+0YDQuNGI0ZvQtdGa0LXQvCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L3QtdC+0L/RhdC+0LTQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0L/RgNC10YLRgNCw0LPRgyBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGA0LjRiNGb0LXRmtC10Lwg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC90LXQvtC/0YXQvtC00L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINC00L7QsdC40ZjQsNGa0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RgNC40YjRm9C10ZrQtdC8INCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyDQu9C40YHRgtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdCz0YPQu9Cw0YDQvdC1INC40LfRgNCw0LfQtSDQt9CwINGB0LLQsNC60YMg0LrQu9Cw0YHRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgNCw0LTQuCDQv9GA0L7QstC10YDQtSDQvdCw0LfQuNCy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0Lgg0L/RgNC40LrQsNC30LAg0L/RgNC40L/QsNC00LDRmNGD0ZvQuNGFINC/0L7RgNGD0LrQsCDQviDQs9GA0LXRiNC60LDQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDRgtC40LrQtdGC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUg0YLQuNC60LXRgtCwINGDINGA0LXQt9GD0LvRgtCw0YLRgyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINGC0LjQutC10YLQsCDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDRgtC40LrQtdGC0LAg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC+0LLQvtGYINC+0L/QtdGA0LDRhtC40ZjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCDRgtC40LrQtdGC0LAgKNC/0L7RgdC70LUg0YHQvtGA0YLQuNGA0LDRmtCwINC/0L4g0L/RgNC40L7RgNC40YLQtdGC0YMpINGDINC/0YDQtdCz0LvQtdC00YMg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9GA0LXRgNCw0YLQtdGA0LAuINCT0L7RgNC1OiDQndCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0J3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0YLQuNC60LXRgtCwINGDINC/0YDQtdCz0LvQtdC00YMg0L/RgNC10YLRgNCw0LPQtSDRgNC10LfRg9C70YLQsNGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4g0JPQvtGA0LU6INCd0LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQndCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0INGC0LjQutC10YLQsCDRgyDQv9GA0LXQs9C70LXQtNGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC+0LLQvtGYINC+0L/QtdGA0LDRhtC40ZjQuC4g0JPQvtGA0LU6INCd0LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQndCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDQsNGC0YDQuNCx0YPRgtCwINGC0LjQutC10YLQsCDQt9CwINC/0YDQuNC60LDQtyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQuNC60LDQtyDQv9GA0LXRgtGA0LDQs9C1INCw0YLRgNC40LHRg9GC0LAg0YLQuNC60LXRgtCwINC30LAg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsC4g0J/RgNC40LzQtdGAOiAiS2V5IiDQvNC+0YDQsCDQuNC80LDRgtC4INC90LDQt9C40LIg0LTQuNC90LDQvNC40YfQutC+0LMg0L/QvtGZ0LAsINGDINC+0LLQvtC8INGB0LvRg9GH0LDRmNGDIFwnWFwnLCAiQ29udGVudCIg0LzQvtGA0LAg0LjQvNCw0YLQuCDQstGA0LXQtNC90L7RgdGCINC00LjQvdCw0LzQuNGH0LrQvtCzINC/0L7RmdCwINGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0YLQuNC/0LAg0LTQuNC90LDQvNC40YfQutC+0LMg0L/QvtGZ0LAsINCi0LXQutGB0YI6IFwnYSB0ZXh0XCcsINCf0LDQtNCw0ZjRg9Gb0Lg6IFwnMVwnLCDQlNCw0YLRg9C8L9CS0YDQtdC80LU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyDQuC/QuNC70LggXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0LTQvtCx0ZjQtdC60LDRgiDQutC70LDRgdC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQstC40YHQuNC90YMg0LfQsCDQutC+0LzQv9C+0L3QtdC90YLRgyBSaWNoIFRleHQgRWRpdG9yINC30LAg0L7QstCw0Zgg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsC4g0KPQvdC10YHQuCDQsdGA0L7RmCAo0L/QuNC60YHQtdC70LgpINC40LvQuCDQv9GA0L7RhtC10L3RgtGD0LDQu9C90YMg0LLRgNC10LTQvdC+0YHRgiAo0YDQtdC70LDRgtC40LLQvdGDKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQsdGA0L7RmCDRgNC10LTQvtCy0LAg0LfQsCDQtdC00LjRgtC+0YAg0LTQtdGE0LjQvdC40YbQuNGY0LUgQ0kg0YMg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC40LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdC00L7RgdC70LXQtCDQuNC90YbQuNC00LXQvdGC0L3QuNGFINGB0YLQsNGa0LAg0L7QtCDQstC40YHQvtC60L7QsyAo0L3Qv9GAINC60YDQuNGC0LjRh9C90L4pINC00L4g0L3QuNGB0LrQvtCzICjQvdC/0YAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGA0LXQu9C10LLQsNC90YLQvdCwINGB0YLQsNGa0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAg0LPQtNC1INC/0L7QstC10LfQsNC90Lgg0YLQuNC60LXRgtC4INC80L7Qs9GDINC00LAg0YPRgtC40YfRgyDQvdCwINGB0YLQsNGC0YPRgSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQs9GA0LDQvdC40YbRgyDQv9GA0LXRgtGA0LDQs9C1INC30LAg0LXQutGA0LDQvSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNCw0L3QuNGG0YMg0L/RgNC10YLRgNCw0LPQtSDQt9CwINC10LrRgNCw0L0gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0YMg0YLQsNCx0LXQu9C4INCy0LXQt9CwINGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0LrQu9Cw0YHQtS4g0KPQutC+0LvQuNC60L4g0L3QtSDQv9C+0YHRgtC+0ZjQuCDRg9C90L7RgSDQt9CwINC/0L7RmNC10LTQuNC90LDRh9C90YMg0LrQu9Cw0YHRgywg0LHQuNGb0LUg0L/RgNC40LrQsNC30LDQvdC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC1INC60L7Qu9C+0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INGDINGC0LDQsdC10LvQuCDQstC10LfQsCDRgyDQt9Cw0LLQuNGB0L3QvtGB0YLQuCDQvtC0INC60LvQsNGB0LUuINCh0LLQsNC60Lgg0YPQvdC+0YEg0LzQvtGA0LAg0YHQsNC00YDQttCw0YLQuCDQv9GA0LXRhNC40LrRgSDRgdCwINC90LDQt9C40LLQvtC8INC60LvQsNGB0LUg0Lgg0LTQstC+0YLQsNGH0LrQvtC8ICjQvdC/0YAuIENvbXB1dGVyOjopLiDQn9C+0YHRgtC+0ZjQuCDQv9Cw0YAg0LDRgtGA0LjQsdGD0YLQsCDQutC+0ZjQuCDRgdGDINC30LDRmNC10LTQvdC40YfQutC4INC30LAg0YHQstC1INC60LvQsNGB0LUgKNC90L/RgC4g0LfQsCDQutC70LDRgdGDIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQl9CwINC/0YDQuNC60LDQtyDQv9C+0ZjQtdC00LjQvdCw0YfQvdC40YUg0LDRgtGA0LjQsdGD0YLQsCDQuNC3INC00LXRhNC40L3QuNGG0LjRmNC1LCDQvNC+0YDQsNGC0LUg0LrQvtGA0LjRgdGC0LjRgtC4INGB0LvQtdC00LXRm9GDINGI0LXQvNGDICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdGDIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCj0LrQvtC70LjQutC+INC90LUg0L/QvtGB0YLQvtGY0Lgg0YPQvdC+0YEg0LfQsCDQv9C+0ZjQtdC00LjQvdCw0YfQvdGDINC60LvQsNGB0YMsINCx0LjRm9C1INC/0YDQuNC60LDQt9Cw0L3QtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QtSDQutC+0LvQvtC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQutC+0ZjQtSDRgdGDINGB0YLQsNCy0LrQtSDRgdC70L7QsdC+0LTQvdC1INC30LAgXCdBY3Rpb25cJyDRgyDRgtGA0LXRm9C10Lwg0L3QuNCy0L7RgyBBQ0wg0YHRgtGA0YPQutGC0YPRgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LrQvtGY0LUg0YHRgyDRgdGC0LDQstC60LUg0YHQu9C+0LHQvtC00L3QtSDRgyDQv9GA0LLQvtC8INC90LjQstC+0YMgQUNMINGB0YLRgNGD0LrRgtGD0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQutC+0ZjQtSDRgdGDINGB0YLQsNCy0LrQtSDRgdC70L7QsdC+0LTQvdC1INGDINC00YDRg9Cz0L7QvCDQvdC40LLQvtGDIEFDTCDRgdGC0YDRg9C60YLRg9GA0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQutC+0ZjQuCDRgtC40L8g0LLQtdC30LUgKNCz0LvQtdC00LDQvdC+INC40Lcg0L/QtdGA0YHQv9C10LrRgtC40LLQtSDRgtC40LrQtdGC0LApINC80L7QttC1INC00LAg0YPRgtC40YfQtSDQvdCwINC/0L7QstC10LfQsNC90YMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQutC+0ZjQuCDRgtC40L8g0YLQuNC60LXRgtCwINC80L7QttC1INC00LAg0YPRgtC40YfQtSDQvdCwINGB0YLQsNGC0YPRgSDQv9C+0LLQtdC30LDQvdC1IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JHRgNC40YHQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfQkdC+0ZjQsCDRgdGC0LDRgtGD0YHQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfQkdC+0ZjQsCDRgdGC0LDRgtGD0YHQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQlNGD0L/Qu9C40LrQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQtNC+0LTQsNGC0L3QuNGFIElUU00g0L/QvtGZ0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC/0YDQtdCz0LvQtdC00YMgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQv9GA0LXRgtGA0LDQs9C1INC/0YDQvtC80LXQvdCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC80LDRgdC+0LLQvdGDINCw0LrRhtC40ZjRgyDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwINGDINC/0YDQuNGB0YLRg9C/0L3QvtC8INGB0LjRgdGC0LXQvNGDINC+0L/QtdGA0LDRgtC10YDQsCDQvdCwINCy0LjRiNC1INC+0LQg0ZjQtdC00L3QtSDRgdGC0LDQstC60LUg0LjRgdGC0L7QstGA0LXQvNC10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAg0YHQstC+0ZjRgdGC0LLQviDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0L3QsCDQutC+0L3RhNC40LPQuNGA0LDRhtC40L7QvdC40Lwg0YHRgtCw0LLQutCw0LzQsCDRgdCw0LzQviDQt9CwINC40LfQu9C40YHRgtCw0L3QtSDQs9GA0YPQv9C1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQtNC+0LPQsNGS0LDRmNCwINC30LAg0L/QvtC00LXRiNCw0LLQsNGa0LUg0YHRgtCw0YLRg9GB0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQv9GA0LjQu9C40LrQvtC8INC/0L7RgdGC0LDQstGZ0LDRmtCwINCy0LXQt9CwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAg0LzQvtC00YPQu9CwINCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwINC30LAg0YHQu9C+0Zgg0L/QvtC30LjQstCw0L7RhtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40ZjQsCDQvNC+0LTRg9C70LAg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0LfQsCDRgdC70L7RmCDQv9C+0LfQuNCy0LDQvtGG0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40ZjQsCDQvNC+0LTRg9C70LAg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0LfQsCDRgdC70L7RmCDQv9C+0LfQuNCy0LDQvtGG0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDRgtC40LrQtdGC0LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC+0LLQtSDQvtC/0LXRgNCw0YbQuNGY0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINC/0YDQvtCy0LXRgNGDINCz0YDRg9C/0LUg0L7QtNCz0L7QstC+0YDQvdC1INC30LAg0LrQu9Cw0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0YMg0LPRgNGD0L/QtSDQvtC00LPQvtCy0L7RgNC90LUg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdGDINGB0YLQsNCy0LrRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YHQsNGa0LUg0YHRgtCw0YLQuNGB0YLQuNC60LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINGC0LjQutC10YLQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDQvdCwINGB0LLQsNC60L7RmCDRgdGC0YDQsNC90Lgg0YDQtdC30YPQu9GC0LDRgtCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7RmCDRgtC40LrQtdGC0LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0L3QsCDRgdCy0LDQutC+0Zgg0YHRgtGA0LDQvdC4INGA0LXQt9GD0LvRgtCw0YLQsCDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRhNC40LvRgtC10YAg0LrQvtC70L7QvdCwINGDINGD0LzQsNGa0LXQvdC+0Lwg0L/RgNC10LPQu9C10LTRgyDRgtC40LrQtdGC0LAuINCd0LDQv9C+0LzQtdC90LA6INC/0L7QtNC10YjQsNCy0LDRmtC1IFwnQWN0aXZlXCcg0L3QsCAwINGb0LUg0YHQsNC80L4g0L7QvdC10LzQvtCz0YPRm9C40YLQuCDQvtC/0LXRgNCw0YLQtdGA0LjQvNCwINC00LAg0LzQtdGa0LDRmNGDINGB0LLQvtGY0LAg0LvQuNGH0L3QsCDQv9C+0LTQtdGI0LDQstCw0ZrQsCDQuNC3INC+0LLQtSDQs9GA0YPQv9C1LCDQsNC70Lgg0ZvQtSDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC4INC4INC00LDRmdC1INC80L7Rm9C4INC00LAg0LjRhSDQvNC10ZrQsNGY0YMg0YMg0ZrQuNGF0L7QstC+INC40LzQtS4g0J/QvtC00LXRgdC40YLQtSBcJ1ByZWZlcmVuY2VHcm91cFwnINC00LAg0LHQuNGB0YLQtSDQvtC00YDQtdC00LjQu9C4INGDINC60L7QvCDQtNC10LvRgyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtCy0LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0YLRgNC10LHQsCDQtNCwINCx0YPQtNGDINC/0YDQuNC60LDQt9Cw0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LTQvtC00LDRgtCw0Log0LvQuNGB0YLQtSDQutC70LjRmNC10L3RgiDQutC+0YDQuNGB0L3QuNC60LAg0LrQvtC90YLRgNC+0LvQvdC1INGC0LDQsdC70LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLiAiR3JvdXAiINGB0LUg0LrQvtGA0LjRgdGC0Lgg0LTQsCDQvtCz0YDQsNC90LjRh9C4INC/0YDQuNGB0YLRg9C/INC00L7QtNCw0YLQutGDICjQvdC/0YAuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiDQvtC00YDQtdGS0YPRmNC1INC00LAg0LvQuCDRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INCw0LrRgtC40LLQuNGA0LDQvSDQuNC70Lgg0LTQsCDRmNC1INC/0L7RgtGA0LXQsdC90L4g0LTQsCDQs9CwINC60L7RgNC40YHQvdC40Log0LzQsNC90YPQtdC70L3QviDQsNC60YLQuNCy0LjRgNCwLiAiQ2FjaGVUVExMb2NhbCIg0ZjQtSDQstGA0LXQvNC1INGDINC80LjQvdGD0YLQuNC80LAg0LfQsCDQutC10Ygg0LTQvtC00LDRgtC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LTQvtC00LDRgtCw0Log0LvQuNGB0YLQtSDQutC70LjRmNC10L3RgiDQutC+0YDQuNGB0L3QuNC60LAg0LrQvtC90YLRgNC+0LvQvdC1INGC0LDQsdC70LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLiAiR3JvdXAiINGB0LUg0LrQvtGA0LjRgdGC0Lgg0LTQsCDQvtCz0YDQsNC90LjRh9C4INC/0YDQuNGB0YLRg9C/INC00L7QtNCw0YLQutGDICjQvdC/0YAuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiDQvtC00YDQtdGS0YPRmNC1INC00LAg0LvQuCDRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INCw0LrRgtC40LLQuNGA0LDQvSDQuNC70Lgg0LTQsCDRmNC1INC/0L7RgtGA0LXQsdC90L4g0LTQsCDQs9CwINC60L7RgNC40YHQvdC40Log0LzQsNC90YPQtdC70L3QviDQsNC60YLQuNCy0LjRgNCwLiAiQ2FjaGVUVExMb2NhbCIg0ZjQtSDQstGA0LXQvNC1INGDINC80LjQvdGD0YLQuNC80LAg0LfQsCDQutC10Ygg0LTQvtC00LDRgtC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LHQvtGY0LUg0YHRgtCw0YLRg9GB0LAg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0LDRgtGD0YHQtSDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQsNGC0YDQuNCx0YPRgtC1INGD0LfQvtGA0LrQsCDQs9GA0YPQv9C1INC30LAg0LTQvtC30LLQvtC70LUg0L7Qv9GI0YLQtdCzINC60LDRgtCw0LvQvtCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0LDRgtGD0YHQtSDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtGA0LDQvdC40YbQtSAo0L3QsCDQutC+0ZjQuNC80LAg0YHRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQv9GA0LjQutCw0LfQsNC90LUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfQmNC30LLRgNGI0LDQstCwINC/0L7QtNC10YjQtdC90YMg0LDQutGG0LjRmNGDINC30LAg0YHQstCw0LrQuCDQtNC+0LPQsNGS0LDRmCAo0LrQsNC+INC/0L7Qt9C40LLQsNC70LDRhikg0LfQsCDRgdCy0LDQutC4INC60L7QvdGE0LjQs9GD0YDQuNGB0LDQvSDQstC10LEg0YHQtdGA0LLQuNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn0JPRgNGD0L/QsCDQv9GA0LjRgdGC0YPQv9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC00LXRgtCw0LvQvdC+0LMg0L/RgNC40LrQsNC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC00L7QtNCw0LLQsNGa0LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC40LfQvNC10L3QtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC40YHRgtC+0YDQuNGY0LDRgtCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINGI0YLQsNC80L/QtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7RgtGA0LXQsdC90LAg0L/RgNCw0LLQsCDQt9CwINCx0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0YDQtdGC0YDQsNCz0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9Cf0L7RgdGC0LDQstGZ0LAg0YHRgtCw0ZrQtSDQuNC90YbQuNC00LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0LrQsNC00LAg0ZjQtSDRgtC40LrQtdGCINC/0L7QstC10LfQsNC9INGB0LAg0YHRgtCw0LLQutC+0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgdGC0LDRgtGD0YEg0L/RgNC40LzQtdC90LUg0L3QsCDQtdC60YDQsNC90YMg0LzQsNGB0L7QstC90LUg0LDQutGG0LjRmNC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgdGC0LDRgtGD0YEg0LjQvdGG0LjQtNC10L3RgtCwINC90LAg0LXQutGA0LDQvdGDINC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQutC+0ZjQsCDQvtC80L7Qs9GD0ZvQsNCy0LAg0L/QvtCy0LXQt9C40LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YHQsCDQtNGA0YPQs9C40Lwg0L7QsdGY0LXQutGC0L7QvCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGY0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9GA0LjRgdGC0YPQvyDQuNGB0YLQvtGA0LjRmNCw0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC/0YDQtdCz0LvQtdC00YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0L/RgNC40YHRgtGD0L8g0LjRgdGC0L7RgNC40ZjQsNGC0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LHRgNC40YHQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDRmtC10L3QvtC8INC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGD0LzQvdC+0LbQsNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0L/RgNC10LPQu9C10LTRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRg9C80L3QvtC20LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LjQt9C80LXQvdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0ZrQtdC90L7QvCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9C+0LLRgNCw0YLQsNC6INC90LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1ICDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGI0YLQsNC80L/RgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC/0YDQtdCz0LvQtdC00YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC40YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSAo0L7QsdGA0L3Rg9GCINGA0LXQtNC+0YHQu9C10LQpINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90YMg0YHRgtCw0LLQutGDLCDQvdC/0YAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRmNC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YIt0L/RgNC+0LTRg9C60YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ9C/0YDQtS3Qv9GA0L7QtNGD0LrRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YbQuNGY0LAnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQndCw0LvQvtCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfQmNC90YLQtdGA0YTQtdGY0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0JrQu9C40ZjQtdC90YLRgdC60Lgg0YHQtdGA0YLQuNGE0LjQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQotC40L8g0YHQsNC00YDQttCw0ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQvdC4ICoqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQn9GA0LXQs9C70LXQtCDRgNC10LfRg9C70YLQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C8INC+INC90LjQstC+0YMg0YPRgdC70YPQs9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNC00LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/sr_Latn_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGRvbGF6bmUgcG9kYXRrZSB6YWh0ZXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGl6bGF6bmUgcG9kYXRrZSBvZGdvdm9yYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnT3ZkZSBtb8W+ZXRlIGFrdGl2aXJhdGkgUmVhZHkyQWRvcHQgcHJvY2VzZSBwcmltZXJhIG5hamJvbGplIHByYWtzZSBrb2ppIHN1IHNwcmVtbmkgemEgdXBvdHJlYnUuIE1vbGltbyBvYnJhdGl0ZSBwYcW+bmp1IGRhIGplIG1vxb5kYSBuZW9waG9kbmEgZG9kYXRuYSBrb25maWd1cmFjaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ2tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgaXpicmnFoWV0ZSBvdnUgcHJvbWVudT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnU2FkcsW+YWogaXN0b3JpamF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Bva3JlbmkgcHJldHJhZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ09ncmFuacSNZW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1phZG5qaSBwdXQgcHJvbWVuamVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQcm9tZW5pbyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcCBvYmpla3RhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdGVyIHBvIHRpcHUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0RhIGxpIMW+ZWxpdGUgZGEgbmFzdGF2aXRlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZW9waG9kYW4gRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IElEIFN0YXZrZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdQcm9tZW5hICIlcyIgbmlqZSBuYcSRZW5hIHUgYmF6aSBwb2RhdGFrYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOaWplIGJpbG8gbW9ndcSHZSBvYnJpc2F0aSBDaGFuZ2VJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0ICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZSBtb8W+ZSBzZSBwcmlrYXphdGkgaXN0b3JpamF0LCBqZXIgbmlqZSBkYXQgSUQgU3RhdmtlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIG5pamUgZGF0IFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIGFrY2lqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW4gdXNsb3YgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1BvdmV6YW5vIHNhICVzIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW5hIHZlemEgc2EgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnUHJvbWVuYSAiJXMiIG5pamUgbmHEkWVuYSB1IGJhemkgcG9kYXRha2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgQ2hhbmdlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW1hIHJlenVsdGF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdVcG96b3JlbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOZW1hIGRvenZvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ2l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdJc3RpxI1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnT21vZ3XEh2F2YSBuYXByZWRuZSB1c2xvdmUgcHJldHJhZ2UgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuIFNhIG92b20gb3BjaWpvbSBtb8SHZXRlIHByZXRyYcW+aXZhdGkgbnByLiBuYXNsb3YgdGlrZXRhIHNhIHVzbG92aW1hIGthbyAiKCprZXkxKiYmKmtleTIqKSIgaWxpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnT21vZ3XEh2F2YSBuYXByZWRuZSB1c2xvdmUgcHJldHJhZ2UgdGlrZXRhIHUgaW50ZXJmZWpzdSBrb3Jpc25pa2EuIFNhIG92b20gb3BjaWpvbSBtb8SHZXRlIHByZXRyYcW+aXZhdGkgbnByLiBuYXNsb3YgdGlrZXRhIHNhIHVzbG92aW1hIGthbyAiKCprZXkxKiYmKmtleTIqKSIgaWxpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnRG9kZWxqZW5lIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSBkb2RlbGplbmUgZmlybWkga2xpamVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UgZG9kZWxqZW5lIGtsaWplbnR1IGtvcmlzbmlrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBwb2RlxaFhdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1Byb3ZlcmEgamVkaW5zdHZlbm9nIGltZW5hIHNhbW8gdSBva3ZpcnUgaXN0ZSBrbGFzZSBrb25maWd1cmFjaW9uaWggc3RhdmtpIChcJ2tsYXNhXCcpIGlsaSBnbG9iYWxubyAoXCdnbG9iYWxub1wnKSwgxaF0byB6bmHEjWkgZGEgamUgc3Zha2EgcG9zdG9qZcSHYSBLb25maWd1cmFjaW9uYSBzdGF2a2EgdXpldGEgdSBvYnppciB1IHByb3ZlcmkgZHVwbGlrYXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0RvZGF2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnVXJlxJFpdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIGRvZ2HEkWFqYSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtvamkgb21vZ3XEh2F2YSBiZWxlxb5lbmplIHUgaXN0b3JpamF0IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0lzdG9yaWphdCBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ8WgdGFtcGEga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnRGV0YWxqbmkgcHJpa2F6IGtvbmZpZ3VyYWNpbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdPZ3JhbmnEjWVuamUga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdPZ3JhbmnEjWVuamUga29uZmlndXJhY2lvbmloIHN0YXZraSBwbyBzdHJhbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXphIHBvZGF0YWthIHVwcmF2bGphbmphIGtvbmZpZ3VyYWNpam9tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTW9kdWwgbWFzb3ZuZSBha2NpamUgbmEga29uZmlndXJhY2lvbmltIHN0YXZrYW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmFjaW9uYSBzdGF2a2EgcHJldHJhxb51amUgcG96YWRpbnNraSBydXRlciB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdLcmVpcmFuamUgaSB1cHJhdmxqYW5qZSBkZWZpbmljaWphIHphIGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcG9kYWNpIHphIGtvcmnFocSHZW5qZSBuYSBhdHJpYnV0aW1hIHphIHByaWtheiBwcmV0cmFnZSB0aWtldGEuIFByaW1lcjogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHBvZGFjaSB6YSBrb3JpxaHEh2VuamUgbmEgYXRyaWJ1dGltYSB6YSBwcmlrYXogcHJldHJhZ2UgdGlrZXRhLiBQcmltZXI6ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmnFoWUgYWtjaWplIGdkZSBqZSBkdWdtZSBwb3N0YXZraSBkb3N0dXBubyB1IHBvdmV6YW5vbSBncmFmacSNa29tIGVsZW1lbnR1IG9iamVrdGEgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTW9saW1vIGRhIGltYXRlIG5hIHVtdSBkYSBvdmUgQWtjaWplIG1vcmFqdSBkYSBidWR1IHJlZ2lzdHJvdmFuZSB1IHNsZWRlxIdpbSBKUyBpIENTUyBkYXRvdGVrYW1hOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBpIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvdHJlYm5lIGRvenZvbGUgemEgYnJpc2FuamUgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtyb3ogZ2VuZXJpxI1raSBpbnRlcmZlanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbmVvcGhvZG5lIGRvenZvbGUgemEgZG9iaWphbmplIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrb3JpxaHEh2VuamVtIGdlbmVyacSNa29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbmVvcGhvZG5lIGRvenZvbGUgemEgcHJldHJhZ3UgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtvcmnFocSHZW5qZW0gZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBuZW9waG9kbmUgZG96dm9sZSB6YSBkb2JpamFuamUgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtvcmnFocSHZW5qZW0gZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIG1vZHVsIHByZWdsZWRhIHphIG1hbGkgcHJpa2F6IGxpc3RlIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSByZWd1bGFybmUgaXpyYXplIHphIHN2YWt1IGtsYXN1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSByYWRpIHByb3ZlcmUgbmF6aXZhIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBpIHByaWthemEgcHJpcGFkYWp1xIdpaCBwb3J1a2EgbyBncmXFoWthbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHRpa2V0YSB6YSBzb3J0aXJhbmplIHRpa2V0YSB1IHJlenVsdGF0dSBwcmV0cmFnZSB0aWtldGEgaW50ZXJmZWpzYSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHRpa2V0YSB6YSBzb3J0aXJhbmplIHRpa2V0YSB1IHJlenVsdGF0dSBwcmV0cmFnZSB0aWtldGEgdSBvdm9qIG9wZXJhY2lqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSAocG9zbGUgc29ydGlyYW5qYSBwbyBwcmlvcml0ZXR1KSB1IHByZWdsZWR1IHByZXRyYWdlIHRpa2V0YSB1IGludGVyZmVqc3Ugb3ByZXJhdGVyYS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSB1IHByZWdsZWR1IHByZXRyYWdlIHJlenVsdGF0YSB1IGludGVyZmVqc3Uga2xpamVudGEuIEdvcmU6IE5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogTmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSB1IHByZWdsZWR1IHByZXRyYWdlIHRpa2V0YSB1IG92b2ogb3BlcmFjaWppLiBHb3JlOiBOYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IE5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBwcmlrYXogcHJldHJhZ2UgYXRyaWJ1dGEgdGlrZXRhIHphIHByaWtheiBla3JhbmEgcHJldHJhZ2UgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcHJpa2F6IHByZXRyYWdlIGF0cmlidXRhIHRpa2V0YSB6YSBwcmlrYXogZWtyYW5hIHByZXRyYWdlIHRpa2V0YS4gUHJpbWVyOiAiS2V5IiBtb3JhIGltYXRpIG5heml2IGRpbmFtacSNa29nIHBvbGphLCB1IG92b20gc2x1xI1hanUgXCdYXCcsICJDb250ZW50IiBtb3JhIGltYXRpIHZyZWRub3N0IGRpbmFtacSNa29nIHBvbGphIHUgemF2aXNub3N0aSBvZCB0aXBhIGRpbmFtacSNa29nIHBvbGphLCBUZWtzdDogXCdhIHRleHRcJywgUGFkYWp1xIdpOiBcJzFcJywgRGF0dW0vVnJlbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBpL2lsaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG9kcmF6dW1ldmFuaSBwb2RvYmpla2F0IGtsYXNlIElUU00ga29uZmlndXJhY2lvbmEgc3RhdmthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSB2aXNpbnUgemEga29tcG9uZW50dSBSaWNoIFRleHQgRWRpdG9yIHphIG92YWogcHJpa2F6IGVrcmFuYS4gVW5lc2kgYnJvaiAocGlrc2VsaSkgaWxpIHByb2NlbnR1YWxudSB2cmVkbm9zdCAocmVsYXRpdm51KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIGJyb2ogcmVkb3ZhIHphIGVkaXRvciBkZWZpbmljaWplIENJIHUgYWRtaW5pc3RyYXRpdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdPZHJlxJF1amUgcmVkb3NsZWQgaW5jaWRlbnRuaWggc3RhbmphIG9kIHZpc29rb2cgKG5wciBrcml0acSNbm8pIGRvIG5pc2tvZyAobnByIGZ1bmtjaW9uYWxubykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlbGV2YW50bmEgc3RhbmphIHJhc3BvcmXEkWl2YW5qYSBnZGUgcG92ZXphbmkgdGlrZXRpIG1vZ3UgZGEgdXRpxI11IG5hIHN0YXR1cyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBncmFuaWN1IHByZXRyYWdlIHphIGVrcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgdSB0YWJlbGkgdmV6YSB1IHphdmlzbm9zdGkgb2Qga2xhc2UuIFVrb2xpa28gbmUgcG9zdG9qaSB1bm9zIHphIHBvamVkaW5hxI1udSBrbGFzdSwgYmnEh2UgcHJpa2F6YW5lIHBvZHJhenVtZXZhbmUga29sb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHByaWthemFuZSBrb2xvbmUga29uZmlndXJhY2lvbmloIHN0YXZraSB1IHRhYmVsaSB2ZXphIHUgemF2aXNub3N0aSBvZCBrbGFzZS4gU3Zha2kgdW5vcyBtb3JhIHNhZHLFvmF0aSBwcmVmaWtzIHNhIG5heml2b20ga2xhc2UgaSBkdm90YcSNa29tIChucHIuIENvbXB1dGVyOjopLiBQb3N0b2ppIHBhciBhdHJpYnV0YSBrb2ppIHN1IHphamVkbmnEjWtpIHphIHN2ZSBrbGFzZSAobnByLiB6YSBrbGFzdSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gWmEgcHJpa2F6IHBvamVkaW5hxI1uaWggYXRyaWJ1dGEgaXogZGVmaW5pY2lqZSwgbW9yYXRlIGtvcmlzdGl0aSBzbGVkZcSHdSDFoWVtdSAocHJpbWVyIHphIGtsYXN1IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFVrb2xpa28gbmUgcG9zdG9qaSB1bm9zIHphIHBvamVkaW5hxI1udSBrbGFzdSwgYmnEh2UgcHJpa2F6YW5lIHBvZHJhenVtZXZhbmUga29sb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2plIHN1IHN0YXZrZSBzbG9ib2RuZSB6YSBcJ0FjdGlvblwnIHUgdHJlxIdlbSBuaXZvdSBBQ0wgc3RydWt0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2plIHN1IHN0YXZrZSBzbG9ib2RuZSB1IHBydm9tIG5pdm91IEFDTCBzdHJ1a3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2plIHN1IHN0YXZrZSBzbG9ib2RuZSB1IGRydWdvbSBuaXZvdSBBQ0wgc3RydWt0dXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBrb2ppIHRpcCB2ZXplIChnbGVkYW5vIGl6IHBlcnNwZWt0aXZlIHRpa2V0YSkgbW/FvmUgZGEgdXRpxI1lIG5hIHBvdmV6YW51IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBrb2ppIHRpcCB0aWtldGEgbW/FvmUgZGEgdXRpxI1lIG5hIHN0YXR1cyBwb3ZlemFuZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JyaXNhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0JvamEgc3RhdHVzYSByYXNwb3JlxJFpdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgZG9kYXRuaWggSVRTTSBwb2xqYSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IHByZWdsZWR1IEZBUSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGVrcmFudSBwcmV0cmFnZSBwcm9tZW5hIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbWFzb3ZudSBha2NpanUgbmEga29uZmlndXJhY2lvbmltIHN0YXZrYW1hIHUgcHJpc3R1cG5vbSBzaXN0ZW11IG9wZXJhdGVyYSBuYSB2acWhZSBvZCBqZWRuZSBzdGF2a2UgaXN0b3ZyZW1lbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmlyYSBzdm9qc3R2byBtYXNvdm5lIGFrY2lqZSBuYSBrb25maWdpcmFjaW9uaW0gc3RhdmthbWEgc2FtbyB6YSBpemxpc3RhbmUgZ3J1cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEgemEgcG9kZcWhYXZhbmplIHN0YXR1c2Ega29uZmlndXJhY2lvbmloIHN0YXZraSBwcmlsaWtvbSBwb3N0YXZsamFuamEgdmV6YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYSB6YSBzbG9qIHBveml2YW9jYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQcmVnbGVkIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IG92ZSBvcGVyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgemEgcHJvdmVydSBncnVwZSBvZGdvdm9ybmUgemEga2xhc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgemEgcHJvdmVydSBncnVwZSBvZGdvdm9ybmUgemEga29uZmlndXJhY2lvbnUgc3Rhdmt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHphIGdlbmVyaXNhbmplIHN0YXRpc3Rpa2UgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUHJlZ2xlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBmaWx0ZXIga29sb25hIHUgdW1hbmplbm9tIHByZWdsZWR1IHRpa2V0YS4gTmFwb21lbmE6IHBvZGXFoWF2YW5qZSBcJ0FjdGl2ZVwnIG5hIDAgxIdlIHNhbW8gb25lbW9ndcSHaXRpIG9wZXJhdGVyaW1hIGRhIG1lbmphanUgc3ZvamEgbGnEjW5hIHBvZGXFoWF2YW5qYSBpeiBvdmUgZ3J1cGUsIGFsaSDEh2UgYWRtaW5pc3RyYXRvcmkgaSBkYWxqZSBtb8SHaSBkYSBpaCBtZW5qYWp1IHUgbmppaG92byBpbWUuIFBvZGVzaXRlIFwnUHJlZmVyZW5jZUdyb3VwXCcgZGEgYmlzdGUgb2RyZWRpbGkgdSBrb20gZGVsdSBpbnRlcmZlanNhIG92YSBwb2RlxaFhdmFuamEgdHJlYmEgZGEgYnVkdSBwcmlrYXphbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBkb2RhdGFrIGxpc3RlIGtsaWplbnQga29yaXNuaWthIGtvbnRyb2xuZSB0YWJsZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiAiR3JvdXAiIHNlIGtvcmlzdGkgZGEgb2dyYW5pxI1pIHByaXN0dXAgZG9kYXRrdSAobnByLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2RyZcSRdWplIGRhIGxpIGplIHBvZHJhenVtZXZhbm8gYWt0aXZpcmFuIGlsaSBkYSBqZSBwb3RyZWJubyBkYSBnYSBrb3Jpc25payBtYW51ZWxubyBha3RpdmlyYS4gIkNhY2hlVFRMTG9jYWwiIGplIHZyZW1lIHUgbWludXRpbWEgemEga2XFoSBkb2RhdGthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBkb2RhdGFrIGxpc3RlIGtsaWplbnQga29yaXNuaWthIGtvbnRyb2xuZSB0YWJsZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiAiR3JvdXAiIHNlIGtvcmlzdGkgZGEgb2dyYW5pxI1pIHByaXN0dXAgZG9kYXRrdSAobnByLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2RyZcSRdWplIGRhIGxpIGplIHBvZHJhenVtZXZhbm8gYWt0aXZpcmFuIGlsaSBkYSBqZSBwb3RyZWJubyBkYSBnYSBrb3Jpc25payBtYW51ZWxubyBha3RpdmlyYS4gIkNhY2hlVFRMTG9jYWwiIGplIHZyZW1lIHUgbWludXRpbWEgemEga2XFoSBkb2RhdGthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBib2plIHN0YXR1c2EgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBhdHJpYnV0ZSB1em9ya2EgZ3J1cGUgemEgZG96dm9sZSBvcMWhdGVnIGthdGFsb2dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0cmFuaWNlIChuYSBrb2ppbWEgc3Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHByaWthemFuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdJenZyxaFhdmEgcG9kZcWhZW51IGFrY2lqdSB6YSBzdmFraSBkb2dhxJFhaiAoa2FvIHBveml2YWxhYykgemEgc3Zha2kga29uZmlndXJpc2FuIHZlYiBzZXJ2aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBwcmlzdHVwYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBwcmV0cmFnZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBwcmV0cmFnZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgZGV0YWxub2cgcHJpa2F6YSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIGRvZGF2YW5qYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBpem1lbmUgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgaXN0b3JpamF0YSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgxaF0YW1wZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUG90cmVibmEgcHJhdmEgemEgYnJpc2FuamUga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1ByZXRyYWdhIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdQb3N0YXZsamEgc3RhbmplIGluY2lkZW50YSBrb25maWd1cmFjaW9uZSBzdGF2a2Uga2FkYSBqZSB0aWtldCBwb3ZlemFuIHNhIHN0YXZrb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHN0YXR1cyBwcmltZW5lIG5hIGVrcmFudSBtYXNvdm5lIGFrY2lqZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHN0YXR1cyBpbmNpZGVudGEgbmEgZWtyYW51IG1hc292bmUgYWtjaWplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IGtvamEgb21vZ3XEh2F2YSBwb3Zleml2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2Ugc2EgZHJ1Z2ltIG9iamVrdG9tIG5hIGRldGFsam5vbSBwcmlrYXp1IGtvbmZpZ3VyYWNpamUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwcmlzdHVwIGlzdG9yaWphdHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIHByZWdsZWR1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwcmlzdHVwIGlzdG9yaWphdHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgYnJpc2FuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdW1ub8W+YXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBwcmVnbGVkdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdW1ub8W+YXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBuamVub20gZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIGl6bWVudSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwb3ZyYXRhayBuYSBkZXRhbGpuaSBwcmlrYXoga29uZmlndXJhY2lvbmUgc3RhdmtlICB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIMWhdGFtcHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIGRldGFsam5pIHByaWtheiBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgcHJlZ2xlZHUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgaXN0b3JpamF0IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSAob2JybnV0IHJlZG9zbGVkKSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgemEga29uZmlndXJhY2lvbnUgc3Rhdmt1LCBucHIuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQb2RyYXp1bWV2YW5vIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0LXByb2R1a2NpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZS1wcm9kdWtjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWtjaWphJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnTmFsb2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZlanMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpamVudHNraSBzZXJ0aWZpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwIHNhZHLFvmFqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnQmVzcGxhdG5pICoqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdQcmVnbGVkIHJlenVsdGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1Nwb3JhenVtIG8gbml2b3UgdXNsdWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxtw6RubmEgZHJpZnRkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0w6RsbG5pbmdhciBmw7ZyIGlua29tbWFuZGUgZsO2cmZyw6VnbmluZ3NkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW5zdMOkbGxuaW5nYXIgZsO2ciB1dGfDpWVuZGUgc3ZhcnNkYXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnSGFudGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSBrbGFzc2RlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSByb2xsZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1rbGFzc2J1bnRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0jDpHIga2FuIGR1IGltcG9ydGVyYSBSZWFkeTJJbXBvcnQta2xhc3NidW50YXIgc29tIHZpc2FyIHbDpXJhIHZhbmxpZ2FzdGUga29uZmlndXJhdGlvbnNvYmpla3QuIE9ic2VydmVyYSBhdHQgdmlzcyB5dHRlcmxpZ2FyZSBrb25maWd1cmF0aW9uIGthbiBrcsOkdmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcHBkYXRlcmEgYmVmaW50bGlnYSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXJhIFJlYWR5MkFkb3B0LWtsYXNzYnVudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc3MgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnIEFydGlrZWwgUm9sbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZXJhIGtsYXNzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVsOkbGogZW4ga2xhc3MgZnLDpW4gbGlzdGFuIGbDtnIgYXR0IHNrYXBhIGVuIG55IGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBNYXNzw6V0Z8OkcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0zDpG5rYSB0aWxsIGFubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdPZ2lsdGlndCBudW1tZXIgcMOlIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bXJldCBww6UgZXR0IGFubmF0IENvbmZpZ3VyYXRpb24gSXRlbSBhdHQgbMOkbmthIHRpbGwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZXQgaMOkciBrb25maWd1cmF0aW9uc29iamVrdGV0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1uZXQgcMOlIGRlbm5hIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hbW5ldCBhbnbDpG5kcyByZWRhbiBpIGtvbmZpZ3VyYXRpb25zZW5oZXRlciBtZWQgZsO2cmxqYW5kZSBudW1tZXI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGbDtnIgZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bXJldCBhbnbDpG5kcyByZWRhbiBhdiBDb25maWdJdGVtcyBtZWQgZsO2bGphbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpayBmw7ZyIGtvbmZpZ3VyZXJpbmdzb2JqZWt0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpa2lubmVow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVGlkcHVua3QgZsO2ciBza2FwYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdGb2t1c3Z5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlciBwZXIgc2lkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nYSBkYXRhIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaGl0dGFkZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOkbGogZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDtnIgc8O2a25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnU8O2ayDDpHZlbiBpIHRpZGlnYXJlIHZlcnNpb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmw7ZyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEanVwbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tYSBpbi91dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbMOkbmtuaXbDpSB1cHBuw6VkZCBmw7ZyIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhdGlvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBrb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ051dmFyYW5kZSBkcmlmdGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdOdXZhcmFuZGUgaW5jaWRlbnRsw6RnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdTZW5hc3Qgw6RuZHJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTZW5hc3Qgw6RuZHJhZCBhdic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0RpbmEgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBTw7ZrJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdPYmpla3R0eXAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmVyYSBww6UgdHlwJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO2bGphbmRlIGtsYXNzZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDtmxqYW5kZSByb2xsZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ09ic2VydmVyYSBhdHQgw6R2ZW4gbW90c3ZhcmFuZGUgZHluYW1pc2thIGbDpGx0IG9jaCBHZW5lcmFsQ2F0YWxvZy1rbGFzc2VyIGtvbW1lciBhdHQgc2thcGFzIG9jaCBhdHQgZGV0IGludGUgc2tlciBuw6Vnb24gYXV0b21hdGlzayBib3J0dGFnbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWaWxsIGR1IGZvcnRzw6R0dGE/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0JlaMO2dmVyIGV4ZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uZW4gw6RyIGluZ2VuIGdpbHRpZyBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5Z2ZXJzaWt0OiBJVFNNIEtvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgQ29uZmlnSXRlbUlEIGFuZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IGJlaMO2dmVyIG1pbnN0IGV0dCB2YWx0IENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaW50ZSBza3JpdmJlaMO2cmlnaGV0IHRpbGwgZGV0IGjDpHIga29uZmlndXJhdGlvbnNvYmpla3RldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXRpb24gaGFyIGRlZmluaWVyYXRzIGbDtnIga2xhc3NlbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ29iamVrdGV0ICIlcyIgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZXQgZ2ljayBpbnRlIGF0dCB0YSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdJbmdlbiB2ZXJzaW9uIGhpdHRhZGVzIGbDtnIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGVsbGVyIENsYXNzSUQgYW5nZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiDDpXRrb21zdCBnZXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpbnRlIHZpc2EgaGlzdG9yaWssIGluZ2V0IENvbmZpZ0l0ZW1JRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGhpc3RvcmlrLCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ055IGtvbmZpZ3VyYXRpb25zcG9zdCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOeSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEZXBsb3ltZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlnSXRlbSAoSUQ9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIHRpbGxhZ2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnVXBwZGF0ZXJpbmcgYXYgQ29uZmlnSXRlbS1kZWZpbml0aW9uZW4gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbW4gdXBwZGF0ZXJhdCAobnl0dD0lcywgZ2FtbWFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyB1cHBkYXRlcmF0IGZyw6VuICIlcyIgdGlsbCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgcmFkZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQgZWxsZXIgVmVyc2lvbklEIGhhciBhbmdldHRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGtvbmZpZ3VyYXRpb25zb2JqZWt0LCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3V0c2tyaXZlbiBhdiAlcyB2aWQgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnT2dpbHRpZ3Qga2xhc3MtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQga2xhc3NJRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGbDtnIgZGVubmEga2xhc3MgZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW5nZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O2a3Jlc3VsdGF0IGbDtnIga29uZmlndXJlcmFkZSBvYmpla3QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0thbiBpbnRlIHZpc2Egb2JqZWt0ZXQsIGluZ2Egw6V0a29tc3Ryw6R0dGlnaGV0ZXIgZsO2ciBDb25maWdJdGVtIGhhciBnZXR0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnS29uZmlnSXRlbSBoaXR0YWRlcyBpbnRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdJbmdhIHZlcnNpb25lciBoaXR0YWRlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdPcGVyYXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFybmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ0jDpG5kZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRHJpZnRsw6RnZSBmw7ZyIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJbmNpZGVudGzDpGdlIGbDtnIga29uZmlndXJhdGlvbnNlbmhldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1Nha25hciByw6R0dGlnaGV0ZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBvZ2lsdGlndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDtmtwYXJhbWV0cmFyIG9naWx0aWdhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Zpc2FkZSBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEcmlmdGzDpGdlc3R5cGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ051dmFyYW5kZSB0eXAgYXYgaW5jaWRlbnRsw6RnZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdNZWxsYW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzYmVncsOkbnNuaW5nYXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw6RsaiBlbiBlbGxlciBmbGVyYSBrbGFzc2VyIGbDtnIgYXR0IGJlZ3LDpG5zYSB2YWxiYXJhIGtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2JlZ3LDpG5zbmluZ2FyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpGxqIGVuIGVsbGVyIGZsZXJhIGtsYXNzZXIgZsO2ciBhdHQgYmVncsOkbnNhIHZhbGJhcmEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzayAoS29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2sgKHZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cCBhdiBsw6Rua3JlZmVyZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09tIGRlbm5hIGzDpG5rIGfDpGxsZXIgZsO2ciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrYSB2ZXJzaW9uZW4gYXYgZGV0IG9iamVrdCBzb20gcmVmZXJlcmFzIHRpbGwuIEJlcsOka25pbmdlbiBhdiBDdXJyZW50IEluY2lkZW50IFN0YXRlIHV0ZsO2cnMgZW5kYXN0IHDDpSBkeW5hbWlza2EgbMOkbmthci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWw6RsaiBkZXQgYXR0cmlidXQgc29tIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gc2thIHPDtmthcyBlZnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNzdHJ1a3R1cmVuIMOkciBpbnRlIGdpbHRpZy4gQW5nZSBlbiBoYXNoIG1lZCBkYXRhIGkgWUFNTC1mb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRGV0IGtyw6R2cyBhdHQgWUFNTC1zdHLDpG5nZW4gaW5sZWRzIG1lZCAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnRGV0IGdpY2sgaW50ZSBhdHQgcmVuc2EgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnSW5nYSByZWxldmFudGEgZHluYW1pc2thIGbDpGx0IGhpdHRhZGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnRGV0IGdpY2sgaW50ZSBhdHQgaW5mb2dhIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbmZvZ2FkZSAwIHJhZGVyIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heCBhbnRhbCBhdiBldHQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnRlcmEvZXhwb3J0ZXJhIGJpbGFnb3IgKHNvbSBkZSBzaXN0YSBwb3N0ZXJuYSBwZXIgcmFkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb24gU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0ZlbCB2aWQgc3lua3JvbmlzZXJpbmcgYXYgZGVmaW5pdGlvbmVybmEuIFbDpG5saWdlbiBrb250cm9sbGVyYSBsb2dnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnRHUgaGFyIElUU01Db25maWdJdGVtLWRlZmluaXRpb25lciBzb20gaW50ZSDDpHIgc3lua3JvbmlzZXJhZGUuIFbDpG5saWdlbiBkaXN0cmlidWVyYSBkaW5hIElUU01Db25maWdJdGVtIGR5bmFtaXNrYSBmw6RsdMOkbmRyaW5nYXIuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdMw7ZwdCB1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1VuZGVyaMOlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwZXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2lvbmVyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnw5Z2ZXJzeW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ8OWdmVyc2lrdCBvY2ggYmVrcsOkZnRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGVyYSBrbGFzc2VyL3JvbGxlciBvY2ggZGVyYXMgcmVsYXRlcmFkZSBmw6RsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0V0dCBmZWwgaW50csOkZmZhZGUgdW5kZXIga2xhc3NpbXBvcnRlbi4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIERvbGQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFZpc2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdUaWxsw6V0ZXIgdXTDtmthZGUgc8O2a3ZpbGxrb3IgdmlkIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0LiBNZWQgZGVuIGjDpHIgZnVua3Rpb25lbiBrYW4gZHUgdC5leC4gc8O2a2EgZWZ0ZXIga29uZmlndXJhdGlvbnNvYmpla3RldHMgbmFtbiBtZWQgdmlsbGtvciBhdiB0eXBlbiAiKCprZXkxKiYmKmtleTIqKSIgZWxsZXIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdUaWxsw6V0ZXIgdXTDtmthZGUgc8O2a3ZpbGxrb3IgdmlkIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuIE1lZCBkZW4gaMOkciBmdW5rdGlvbmVuIGthbiBkdSB0LmV4LiBzw7ZrYSBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdGV0cyBuYW1uIG1lZCB2aWxsa29yIGF2IHR5cGVuICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1RpbGxkZWxhZGUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSTpzIHNvbSB0aWxsZGVsYXRzIGt1bmRmw7ZyZXRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJOmVyIHNvbSB0aWxsZGVsYXRzIGt1bmRhbnbDpG5kYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluc3TDpGxsbmluZ2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdTw7ZrIGVmdGVyIGV0dCB1bmlrdCBuYW1uIGVuZGFzdCBpbm9tIHNhbW1hIENvbmZpZ0l0ZW0ta2xhc3MgKCJjbGFzcyIpIGVsbGVyIGdsb2JhbHQgKCJnbG9iYWwiKSwgdmlsa2V0IGlubmViw6RyIGF0dCB2YXJqZSBiZWZpbnRsaWd0IENvbmZpZ0l0ZW0gdGFzIG1lZCBpIGJlcsOka25pbmdlbiBuw6RyIG1hbiBsZXRhciBlZnRlciBkdWJibGV0dGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgZ2Vub21kcml2YSBldHQgbmFtbmdpdm5pbmdzc2NoZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgdmVya3N0w6RsbGEgZXR0IG51bW1lcnN5c3RlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgZ2Vub21kcml2YSBldHQgc3lzdGVtIG1lZCB2ZXJzaW9uc3N0csOkbmdhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdWw6RsaiBhdHRyaWJ1dCBmw7ZyIGF0dCB1dGzDtnNhIHNrYXBhbmRldCBhdiBlbiBueSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWw6RsaiBrYXRlZ29yaWVyIHNvbSBza2EgdGlsbGRlbGFzIGRlbm5hIGtsYXNzIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2x1bW5maWx0ZXIgZsO2ciBDb25maWdJdGVtLW9iamVrdCBmw7ZyIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2x1bW5lciBzb20ga2FuIGZpbHRyZXJhcyBpIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0LiBPYnNlcnZlcmE6IEVuZGFzdCBDb25maWcgSXRlbS1hdHRyaWJ1dCBvY2ggZHluYW1pc2thIGbDpGx0IChEeW5hbWljRmllbGRfTmFtZVgpIMOkciB0aWxsw6V0bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnTMOkZ2cgdGlsbCBrb25maWd1cmVyaW5nc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdSZWRpZ2VyYSBrb25maWd1cmVyaW5nc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVyaW5nc29iamVrdCBmw7ZyIGjDpG5kZWxzZW1vZHVsIHNvbSBtw7ZqbGlnZ8O2ciBsb2dnbmluZyB0aWxsIGhpc3RvcmlrIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdIw6RuZGVsc2Vtb2R1bCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSB1cHBkYXRlcmFyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gdGlsbCBkZXJhcyBha3R1ZWxsYSBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0tvbmZpZ3VyZXJhciBhcnRpa2VsaGlzdG9yaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1V0c2tyaWZ0IGF2IGtvbmZpZ3VyZXJpbmdzb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyZXJhIHpvb20gZsO2ciBvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnSXRlbSB0csOkZHZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0tvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBhdiBmw7ZsamFuZGUga2xhc3NlciBrb21tZXIgaW50ZSBhdHQgbGFncmFzIHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcm4uIE9tIGR1IHZpbGwgdGlsbMOkbXBhIGRldHRhIHDDpSBiZWZpbnRsaWdhIENJIG3DpXN0ZSBDSS1taWdyZXJpbmdlbiBrw7ZyYXMgdmlhIGtvbnNvbGVuIGVmdGVyIGF0dCBkdSBoYXIgw6RuZHJhdCBkZXR0YSBhbHRlcm5hdGl2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZWQgZsO2bGphbmRlIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBrb21tZXIgaW50ZSBhdHQgbGFncmFzIHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcm4uIEbDtnIgYXR0IHRpbGzDpG1wYSBkZXR0YSBww6UgYmVmaW50bGlnYSBDSSBtw6VzdGUgQ0ktbWlncmVyaW5nZW4ga8O2cmFzIHZpYSBrb25zb2xlbiBlZnRlciBhdHQgZGV0dGEgYWx0ZXJuYXRpdiBoYXIgw6RuZHJhdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0JlZ3LDpG5zbmluZyBrb25maWd1cmF0aW9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyYXRpb24gQXJ0aWtlbGdyw6RucyBwZXIgc2lkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXMgZsO2ciBrb25maWd1cmF0aW9uc2hhbnRlcmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXRpb25zb2JqZWt0IGJ1bGttb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhdGlvbnNvYmpla3Qgc8O2ayBiYWNrZW5kLXJvdXRlciBmw7ZyIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnU2thcGEgb2NoIGhhbnRlcmEgZGVmaW5pdGlvbmVyIGbDtnIga29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnU2thcGFyIGJpbGpldHRlciBmw7ZyIENvbmZpZ0l0ZW1zIHZpZCBzcGVjaWZpa2EgdGlkcHVua3Rlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS3VuZGVybmEga2FuIHNlIGhpc3Rvcmlza2EgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZXJuYSBoYXIgbcO2amxpZ2hldCBhdHQgbWFudWVsbHQgdsOkeGxhIG1lbGxhbiBoaXN0b3Jpc2thIENJLXZlcnNpb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0ZXQgZsO2ciBzw7Zrc2vDpHJtZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdC4gRXhlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0IGbDtnIgc8O2a3Nrw6RybWVuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmllcmEgw6V0Z8OkcmRlciBkw6RyIGVuIGluc3TDpGxsbmluZ3NrbmFwcCDDpHIgdGlsbGfDpG5nbGlnIGkgd2lkZ2V0ZW4gZsO2ciBsw6Rua2FkZSBvYmpla3QgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gT2JzZXJ2ZXJhIGF0dCBkZXNzYSDDpXRnw6RyZGVyIG3DpXN0ZSBoYSByZWdpc3RyZXJhdCBmw7ZsamFuZGUgSlMtIG9jaCBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIG9jaCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllcmEgZXR0IFRlbXBsYXRlOjpUb29sa2l0LXNjaGVtYSBmw7ZyIHZlcnNpb25zc3Ryw6RuZ2FyLiBBbnbDpG5kcyBlbmRhc3Qgb20gVmVyc2lvbiBTdHJpbmcgTW9kdWxlIMOkciBpbnN0w6RsbGQgcMOlIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmllcmEgZW4gdXBwc8OkdHRuaW5nIHZpbGxrb3IgdW5kZXIgdmlsa2EgZW4ga3VuZCBmw6VyIHNlIGV0dCBrb25maWd1cmF0aW9uc29iamVrdC4gVmlsbGtvcmVuIGthbiBldmVudHVlbGx0IGJlZ3LDpG5zYXMgdGlsbCB2aXNzYSBrdW5kZ3J1cHBlci4gTmFtbiDDpHIgZGV0IGVuZGEgb2JsaWdhdG9yaXNrYSBhdHRyaWJ1dGV0LiBPbSBpbmdhIGFuZHJhIGFsdGVybmF0aXYgYW5nZXMga29tbWVyIGFsbGEga29uZmlndXJhdGlvbnNvYmpla3QgYXR0IHZhcmEgc3lubGlnYSB1bmRlciBkZW4ga2F0ZWdvcmluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBuw7ZkdsOkbmRpZ2EgYmVow7ZyaWdoZXRlciBmw7ZyIGF0dCB0YSBib3J0IElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IGjDpG10YSBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IG1lZCBoasOkbHAgYXYgZGV0IGdlbmVyaXNrYSBncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBuw7ZkdsOkbmRpZ2EgYmVow7ZyaWdoZXRlciBmw7ZyIGF0dCBzw7ZrYSBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IG1lZCBoasOkbHAgYXYgZGV0IGdlbmVyaXNrYSBncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBuw7ZkdsOkbmRpZ2EgYmVow7ZyaWdoZXRlciBmw7ZyIGF0dCBzdMOkbGxhIGluIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZW4gw7Z2ZXJzaWt0c21vZHVsIHNvbSB2aXNhciBkZW4gbGlsbGEgdnluIGF2IGVuIGxpc3RhIG1lZCBrb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBvbSBsw6Rua3R5cGVucyBldGlrZXR0ZXIgbcOlc3RlIHZpc2FzIGkgbm9kYW5zbHV0bmluZ2FybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHJlZ3VsasOkcmEgdXR0cnljayBpbmRpdmlkdWVsbHQgZsO2ciB2YXJqZSBDb25maWdJdGVtLWtsYXNzIGbDtnIgYXR0IGtvbnRyb2xsZXJhIENvbmZpZ0l0ZW0tbmFtbmV0IG9jaCB2aXNhIG1vdHN2YXJhbmRlIGZlbG1lZGRlbGFuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUgdGlsbGfDpG5nbGlnYSBrb2x1bW5lcm5hIGbDtnIgQ0k6ZXIgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyDDtnZlcnNpa3QgYmVyb2VuZGUgcMOlIENJLWtsYXNzZW4uIFZhcmplIHBvc3QgbcOlc3RlIGJlc3TDpSBhdiBldHQga2xhc3NuYW1uIG9jaCBlbiBtYXRyaXMgbWVkIHRpbGxnw6RuZ2xpZ2EgZsOkbHQgZsO2ciBtb3RzdmFyYW5kZSBrbGFzcy4gRHluYW1pc2thIGbDpGx0cG9zdGVyIG3DpXN0ZSBmw7ZsamEgc2NoZW1hdCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBmw7ZyIHNvcnRlcmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHPDtmtyZXN1bHRhdGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkYXR0cmlidXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGbDtnIgc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRhdHRyaWJ1dGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgZsO2ciBzb3J0ZXJpbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSByZXN1bHRhdGV0IGF2IHPDtmtuaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBkZW5uYSDDpXRnw6RyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRvcmRuaW5nZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIHPDtmtyZXN1bHRhdGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuIFVwcDogw6RsZHN0IHDDpSB0b3BwZW4uIE5lcjogZGV0IHNlbmFzdGUgw7Z2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRvcmRuaW5nZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIHPDtmtyZXN1bHRhdGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4gVXBwOiDDpGxkc3Qgw7Z2ZXJzdC4gTmVyOiBkZW4gc2VuYXN0ZSDDtnZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkb3JkbmluZ2VuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaSByZXN1bHRhdGV0IGF2IHPDtmtuaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBkZW4gaMOkciDDpXRnw6RyZGVuLiBVcHA6IMOkbGRzdCDDtnZlcnN0LiBOZXI6IHNlbmFzdGUgw7Z2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUga29sdW1uZXIgc29tIHZpc2FzIHNvbSBzdGFuZGFyZCBmw7ZyIENJOmVyIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgw7Z2ZXJzaWt0IGJlcm9lbmRlIHDDpSBDSS1rbGFzc2VuLiBWYXJqZSBwb3N0IG3DpXN0ZSBiZXN0w6UgYXYgZXR0IGtsYXNzbmFtbiBvY2ggZW4gbWF0cmlzIG1lZCB0aWxsZ8OkbmdsaWdhIGbDpGx0IGbDtnIgbW90c3ZhcmFuZGUga2xhc3MuIER5bmFtaXNrYSBmw6RsdHBvc3RlciBtw6VzdGUgZsO2bGphIHNjaGVtYXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5pZXJhciBkZXQgc3RhbmRhcmRkanVwIGbDtnIgcmVsYXRpb25lciBzb20gc2thIHZpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkYXR0cmlidXRldCBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSB2aXNhcyBmw7ZyIHNrw6RybWVuIGbDtnIgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkYXR0cmlidXRldCBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSB2aXNhcyBww6Ugc2vDpHJtZW4gZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdC4gRXhlbXBlbDogIktleSIgbcOlc3RlIGhhIG5hbW5ldCBww6UgZGV0IGR5bmFtaXNrYSBmw6RsdGV0IGkgZGV0IGjDpHIgZmFsbGV0ICJYIiwgIkNvbnRlbnQiIG3DpXN0ZSBoYSB2w6RyZGV0IHDDpSBkZXQgZHluYW1pc2thIGbDpGx0ZXQgYmVyb2VuZGUgcMOlIHR5cGVuIGF2IGR5bmFtaXNrdCBmw6RsdCwgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIG9jaCBlbGxlciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkdW5kZXJvYmpla3RldCBmw7ZyIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSB0aWxsZ8OkbmdsaWdhIGtvbHVtbmVybmEgZsO2ciBDSTplciBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIMO2dmVyc2lrdCBiZXJvZW5kZSBww6UgQ0kta2xhc3Nlbi4gVmFyamUgcG9zdCBtw6VzdGUgYmVzdMOlIGF2IGV0dCBrbGFzc25hbW4gb2NoIGVuIG1hdHJpcyBtZWQgdGlsbGfDpG5nbGlnYSBmw6RsdCBmw7ZyIG1vdHN2YXJhbmRlIGtsYXNzLiBEeW5hbWlza2EgZsOkbHRwb3N0ZXIgbcOlc3RlIGbDtmxqYSBzY2hlbWF0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgaMO2amRlbiBmw7ZyIHJlZGlnZXJpbmdza29tcG9uZW50ZW4gZsO2ciByaWsgdGV4dCBmw7ZyIGRlbiBow6RyIHNrw6RybWVuLiBBbmdlIGFudGFsIChwaXhsYXIpIGVsbGVyIHByb2NlbnR2w6RyZGUgKHJlbGF0aXZ0KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXIgYW50YWwgcmFkZXIgZsO2ciBLRS1lZGl0b3JuIGkgYWRtaW5ncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG9yZG5pbmdzZsO2bGpkZW4gZsO2ciBpbmNpZGVudHRpbGxzdMOlbmQgZnLDpW4gaMO2ZyAodC5leC4gY3JpY2l0YWwpIHRpbGwgbMOlZyAodC5leC4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSByZWxldmFudGEgZHJpZnRzw6R0dG5pbmdzc3RhdHVzYXIgZMOkciBsw6Rua2FkZSDDpHJlbmRlbiBrYW4gcMOldmVya2Egc3RhdHVzZW4gZsO2ciBldHQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzw7ZrZ3LDpG5zZW4gZsO2ciBza8Okcm1lbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHPDtmtncsOkbnNlbiBmw7ZyIHNrw6RybWVuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzw7ZrZ3LDpG5zZW4gZsO2ciBza8Okcm1lbiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUga29sdW1uZXIgc29tIHZpc2FzIGbDtnIgQ0kgaSBkZW4ga29tcGxleGEgdnluIGbDtnIgbMOkbmt0YWJlbGxlbiBmw7ZyIGFsbGEgQ0kta2xhc3Nlci4gT20gZGV0IGludGUgZmlubnMgbsOlZ29uIHBvc3QgdmlzYXMgc3RhbmRhcmRrb2x1bW5lcm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSBrb2x1bW5lciBzb20gdmlzYXMgZsO2ciBDSSBpIGRlbiBrb21wbGV4YSB2eW4gZsO2ciBsw6Rua3RhYmVsbGVuLCBiZXJvZW5kZSBww6UgQ0kta2xhc3MuIFZhcmplIHBvc3QgbcOlc3RlIGlubGVkYXMgbWVkIGtsYXNzbmFtbmV0IG9jaCBkdWJibGEga29sb24gKHQuZXguIENvbXB1dGVyOjopLiBEZXQgZmlubnMgZXR0IGbDpXRhbCBDSS1hdHRyaWJ1dCBzb20gw6RyIGdlbWVuc2FtbWEgZsO2ciBhbGxhIENJIChleGVtcGVsIGbDtnIga2xhc3NlbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gRsO2ciBhdHQgdmlzYSBlbnNraWxkYSBDSS1hdHRyaWJ1dCBzb20gZGVmaW5pZXJhcyBpIENJLWRlZmluaXRpb25lbiBtw6VzdGUgZsO2bGphbmRlIHNjaGVtYSBhbnbDpG5kYXMgKGV4ZW1wZWwgZsO2ciBrbGFzc2VuIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIE9tIGRldCBpbnRlIGZpbm5zIG7DpWdvbiBwb3N0IGbDtnIgZW4gQ0kta2xhc3MgdmlzYXMgc3RhbmRhcmRrb2x1bW5lcm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2Egb2JqZWt0IHNvbSDDpHIgdGlsbGfDpG5nbGlnYSBmw7ZyICJBY3Rpb24iIGkgZGVuIHRyZWRqZSBuaXbDpW4gaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2Egb2JqZWt0IHNvbSDDpHIgdGlsbGfDpG5nbGlnYSBpIGRlbiBmw7Zyc3RhIG5pdsOlbiBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2Egb2JqZWt0IHNvbSDDpHIgdGlsbGfDpG5nbGlnYSBpIGRlbiBhbmRyYSBuaXbDpW4gaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHZpbGtlbiB0eXAgYXYgbMOkbmsgKG5hbW5naXZlbiB1ciBldHQgw6RyZW5kZXBlcnNwZWt0aXYpIHNvbSBrYW4gcMOldmVya2Egc3RhdHVzZW4gZsO2ciBldHQgbMOkbmthdCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHZpbGtlbiB0eXAgYXYgw6RyZW5kZSBzb20ga2FuIHDDpXZlcmthIHN0YXR1c2VuIGbDtnIgZXR0IGzDpG5rYXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGlvbiBVcHBkYXRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnVGEgYm9ydCBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RlcGxveW1lbnQgU3RhdGUgRsOkcmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0jDpG5kZWxzZW1vZHVsIGbDtnIgZHluYW1pc2thIGbDpGx0IHNvbSBtYXJrZXJhciBrb25maWd1cmF0aW9uc29iamVrdGRlZmluaXRpb25lciBzb20gb3N5bmtyb25pc2VyYWRlIG9tIGRlIGlubmVow6VsbGVyIGR5bmFtaXNrYSBmw6RsdCBzb20gw6RuZHJhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrYSBmw6RsdCBzb20gdmlzYXMgcMOlIHNrw6RybWVuIGbDtnIgeXR0ZXJsaWdhcmUgSVRTTS1mw6RsdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2thIGbDpGx0IHNvbSB2aXNhcyBww6Ugc2vDpHJtZW4gZsO2ciDDtnZlcnNpa3QgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrYSBmw6RsdCBzb20gdmlzYXMgcMOlIHNrw6RybWVuIGbDtnIgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FrdGl2ZXJhciBmdW5rdGlvbmVuIGbDtnIgbWFzc8OldGfDpHJkZXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBzw6UgYXR0IGFnZW50ZW5zIGZyb250ZW5kIGthbiBhcmJldGEgbWVkIG1lciDDpG4gZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IMOldCBnw6VuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWt0aXZlcmFyIGZ1bmt0aW9uZW4gZsO2ciBtYXNzw6V0Z8OkcmRlciBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGVuZGFzdCBmw7ZyIGRlIGdydXBwZXIgc29tIGFuZ2VzIGkgbGlzdGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBa3RpdmVyYXIvaW5ha3RpdmVyYXIgZnVua3Rpb25lbiBmw7ZyIGF0dCBrb250cm9sbGVyYSBhdHQgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBoYXIgdW5pa2EgbmFtbi4gSW5uYW4gZHUgYWt0aXZlcmFyIGRldCBow6RyIGFsdGVybmF0aXZldCBiw7ZyIGR1IGtvbnRyb2xsZXJhIG9tIGRldCByZWRhbiBmaW5ucyBrb25maWd1cmF0aW9uc29iamVrdCBtZWQgZHViYmxhIG5hbW4gaSBzeXN0ZW1ldC4gRHUga2FuIGfDtnJhIGRldHRhIG1lZCBrb25zb2xrb21tYW5kb3QgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdIw6RuZGVsc2Vtb2R1bCBmw7ZyIGF0dCBzw6R0dGEgY29uZmlnaXRlbS1zdGF0dXMgcMOlIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0bDpGx0IGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgaW5kZXggc29tIGFudsOkbmRzIGbDtnIgZnVsbHRleHRzw7ZrbmluZy4gRsOkbHQgbGFncmFzIG9ja3PDpSwgbWVuIMOkciBpbnRlIG9ibGlnYXRvcmlza2EgZsO2ciBkZW4gw7Z2ZXJncmlwYW5kZSBmdW5rdGlvbmFsaXRldGVuLiBJbmtsdWRlcmluZyBhdiBiaWxhZ29yIGthbiBpbmFrdGl2ZXJhcyBnZW5vbSBhdHQgc8OkdHRhIHBvc3RlbiB0aWxsIDAgZWxsZXIgcmFkZXJhIGRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0bDpGx0IHNvbSBsYWdyYXMgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyBpbmRleCBvY2ggc29tIGFudsOkbmRzIGbDtnIgYW5kcmEgc2FrZXIgw6RuIGZ1bGx0ZXh0c8O2a25pbmcuIEbDtnIgZnVsbHN0w6RuZGlnIGZ1bmt0aW9uYWxpdGV0IMOkciBhbGxhIGbDpGx0IG9ibGlnYXRvcmlza2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnRsO2ciB2YXJqZSB3ZWJidGrDpG5zdCAobnlja2VsKSBrYW4gZW4gYXJyYXkgYXYga2xhc3NlciAodsOkcmRlKSBkZWZpbmllcmFzIGbDtnIgdmlsa2EgaW1wb3J0ZW4gw6RyIGJlZ3LDpG5zYWQuIEbDtnIgYWxsYSB2YWxkYSBrbGFzc2VyLCBlbGxlciBhbGxhIGJlZmludGxpZ2Ega2xhc3NlciwgbcOlc3RlIGRlIGlkZW50aWZpZXJhbmRlIGF0dHJpYnV0ZW4gdsOkbGphcyBpIGtvbmZpZ3VyYXRpb25lbiBhdiBpbnZva2Vybi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWwgZsO2ciBDb25maWdJdGVtRmV0Y2gtaW5rYWxsbmluZ3NsYWdyZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWwgZsO2ciBDb25maWdJdGVtRmV0Y2gtaW5rYWxsbmluZ3NsYWdyZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIGbDtnIgQ29uZmlnSXRlbUZldGNoLWlua2FsbG5pbmdzbGFncmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIEtvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfDlnZlcnNpa3Qgw7Z2ZXIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdIw6RuZGVsc2VTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJhciBkcmlmdHPDpHR0bmluZ3NzdGF0dXNhciBpIHPDtmtuaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyYXIgaW5jaWRlbnRzdGF0dXNhciBpIHPDtmtuaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltYWx0IGFudGFsIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSBza2EgdmlzYXMgaSByZXN1bHRhdGV0IGF2IGRlbm5hIMOldGfDpHJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIGbDtnIgYXR0IGtvbnRyb2xsZXJhIHZpbGtlbiBncnVwcCBzb20gw6RyIGFuc3ZhcmlnIGbDtnIgZW4ga2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZsO2ciBhdHQga29udHJvbGxlcmEgdmlsa2VuIGdydXBwIHNvbSDDpHIgYW5zdmFyaWcgZsO2ciBldHQga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZsO2ciBhdHQgZ2VuZXJlcmEgc3RhdGlzdGlrIMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtbiBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSBza2EgdmlzYXMgcMOlIHZhcmplIHNpZGEgaSBldHQgc8O2a3Jlc3VsdGF0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnRhbCBrb25maWd1cmF0aW9uc29iamVrdCBzb20gc2thIHZpc2FzIHDDpSB2YXJqZSBzaWRhIGF2IGV0dCBzw7ZrcmVzdWx0YXQgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpla3QgYXR0IHPDtmthIGVmdGVyLCBodXIgbcOlbmdhIHBvc3RlciBvY2ggdmlsa2EgYXR0cmlidXQgc29tIHNrYSB2aXNhcy4gQ29uZmlnSXRlbS1hdHRyaWJ1dCBtw6VzdGUgdXR0cnlja2xpZ2VuIGxhZ3JhcyB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw5Z2ZXJzaWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIGthdGVnb3JpZXJuYSBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIGtvbHVtbmZpbHRyZW4gaSBkZW4gbGlsbGEgw7Z2ZXJzaWt0ZW4gw7Z2ZXIga29uZmlndXJhdGlvbnNvYmpla3QuIE9ic2VydmVyYTogb20gZHUgYW5nZXIgIkFjdGl2ZSIgdGlsbCAwIGbDtnJoaW5kcmFzIGVuZGFzdCBoYW5kbMOkZ2dhcmUgZnLDpW4gYXR0IHJlZGlnZXJhIGluc3TDpGxsbmluZ2FyIGbDtnIgZGVubmEgZ3J1cHAgaSBzaW5hIHBlcnNvbmxpZ2EgaW5zdMOkbGxuaW5nYXIsIG1lbiBhZG1pbmlzdHJhdMO2cmVyIGthbiBmb3J0ZmFyYW5kZSByZWRpZ2VyYSBpbnN0w6RsbG5pbmdhcm5hIGbDtnIgZW4gYW5uYW4gYW52w6RuZGFyZXMgcsOka25pbmcuIEFudsOkbmQgIlByZWZlcmVuY2VHcm91cCIgZsO2ciBhdHQgc3R5cmEgaSB2aWxrZXQgb21yw6VkZSBkZXNzYSBpbnN0w6RsbG5pbmdhciBza2EgdmlzYXMgaSBhbnbDpG5kYXJncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZsOkcmdlbiBmw7ZyIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZHJpZnRzw6R0dG5pbmdzdGlsbHN0w6VuZCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIGV4ZW1wZWwgcMOlIGJlaMO2cmlnaGV0c2VncnVwcGVyIGkgZ3J1bmRrYXRhbG9nZW5zIGF0dHJpYnV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBuYW1ubW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbnVtbWVybW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBzaWRvcm5hIChkw6RyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gdmlzYXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbW9kdWxlbiB2ZXJzaW9uIHN0cmluZyBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGbDtnIgY29uZmlnIGl0ZW0gY2xhc3NlcyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb25zdXRsw7ZzYXJlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVXRmw7ZyIGRlbiBrb25maWd1cmVyYWRlIMOldGfDpHJkZW4gZsO2ciB2YXJqZSBow6RuZGVsc2UgKHNvbSBlbiBJbnZva2VyKSBmw7ZyIHZhcmplIGtvbmZpZ3VyZXJhZCB3ZWJidGrDpG5zdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0JlaMO2cmlnaGV0c2dydXBwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSDDpXRnw6RyZGVuIEF0dGFjaG1lbnQgZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHPDtmtza8Okcm1lbiBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHPDtmtza8Okcm1lbiBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgdHLDpGR2eW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgem9vbXNrw6RybWVuIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gTMOkZ2cgdGlsbCBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYnVsayBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIFJlZGlnZXJhIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBIaXN0b3JpayDDtnZlciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIFNrcml2IHV0IElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgdGEgYm9ydCBrb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdTw7ZrIGkga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTdMOkbGwgaW4gaW5jaWRlbnRzdGF0dXMgZsO2ciBldHQgQ0kgYXV0b21hdGlza3QgbsOkciBlbiBUaWNrZXQgbMOkbmthcyB0aWxsIGV0dCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdMOkbGxlciBpbiBkcmlmdHPDpHR0bmluZ3NzdGF0dXMgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyBidWxrc2vDpHJtIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdMOkbGxlciBpbiBpbmNpZGVudHN0YXR1cyBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIGJ1bGtza8Okcm0gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBzb20gZ8O2ciBkZXQgbcO2amxpZ3QgYXR0IGzDpG5rYSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgdGlsbCBldHQgYW5uYXQgb2JqZWt0IGkgem9vbXZ5biBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBrb21tYSDDpXQgaGlzdG9yaWtlbiBmw7ZyIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGtvbW1hIMOldCBoaXN0b3Jpa2VuIGbDtnIgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgem9vbXZ5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHRhIGJvcnQgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgZGVzcyB6b29tdnkgYXYgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCB2aXNhIGzDpG5rYXJuYSB0aWxsIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gc29tIGVuIHRyw6RkdnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBkdXBsaWNlcmEgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgw7Z2ZXJzaWt0ZW4gw7Z2ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgZHVwbGljZXJhIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIHpvb212eW4gYXYgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCByZWRpZ2VyYSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSB6b29tdnluIGF2IGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgZ8OlIHRpbGxiYWthIGkgem9vbXZ5biBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBza3JpdmEgdXQgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgem9vbXZ5biBhdiBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCB6b29tYSBpbiBww6UgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgw7Z2ZXJzaWt0ZW4gw7Z2ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBoaXN0b3Jpa2VuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgKG9tdsOkbmQgb3JkbmluZykgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RlbiBzdGFuZGFyZGthdGVnb3JpIHNvbSB2aXNhcyBvbSBpbmdlbiBrYXRlZ29yaSBoYXIgdmFsdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWVyYXJlbiBmw7ZyIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCwgdC5leC4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFN0YW5kYXJkdsOkcmRldCDDpHIgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVXRsw7ZzZXIgQ29uZmlnSXRlbUZldGNoLWlua2FsbGFyZW4gYXV0b21hdGlza3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZyBVdHRyeWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb24gVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnT20ga8O2cm5pbmdlbiBhdiBDb25maWdJdGVtQUNMIGthbiB1bmR2aWthcyBnZW5vbSBhdHQga29udHJvbGxlcmEgY2FjaGVsYWdyYWRlIGbDpGx0YmVyb2VuZGVuLiBEZXR0YSBrYW4gZsO2cmLDpHR0cmEgbGFkZG5pbmdzdGlkZXJuYSBmw7ZyIGZvcm11bMOkciwgbWVuIG3DpXN0ZSBhdmFrdGl2ZXJhcyBvbSBBQ0xNb2R1bGVzIHNrYSBhbnbDpG5kYXMgZsO2ciBJVFNNQ29uZmlnSXRlbS0gb2NoIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdWaWxrZW4gYWxsbcOkbiBpbmZvcm1hdGlvbiB2aXNhcyBpIHJ1YnJpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3Rpdic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogNDQsNDUgY20gKDE3LDUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDgwLDAxIGNtICgzMSw1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktdHVtcyByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS10dW1zIGt1Z2dzdMOlbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHR1bSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLXR1bXMga3VnZ3N0w6VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdHVtICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHR1bSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHR1bSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogMTQ2LDY4IGNtICg1Nyw3NSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0dW0gKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHR1bSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDE4Niw2OSBjbSAoNzMsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHR1bSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0dW0gKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogMTcsNzggY20gKDcgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCB0dW0gKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgdHVtICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSZWRvdmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzc3RpbGxkZWxuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdMO2cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwIGF2IGFwcGFyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlrYXBhY2l0ZXQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJpdHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnlnZ25hZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2dyw6Ruc3NuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0ZXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRldCBwZXIgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0bMOkc2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAgYXYga29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS3VuZGNlcnRpZmlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnUHJvZ3JhbXZhcmEgZsO2ciBrbGllbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLdW5ka2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2xvY2tzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdLbG9ja2hhc3RpZ2hldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kc2lnbmVyYW5kZSBjZXJ0aWZpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlZm9uIGbDtnIga29uZmVyZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0YSBkaXN0cmlidXTDtnJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lcmhhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdLb250cmFrdHN0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdBdnRhbHNwZXJpb2QgZnLDpW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnQXZ0YWxzdGlkIHRpbGwgb2NoIG1lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdTbGFkZGzDtnMgdGVsZWZvbiAoREVDVC10ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0bmFkc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW50YWwgbGljZW5zZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIGbDtnIgc2thcGFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0FucGFzc2F0IHN0w6RsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlcmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYWt0dXJhbnMgZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIGbDtnIgYmVzdMOkbGxuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSBmw7ZyIHRlY2tuaW5nc29wdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXR1bSBmw7ZyIHV0Z2l2bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWthdCBmw7ZyIGRva3VtZW50c2lnbmVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RjZXJ0aWZpa2F0IChTL01JTUUtY2VydGlmaWthdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQW5zdMOkbGxuaW5nc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnSVAtYWRyZXNzIGbDtnIgc2x1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1VwcGjDtnJhbmRlIGF2IHN0w7ZkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVXRnw6VuZ3NkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuIGjDpXJkZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0JyYW5kdsOkZ2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0VuZXJnaWxhZ3JpbmcgbWVkIHN2w6RuZ2hqdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0FsbG3DpG4gaW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSMOlcmR2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSMOlcmR2YXJ1bW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0jDpXJkdmFyYSBWaWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRldHMtIG9jaCDDpXRrb21zdGhhbnRlcmluZyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RlcmluZ3Nrb3N0bmFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdGYWt0dXJhbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFuZ2VudGJvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELW1vbml0b3IgKGZseXRhbmRlIGtyaXN0YWxsc2vDpHJtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELW1vbml0b3IgKGxqdXNlbWl0dGVyYW5kZSBkaW9kKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdGYXN0IHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhZ2VyIDE6IEZ5c2lza3QgbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFnZXIgMjogRGF0YWzDpG5rbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhZ2VyIDM6IE7DpHR2ZXJrc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhZ2VyIDM6IE7DpHR2ZXJrc2xhZ2VyIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGFnZXIgNDogVHJhbnNwb3J0bGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhZ2VyIDU6IFNlc3Npb25zbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFnZXIgNjogUHJlc2VudGF0aW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFnZXIgNzogQXBwbGlrYXRpb25zbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnSHlyZXNhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2Vuc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnNueWNrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGF2IGxpY2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zcGVyaW9kIGZyw6VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGljZW5zcGVyaW9kIHRpbGwgb2NoIG1lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aXVtasOkcm5mb3NmYXRiYXR0ZXJpIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aXVtam9uYmF0dGVyaSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0zDpW5lYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0JlbMOkZ2V0IGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1RpbGx2ZXJrYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbWFsIGxhc3RrYXBhY2l0ZXQgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01pbm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWlubmVzdHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWxsYmVza3Jpdm5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvcm5zIHVwcGzDtnNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3JucyBzdG9ybGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOw6R0dmVyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOw6R0dmVya3NpbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gb20gbsOkdHZlcmtldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTsOkdHZlcmtzc2tpa3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWNrZWwta2FkbWl1bWJhdHRlcmkgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlja2VsLW1ldGFsbGh5ZHJpZGJhdHRlcmkgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0F2dGFsIG9tIHR5c3RuYWRzcGxpa3QgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdBbnRlY2tuaW5nc2Jvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FudGFsIHByb2Nlc3NvcmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FudGFsIFJBTS1tb2R1bGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0FudGFsIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvciAob3JnYW5pc2sgbGp1c2VtaXR0ZXJhbmRlIGRpb2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1LDtnJlbHNla29zdG5hZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ0Jlc3TDpGxsbmluZ3NudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbm5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVXRnw6VuZ2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTi1LT0QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc2thcHNhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cCBhdiB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnlzaXNrYSBrw6Rybm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryw7ZtZsO2cnPDtnJqbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0vDtnB0YSBww6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhY2tkanVwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFjay1lbmhldGVyIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUnVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWtvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLWNlcnRpZmlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdGw7Zyc8OkbGpuaW5nc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdGw7Zyc2VnbGF0IFNMQS1iYXR0ZXJpIChMZWFkLUFjaWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnUHJvZ3JhbXZhcmEgZsO2ciBzZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlIFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXAgYXYgdXR0YWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtdmFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0jDtmd0YWxhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFkcmVzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnRsO2cnZhcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ0xhZ3JpbmdzcGFydGl0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRG90dGVyYm9sYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NhbW1hbmZhdHRuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVHVubiBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1Ryw6VkYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdCbGl4dHNuYWJiIGFuc2x1dG5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsdCBSQU0tbWlubmUgZsO2ciBncmFmaWtrb3J0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbHQgUkFNLW1pbm5lIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgbWVkIHBla3Nrw6RybSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1Rvcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1odWJiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlItaGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1ZWxsIGzDpG5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmJrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/sw_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1RlbmdlbmV6YSByYW1hbmkga3dhIGFqaWxpIHlhIGRhdGEgemEgbWFvbWJpIHppbmF6b2luZ2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0t1dW5nYW5pc2hhIGRhdGEgemEgbWFqaWJ1IHppbmF6b3Rva2EgbmplLic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VzYW5pZGkgd2EgdXNpbWFtaXppIHdhIGtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdCYWRpbGkgdWZhZmFudXppIHdhIHRhYmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQmFkaWxpIHVmYWZhbnV6aSB3YSB0YWJha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVmlwZW5nZWxlIHZ5YSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ2h1amEga3dhIGFqaWxpIHlhIG1hdGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoYWd1YSB0YWJha2Ega3V0b2thIGt3ZW55ZSBvcm9kaGEgeWEga3V0ZW5nZW5lemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGtpcHlhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUYWJha2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdWaXRlbmRvIHZ5YSB3aW5naSB2eWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1VuZ2FuaXNoYSBuYSBueWluZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmFtYmEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG4gYmF0aWxpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOYW1iYSB5YSBraXBlbmdlbGUga2luZ2luZSBjaGEgdXNhbmlkaSBjaGEga3V1bmdhbmlzaGEgbmFjaG8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnS3dlbGkgdW5hdGFrYSBrdWZ1dGEgbWFiYWRpbGlrbyBoYXlhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdKaW5hIGxhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdKaW5hIGhpbGkgdGF5YXJpIGxpbWVrd2lzaGEgdHVtaWthbmEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoZW55ZSBuYW1iYSBpKHopZnVhdGF6bzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOYW1iYSB5YSB0b2xlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSmluYSBsYSBoaWtpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0ppbmEgaGlsaSB0YXlhcmkgbGltZWt3aXNoYSB0dW1pa2FuYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hlbnllIG5hbWJhIGkoeilmdWF0YXpvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ01hdWRodWkgeWEgaGlzdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnTWFuZGhhcmkgaWxpeW9rdXp3YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGkga3dhIGtpbGEgdWt1cnVzYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVGFmdXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1BpYSB0YWZ1dGEga2F0aWthIHRvbGVvIGxpbGlsb3BpdGE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgVXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdUYWFyaWZhIHphIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEgeWEgc2FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyBsYSBzYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ013aXNobyBrdWJhZGlsaXNod2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTXdpc2hvIGt1YmFkaWxpc2h3YSBuYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ0FpbmEgeWEga2lwZW5nZWxlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnQ2h1amEga3dhIGFpbmEnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1VuYXRha2Ega3VlbmRlbGVhPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnS2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ01hcmVqZW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdVZW5kZXNoYWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdPbnlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVHVraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0hhbGkgeWEgbWF0dW1pemkgeWEgaGlpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdIYWxpIHlhIHR1a2lvIHlhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSGFrdW5hIHJ1aHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEgdHVraW8gbGEgc2FzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdLYXRpa2F0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnS2ltYSBjaGEganV1IGNoYSBuYW1iYSB5YSBlbGVtZW50aSBtb2phd2Fwbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdJbWVpc2hhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWF0ZW5nZW5lem8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdLd2FuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0lsaXlvcGFuZ3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1Jla2ViaXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnU3RhYWZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ01hcGl0aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ0phcmliaW8vIE1hc3dhbGkgbmEgTWFqaWJ1JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FuZ2FsaWEgbWFqaW5hIHlhIGtpcGVrZWUgdHUga2F0aWthIHRhYmFrYSBzYXdhIGxhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAoXCdUYWJha2FcJykgYXUgem90ZSAoXCdab3RlXCcpLCBhbWJheW8gaW5hbWFhbmlzaGEga2lsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2lsaWNob3BvIGtpbWVqdW11aXNod2Egd2FrYXRpIG5ha2FsYSBwYWNoYSB6aW5hYW5nYWxpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ1ZpcGVuZ2VsZSB2eWEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FuaWRpIG1vZHVsaSB5YSB0dWtpbyB5YSBraXBlbmdlbGUgYW1iYWNobyBraW5hd2V6ZXNoYSBrdWluZ2lhIGthdGlrYSBoaXN0b3JpYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS2lrb21vIGNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2lwYW5nYSBuamlhIGNoYSBtYXppbmdpcmEgeWEgbnl1bWEgY2hhIHV0YWZ1dGFqaSB3YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVGVuZ2VuZXphIG5hIHNpbWFtaWEgdWZhZmFudXppIHdhIHZpcGVuZ2VsZSB2eWEgdXNhbmlkaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGEgY2hhZ3VvIG1pc25naSBrdXR1bWlrYSBrYXRpa2Egc2lmYSBrd2EgYWppbGkgeWEgc2tyaW5pIHlhIGt1dGFmdXRhIHlhIHRpa2V0aS4KTWZhbm86CiJVbWJpem8gbGEgTXVkYSBsYSBLdXRlbmdlbmV6YSBUaWtldGk9IG13YWthOyBNd2Fuem8gd2EgTXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9IE13aXNobzsgUG9pbnRpIHlhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRhIGNoYWd1by1tc2luZ2kga3V0dW1pYSBrYXRpa2Egc2lmYSBrd2EgYWppbGkgeWEgc2tyaW5pIHlhIGt1dGFmdXRhIHlhIHRpa2V0aToKIk13YWthIHdhIGt1YW56YSB3YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0yMDEwOyBNd2V6aSB3YSBrdWFuemEgd2EgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MTA7IFNpa3UgeWEga3VhbnphIHlhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPTQ7IE13YWthIHdhIGt1YWNoYSB3YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aSA9MjAxMDsgTXdlemkgd2Ega3VhY2hhIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpID0gMTE7IFNpa3UgeWEga3VhY2hhIHlhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPTM7ICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBydWh1c2EgemluYXpvaGl0YWppa2Ega3VwYXRhdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZ5YSBJVFNNIGt3YSBrdXR1bWlhIGtpb2xlc3VyYSBjaGEgamVuZXJpa2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHJ1aHVzYSB6aW5hem9oaXRhamlrYSBrdXBhdGF2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1dGFmdXRhIHZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBydWh1c2EgemluYXpvaGl0YWppa2Ega3VwYXRhdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZ5YSBJVFNNIGt3YSBrdXR1bWlhIGtpb2xlc3VyYSBjaGEgamVuZXJpa2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgbW9kdWxpIHlhIG1hcGl0aW8ga3Vvbnllc2hhIG1hbmRoYXJpIG5kb2dvIHlhIG9yb2RoYSB5YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzZW1pIHphIG1hcmEga3dhIG1hcmEgbW9qYW1vamEga3dhIGtpbGEgdGFiYWthIGxhIGtpcGVuZ2VsZSBjaCB1c2FuaWRpIGt1YW5nYWxpYSBqaW5hIGxhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBuYSBrdW9ueWVzaGEgdWp1bWJlIHdhIG1ha29zYSB5YW5heW9odXNpYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzaWZhIHlhIHRpa2V0aSBjaGFndW8tbXNpbmdpIGt3YSBhamlsaSB5YSBrdXBhbmdhIG1hdG9rZW8geWEgdXRhZnV0YWppIHdhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzaWZhIHlhIHRpa2V0aSBjaGFndW8tbXNpbmdpIGt3YSBhamlsaSB5YSBrdXBhbmdhIG1hdG9rZW8geWEgdXRhZnV0YWppIHdhIHRpa2V0aSB5YSB1ZW5kZXNoYWppIGh1dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgbXBhbmdpbGlvIHdhIHRpa2V0aSBjaGFndW8tbXNpbmdpIGthdGlrYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB5YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IFphIHNhc2EganV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtcGFuZ2lsaW8gd2EgdGlrZXRpIGNoYWd1by1tc2luZ2kga2F0aWthIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLiBKdXU6IEtvbmd3ZSBqdXUuIENoaW5pOiBaYSBzYXNhIGp1dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtcGFuZ2lsaW8gd2EgdGlrZXRpIGNoYWd1by1tc2luZ2kga2F0aWthIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIHRpa2V0aSB5YSBtY2hha2F0byBodXUuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IFphIHNhc2EganV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGlsaXlvdGFmdXR3YSBpbGl5b29ueWVzaHdhIGNoYWd1byBtc2luZ2kga3dhIHNrcmluaSB5YSBrdXRhZnV0YSB0aWtldGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGlsaXlvdGFmdXR3YSBpbGl5b29ueWVzaHdhIGNoYWd1byBtc2luZ2kga3dhIHNrcmluaSB5YSBrdXRhZnV0YSB0aWtldGkuIE1mYW5vOiAiS2lib255ZSIgbGF6aW1hIGl3ZSBuYSBqaW5hIGxhIHVnYSB3ZW55ZSBuZ3V2dSBrd2EgaGFwYSBuaSBcJ1hcJywgIk1hdWRodWkiIGxhemltYSBpd2UgbmEgdGhhbWFuaSB1YSB1Z2Egd2VueWUgbmd1dnUga3V0ZWdlbWVhbmEgbmEgYWluYSB5YSB1Z2Egd2VueWUgbmd1dnUsIE1hdGluaTpcJ01hdGluaVwnLCBLdW5qdXppOiBcJzFcJywgVGFyZWhlL011ZGE6ICBNd2FrYSB3YSBrdWFuemEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2E9MTk3NDsgTXdlemkgd2Ega3VhbnphIHdhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhPTAxOyBTaWt1IHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YT0yNjsgU2FhIHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MDA7IERha2lrYSB5YSBrdWFuemEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSAwMDsgU2VrdW5kZSB5YSBrdWFuemEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSAwMDsgTXdha2Egd2Ega3Vpc2hhIHdhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0yMDEzOyBNd2V6aSB3YSBrdWlzaGEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTAxOyBTaWt1IHlhIGt1aXNoYSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MjY7IFNhYSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTIzOyBEYWtpa2EgeWEga3Vpc2hhIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID01OTsgU2VrdW5kZSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTU5OyBuYSBhdSBVbWJpem8gbGEgcG9pbnRpIHlhIG11ZGEgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0gV2VlazsgTXdhbnpvIHdhIHBvaW50aSB5YSBtdWRhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IEthYmxhOyBUaGFtYW5pIHlhIHBvaW50aSB5YSBtdWRhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IDc7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpcGVuZ2VsZSBjaGEgY2hhZ3VvIG1zaW5naSBjaGEgdGFiYWthIGxhIFwnS2lwZW5nZWxlY2hhIFVzYW5pZGkgY2hhIElUU01cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHVyZWZ1IGt3YSBraWplbnppIGNoYSBtaGFyaXJpIHdhIG1hdGluaSB0YWppbmkga3dhIHNrcmluaSBoaWkuIEluZ2l6YSBuYW1iYSAoUGlrc2VsaSkgYXUgdGhhbWFuaSB5YSBhc2lsaW1pYSAoSW5heW9odXNpa2EpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG5hbWJhIHlhIHNhZnUgbWxhbG8ga3dhIG1oYXJpcmkgd2EgdWZhZmFudXppIHdhIENJIGthdGlrYSBraW9sZXN1cmEgY2hhIGtpb25nb3ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEgdXBlbyB3YSBrdXRhZnV0YSBrd2Egc2tlcmluaSB5YSBLaXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpa29tbyBjaGEga3V0YWZ1dGEga3dhIHNrcmluaSB5YSBLdXRhZnV0YSBLaXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gIGNoYSBXYWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSB1cGVvIHdhIGt1dGFmdXRhIGt3YSBza2VyaW5pIHlhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lrb21vIGNoYSBrdXRhZnV0YSBrd2Egc2tyaW5pIHlhIEt1dGFmdXRhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSAgY2hhIFdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2FmdSB3aW1hIHphIENJIHppbGl6b29ueWVzaHdhIGthdGlrYSBtYW5kaGFyaSB5YSBqZWR3YWxpIHRhdGEgbGEga2l1bmdvLGt1dGVnZW1lYW5hIG5hIHRhYmFrYSBsYSBDSS4gS2lsYSBpbmdpem8gbGF6aW1hIGxpd2UgbmEga2lhbWJpc2hpIGF3YWxpIGppbmEgbGEgdGFiYWthIG5hIDo6ICggbWZhbm8gVGFyYWtpbGlzaGk6OikuS3VuYSB2aXVtYmkgdmljaGFjaGUgdnlhIENJIGFtYmF2eW8gdmlwbyBrd2EgQ0kgem90ZSAobWZhbm8ga3dlbnllIHRhYmFrYSBsYSB0YXJha2lsaXNoaTogdGFyYWtpbGlzaGk6OmppbmEsIFRhcmFraWxpc2hpOjpIYWxpIHlhQ3VyRGVwLCBUYXJha2lsaXNoaTo6TXVkYSB3YSBrdXRlbmdlbmV6YSkuIEt1b255ZXNoYSBraXVtYmkgY2hhIENJIGtpbW9qYSBraW1vamEga2FtYSB2aWxpdnlvIGZhZmFudWxpd2Ega3dlbnllIHVmYWZhbnV6aSB3YSBDSSwgbXBhbmdpbGlvIHVmdWF0YW8gbGF6aW1hIHV0dW1pa2UgKG1mYW5vIGt3ZW55ZSB0YWJha2EgdGFyYWtpbGlzaGkpOiBUYXJha2lsaXNoaTo6ZGlza2kga3V1OjoxLCBUYXJha2lsaXNoaTo6RGlza2kga3V1IG5ndW11OjoxVXdlem86OjEsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjIsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjI6OlV3ZXpvOjoxLiBLYW1hIGhha3VuYSBpbmdpem8ga3dhIHRhYmFrYSBsYSBDSSwgc2FmdXdpbWEgY2hhZ3VvIG1zaW5naSB6aW5hb255ZXNod2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSW5hZmFmYSB2aXBlbmdlbGVlIGFtYmF2eW8gdmluYXBhdGlrYW5hIGt3YSBhamlsaSB5YSBcJ0tpdGVuZG9cJyBrYXRpa2EgbmdhemkgeWEgdGF0dSB5YSBtdXVuZG8gd2EgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgdmlwZW5nZWxlIGFtYmF2eW8gdmluYXBhdGlrYW5hIGthdGlrYSBuZ2F6aSB5YSBrd2FuemEgeWEgbXV1bmRvIHdhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSB2aXBlbmdlbGUgYW1iYXZ5byB2aW5hcGF0aWthbmEga2F0aWthIG5nYXppIHlhIHBpbGkgeWEgbXV1bmRvIHdhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLaXBlbmdlbGUgY2hhIFVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdIYWxpIHlhIGt1dHVtaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ05ha2FsYSBwYWNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW55ZXNoYSB1Z2EgemEga2ljaHdhIGNoYSBoYWJhcmkga2F0aWthIHNrcmluaSB5YSB1Z2Egd2EgSVRTTSB1bGlvb25nZXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSBraXBlbmdlbGUgY2hhIGtpdGVuZG8gY2ggd2luZ2kgY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrd2EgbWFpbmdpcmEgeWEgbWJlbGUgeWEgd2FrYWxhIGt1ZmFueWEga2F6aSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIHphaWRpIHlhIGtpbW9qYSBrd2EgbXVkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEga2lwZW5nZWxlIGNoYSBraXRlbmRvIGNoYSB3aW5naSBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGt3YSBtYWt1bmRpIHlhbGl5b29yb2RoZXNod2EgdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnVXNhamlsaSB3YSBtb2R1bGkgeWEga2lvbGVzdXJhIGNoYSBqdW1sYSBrd2FhamlsaSBsYSB0YWJha2EgbGEga2loYW1zaGFqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdLaXBlbmdlbGUgY2hhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB3YSB0aWtldGkgeml0YWthem8gb255ZXNod2Ega2F0aWthIG1hdG9rZW8geWEgbWNoYWthdG8gaHV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsaSB5YSBrdWFuZ2FsaWEgbWFrdW5kaSB5YW5heW9odXNpa2EgbmEgdGFiYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSB5YSBrdWFuZ2FsaWEgbWFrdW5kaSB5YW5heW9odXNpa2EgbmEga2lwZW5nZWxlIGNoYSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsaSB5YSBrdXRlbmdlbmV6YSB0YWt3aW11IHphIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTT4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB0YSB0aWtldGkgeml0YWthem9vbnllc2h3YSBrYXRpa2Ega2lsYSB1a3VyYXNhIHdhIG1hdG9rZW8geWEgdXRhZnV0YWppIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgdGEgdGlrZXRpIHppdGFrYXpvb255ZXNod2Ega2F0aWthIGtpbGEgdWt1cmFzYSB3YSBtYXRva2VvIHlhIHV0YWZ1dGFqaSBrYXRpa2Ega2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnTWFwaXRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnUGFyYW1ldGEga3dhIG1hemluZ2lyYSB5YSBueXVtYSB5YSBkYXNoaWJvZGkgbWFwaXRpbyB5YSBvcm9kaGEgeWEgbXRlamEgbXR1bWlhamkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIFwnXCdLaWt1bmRpXCdcJyBraW5hdHVtaWthIGt1enVpYSBrdWZpa2lhIGt1Y2hvbWVrYSAobWZhbm8gS2lrdW5kaTpVdGF3YWxhO2tpa3VuZGkgY2hhIDE7a2lrdW5kaSBjaGEgMjspLiBcJ1wnQ2hhZ3VvLW1zaW5naVwnXCcgaW5haGFraWtpIGthbWEgbWNob21la28gdW1ld2V6ZXNod2Ega3dhIG1jaGFndW8tbXNpbmdpIGF1IGthbWEgbXR1bWl6aSBhbmFoaXRhamkga3V3ZXplc2hhIGt3YSBta29uby4gXCdcJ0hpZmFkaGltdWRhVFRMS2lhbWJvXCdcJyBuaSBtdWRhIHdhIGhpZmFkaGkgbXVkYSBrYXRpa2EgZGFraWthIGt3YSBtY2hvbWVrby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICdQYXJhbWV0YSBrd2EgbWF6aW5naXJhIHlhIG55dW1hIHlhIGRhc2hpYm9kaSBtYXBpdGlvIHlhIG9yb2RoYSB5YSBtdGVqYSBtdHVtaWFqaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gXCdcJ0tpa3VuZGlcJ1wnIGtpbmF0dW1pa2Ega3V6dWlhIGt1ZmlraWEga3VjaG9tZWthIChtZmFubyBLaWt1bmRpOlV0YXdhbGE7a2lrdW5kaSBjaGEgMTtraWt1bmRpIGNoYSAyOykuIFwnXCdDaGFndW8tbXNpbmdpXCdcJyBpbmFoYWtpa2kga2FtYSBtY2hvbWVrbyB1bWV3ZXplc2h3YSBrd2EgbWNoYWd1by1tc2luZ2kgYXUga2FtYSBtdHVtaXppIGFuYWhpdGFqaSBrdXdlemVzaGEga3dhIG1rb25vLiBcJ1wnSGlmYWRoaW11ZGFUVExLaWFtYm9cJ1wnIG5pIG11ZGEgd2EgaGlmYWRoaSBtdWRhIGthdGlrYSBkYWtpa2Ega3dhIG1jaG9tZWtvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgcmFuZ2kgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBtZmFubyBydWh1c2EgemEgdmlrdW5kaSBrd2Egc2lmYSB6YSBrYXRhbG9naSB6YSB1anVtbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgdWt1cmFzYSAoYW1iYXZ5byB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdmltZW9ueWVzaHdhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRmFueWEga2l0ZWNuZG8gY2hhIHVzYW5pZGlzaHdhamkga3dhIGtpbGEgdHVraW8gKGthbWEgS2ljaG9jaGV6aSkga3dhIGtpbGEgaHVkdW1hIHlhIHdhdnV0aSBpbGl5b3NhbmlkaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga3V0YWZ1dGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGt1dGFmdXRhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBrdXRhZnV0YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSBpbGl5b2t1endhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2lsaWNob29uZ2V6YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2lsaWNob2hhcmlyaXdhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gY2hhIGhpc3RvcmlhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGNoYSBrdWNoYXBpc2hhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1VwZW5kZWxlbyB1bmFvdGFraXdhIGlsaSBrdWZ1dGEgbWFiYWRpbGlrby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYXdla2EgaGFsaSB5YSBrdXR1bWlhIGthdGlrYSBza3JpbmkgeWEgd2luZ2kgd2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIGhhbGkgeWEgdHVraW8ga2F0aWthIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraW9uZ28ga2F0aWthIG1lbnl1IGFtYmFjaG8ga2luYXVuZ2FuaXNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgbmEga2lwZW5nZWUga2luZ2luZSBrYXRpa2EgbWFuZGhhcmkgaWxpeW9rdXp3YSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgeWEga2lvbGV1c3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGt3ZW55ZSAgbWVueXUga3V3ZXphIGt1ZmlraWEgaGlzdG9yaWEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSB5YSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrd2VueWUgIG1lbnl1IGt1d2V6YSBrdWZpa2lhIGhpc3RvcmlhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSBpbGl5b2t1endhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBrdWhhcmlyaSAga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIGlsaXlva3V6d2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3V0b2EgbmFrYWxhIHBhY2hhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFwaXRpbyB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBrdXRvYSBuYWthbGEgcGFjaGEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3VoYXJpcmkgIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSBpbGl5b2t1endhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga3dlbnllIG1lbnl1IGlsaSBrdXJ1ZGkgbnl1bWEga3dlbnllIG11b25la2FubyB3YSBtYWJhZGlsaWtvIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3VjaGFwaXNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3VrdXphIGthdGlrYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hcGl0aW8geWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgKGt3YSBtcGFuZ2lsaW8gd2Ega3VydWRpIG55dW1hKSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS2l0YW1idWxpc2hpIGNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGksIG1mYW5vLkNvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBDaGFndS1tc2luZ2kgbmkgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdUYWJha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1VoYXNpYnUgd2EgbXVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnVXRhd2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0plbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdLaW9sZXN1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VuZW8ga2F6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdQcm9ncmFtdSB5YSBidXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCb2Fib255ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnS29tcHl1dGEgeWEgbWtvbm9uaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNZmFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnS2lwYW55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTXRhbmRhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0VuZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnTWF0b2tlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0NodW1iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0t1YmFsaWFubyB5YSBraXZhbmdvIGNoYSBodWR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0tpd2FuZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/th_TH_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4guC4suC5gOC4guC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4leC4reC4muC4quC4meC4reC4h+C4l+C4teC5iOC4quC5iOC4h+C4reC4reC4gSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4oyBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+C4meC4tOC4ouC4suC4oeC4guC4reC4h+C4hOC4peC4suC4quC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn4LiZ4Li04Lii4Liy4Lih4LiC4Lit4LiH4LiE4Lil4Liy4Liq4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn4LiV4Lix4Lin4LiB4Lij4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+C5gOC4peC4t+C4reC4geC4hOC4peC4suC4quC4iOC4suC4geC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4quC4o+C5ieC4suC4hyBDb25maWcgSXRlbSDguYPguKvguKHguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfguITguKXguLLguKonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKHguILguK3guIcgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguLjguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4LmE4Lib4LiX4Li14LmI4Lit4Li34LmI4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfguIjguLPguJnguKfguJnguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLLguYTguKHguYjguJbguLnguIHguJXguYnguK3guIchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+C4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4reC4t+C5iOC4meC5huC4l+C4teC5iOC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4hyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4peC4mkNoYW5nZSDguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyDguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn4LiK4Li34LmI4Lit4LiX4Li14LmI4LiW4Li54LiB4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmC4LiU4LiiIENvbmZpZ0l0ZW1zIOC4oeC4teC4iOC4s+C4meC4p+C4meC4lOC4seC4h+C4leC5iOC4reC5hOC4m+C4meC4teC5iSAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4Lin4Lit4Lij4LmM4LiK4Lix4LmJ4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+C4iuC4t+C5iOC4reC4l+C4teC5iOC4luC4ueC4geC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4oiBDb25maWdJdGVtcyDguKHguLXguIjguLPguJnguKfguJnguJTguLHguIfguJXguYjguK3guYTguJvguJnguLXguYkgKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Lib4Lij4Liw4Lin4Lix4LiV4Li0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfguYDguKfguKXguLLguJfguLXguYjguKrguKPguYnguLLguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54LihJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NvbmZpZyBJdGVtcyDguYPguJnguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4hOC5ieC4meC4q+C4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfguITguYnguJnguKvguLLguYDguKfguK3guKPguYzguIrguLHguYjguJnguJfguLXguYjguYHguKXguYnguKfguJTguYnguKfguKLguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfguILguYnguK3guKHguLnguKXguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguYzguIHguLLguKPguJPguYzguJvguLHguIjguIjguLjguJrguLHguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4Lil4LmI4Liy4Liq4Li44LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lOC5guC4lOC4oic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4reC4reC4muC5gOC4iOC4hCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ+C4geC4o+C4reC4h+C4leC4suC4oeC4m+C4o+C4sOC5gOC4oOC4lyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LiV4LmI4Lit4LmE4Lib4Lir4Lij4Li34Lit4LmE4Lih4LmIPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfguJXguYnguK3guIfguIHguLLguKMgRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5geC4quC4lOC4h+C4m+C4o+C4sOC4p+C4seC4leC4tCDguYTguKHguYjguYTguJTguYnguKPguLHguJogVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmB4Liq4LiU4LiH4Lib4Lij4Liw4Lin4Lix4LiV4Li0IOC5hOC4oeC5iOC5hOC4lOC5ieC4o+C4seC4miBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn4Lit4LmJ4Liy4LiH4Lit4Li04LiHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfguYTguKHguYjguKHguLXguJzguKXguKXguLHguJ7guJjguYwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+C4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn4LiE4Liz4LmA4LiV4Li34Lit4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguJ7guLHguJLguJnguLLguIHguLLguKPguILguK3guIcgY29uZmlnIGl0ZW0g4LiZ4Li14LmJICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jOC4guC4reC4hyBjb25maWcgaXRlbSDguJnguLUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfguYTguKHguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C5gOC4q+C4leC5jOC4geC4suC4o+C4k+C5jOC4m+C4seC4iOC4iOC4uOC4muC4seC4mSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfguKPguLDguKvguKfguYjguLLguIcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ+C4iOC4s+C4meC4p+C4meC4quC4ueC4h+C4quC4uOC4lOC4guC4reC4h+C4q+C4meC4tuC5iOC4h+C4reC4uOC4m+C4geC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfguKvguKHguJTguK3guLLguKLguLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfguIHguLLguKPguJTguLnguYHguKXguKPguLHguIHguKnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfguIHguLLguKPguJnguLPguKPguYjguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+C4geC4suC4o+C4p+C4suC4h+C5geC4nOC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfguIvguYjguK3guKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+C5gOC4geC4qeC4teC4ouC4kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfguJXguLHguKfguK3guKLguYjguLLguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+C4l+C4lOC4quC4reC4mi9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfguJXguKPguKfguIjguKrguK3guJrguIrguLfguYjguK3guYDguInguJ7guLLguLDguYDguJfguYjguLLguJnguLHguYnguJnguJfguLXguYjguK3guKLguLnguYjguYPguJkgQ29uZmlnSXRlbSDguIrguLHguYnguJnguYDguJTguLXguKLguKfguIHguLHguJkgKOC4iuC4seC5ieC4mSkg4Lir4Lij4Li34Lit4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJfguLHguYnguIfguKvguKHguJQpIOC4i+C4tuC5iOC4h+C4q+C4oeC4suC4ouC4hOC4p+C4suC4oeC4p+C5iOC4skNvbmZpZ0l0ZW0g4LiX4Li14LmI4Lih4Li14Lit4Lii4Li54LmI4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiI4Liw4LiW4Li54LiB4LiZ4Liz4LmA4LiC4LmJ4Liy4Lia4Lix4LiN4LiK4Li14LmA4Lie4Li34LmI4Lit4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiL4LmJ4Liz4LiB4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmC4Lih4LiU4Li54Lil4LiB4Li04LiI4LiB4Lij4Lij4Lih4LiC4Lit4LiHQ29uZmlnIGl0ZW0g4LiX4Li14LmI4LiK4LmI4Lin4Lii4LmD4Lir4LmJ4LmA4LiC4LmJ4Liy4Liq4Li54LmI4Lij4Liw4Lia4Lia4Lib4Lij4Liw4Lin4Lix4LiV4Li04LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4Liq4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn4LiB4Liy4Lij4LiI4Liz4LiB4Lix4LiUIENvbmZpZ3VyYXRpb24gSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0g4LiE4LmJ4LiZ4Lir4LiyIGJhY2tlbmQgcm91dGVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfguKrguKPguYnguLLguIfguYHguKXguLDguIjguLHguJTguIHguLLguKPguITguLPguJnguLTguKLguLLguKHguKrguLPguKvguKPguLHguJogQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4LiI4Liw4LmD4LiK4LmJ4LmD4LiZ4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinIOC4leC4seC4p+C4reC4ouC5iOC4suC4hzogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+C4guC5ieC4reC4oeC4ueC4peC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4l+C4teC5iOC4iOC4sOC5g+C4iuC5ieC5g+C4meC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4pyDguJXguLHguKfguK3guKLguYjguLLguIc6ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguYDguK3guLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4Li04LiX4LiY4Li04LmM4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4LmA4Lit4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU03guYLguJTguKLguYPguIrguYnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguYDguK3guLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYLguKHguJTguLnguKXguKDguLLguJ7guKPguKfguKHguYPguJnguIHguLLguKPguYHguKrguJTguIfguKHguLjguKHguKHguK3guIfguILguJnguLLguJTguYDguKXguYfguIHguILguK3guIfguKPguLLguKLguIHguLLguKMgIENvbmZpZ3VyYXRpb24gSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguJnguLTguJ7guIjguJnguYzguJfguLHguYjguKfguYTguJvguYDguJvguYfguJnguKPguLLguKLguJrguLjguITguITguKXguYPguJlDb25maWdJdGVtIOC5geC4leC5iOC4peC4sOC4iuC4seC5ieC4mSDguYDguJ7guLfguYjguK3guJXguKPguKfguIjguKrguK3guJrguIrguLfguYjguK0gQ29uZmlnSXRlbSDguYHguKXguLDguYDguJ7guLfguYjguK3guYHguKrguJTguIfguILguYnguK3guITguKfguLLguKHguJzguLTguJTguJ7guKXguLLguJTguJfguLXguYjguKrguK3guJTguITguKXguYnguK3guIfguIHguLHguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4muC4leC4seC5i+C4p+C4guC4reC4h+C4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4Lia4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiC4Lit4LiH4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIHguLLguKPguIjguLHguJTguYDguKPguLXguKLguIfguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguYPguJnguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4geC4suC4o+C4iOC4seC4lOC5gOC4o+C4teC4ouC4h+C5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C4guC4reC4h+C4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4peC4ueC4geC4hOC5ieC4siDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIHguLLguKPguIjguLHguJTguYDguKPguLXguKLguIfguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguYPguJnguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguILguK3guIfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIHguLLguKPguJnguLXguYkg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiX4Li14LmI4LmB4Liq4LiU4LiH4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguJfguLXguYjguJbguLnguIHguYHguKrguJTguIfguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKcg4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHOiAi4LiE4Li14Lii4LmMIiDguJXguYnguK3guIfguKHguLXguIrguLfguYjguK3guILguK3guIfguJ/guLTguKXguJTguYzguYHguJrguJrguYTguJTguJnguLLguKHguLTguIHguYPguJnguIHguKPguJPguLXguJnguLXguYnguITguLfguK0gXCdYXCcgICLguYDguJnguLfguYnguK3guKvguLIiIOC4leC5ieC4reC4h+C4oeC4teC4hOC5iOC4suC4guC4reC4h+C4n+C4tOC4peC4lOC5jOC5hOC4lOC4meC4suC4oeC4tOC4geC4i+C4tuC5iOC4h+C4guC4tuC5ieC4meC4reC4ouC4ueC5iOC4geC4seC4muC4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4n+C4tOC4peC4lOC5jOC5hOC4lOC4meC4suC4oeC4tOC4gSDguILguYnguK3guITguKfguLLguKE6IOC4hOC4t+C4rSBcJ+C4guC5ieC4reC4hOC4p+C4suC4oVwnICDguYDguKHguJnguLnguYHguJrguJrguYDguKXguLfguYjguK3guJnguKXguIc6IFwnMVwnLCAg4Lin4Lix4LiZ4LiX4Li14LmIIC8g4LmA4Lin4Lil4LiyOiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhciA9IDE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4reC4muC5gOC4iOC4geC4leC5jOC4ouC5iOC4reC4ouC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4hOC4peC4suC4qiBcJ0lUU01Db25maWdJdGVtXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguKfguLLguKHguKrguLnguIfguKrguLPguKvguKPguLHguJrguITguK3guKHguYLguJ7guYDguJnguJnguJXguYzguYHguIHguYnguYTguILguILguYnguK3guITguKfguLLguKHguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK3guJnguLXguYkg4LmD4Liq4LmI4Lir4Lih4Liy4Lii4LmA4Lil4LiCICjguJ7guLTguIHguYDguIvguKUpIOC4q+C4o+C4t+C4reC4hOC5iOC4suC4o+C5ieC4reC4ouC4peC4sCAo4LmA4LiX4Li14Lii4LiaKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIjguLPguJnguKfguJnguYHguJbguKfguKrguLPguKvguKPguLHguJrguJXguLHguKfguYHguIHguYnguYTguILguIHguLLguKPguJnguLTguKLguLLguKEgQ0kg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4Liq4LiC4Lit4LiH4Lic4Li54LmJ4LiU4Li54LmB4Lil4Lij4Liw4Lia4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC4teC4lOC4iOC4s+C4geC4seC4lOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4rSBBZ2VudElUU01Db25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiC4Li14LiU4LiI4Liz4LiB4Lix4LiU4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4LitIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC4teC4lOC4iOC4s+C4geC4seC4lOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4rSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguYHguKrguJTguIcgQ0lzIOC5g+C4meC4leC4suC4o+C4suC4h+C4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4h+C4oeC4uOC4oeC4oeC4reC4h+C4l+C4teC5iOC4i+C4seC4muC4i+C5ieC4reC4meC4i+C4tuC5iOC4h+C4guC4tuC5ieC4meC4reC4ouC4ueC5iOC4geC4seC4muC4hOC4peC4suC4qiBDSSDguKPguLLguKLguIHguLLguKPguIHguLLguKPguJvguYnguK3guJnguYHguJXguYjguKXguLDguKPguLLguKLguIHguLLguKPguIjguLDguJXguYnguK3guIfguJnguLPguKvguJnguYnguLLguJTguYnguKfguKLguIrguLfguYjguK3guITguKXguLLguKrguYHguKXguLDguYDguITguKPguLfguYjguK3guIfguKvguKHguLLguKLguJfguKfguLTguKDguLLguITguITguLnguYggKOC5gOC4iuC5iOC4meC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDogOikg4Lih4Li14LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIENJIOC5gOC4nuC4teC4ouC4h+C5hOC4oeC5iOC4geC4teC5iOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jCDguJfguLXguYjguYPguIrguYnguIHguLHguJnguJfguLHguYjguKfguYTguJvguYPguJkgQ0lzIOC4l+C4seC5ieC4h+C4q+C4oeC4lCAo4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4Liq4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOiDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4iuC4t+C5iOC4rSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjpDdXJEZXBsU3RhdGUsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo6Q3JlYXRlVGltZSkg4LmD4LiZ4LiB4Liy4Lij4LmB4Liq4LiU4LiH4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIENJIOC4leC4suC4oeC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5ieC5g+C4meC4hOC4s+C4meC4tOC4ouC4suC4oSBDSSDguIjguLDguJXguYnguK3guIfguYPguIrguYnguKPguLnguJvguYHguJrguJrguJXguYjguK3guYTguJvguJnguLXguYko4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4Liq4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMKTog4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjEsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoxOjrguITguKfguLLguKHguIjguLg6OjEsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoyLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jDo6Mjo64LiE4Lin4Liy4Lih4LiI4Li4OjoxIOC4q+C4suC4geC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C4m+C5ieC4reC4meC4hOC4peC4suC4quC4l+C4teC5iCBDSSDguYHguKXguYnguKfguITguK3guKXguLHguKHguJnguYzguYDguKPguLTguYjguKHguJXguYnguJnguIjguLDguYHguKrguJTguIfguJXguLLguKHguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYnguYPguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTUNvbmZpZ0l0ZW0gOjpGcm9udGVuZCA6OiBBZ2VudElUU01Db25maWdJdGVtICMjIyBTaG93Q29sdW1ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4l+C4teC5iOC5g+C4iuC5ieC5hOC4lOC5ieC4quC4s+C4q+C4o+C4seC4miBcJ+C4geC4suC4o+C4geC4o+C4sOC4l+C4s1wnIOC5g+C4meC4o+C4sOC4lOC4seC4muC4l+C4teC5iOC4quC4suC4oeC4guC4reC4h+C5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4hyBBQ0wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKPguLLguKLguIHguLLguKPguJfguLXguYjguJfguLXguYjguYPguIrguYnguYTguJTguYnguYPguJnguKPguLDguJTguLHguJrguYHguKPguIHguILguK3guIfguYLguITguKPguIfguKrguKPguYnguLLguIcgQUNMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4l+C4teC5iOC5g+C4iuC5ieC5hOC4lOC5ieC5g+C4meC4o+C4sOC4lOC4seC4muC4l+C4teC5iOC4quC4reC4h+C4guC4reC4h+C5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4hyBBQ0wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+C4i+C5ieC4syc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lir4Lix4Lin4LiC4LmJ4Lit4Lif4Li04Lil4LiU4LmM4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lif4Li04Lil4LiU4LmM4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04Lih4LiC4Lit4LiHIElUU03guYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiE4Li44LiT4Lil4Lix4LiB4Lip4LiT4Liw4LiC4Lit4LiH4LiB4Liy4Lij4LiX4Liz4LiH4Liy4LiZ4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4LihIOC4quC4s+C4q+C4o+C4seC4muC4n+C4o+C4reC4meC4leC5jOC5gOC4reC4meC4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jOC5gOC4nuC4t+C5iOC4reC4l+C4s+C4h+C4suC4meC4geC4seC4muC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4l+C4teC5iOC4oeC4teC4oeC4suC4geC4geC4p+C5iOC4suC4q+C4meC4tuC5iOC4h+C5g+C4meC4q+C4meC4tuC5iOC4h+C4hOC4o+C4seC5ieC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiE4Li44LiT4Lil4Lix4LiB4Lip4LiT4Liw4LiC4Lit4LiH4LiB4Liy4Lij4LiX4Liz4LiH4Liy4LiZ4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4Lih4LmA4LiJ4Lie4Liy4Liw4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Lil4Li44LmI4Lih4LiX4Li14LmI4Lij4Liw4Lia4Li44LmE4Lin4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEdlbmVyaWNJbnRlcmZhY2Ug4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Lix4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Lij4LmJ4Lit4LiH4LiC4LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEdlbmVyaWNJbnRlcmZhY2Ug4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Lix4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Lij4LmJ4Lit4LiH4LiC4LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBHZW5lcmljSW50ZXJmYWNlIOC4quC4s+C4q+C4o+C4seC4muC4iuC4seC5ieC4meC4guC4reC4h+C4nOC4ueC5ieC4o+C5ieC4reC4h+C4guC4rSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfguYLguKHguJTguLnguKXguYPguJnguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguJzguLnguYnguKPguLHguJrguJzguLTguJTguIrguK3guJrguIHguKXguLjguYjguKHguKrguLPguKvguKPguLHguJrguITguKXguLLguKonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguYPguJnguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguJzguLnguYnguKPguLHguJrguJzguLTguJTguIrguK3guJrguIHguKXguLjguYjguKHguKrguLPguKvguKPguLHguJogY29uZmlndXJhdGlvbiBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn4LmC4Lih4LiU4Li54Lil4Liq4Lij4LmJ4Liy4LiH4Liq4LiW4Li04LiV4Li0IElUU00gY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C4muC4meC5geC4leC5iOC4peC4sOC4q+C4meC5ieC4suC4guC4reC4h+C4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C4muC4meC5geC4leC5iOC4peC4sOC4q+C4meC5ieC4suC4guC4reC4h+C4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfguKDguLLguJ7guKPguKfguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJTguIrguJrguK3guKPguYzguJTguYDguJrguLfguYnguK3guIfguKvguKXguLHguIfguILguK3guIfguKDguLLguJ7guKPguKfguKHguJXguLHguYvguKdzbGF2ZSB04LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4Liq4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICLguIjguLPguIHguLHguJQiIOC4hOC4t+C4reC4geC4s+C4q+C4meC4lOC4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC5geC4quC4lOC4h+C5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSAi4LiB4Lil4Li44LmI4LihIiDguIjguLDguJbguLnguIHguJnguLPguKHguLLguYPguIrguYnguYDguJ7guLfguYjguK3guIjguLPguIHguLHguJTguIHguLLguKPguYDguILguYnguLLguJbguLbguIfguJvguKXguLHguYrguIHguK3guLTguJkgKOC5gOC4iuC5iOC4meC4geC4peC4uOC5iOC4oTog4Lic4Li54LmJ4LiU4Li54LmB4Lil4Lij4Liw4Lia4LiaOyDguIHguKXguLjguYjguKEgMTsg4LiB4Lil4Li44LmI4LihMjspICLguYDguKPguLTguYjguKHguJXguYnguJkiIOC4o+C4sOC4muC4uOC4p+C5iOC4suC4luC5ieC4suC4m+C4peC4seC5iuC4geC4reC4tOC4meC4luC4ueC4geC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4ouC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4q+C4o+C4t+C4reC4q+C4suC4geC4nOC4ueC5ieC5g+C4iuC5ieC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4nuC4t+C5iOC4reC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC5hOC4lOC5ieC4lOC5ieC4p+C4ouC4leC4meC5gOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC5geC4lOC4iuC4muC4reC4o+C5jOC4lOC5gOC4muC4t+C5ieC4reC4h+C4q+C4peC4seC4h+C4guC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4leC4seC5i+C4p3NsYXZlIHTguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guKrguYDguK3guYDguKLguYjguJnguJXguYwgIuC4iOC4s+C4geC4seC4lCIg4LiE4Li34Lit4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4LiC4Lit4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LmB4Liq4LiU4LiH4LmC4LiU4Lii4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZICLguIHguKXguLjguYjguKEiIOC4iOC4sOC4luC4ueC4geC4meC4s+C4oeC4suC5g+C4iuC5ieC5gOC4nuC4t+C5iOC4reC4iOC4s+C4geC4seC4lOC4geC4suC4o+C5gOC4guC5ieC4suC4luC4tuC4h+C4m+C4peC4seC5iuC4geC4reC4tOC4mSAo4LmA4LiK4LmI4LiZ4LiB4Lil4Li44LmI4LihOiDguJzguLnguYnguJTguLnguYHguKXguKPguLDguJrguJo7IOC4geC4peC4uOC5iOC4oSAxOyDguIHguKXguLjguYjguKEyOykgIuC5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSIg4Lij4Liw4Lia4Li44Lin4LmI4Liy4LiW4LmJ4Liy4Lib4Lil4Lix4LmK4LiB4Lit4Li04LiZ4LiW4Li54LiB4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LmC4LiU4Lii4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Lir4Lij4Li34Lit4Lir4Liy4LiB4Lic4Li54LmJ4LmD4LiK4LmJ4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmA4Lie4Li34LmI4Lit4LmA4Lib4Li04LiU4LmD4LiK4LmJ4LiH4Liy4LiZ4LmE4LiU4LmJ4LiU4LmJ4Lin4Lii4LiV4LiZ4LmA4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4Liq4Li14LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4leC4seC4p+C4reC4ouC5iOC4suC4h+C4geC4peC4uOC5iOC4oeC4l+C4teC5iOC5hOC4lOC5ieC4o+C4seC4muC4reC4meC4uOC4jeC4suC4leC4guC4reC4h+C5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC5geC4hOC5h+C4leC4leC4suC4peC5h+C4reC4geC4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC5geC4leC5iOC4peC4sOC4q+C4meC5ieC4sijguIvguLbguYjguIcgY29uZmlndXJhdGlvbiBpdGVtcyDguYHguKrguJTguIcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguIvguLnguKHguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguIHguLLguKPguYDguJ7guLTguYjguKHguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C5geC4geC5ieC5hOC4guC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguJvguKPguLDguKfguLHguJXguLTguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C4nuC4tOC4oeC4nuC5jOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn4Liq4Li04LiX4LiY4Li04Lie4Li04LmA4Lio4Lip4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4Lil4Lia4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJXguLHguYnguIfguITguYjguLLguKrguJbguLLguJnguLDguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguYDguJvguYfguJnguIHguKXguLjguYjguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4LiW4Liy4LiZ4Liw4LiC4Lit4LiH4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmM4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4Lil4Li04LiH4LiE4LmM4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmM4Lit4Li34LmI4LiZ4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmA4LiC4LmJ4Liy4LiK4Lih4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguJfguLHguYjguKfguYTguJvguILguK3guIdjb25maWd1cmF0aW9uIGl0ZW3guYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmA4LiC4LmJ4Liy4LiK4Lih4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYPguJnguIHguLLguKPguJfguLXguYjguIjguLDguYHguIHguYnguYTguIIgY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LiI4Liz4Lil4Lit4LiHIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguJfguLHguYjguKfguYTguJvguILguK3guIdjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYPguJnguIHguLLguKPguJfguLXguYjguIjguLDguIjguLPguKXguK3guIdjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmB4LiB4LmJ4LmE4LiCIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4geC4peC4seC4muC5hOC4m+C4ouC4seC4h+C4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4nuC4tOC4oeC4nuC5jCBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4LiL4Li54Lih4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4Lig4Liy4Lie4Lij4Lin4Lih4LiC4Lit4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguJvguKPguLDguKfguLHguJXguLQgY29uZmlnIGl0ZW0gKOC4peC4s+C4lOC4seC4muC4ouC5ieC4reC4meC4geC4peC4seC4mikg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn4LiV4Lix4Lin4Lia4LmI4LiH4LiK4Li14LmJ4Liq4Liz4Lir4Lij4Lix4LiaICBDb25maWd1cmF0aW9uIEl0ZW0g4LmA4LiK4LmI4LiZIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jIOC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4hOC4t+C4rSBDb25maWdJdGVtIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+C4geC4suC4o+C4quC4o+C5ieC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ+C4i+C4teC4nuC4teC4ouC4uSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfguYDguJTguKrguJfguK3guJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn4Lif4Lij4Li14LmB4Lin4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfguYHguJvguYnguJnguJ7guLTguKHguJ7guYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+C5geC4peC5h+C4m+C4l+C5h+C4reC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfguYLguKHguYDguJTguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+C5gOC4oeC5ieC4suC4quC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn4Lit4Li34LmI4LiZ4LmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfguILguYnguK3guKHguLnguKXguJfguLXguYjguKrguYjguIfguK3guK3guIHguKHguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfguKvguYnguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfguILguYnguK3guJXguIHguKXguIfguKPguLDguJTguLHguJrguIHguLLguKPguYPguKvguYnguJrguKPguLTguIHguLLguKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+C4oeC4suC4leC4o+C4kOC4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/tr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lbCDDp2FsxLHFn21hIHZlcmlsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdHZWxlbiB0YWxlcCB2ZXJpbGVyaSBpw6dpbiBheWFybGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnR2lkZW4geWFuxLF0IHZlcmlsZXJpIGnDp2luIGF5YXJsYXInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWfDvHJhc3lvbiDDlsSfZXNpIFnDtm5ldGltaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1PEsW7EsWYgdGFuxLFtxLFuxLEgZGXEn2nFn3Rpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnUm9sIHRhbsSxbcSxbsSxIGRlxJ9pxZ90aXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgU8SxbsSxZiBQYWtldGxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdCdXJhZGEsIGVuIHlheWfEsW4geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbWl6aSBzZXJnaWxleWVuIFJlYWR5MkltcG9ydCBzxLFuxLFmIHBha2V0bGVyaW5pIGnDp2UgYWt0YXJhYmlsaXJzaW5pei4gQmF6xLEgZWsgeWFwxLFsYW5kxLFybWFsYXLEsW4gZ2VyZWtsaSBvbGFiaWxlY2XEn2luaSBsw7x0ZmVuIHVudXRtYXnEsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01ldmN1dCB2YXJsxLFrbGFyxLEgZ8O8bmNlbGxleWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQgc8SxbsSxZiBwYWtldGxlcmluaSBpw6dlIGFrdGFyxLFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIMOWxJ9lIFPEsW7EsWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBSb2zDvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1PEsW7EsWZsYXIgacOnaW4gRmlsdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1llbmkgYmlyIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgb2x1xZ90dXJtYWsgacOnaW4gbGlzdGVkZW4gYmlyIFPEsW7EsWYgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1PEsW7EsWYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gVG9wbHUgRXlsZW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ09sYXkgZHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0RpxJ9lcmluZSBiYcSfbGFudMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdHZcOnZXJzaXogWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBudW1hcmFzxLEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0JhxJ9sYW50xLEga3VydWxhY2FrIGJhxZ9rYSBiaXIgWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBudW1hcmFzxLEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGdlcsOnZWt0ZW4gc2lsbWVrIGlzdGl5b3IgbXVzdW51ej8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBhZMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBZCwgYcWfYcSfxLFkYWtpIFNhecSxKGxhcilhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1PDvHLDvG0gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmluIHPDvHLDvG0gbnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnU8O8csO8bSBOdW1hcmFzxLEsIGHFn2HEn8SxZGFraSBOdW1hcmF5YS9OdW1hcmFsYXJhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGHEn8SxdMSxbSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdPbGF5IER1cnVtdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBHZcOnbWnFn2k6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1RhcmloIMSww6dlcmnEn2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnU2F5ZmEgYmHFn8SxbmEgS29uZmlnw7xyYXN5b24gw5bEn2VsZXJpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHZlcmlzaSBidWx1bmFtYWTEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgc2XDp2luJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQXJhbWEgw4dhbMSxxZ90xLFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0F5csSxY2Egw7ZuY2VraSBzw7xyw7xtbGVyZGUgYXJhbWE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBpw6dpbiBUcmVlVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RlcmlubGlrIFNldml5ZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWWFrxLFubGHFn3TEsXJtYS9VemFrbGHFn3TEsXJtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVtIGnDp2luIG1ha3NpbXVtIGJhxJ9sYW50xLEgZMO8emV5aW5lIHVsYcWfxLFsZMSxISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBCaWxnaWxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTWV2Y3V0IERhxJ/EsXTEsW0gRHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdNZXZjdXQgT2xheSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU29uIGRlxJ9pxZ9pa2xpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTb24gZGXEn2nFn3RpcmVuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnQ29uZmlnSXRlbXMgw7bEn2VsZXJpbml6JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gQXJhbWEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ05lc25lIFTDvHLDvCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ1RpcGUgZ8O2cmUgZmlsdHJlbGUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBxZ9hxJ/EsWRha2kgc8SxbsSxZmxhciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQcWfYcSfxLFkYWtpIHJvbGxlciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxLBsZ2lsaSBkaW5hbWlrIGFsYW5sYXLEsW4gdmUgR2VuZXJhbENhdGFsb2cgc8SxbsSxZmxhcsSxbsSxbiBkYSBvbHXFn3R1cnVsYWNhxJ/EsW7EsSB2ZSBvdG9tYXRpayBvbGFyYWsga2FsZMSxcsSxbG1heWFjYcSfxLFuxLEgdW51dG1hecSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXZhbSBldG1layBpc3RpeW9yIG11c3VuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfDlnJuZWsgU8SxbsSxZmxhcmEgxLBodGl5YcOnIFZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnVGFuxLFtIGdlw6dlcmxpIGJpciBZQU1MIGthcm1hc8SxIGRlxJ9pbGRpci4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdHZW5lbCBCYWvEscWfOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIHZlcmlsbWVtacWfISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0VuIGF6IGJpciBzZcOnaWxpIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2luZSBpaHRpeWFjxLFuxLF6IHZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgeWF6bWEgZXJpxZ9pbWluaXogeW9rOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnU8SxbsSxZiAlcyBpw6dpbiB0YW7EsW1sYW1hIHlhcMSxbG1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSAiJXMiIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kga2ltbGnEn2kgJXMgc2lsaW5lbWVkaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBpw6dpbiBzw7xyw7xtIGJ1bHVuYW1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHZleWEgQ2xhc3NJRCB2ZXJpbG1lbWnFn3RpciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0VyacWfaW0gaXpuaSB5b2shJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2ZXJpbG1lZGnEn2kgacOnaW4gZ2XDp21pxZ8gZ8O2c3RlcmlsZW1peW9yISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0dlw6dtacWfIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdZZW5pIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnWWVuaSBzw7xyw7xtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSBnw7xuY2VsbGVuZGkgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdPbGF5IGR1cnVtdSBnw7xuY2VsbGVuZGkgKHllbmk9JXMsIGVza2k9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNpbGluZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdzICh0eXBlPSVzKSBiYcSfbGFudMSxc8SxIGVrbGVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ3MgKHR5cGU9JXMpIGJhxJ9sYW50xLFzxLEgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSB0YW7EsW3EsSBnw7xuY2VsbGVuZGkgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0FkIGfDvG5jZWxsZW5kaSAoeWVuaT0lcywgZXNraT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfDlnpuaXRlbGlrICVzICIlcyAiZGVuICIlcyAieWUgZ8O8bmNlbGxlbmRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1PDvHLDvG0gJXMgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQgdmV5YSBWZXJzaW9uSUQgdmVyaWxtZWRpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnc1wnZGUgJXMgdGFyYWbEsW5kYW4geWF6ZMSxcsSxbGTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdHZcOnZXJzaXogQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIHZlcmlsbWVtacWfdGlyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0J1IHPEsW7EsWYgacOnaW4gZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ90aXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTb251w6cgeW9rISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ8O8cmFzeW9uIMOWxJ9lc2kgQXJhbWEgU29udcOnbGFyxLEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8OWxJ9lIGfDtnN0ZXJpbGVtaXlvciwgQ29uZmlnSXRlbSBpw6dpbiBlcmnFn2ltIGhha2vEsSB2ZXJpbG1lbWnFnyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnSGnDp2JpciB2ZXJzaXlvbiBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXN5b25lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndXlhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnb2xheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBkYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0J1IHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gb2xheSBkdXJ1bXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfEsHppbiB5b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJlIGdlw6dlcnNpeiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ0FyYW1hIHBhcmFtZXRyZWxlcmkgZ2XDp2Vyc2l6ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0fDtnN0ZXJpbGVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEYcSfxLF0xLFtIER1cnVtdSBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTWV2Y3V0IE9sYXkgRHVydW0gVMO8csO8JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0FyYXPEsW5kYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1Nlw6dpbGViaWxpciB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBrxLFzxLF0bGFtYWsgacOnaW4gYmlyIHZleWEgZGFoYSBmYXpsYSBzxLFuxLFmIHNlw6dpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZcOnaWxlYmlsaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkga8Sxc8SxdGxhbWFrIGnDp2luIGJpciB2ZXlhIGRhaGEgZmF6bGEgc8SxbsSxZiBzZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlrIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaXlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnQmHEn2xhbnTEsSBSZWZlcmFuc2xhbWEgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0J1IGJhxJ9sYW50xLFuxLFuIENvbmZpZ0l0ZW0gacOnaW4gbWkgeW9rc2EgYmHFn3Z1cmFuIG5lc25lbmluIHN0YXRpayBzw7xyw7xtw7wgacOnaW4gbWkgZ2XDp2VybGkgb2xkdcSfdS4gR2XDp2VybGkgT2xheSBEdXJ1bXUgaGVzYXBsYW1hc8SxIHlhbG7EsXpjYSBkaW5hbWlrIGJhxJ9sYW50xLFsYXJkYSBnZXLDp2VrbGXFn3RpcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIGFyYW5hY2HEn8SxIMO2em5pdGVsacSfaSBzZcOnaW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnVGVtZWwgeWFwxLEgZ2XDp2VybGkgZGXEn2lsLiBMw7x0ZmVuIFlBTUwgYmnDp2ltaW5kZSB2ZXJpIGnDp2VyZW4gYmlyIGthcm1hIGdpcmluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwgZGl6ZXNpbmluIFwnLS0tXCcgaWxlIGJhxZ9sYW1hc8SxIGdlcmVrbGlkaXIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ2NvbmZpZ2l0ZW1fbGluayB0YWJsb3N1IHRlbWl6bGVuZW1lZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfEsGxnaWxpIGRpbmFtaWsgYWxhbiBidWx1bmFtYWTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayB0YWJsb3N1bmEgZWtsZW5lbWVkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5rIHRhYmxvc3VuYSAwIHNhdMSxciBla2xlbmRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01ha3NpbXVtIGJpciBlbGVtYW4gc2F5xLFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnRWtsZXJpIGnDp2UvZMSxxZ9hIGFrdGFybWEgKHNhdMSxciBiYcWfxLFuYSBzb24gZ2lyacWfbGVyIG9sYXJhayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdTw7xyw7xtIERpemVzaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdUYW7EsW1sYXIgc2Vua3Jvbml6ZSBlZGlsaXJrZW4gaGF0YSBvbHXFn3R1LiBMw7x0ZmVuIGfDvG5sw7zEn8O8IGtvbnRyb2wgZWRpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTZW5rcm9uaXplIGVkaWxtZW1pxZ8gSVRTTUNvbmZpZ0l0ZW0gdGFuxLFtbGFyxLFuxLF6IHZhci4gTMO8dGZlbiBJVFNNQ29uZmlnSXRlbSBkaW5hbWlrIGFsYW4gZGXEn2nFn2lrbGlrbGVyaW5pemkgZGHEn8SxdMSxbi4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1PDvHJlc2kgZG9sZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdCYWvEsW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhbm3EscWfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ09uYXLEsW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0VtZWtsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfEsG5jZWxlbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ0dlbmVsIEJha8SxxZ8gdmUgT25heSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdTxLFuxLFmbGFyxLEvcm9sbGVyaSB2ZSBpbGdpbGkgYWxhbmxhcsSxIGnDp2UgYWt0YXJtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1PEsW7EsWYgacOnZSBha3RhcsSxbcSxIHPEsXJhc8SxbmRhIGJpciBoYXRhIG9sdcWfdHUuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBHaXpsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gR8O2c3RlcmlsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWFzxLFuZGEgZ2VuacWfbGV0aWxtacWfIGFyYW1hIGtvxZ91bGxhcsSxbmEgaXppbiB2ZXJpci4gQnUgw7Z6ZWxsaWsgc2F5ZXNpbmRlLCDDtnJuZcSfaW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhZMSxbsSxICIoKmtleTEqJiprZXkyKikiIHZleWEgIigqa2V5MSp8KmtleTIqKSIgZ2liaSBidSB0w7xyIGtvxZ91bGxhcmxhIGFyYXlhYmlsaXJzaW5pei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBnZW5pxZ9sZXRpbG1pxZ8gYXJhbWEga2/Fn3VsbGFyxLFuYSBpemluIHZlcmlyLiBCdSDDtnplbGxpayBzYXllc2luZGUsIMO2cm5lxJ9pbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFkxLFuxLEgIigqYW5haHRhcjEqJiphbmFodGFyMiopIiB2ZXlhICIoKmFuYWh0YXIxKnwqYW5haHRhcjIqKSIgZ2liaSBidSB0w7xyIGtvxZ91bGxhcmxhIGFyYXlhYmlsaXJzaW5pei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQXRhbm3EscWfIENJXCdsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdNw7zFn3RlcmkgxZ9pcmtldGUgYXRhbmFuIENJXCdsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdNw7zFn3Rlcmkga3VsbGFuxLFjxLF5YSBhdGFuYW4gQ0lcJ2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBBeWFybGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1lhbG7EsXpjYSBheW7EsSBDb25maWdJdGVtIHPEsW7EsWbEsSAoXCdjbGFzc1wnKSBpw6dpbmRlIHZleWEgZ2VuZWwgb2xhcmFrIChcJ2dsb2JhbFwnKSBiZW56ZXJzaXogYmlyIGFkIG9sdXAgb2xtYWTEscSfxLFuxLEga29udHJvbCBlZGluOyBidSwgeWluZWxlbmVubGVyaSBhcmFya2VuIG1ldmN1dCBoZXIgQ29uZmlnSXRlbVwnxLFuIGRpa2thdGUgYWzEsW5kxLHEn8SxIGFubGFtxLFuYSBnZWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0JpciBhZGxhbmTEsXJtYSDFn2VtYXPEsSB1eWd1bGFtYWsgacOnaW4gYmlyIG1vZMO8bCBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdCaXIgc2F5xLEgxZ9lbWFzxLFuxLEgdXlndWxhbWFrIGnDp2luIGJpciBtb2TDvGwgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdTw7xyw7xtIGRpemVzaSDFn2VtYXPEsW7EsSB1eWd1bGFtYWsgacOnaW4gYmlyIG1vZMO8bCBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnWWVuaSBiaXIgc8O8csO8bcO8biBvbHXFn3R1cnVsbWFzxLFuxLEgdGV0aWtsZW1layBpw6dpbiDDtnpuaXRlbGlrbGVyaSBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0J1IHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZsSxbmEgYXRhbmFjYWsga2F0ZWdvcmlsZXJpIHNlw6dpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnQ29uZmlnSXRlbSBPdmVydmlldyBpw6dpbiBzw7x0dW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBmaWx0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFn8SxbmRhIGZpbHRyZWxlbmViaWxlbiBzw7x0dW5sYXIuIE5vdDogWWFsbsSxemNhIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgw7Z6bml0ZWxpa2xlcmluZSB2ZSBEaW5hbWlrIEFsYW5sYXJhIChEeW5hbWljRmllbGRfTmFtZVgpIGl6aW4gdmVyaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBkw7x6ZW5sZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBnZcOnbWnFn2UgZ8O8bmzDvMSfZSBrYXlkZXRtZXlpIHNhxJ9sYXlhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIG9sYXkgbW9kw7xsw7wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGdlw6dlcmxpIHRhbsSxbWxhcsSxbmEgZ8O2cmUgZ8O8bmNlbGxleWVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgb2xheSBtb2TDvGzDvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlw6dtacWfaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YXpkxLFybWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gQcSfYcOnIEfDtnLDvG7DvG3DvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFPDvHLDvG0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQcWfYcSfxLFkYWtpIHPEsW7EsWZsYXLEsW4gQ29uZmlnSXRlbXMgw7bEn2VsZXJpIEVsYXN0aWNzZWFyY2ggc3VudWN1c3VuZGEgc2FrbGFubWF5YWNha3TEsXIuIEJ1bnUgbWV2Y3V0IENJXCdsYXJhIHV5Z3VsYW1hayBpw6dpbiwgYnUgc2XDp2VuZWsgZGXEn2nFn3RpcmlsZGlrdGVuIHNvbnJhIENJIGdlw6dpxZ9pbmluIGtvbnNvbCDDvHplcmluZGVuIMOnYWzEscWfdMSxcsSxbG1hc8SxIGdlcmVraXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0HFn2HEn8SxZGFraSBkYcSfxLF0xLFtIGR1cnVtbGFyxLFuYSBzYWhpcCBDb25maWdJdGVtcywgRWxhc3RpY3NlYXJjaCBzdW51Y3VzdW5kYSBkZXBvbGFubWF5YWNha3TEsXIuIEJ1bnUgbWV2Y3V0IENJXCdsYXJhIHV5Z3VsYW1hayBpw6dpbiwgYnUgc2XDp2VuZWsgZGXEn2nFn3RpcmlsZGlrdGVuIHNvbnJhIENJIGdlw6dpxZ9pbmluIGtvbnNvbCDDvHplcmluZGVuIMOnYWzEscWfdMSxcsSxbG1hc8SxIGdlcmVraXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgU8SxbsSxcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWfDvHJhc3lvbiBTYXlmYSBiYcWfxLFuYSDDtsSfZSBzxLFuxLFyxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWfDvHJhc3lvbiBZw7ZuZXRpbWkgVmVyaXRhYmFuxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGFya2EgdcOnIHnDtm5sZW5kaXJpY2lzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VsZXJpIGnDp2luIHRhbsSxbWxhciBvbHXFn3R1cnVuIHZlIHnDtm5ldGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0JlbGlybGkgemFtYW4gbm9rdGFsYXLEsW5kYSBDb25maWdJdGVtcyBpw6dpbiBCaWxldGxlciBvbHXFn3R1cnVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdNw7zFn3RlcmlsZXIgZ2XDp21pxZ8gQ0kgc8O8csO8bWxlcmluaSBnw7ZyZWJpbGlybGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdNw7zFn3RlcmlsZXIsIGdlw6dtacWfIENJIHPDvHLDvG1sZXJpIGFyYXPEsW5kYSBtYW51ZWwgb2xhcmFrIGdlw6dpxZ8geWFwbWEgb2xhbmHEn8SxbmEgc2FoaXB0aXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxIGnDp2luIMO2em5pdGVsaWt0ZSBrdWxsYW7EsWxhY2FrIHZhcnNhecSxbGFuIHZlcmlsZXIuIMOWcm5lazogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLEgacOnaW4gw7Z6bml0ZWxpa3RlIGt1bGxhbsSxbGFjYWsgdmFyc2F5xLFsYW4gdmVyaWxlci4gw5ZybmVrOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnQmHEn2xhbnTEsWzEsSBuZXNuZWxlciB3aWRnZXRcJ8SxbmRhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikgYmlyIGF5YXIgZMO8xJ9tZXNpbmluIG1ldmN1dCBvbGR1xJ91IEV5bGVtbGVyaSB0YW7EsW1sYXnEsW4uIEzDvHRmZW4gYnUgRXlsZW1sZXJpbiBhxZ9hxJ/EsWRha2kgSlMgdmUgQ1NTIGRvc3lhbGFyxLFuxLEga2F5ZGV0bWnFnyBvbG1hc8SxIGdlcmVrdGnEn2luaSB1bnV0bWF5xLFuOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB2ZSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdTw7xyw7xtIGRpemVsZXJpIGnDp2luIGJpciBUZW1wbGF0ZTo6VG9vbGtpdCDFn2VtYXPEsSB0YW7EsW1sYXnEsW4uIFlhbG7EsXpjYSBTw7xyw7xtIERpemVzaSBNb2TDvGzDvCBUZW1wbGF0ZVRvb2xraXQgb2xhcmFrIGF5YXJsYW5txLHFn3NhIGt1bGxhbsSxbMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdCaXIgbcO8xZ90ZXJpbmluIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgZ8O2cm1lc2luZSBpemluIHZlcmlsZW4gYmlyIGRpemkga2/Fn3VsIHRhbsSxbWxhecSxbi4gS2/Fn3VsbGFyIGlzdGXEn2UgYmHEn2zEsSBvbGFyYWsgYmVsaXJsaSBtw7zFn3RlcmkgZ3J1cGxhcsSxeWxhIHPEsW7EsXJsYW5kxLFyxLFsYWJpbGlyLiBBZCB0ZWsgem9ydW5sdSBuaXRlbGlrdGlyLiBCYcWfa2EgYmlyIHNlw6dlbmVrIGJlbGlydGlsbWV6c2UsIHTDvG0geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpIGJ1IGthdGVnb3JpIGFsdMSxbmRhIGfDtnLDvG7DvHIgb2xhY2FrdMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0dlbmVsIEFyYXnDvHrDvCBrdWxsYW5hcmFrIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkgc2lsbWVrIGnDp2luIEdlcmVrbGkgaXppbmxlcmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBhbG1hayBpw6dpbiBHZXJla2xpIGl6aW5sZXJpIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0dlbmVsIEFyYXnDvHrDvCBrdWxsYW5hcmFrIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkgYXJhbWFrIGnDp2luIEdlcmVrbGkgaXppbmxlcmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBheWFybGFtYWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0JpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGxpc3Rlc2luaW4ga8O8w6fDvGsgZ8O2csO8bsO8bcO8bsO8IGfDtnN0ZXJtZWsgacOnaW4gYmlyIGdlbmVsIGJha8SxxZ8gbW9kw7xsw7wgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdCYcSfbGFudMSxIHTDvHLDvCBldGlrZXRsZXJpbmluIGTDvMSfw7xtIGJhxJ9sYW50xLFsYXLEsW5kYSBnw7ZzdGVyaWxpcCBnw7ZzdGVyaWxtZXllY2XEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdDb25maWdJdGVtIGFkxLFuxLEgZGVuZXRsZW1layB2ZSBpbGdpbGkgaGF0YSBpbGV0aWxlcmluaSBnw7ZzdGVybWVrIGnDp2luIGhlciBDb25maWdJdGVtIHPEsW7EsWbEsSBpw6dpbiBheXLEsSBheXLEsSBkw7x6ZW5saSBpZmFkZWxlciB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGVraSBrdWxsYW7EsWxhYmlsaXIgQ0kgc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfIGJpciBzxLFuxLFmIGFkxLEgdmUgaWxnaWxpIHPEsW7EsWYgacOnaW4ga3VsbGFuxLFsYWJpbGlyIGFsYW5sYXJkYW4gb2x1xZ9hbiBiaXIgZGl6aWRlbiBvbHXFn21hbMSxZMSxci4gRGluYW1payBhbGFuIGdpcmnFn2xlcmkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDFn2VtYXPEsW5hIHV5bWFrIHpvcnVuZGFkxLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VudW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFyYWxhbWFzxLEgacOnaW4gdmFyc2F5xLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSDDtnpuaXRlbGnEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW51biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhbGFtYXPEsSBpw6dpbiB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdCdSBpxZ9sZW1pbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW51biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhbGFtYXPEsSBpw6dpbiB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bmRha2kgdmFyc2F5xLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFyYXPEsW7EsSB0YW7EsW1sYXIuIFl1a2FyxLE6IGVuIGVza2kgZW4gw7xzdHRlLiBBxZ9hxJ/EsTogZW4gc29uIMO8c3R0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bmRha2kgdmFyc2F5xLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFyYXPEsW7EsSB0YW7EsW1sYXIuIFl1a2FyxLE6IGVuIGVza2kgZW4gw7xzdHRlLiBBxZ9hxJ/EsTogZW4gc29uIMO8c3R0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQnUgacWfbGVtaW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VuZGFraSB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4gWXVrYXLEsTogZW4gZXNraSBlbiDDvHN0dGUuIEHFn2HEn8SxOiBlbiBzb24gw7xzdHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGUgQ0lcJ2xhcsSxbiB2YXJzYXnEsWxhbiBnw7Zyw7xudMO8bGVuZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfIGJpciBzxLFuxLFmIGFkxLEgdmUgaWxnaWxpIHPEsW7EsWYgacOnaW4ga3VsbGFuxLFsYWJpbGlyIGFsYW5sYXLEsW4gYmlyIGRpemlzaW5kZW4gb2x1xZ9tYWzEsWTEsXIuIERpbmFtaWsgYWxhbiBnaXJpxZ9sZXJpIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgxZ9lbWFzxLFuYSB1eW1hayB6b3J1bmRhZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnR8O2c3RlcmlsZWNlayB2YXJzYXnEsWxhbiBpbGnFn2tpIGRlcmlubGnEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsSBpw6dpbiB2YXJzYXnEsWxhbiBnw7ZzdGVyaWxlbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsSBpw6dpbiB2YXJzYXnEsWxhbiBnw7ZzdGVyaWxlbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIG5pdGVsacSfaW5pIHRhbsSxbWxhci4gw5ZybmVrOiAiQW5haHRhciIgRGluYW1payBBbGFuxLFuIGFkxLFuxLEgacOnZXJtZWxpZGlyLCBidSBkdXJ1bWRhIFwnWFwnLCAixLDDp2VyaWsiIERpbmFtaWsgQWxhbiB0w7xyw7xuZSBiYcSfbMSxIG9sYXJhayBEaW5hbWlrIEFsYW7EsW4gZGXEn2VyaW5pIGnDp2VybWVsaWRpciwgTWV0aW46IFwnYmlyIG1ldGluXCcsIEHDp8SxbMSxciBtZW7DvDogXCcxXCcsIFRhcmloL1NhYXQ6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB2ZSB2ZXlhIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ1wnSVRTTUNvbmZpZ0l0ZW1cJyBzxLFuxLFmxLFuxLFuIHZhcnNhecSxbGFuIGFsdCBuZXNuZXNpbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGVraSBrdWxsYW7EsWxhYmlsaXIgQ0kgc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfIGJpciBzxLFuxLFmIGFkxLEgdmUgaWxnaWxpIHPEsW7EsWYgacOnaW4ga3VsbGFuxLFsYWJpbGlyIGFsYW5sYXJkYW4gb2x1xZ9hbiBiaXIgZGl6aWRlbiBvbHXFn21hbMSxZMSxci4gRGluYW1payBhbGFuIGdpcmnFn2xlcmkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDFn2VtYXPEsW5hIHV5bWFrIHpvcnVuZGFkxLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdCdSBla3JhbiBpw6dpbiB6ZW5naW4gbWV0aW4gZMO8emVubGV5aWNpIGJpbGXFn2VuaW5pbiB5w7xrc2VrbGnEn2luaSB0YW7EsW1sYXIuIFNhecSxIChwaWtzZWwpIHZleWEgecO8emRlIGRlxJ9lcmkgKGfDtnJlbGkpIGdpcmluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdZw7ZuZXRpY2kgYXJhecO8esO8bmRla2kgQ0kgdGFuxLFtxLEgZMO8emVubGV5aWNpc2kgacOnaW4gc2F0xLFyIHNhecSxc8SxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2xheSBkdXJ1bWxhcsSxbsSxbiB5w7xrc2VrICjDtnJuLiBrcmlraXRhbCkgaWxlIGTDvMWfw7xrICjDtnJuLiBmb25rc2l5b25lbCkgYXJhc8SxbmRha2kgc8SxcmFzxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0JhxJ9sYW50xLFsxLEgZGVzdGVrIHRhbGVwbGVyaW5pbiBiaXIgQ0lcJ27EsW4gZHVydW11bnUgZXRraWxleWViaWxlY2XEn2kgaWxnaWxpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbSBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnVMO8bSBDSSBzxLFuxLFmbGFyxLEgacOnaW4gYmHEn2xhbnTEsSB0YWJsb3N1IGthcm1hxZ/EsWsgZ8O2csO8bsO8bcO8bmRlIENJXCdsYXLEsW4gZ8O2c3RlcmlsZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXJoYW5naSBiaXIgZ2lyacWfIHlva3NhLCB2YXJzYXnEsWxhbiBzw7x0dW5sYXIgZ8O2c3RlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDSSBzxLFuxLFmxLFuYSBiYcSfbMSxIG9sYXJhayBiYcSfbGFudMSxIHRhYmxvc3Uga2FybWHFn8SxayBnw7Zyw7xuw7xtw7xuZGUgQ0lcJ2xhcsSxbiBnw7ZzdGVyaWxlbiBzw7x0dW5sYXLEsW7EsSB0YW7EsW1sYXIuIEhlciBnaXJpxZ9pbiDDtm7DvG5lIHPEsW7EsWYgYWTEsSB2ZSDDp2lmdCBpa2kgbm9rdGEgw7xzdCDDvHN0ZSBrb251bG1hbMSxZMSxciAow7ZybmXEn2luIEJpbGdpc2F5YXI6OikuIFTDvG0gQ0lcJ2xhcmRhIG9ydGFrIG9sYW4gYmlya2HDpyBDSS3DlnpuaXRlbGnEn2kgdmFyZMSxciAoQmlsZ2lzYXlhciBzxLFuxLFmxLEgacOnaW4gw7ZybmVrOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBDSS1UYW7EsW3EsW5kYSB0YW7EsW1sYW5kxLHEn8SxIGdpYmkgYmlyZXlzZWwgQ0ktw5Z6bml0ZWxpa2xlcmluaSBnw7ZzdGVybWVrIGnDp2luIGHFn2HEn8SxZGFraSDFn2VtYSBrdWxsYW7EsWxtYWzEsWTEsXIgKEJpbGdpc2F5YXIgc8SxbsSxZsSxIGnDp2luIMO2cm5layk6IEJpbGdpc2F5YXI6OkhhcmREaXNrOjoxLCBCaWxnaXNheWFyOjpIYXJkRGlzazo6MTo6S2FwYXNpdGU6OjEsIEJpbGdpc2F5YXI6OkhhcmREaXNrOjoyLCBCaWxnaXNheWFyOjpIYXJkRGlzazo6Mjo6S2FwYXNpdGU6OjEuIEJpciBDSSBzxLFuxLFmxLEgacOnaW4gZ2lyacWfIHlva3NhLCB2YXJzYXnEsWxhbiBzw7x0dW5sYXIgZ8O2c3RlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSBDb25maWcgSXRlbSBBQ0wgeWFwxLFzxLFuxLFuIMO8w6fDvG5jw7wgc2V2aXllc2luZGUgaGFuZ2kgw7bEn2VsZXJpbiBcJ0V5bGVtXCcgacOnaW4ga3VsbGFuxLFsYWJpbGlyIG9sZHXEn3VudSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSBDb25maWcgSXRlbSBBQ0wgeWFwxLFzxLFuxLFuIGJpcmluY2kgc2V2aXllc2luZGUgaGFuZ2kgw7bEn2VsZXJpbiBtZXZjdXQgb2xkdcSfdW51IHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSBDb25maWcgSXRlbSBBQ0wgeWFwxLFzxLFuxLFuIGlraW5jaSBzZXZpeWVzaW5kZSBoYW5naSDDtsSfZWxlcmluIG1ldmN1dCBvbGR1xJ91bnUgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdIYW5naSBiYcSfbGFudMSxIHTDvHLDvG7DvG4gKGJpbGV0IHBlcnNwZWt0aWZpbmRlbiBhZGxhbmTEsXLEsWxhbikgYmHEn2xhbnTEsWzEsSBiaXIgQ0lcJ27EsW4gZHVydW11bnUgZXRraWxleWViaWxlY2XEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnQmHEn2zEsSBiaXIgQ0lcJ27EsW4gZHVydW11bnUgaGFuZ2kgdMO8ciBiaWxldGxlcmluIGV0a2lsZXllYmlsZWNlxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ1RhbsSxbSBHw7xuY2VsbGVtZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZXNpbmkgU2lsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRGHEn8SxdMSxbSBEdXJ1bXUgUmVuZ2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ1lpbmVsZW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0RpbmFtaWsgYWxhbiBvbGF5IG1vZMO8bMO8LCBkaW5hbWlrIGFsYW5sYXLEsW4gZGXEn2nFn21lc2kgZHVydW11bmRhIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdGFuxLFtbGFyxLFuxLEgc2Vua3Jvbml6YXN5b24gZMSxxZ/EsSBvbGFyYWsgacWfYXJldGxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gZWsgSVRTTSBhbGFuxLEgZWtyYW7EsW5kYSBnw7ZzdGVyaWxlbiBkaW5hbWlrIGFsYW5sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZSBnZW5lbCBiYWvEscWfIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdUZW1zaWxjaSDDtm4gdWN1bnVuIGF5bsSxIGFuZGEgYmlyZGVuIGZhemxhIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7x6ZXJpbmRlIMOnYWzEscWfbWFzxLEgacOnaW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB0b3BsdSBleWxlbSDDtnplbGxpxJ9pbmkgZXRraW5sZcWfdGlyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IGV5bGVtIMO2emVsbGnEn2luaSB5YWxuxLF6Y2EgbGlzdGVsZW5lbiBncnVwbGFyIGnDp2luIGV0a2lubGXFn3RpcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGJlbnplcnNpeiBhZGxhciBpw6dpbiBrb250cm9sIGV0bWUgacWfbGV2aW5pIGV0a2lubGXFn3RpcmlyL2RldnJlIGTEscWfxLEgYsSxcmFrxLFyLiBCdSBzZcOnZW5lxJ9pIGV0a2lubGXFn3Rpcm1lZGVuIMO2bmNlIHNpc3RlbWluaXpkZSB5aW5lbGVuZW4gYWRsYXJhIHNhaGlwIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaSBvbHVwIG9sbWFkxLHEn8SxbsSxIGtvbnRyb2wgZXRtZWxpc2luaXouIEJ1bnUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzIGtvbnNvbCBrb211dHUgaWxlIHlhcGFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdCaWxldC1jb25maWdpdGVtLWxpbmsgw7x6ZXJpbmRlIGNvbmZpZ2l0ZW0tc3RhdHVzIGF5YXJsYW1hayBpw6dpbiBvbGF5IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdUYW0gbWV0aW4gYXJhbWEgacOnaW4ga3VsbGFuxLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBkaXppbmkgYWxhbmxhcsSxLiBBbGFubGFyIGRhIHNha2xhbsSxciwgYW5jYWsgZ2VuZWwgacWfbGV2c2VsbGlrIGnDp2luIHpvcnVubHUgZGXEn2lsZGlyLiBFa2xlcmluIGRhaGlsIGVkaWxtZXNpLCBnaXJpxZ9pIDAgb2xhcmFrIGF5YXJsYXlhcmFrIHZleWEgc2lsZXJlayBkZXZyZSBkxLHFn8SxIGLEsXJha8SxbGFiaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZGl6aW5pbmRlIGRlcG9sYW5hbiB2ZSB0YW0gbWV0aW4gYXJhbWFsYXLEsW7EsW4geWFuxLEgc8SxcmEgYmHFn2thIMWfZXlsZXIgacOnaW4gZGUga3VsbGFuxLFsYW4gYWxhbmxhci4gVGFtIGnFn2xldnNlbGxpayBpw6dpbiB0w7xtIGFsYW5sYXIgem9ydW5sdWR1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdIZXIgd2ViIGhpem1ldGkgKGFuYWh0YXIpIGnDp2luLCBpw6dlIGFrdGFybWFuxLFuIGvEsXPEsXRsYW5kxLHEn8SxIGJpciBkaXppIHPEsW7EsWYgKGRlxJ9lcikgdGFuxLFtbGFuYWJpbGlyLiBTZcOnaWxlbiB0w7xtIHPEsW7EsWZsYXIgdmV5YSBtZXZjdXQgdMO8bSBzxLFuxLFmbGFyIGnDp2luIHRhbsSxbWxhecSxY8SxIG5pdGVsaWtsZXJpbiBpbnZva2VyIHlhcMSxbGFuZMSxcm1hc8SxbmRhIHNlw6dpbG1lc2kgZ2VyZWtlY2VrdGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsSBrYXRtYW7EsSBpw6dpbiBHZW5lcmljSW50ZXJmYWNlIG1vZMO8bCBrYXlkxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIMOnYcSfxLFyxLFjxLEga2F0bWFuxLEgacOnaW4gR2VuZXJpY0ludGVyZmFjZSBtb2TDvGwga2F5ZMSxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsSBrYXRtYW7EsSBpw6dpbiBHZW5lcmljSW50ZXJmYWNlIG1vZMO8bCBrYXlkxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaW5lIGdlbmVsIGJha8SxxZ8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hc8SxbmRhIGRhxJ/EsXTEsW0gZHVydW1sYXLEsW7EsSBpw6dlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5hIG9sYXkgZHVydW1sYXLEsW7EsSBkYWhpbCBlZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnQnUgacWfbGVtaW4gc29udWN1bmRhIGfDtnLDvG50w7xsZW5lY2VrIG1ha3NpbXVtIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc2F5xLFzxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnQmlyIHPEsW7EsWZ0YW4gc29ydW1sdSBncnVidSBrb250cm9sIGV0bWVrIGnDp2luIG1vZMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdCaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5kZW4gc29ydW1sdSBncnVidSBrb250cm9sIGV0bWVrIGnDp2luIG1vZMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgaXN0YXRpc3Rpa2xlcmkgb2x1xZ90dXJtYWsgacOnaW4gbW9kw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ8Swc2ltIE1vZMO8bMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1hcmEgTW9kw7xsw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG5kZSBiaXIgYXJhbWEgc29udWN1bnVuIGhlciBzYXlmYXPEsW5kYSBnw7Zyw7xudMO8bGVuZWNlayB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaW4gc2F5xLFzxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuZGUgYmlyIGFyYW1hIHNvbnVjdW51biBoZXIgc2F5ZmFzxLFuZGEgZ8O2csO8bnTDvGxlbmVjZWsgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIHNhecSxc8SxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0FyYW5hY2FrIG5lc25lbGVyLCBrYcOnIGdpcmnFnyB2ZSBoYW5naSDDtnpuaXRlbGlrbGVyaW4gZ8O2c3RlcmlsZWNlxJ9pLiBDb25maWdJdGVtIMO2em5pdGVsaWtsZXJpbmluIEVsYXN0aWNzZWFyY2ggYXJhY8SxbMSxxJ/EsXlsYSBhw6fEsWvDp2EgZGVwb2xhbm1hc8SxIGdlcmVraXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ0dlbmVsIGJha8SxxZ8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEga2F0ZWdvcmlsZXJpIGnDp2luIHBhcmFtZXRyZWxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw7zDp8O8ayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFn8SxbiBzw7x0dW4gZmlsdHJlbGVyaSBpw6dpbiBwYXJhbWV0cmVsZXIuIEzDvHRmZW4gZGlra2F0OiBcJ0FrdGlmXCcgZGXEn2VyaW5pIDAgb2xhcmFrIGF5YXJsYW1haywgdGVtc2lsY2lsZXJpbiBidSBncnVidW4gYXlhcmxhcsSxbsSxIGtpxZ9pc2VsIHRlcmNpaGxlcmluZGUgZMO8emVubGVtZWxlcmluaSBlbmdlbGxlciwgYW5jYWsgecO2bmV0aWNpbGVyaW4gYmHFn2thIGJpciBrdWxsYW7EsWPEsSBhZMSxbmEgYXlhcmxhcsSxIGTDvHplbmxlbWVsZXJpbmUgaXppbiB2ZXJpci4gQnUgYXlhcmxhcsSxbiBrdWxsYW7EsWPEsSBhcmF5w7x6w7xuZGUgaGFuZ2kgYWxhbmRhIGfDtnN0ZXJpbGVjZcSfaW5pIGtvbnRyb2wgZXRtZWsgacOnaW4gXCdQcmVmZXJlbmNlR3JvdXBcJyBrdWxsYW7EsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RhxJ/EsXTEsW0gZHVydW1sYXLEsSBpw6dpbiBwYXJhbWV0cmVsZXIsIG3DvMWfdGVyaSB0ZW1zaWxjaXNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSByZW5rbGVuZGlyaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGVraSBkYcSfxLF0xLFtIGR1cnVtbGFyxLEgacOnaW4gcGFyYW1ldHJlbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdHZW5lbCBrYXRhbG9nIMO2em5pdGVsaWtsZXJpbmluIMO2cm5layBpemluIGdydXBsYXLEsW7EsW4gcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEgacOnaW4gYWQgbW9kw7xsw7wgcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBzYXnEsSBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdTYXlmYWxhciBpw6dpbiBwYXJhbWV0cmVsZXIgKHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pbiBnw7ZzdGVyaWxkacSfaSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBzw7xyw7xtIGRpemVzaSBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZWtpIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHPDvHLDvG0gZGl6ZXNpIMWfYWJsb24gYXJhw6cgc2V0aSBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEgacOnaW4gc8O8csO8bSB0ZXRpa2xleWljaXNpIHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFyxLFsbcSxxZ8gaGVyIFdlYnNlcnZpY2UgacOnaW4gaGVyIG9sYXkgacOnaW4gKEludm9rZXIgb2xhcmFrKSB5YXDEsWxhbmTEsXLEsWxtxLHFnyBleWxlbWkgZ2Vyw6dla2xlxZ90aXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ8SwemluIGdydWJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtsZW1lIGV5bGVtaW5pIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhxJ9hw6cgZ8O2csO8bsO8bcO8IGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrbGVtZSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSB0b3BsdSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGTDvHplbmxlbWUgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgZ2XDp21pxZ8gSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgeWF6ZMSxciBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBzaWxtZWsgacOnaW4gZ2VyZWtsaSBheXLEsWNhbMSxa2xhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBhcmF5xLFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQmlyIEJpbGV0IGJpciBDSVwneWEgQmHEn2xhbmTEscSfxLFuZGEgQ0lcJ27EsW4gb2xheSBkdXJ1bXVudSBvdG9tYXRpayBvbGFyYWsgYXlhcmxhecSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IGVrcmFuxLFuZGEgZGHEn8SxdMSxbSBkdXJ1bXVudSBheWFybGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgZWtyYW7EsW5kYSBvbGF5IGR1cnVtdW51IGF5YXJsYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuw7xkZSwgYXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGJhxZ9rYSBiaXIgbmVzbmV5bGUgaWxpxZ9raWxlbmRpcm1leWkgc2HEn2xheWFuIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRla2kgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gZ2XDp21pxZ9pbmUgZXJpxZ9tZWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gZ2XDp21pxZ9pbmUgZXJpxZ9tZWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIHNpbG1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYmHEn2xhbnTEsWxhcsSxbsSxIEHEn2HDpyBHw7Zyw7xuw7xtw7wgb2xhcmFrIGfDtnLDvG50w7xsZW1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgw6dvxJ9hbHRtYWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSDDp2/En2FsdG1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSBkw7x6ZW5sZW1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5lIGdlcmkgZMO2bm1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgeWF6ZMSxcm1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgeWFrxLFubGHFn3TEsXJtYWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZcOnbWnFn2luaSAodGVycyBzxLFyYWzEsSkgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdIacOnYmlyaSBzZcOnaWxtZW1pxZ9zZSBnw7ZzdGVyaWxlbiB2YXJzYXnEsWxhbiBrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0JpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmluIHRhbsSxbWxhecSxY8Sxc8SxLCDDtnJuZcSfaW4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFZhcnNhecSxbGFuIENvbmZpZ0l0ZW0jXCdkaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQ29uZmlnSXRlbUZldGNoIMOnYcSfxLFyxLFjxLFzxLFuxLEgb3RvbWF0aWsgb2xhcmFrIHRldGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnU8O8csO8bSBEaXplc2kgxLBmYWRlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnU8O8csO8bSBEaXplc2kgTW9kw7xsw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnU8O8csO8bSBUZXRpa2xleWljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUFDTFwnbmluIHnDvHLDvHTDvGxtZXNpbmluIMO2bmJlbGxlxJ9lIGFsxLFubcSxxZ8gYWxhbiBiYcSfxLFtbMSxbMSxa2xhcsSxbsSxIGtvbnRyb2wgZWRlcmVrIMO2bmxlbmlwIMO2bmxlbmVtZXllY2XEn2kuIEJ1LCBmb3Jtw7xsZXJsZXJpbiB5w7xrbGVtZSBzw7xyZWxlcmluaSBpeWlsZcWfdGlyZWJpbGlyLCBhbmNhayBBQ0xNb2TDvGxsZXJpIElUU01Db25maWdJdGVtLSB2ZSBGb3JtLVJldHVyblR5cGVzIGnDp2luIGt1bGxhbsSxbGFjYWtzYSBkZXZyZSBkxLHFn8SxIGLEsXJha8SxbG1hbMSxZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0JhxZ9sxLFrdGEgaGFuZ2kgZ2VuZWwgYmlsZ2lsZXIgZ8O2c3RlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnc8SxbsSxZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdrw7xyZXNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ8OcUkVNRSBTT05SQVNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfDnFJFTUUgw5ZOQ0VTxLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ8O8cmV0a2VuJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluw6cgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbsOnICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW7DpyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbsOnICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgaW7DpyBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGluw6cgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW7DpyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgaW7DpyBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluw6cgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBpbsOnIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW7DpyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW7DpyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW7DpyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluw6cgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW7DpyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW7DpyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW7DpyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW7DpyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW7DpyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluw6cgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBpbsOnICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgaW7DpyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW7DpyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbsOnICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGluw6cgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbsOnICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW7DpyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluw6cgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluw6cgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluw6cgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW7DpyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbsOnICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluw6cgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ011aGFzZWJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXMgVGFoc2lzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnWcO2bmV0aWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdDaWhheiBUaXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa8O8IEthcGFzaXRlc2kgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdQaWwgVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0JpbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ090b2LDvHMgQXJhecO8esO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIFPEsW7EsWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpayBrYXJ0xLEgYmHFn8SxbmEga2FwYXNpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYXJ0IE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thcnQgT2t1eXVjdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYXJ0IFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ03DvMWfdGVyaSBTZXJ0aWZpa2FsYXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdNw7zFn3RlcmkgWWF6xLFsxLFtxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnTcO8xZ90ZXJpIGthdGVnb3Jpc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnU2FhdCBIxLF6xLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1NhYXQgSMSxesSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2QgxLBtemFsYW1hIFNlcnRpZmlrYWxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJhbnMgVGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdEYW7EscWfbWFubMSxayBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ8SwbGV0acWfaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0Rpc3RyaWLDvHTDtnJsZSDEsGxldGnFn2ltZSBHZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250ZXluZXIgWcO2bmV0aW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU8O2emxlxZ9tZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnU8O2emxlxZ9tZSBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTw7Z6bGXFn21lIHPDvHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU8O2emxlxZ9tZSBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0thYmxvc3V6IFRlbGVmb24gKERFQ1QgVGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnTWFsaXlldCBiaXJpbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdSdWhzYXQgc2F5xLFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ09sdcWfdHVydWxtYSBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ8OWemVsIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBBeXLEsWxtxLHFnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIFN1bnVjdXN1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYXR1cmEgVGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdTaXBhcmnFnyBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ1RlbWluYXQgVGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ1lhecSxbmxhbm1hIHRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTWFzYcO8c3TDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQmVsZ2UgxLBtemFsYW1hIFNlcnRpZmlrYWxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wb3N0YSBTZXJ0aWZpa2FsYXLEsSAoUy9NSU1FIFNlcnRpZmlrYWxhcsSxKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfEsMWfIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1NvbiBJUCBBZHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdEZXN0ZcSfaW4gc29udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1NvbiBLdWxsYW5tYSBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0hhcmljaSBTYWJpdCBTw7xyw7xjw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdHw7x2ZW5saWsgRHV2YXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ8OccsO8biBZYXrEsWzEsW3EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1ZvbGFuIEVuZXJqaSBEZXBvbGFtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm0gRmFrdMO2csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnw5xjcmV0c2l6IHlhesSxbMSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdHZW5lbCBCaWxnaWxlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpayBLYXJ0bGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpayBrYXJ0xLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdEb25hbsSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0RvbmFuxLFtIE1vZGVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdEb25hbsSxbSBBxJ/EsXJsxLHEn8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLdWxha2zEsWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBQcm90b2tvbMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0tpbWxpayB2ZSBFcmnFn2ltIFnDtm5ldGltaSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnRW52YW50ZXIgTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnWWF0xLFyxLFtIG1hbGl5ZXRsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmF0dXJhIE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tsYXZ5ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgTW9uaXTDtnIgKFPEsXbEsSBLcmlzdGFsIEVrcmFuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIE1vbml0w7ZyIChJxZ/EsWsgWWF5YW4gRGl5b3QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1NhYml0IFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnRGl6w7xzdMO8IEJpbGdpc2F5YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdFbmxlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0thdG1hbiAxOiBGaXppa3NlbCBLYXRtYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnS2F0bWFuIDI6IFZlcmkgQmHEn2xhbnTEsSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnS2F0bWFuIDM6IEHEnyBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdLYXRtYW4gMzogQcSfIEthdG1hbsSxIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnS2F0bWFuIDQ6IFRhxZ/EsW1hIEthdG1hbsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdLYXRtYW4gNTogT3R1cnVtIEthdG1hbsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0thdG1hbiA2OiBTdW51bSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0thdG1hbiA3OiBVeWd1bGFtYSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdLaXJhIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpc2FucyBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpc2FucyBBbmFodGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGlzYW5zIFTDvHLDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGlzYW5zIHPDvHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfFnnUgdGFyaWhlIGthZGFyIGxpc2FucyBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXR5dW0gRGVtaXIgRm9zZmF0IChMaUZlUE80KSBQaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdHl1bSDEsHlvbiAoTGktaW9uKSBQaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdLcmVkaSBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ8Sww6dpbmRlIGJ1bHVuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnQm95bGFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfDnHJldGljaSBmaXJtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWFrc2ltdW0gWcO8ayBLYXBhc2l0ZXNpIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdIYWbEsXphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnQmVsbGVrIFTDvHLDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaSBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ0NlcCBUZWxlZm9udSBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsIEHDp8Sxa2xhbWFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXTDtnIgw4fDtnrDvG7DvHJsw7zEn8O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0w7ZyIEJveXV0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ0ZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ8WeZWJla2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnQcSfIEJpbGdpc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0HEnyBCaWxnaWxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0HEnyBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2VsLUthZG1peXVtIChOaUNkKSBQaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtlbC1NZXRhbCBIaWRyaXQgKE5pTUgpIFBpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdHaXpsaWxpayBTw7Z6bGXFn21lc2kgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3QgRGVmdGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0NQVSBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0gbW9kw7xsw7wgc2F5xLFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnR3JhZmlrIGthcnTEsSBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBNb25pdMO2ciAoT3JnYW5payBJxZ/EsWsgWWF5YW4gRGl5b3QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ8SwxZ9sZXRtZSBtYWxpeWV0bGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdTaXBhcmnFnyBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdEacSfZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ8OHxLFrdMSxbGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ09ydGFrbMSxayBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9uIE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbiBUaXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6aWtzZWwgw4dla2lyZGVrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnR8O8w6cgRGHEn8SxdMSxbcSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnxZ51cmFkYW4gc2F0xLFuIGFsxLFuZMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdSYWYgRGVyaW5sacSfaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhZiDDnG5pdGVsZXJpIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnT2RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIEthcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIFNlcnRpZmlrYWxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnU2F0xLHFnyBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVXlkdSBUZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTxLF6ZMSxcm1heiBLdXLFn3VuLUFzaXQgKFNMQSkgQWvDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlcmkgbnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1N1bnVjdSBZYXrEsWzEsW3EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0hpem1ldCBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aXMgRXRpa2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdTb2tldCBUaXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnWWF6xLFsxLFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnS29udcWfbWFjxLFsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdCYcWfbGFuZ8Sxw6cgSVAgQWRyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdEZXBvbGFtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ0RlcG9sYW1hIELDtmzDvG3DvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0JhxJ9sxLEgT3J0YWtsxLFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfDlnpldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ8SwbmNlIMSwc3RlbWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfEsHBsaWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG9wbGFtIEdyYWZpayBrYXJ0xLEgUkFNXCdpIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3BsYW0gUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0Rva3VubWF0aWsgRWtyYW4gTW9uaXTDtnLDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ0t1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBIdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBLdWxha2zEsWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWIga2FtZXJhc8SxJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/uk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQl9Cw0LPQsNC70YzQvdGWINC10LrRgdC/0LvRg9Cw0YLQsNGG0ZbQudC90ZYg0LTQsNC90ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstGF0ZbQtNC90LjRhSDQtNCw0L3QuNGFINC30LDQv9C40YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstC40YXRltC00L3QuNGFINC00LDQvdC40YUg0LLRltC00L/QvtCy0ZbQtNGWJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQtdGA0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINC60LvQsNGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINGA0L7Qu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC60LvQsNGB0YMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9GCINCy0Lgg0LzQvtC20LXRgtC1INGW0LzQv9C+0YDRgtGD0LLQsNGC0Lgg0L/QsNC60YPQvdC60Lgg0LrQu9Cw0YHRltCyIFJlYWR5MkltcG9ydCwg0YnQviDQvNGW0YHRgtGP0YLRjCDQvdCw0LnQv9C+0YjQuNGA0LXQvdGW0YjRliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INC80L7QttC1INC30L3QsNC00L7QsdC40YLQuNGB0Y8g0LTQvtC00LDRgtC60L7QstCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0J7QvdC+0LLQu9C10L3QvdGPINGW0YHQvdGD0Y7Rh9C40YUg0YHRg9GC0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0IbQvNC/0L7RgNGCINC/0LDQutC10YLRltCyINC60LvQsNGB0ZbQsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0KDQvtC70YwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0ZbQu9GM0YLRgCDQtNC70Y8g0LrQu9Cw0YHRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LrQu9Cw0YEg0LfRliDRgdC/0LjRgdC60YMsINGJ0L7QsSDRgdGC0LLQvtGA0LjRgtC4INC90L7QstC40Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQn9C+0YHQuNC70LDQvdC90Y8g0L3QsCDRltC90YjQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0L3QvtC80LXRgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0J3QvtC80LXRgCDRltC90YjQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINC3INGP0LrQuNC8INC/0L7RgtGA0ZbQsdC90L4g0LfQslwn0Y/Qt9Cw0YLQuC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfQktC4INC00ZbQudGB0L3QviDRhdC+0YfQtdGC0LUg0LLQuNC00LDQu9C40YLQuCDRhtC10Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQndCw0LfQstCwINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CG0LxcJ9GPINCy0LbQtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQtdC70LXQvNC10L3RgtCw0LzQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Lcg0YLQsNC60LjQvNC4INC90L7QvNC10YDQsNC80Lg6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0LLQtdGA0YHRltGXINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQndC+0LzQtdGAINCy0LXRgNGB0ZbRlyDQstC20LUg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQsNC80Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDQvdC+0LzQtdGA0LDQvNC4OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0IbRgdGC0L7RgNGW0Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zc6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9CX0LzRltGB0YIg0ZbRgdGC0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Cn0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0JfQsdGW0LvRjNGI0LXQvdC40Lkg0LLQuNC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9CV0LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC90LAg0YHRgtC+0YDRltC90YbRlic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDQt9C90LDQudC00LXQvdC+INC00LDQvdC40YUg0L/RgNC+INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQktC40LHQtdGA0ZbRgtGMINGG0LXQuSDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQl9Cw0L/Rg9GB0YLQuNGC0Lgg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQotCw0LrQvtC2INGI0YPQutCw0YLQuCDQsiDQv9C+0L/QtdGA0LXQtNC90ZbRhSDQstC10YDRgdGW0Y/RhT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDQtNC70Y8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9Cg0ZbQstC10L3RjCDQs9C70LjQsdC40L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9CX0LHRltC70YzRiNC40YLQuC/Qt9C80LXQvdGI0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ9CU0L7RgdGP0LPQvdGD0YLQviDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LPQviDRgNGW0LLQvdGPINC/0L7RgdC40LvQsNC90Ywg0LTQu9GPIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9CG0L3RhNC+0YDQvNCw0YbRltGPINC/0YDQviDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn0J/QvtGC0L7Rh9C90LjQuSDRgdGC0LDQvSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfQn9C+0YLQvtGH0L3QuNC5INGB0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQntGB0YLQsNC90L3RltC5INGA0LDQtyDQt9C80ZbQvdC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQntGB0YLQsNC90L3RltC5INGA0LDQtyDQt9C80ZbQvdC10L3Qvic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ9CS0LDRiNGWINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Cf0L7RiNGD0Log0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQvtCxXCfRlNC60YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ9Ck0ZbQu9GM0YLRgNGD0LLQsNGC0Lgg0LfQsCDRgtC40L/QvtC8JzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0JHRg9C00LUg0ZbQvNC/0L7RgNGC0L7QstCw0L3QviDQvdCw0YHRgtGD0L/QvdGWINC60LvQsNGB0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0JHRg9C00YPRgtGMINGW0LzQv9C+0YDRgtC+0LLQsNC90ZYg0L3QsNGB0YLRg9C/0L3RliDRgNC+0LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfQl9Cy0LXRgNC90ZbRgtGMINGD0LLQsNCz0YMsINGJ0L4g0YLQsNC60L7QtiDQsdGD0LTRg9GC0Ywg0YHRgtCy0L7RgNC10L3RliDQstGW0LTQv9C+0LLRltC00L3RliDQtNC40L3QsNC80ZbRh9C90ZYg0L/QvtC70Y8g0ZYg0LrQu9Cw0YHQuCBHZW5lcmFsQ2F0YWxvZywg0ZYg0LDQstGC0L7QvNCw0YLQuNGH0L3QtSDQstC40LTQsNC70LXQvdC90Y8g0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9Cl0L7Rh9C10YLQtSDQv9GA0L7QtNC+0LLQttC40YLQuD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn0J/QvtGC0YDRltCx0L3RliDQv9GA0LjQutC70LDQtNC4INC60LvQsNGB0ZbQsiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn0JLQuNC30L3QsNGH0LXQvdC90Y8g0L3QtSDRlCDQutC+0YDQtdC60YLQvdC40LwgWUFNTCDRhdC10YjQtdC8Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ9Ce0LPQu9GP0LQ6INCV0LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCDQvdC1INCy0LrQsNC30YPRlNGC0YzRgdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ9CS0LDQvCDQv9C+0YLRgNGW0LHQtdC9INC/0YDQuNC90LDQudC80L3RliDQvtC00LjQvSDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0L3QtdC80LDRlCDQv9GA0LDQsiDQvdCwINC30LDQv9C40YEg0LTQviDRhtGM0L7Qs9C+INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0JTQu9GPINC60LvQsNGB0YMgJXMg0L3QtSDQstC40LfQvdCw0YfQtdC90L4g0LLQuNC30L3QsNGH0LXQvdC90Y8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgIiVzIiDQvdC1INC30L3QsNC50LTQtdC90L4g0LIg0LHQsNC30ZYg0LTQsNC90LjRhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfQndC1INCy0LTQsNC70L7RgdGPINCy0LjQtNCw0LvQuNGC0Lgg0ZbQtNC10L3RgtC40YTRltC60LDRgtC+0YAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn0JLQtdGA0YHRltGOINC00LvRjyBDb25maWdJdGVtSUQgJXMg0L3QtSDQt9C90LDQudC00LXQvdC+ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEINCw0LHQviBDbGFzc0lEINC90LUg0LLQutCw0LfRg9GO0YLRjNGB0Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQlNC+0YHRgtGD0L8g0L3QtSDQvdCw0LTQsNGU0YLRjNGB0Y8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXQvNC+0LbQu9C40LLQviDQv9C+0LrQsNC30LDRgtC4INGW0YHRgtC+0YDRltGOLCDQvdC1INCy0LrQsNC30LDQvdC+IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC10LzQvtC20LvQuNCy0L4g0L/QvtC60LDQt9Cw0YLQuCDRltGB0YLQvtGA0ZbRjiwg0L3QtdC80LDRlCDQv9GA0LDQsiDQtNC+0YHRgtGD0L/RgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05ldyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCwINCy0LXRgNGB0ZbRjyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0J7QvdC+0LLQu9C10L3QviDRgdGC0LDQvSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPICjQvdC+0LLQuNC5PSVzLCDRgdGC0LDRgNC40Lk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ce0L3QvtCy0LvQtdC90LjQuSDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMgKNC90L7QstC40Lk9JXMsINGB0YLQsNGA0LjQuT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykg0LLQuNC00LDQu9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9CU0L7QtNCw0L3QviDQv9C+0YHQuNC70LDQvdC90Y8g0L3QsCAlcyAo0YLQuNC/PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0J/QvtGB0LjQu9Cw0L3QvdGPINC90LAgJXMgKHR5cGU9JXMpINCy0LjQtNCw0LvQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ9Ce0L3QvtCy0LvQtdC90L4g0LLQuNC30L3QsNGH0LXQvdC90Y8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0IbQvFwn0Y8g0L7QvdC+0LLQu9C10L3QviAo0L3QvtCy0LU9JXMsINGB0YLQsNGA0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn0JDRgtGA0LjQsdGD0YIgJXMg0LfQvNGW0L3QtdC90L4g0LcgIiVzIiDQvdCwICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn0JLQuNC00LDQu9C10L3QviDQstC10YDRgdGW0Y4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEINCw0LHQviBWZXJzaW9uSUQg0L3QtSDQstC60LDQt9GD0Y7RgtGM0YHRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdC80L7QttC70LjQstC+INC/0L7QutCw0LfQsNGC0Lgg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDQvdC10LzQsNGUINC/0YDQsNCyINC00L7RgdGC0YPQv9GDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyDQvdC1INC30L3QsNC50LTQtdC90L4g0LIg0LHQsNC30ZYg0LTQsNC90LjRhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9C90LDQtNGA0YPQutC+0LLQsNC90L4g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4gJXMg0LIgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cf0L7RgdC40LvQsNC90L3Rjyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ9Cd0LXQv9GA0LDQstC40LvRjNC90LjQuSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQg0L3QtSDQvdCw0LTQsNGU0YLRjNGB0Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn0J/RgNCw0LLQsCDQtNC+0YHRgtGD0L/RgyDQtNC70Y8g0YbRjNC+0LPQviDQutC70LDRgdGDINC90LUg0L3QsNC00LDQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0JHQtdC30YDQtdC30YPQu9GM0YLQsNGC0L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLQuCDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn0J3QtdC80L7QttC70LjQstC+INC/0L7QutCw0LfQsNGC0Lgg0LXQu9C10LzQtdC90YIsINC90LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMg0LTQu9GPIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0g0L3QtSDQt9C90LDQudC00LXQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfQktC10YDRgdGW0Lkg0L3QtSDQt9C90LDQudC00LXQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9C+0L/QtdGA0LDRgtC40LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9C/0L7Qv9C10YDQtdC00LbQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9GW0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0YbRjNC+0LPQviDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyDRhtGM0L7Qs9C+INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn0J3QtdC80LDRlCDQv9GA0LDQsiDQtNC+0YHRgtGD0L/Rgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfQpNGW0LvRjNGC0YAg0L3QtdC00ZbQudGB0L3QuNC5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn0J/QsNGA0LDQvNC10YLRgNC4INC/0L7RiNGD0LrRgyDQvdC10LLRltGA0L3RliEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfQn9C+0LrQsNC30LDQvdGWINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDRgdGC0LDQvdGDINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0J/QvtGC0L7Rh9C90LjQuSDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0KLQuNC/INGW0L3RhtC40LTQtdC90YLRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICcg0JzRltC2JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCx0LzQtdC20LXQvdC90Y8g0LrQu9Cw0YHRltCyINC00LvRjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLQuNCx0LXRgNGW0YLRjCDQvtC00LjQvSDQsNCx0L4g0LTQtdC60ZbQu9GM0LrQsCDQutC70LDRgdGW0LIsINGJ0L7QsSDQvtCx0LzQtdC20LjRgtC4INCy0LjQsdGW0YAg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7QsdC80LXQttC10L3QvdGPINC60LvQsNGB0ZbQsiDQtNC70Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfQktC40LHQtdGA0ZbRgtGMINC+0LTQuNC9INCw0LHQviDQtNC10LrRltC70YzQutCwINC60LvQsNGB0ZbQsiwg0YnQvtCxINC+0LHQvNC10LbQuNGC0Lgg0LLQuNCx0ZbRgCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn0JTQuNC90LDQvNGW0YfQvdC40LkgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfQodGC0LDRgtC40YfQvdC40LkgKNCy0LXRgNGB0ZbRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn0KLQuNC/INC/0L7RgdC40LvQsNC90L3RjyDQvdCwINC/0L7RgdC40LvQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfQp9C4INGB0YLQvtGB0YPRlNGC0YzRgdGPINGG0LUg0L/QvtGB0LjQu9Cw0L3QvdGPIENvbmZpZ0l0ZW0g0LDQsdC+INGB0YLQsNGC0LjRh9C90L7RlyDQstC10YDRgdGW0Zcg0L7QsVwn0ZTQutGC0LAsINC90LAg0Y/QutC40Lkg0L/QvtGB0LjQu9Cw0ZTRgtGM0YHRjyDQv9C+0YHQuNC70LDQvdC90Y8uINCU0LvRjyDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0YHQuNC70LDQvdGMINCy0LjQutC+0L3Rg9GU0YLRjNGB0Y8g0LvQuNGI0LUg0L7QsdGH0LjRgdC70LXQvdC90Y8g0L/QvtGC0L7Rh9C90L7Qs9C+INGB0YLQsNC90YMg0ZbQvdGG0LjQtNC10L3RgtGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LDRgtGA0LjQsdGD0YIsINC30LAg0Y/QutC40Lwg0LHRg9C00LUg0LfQtNGW0LnRgdC90Y7QstCw0YLQuNGB0Y8g0L/QvtGI0YPQuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ9Ch0YLRgNGD0LrRgtGD0YDQsCDQsdCw0LfQuCDQtNCw0L3QuNGFINC90LXQstGW0YDQvdCwLiDQkdGD0LTRjCDQu9Cw0YHQutCwLCDQvdCw0LTQsNC50YLQtSDRhdC10Ygg0Lcg0LTQsNC90LjQvNC4INGDINGE0L7RgNC80LDRgtGWIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAn0KDRj9C00L7QuiBZQU1MINC/0L7RgtGA0ZbQsdC90L4g0L/QvtGH0LjQvdCw0YLQuCDQtyBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfQndC1INCy0LTQsNC70L7RgdGPINC+0YfQuNGB0YLQuNGC0Lgg0YLQsNCx0LvQuNGG0Y4gY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn0JLRltC00L/QvtCy0ZbQtNC90LjRhSDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC90LUg0LfQvdCw0LnQtNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9Cd0LUg0LLQtNCw0LvQvtGB0Y8g0LLRgdGC0LDQstC40YLQuCDQsiDRgtCw0LHQu9C40YbRjiBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0YHRgtCw0LLQuNCyIDAg0YDRj9C00LrRltCyINGDINGC0LDQsdC70LjRhtGOIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfQnNCw0LrRgdC40LzQsNC70YzQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQvtC00L3QvtCz0L4g0LXQu9C10LzQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICfQhtC80L/QvtGA0YLRg9Cy0LDRgtC4L9C10LrRgdC/0L7RgNGC0YPQstCw0YLQuCDQstC60LvQsNC00LXQvdC90Y8gKNGP0Log0L7RgdGC0LDQvdC90ZYg0LfQsNC/0LjRgdC4INCyINGA0Y/QtNC60YMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn0KDRj9C00L7QuiDQstC10YDRgdGW0ZcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn0J/QvtC80LjQu9C60LAg0YHQuNC90YXRgNC+0L3RltC30LDRhtGW0Zcg0LLQuNC30L3QsNGH0LXQvdGMLiDQkdGD0LTRjCDQu9Cw0YHQutCwLCDQv9C10YDQtdCy0ZbRgNGC0LUg0LvQvtCzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ9CjINCy0LDRgSDRlCDQstC40LfQvdCw0YfQtdC90L3RjyBJVFNNQ29uZmlnSXRlbSwg0Y/QutGWINC90LUg0YHQuNC90YXRgNC+0L3RltC30L7QstCw0L3Rli4g0JHRg9C00Ywg0LvQsNGB0LrQsCwg0YDQvtC30LPQvtGA0L3RltGC0Ywg0LTQuNC90LDQvNGW0YfQvdGWINC30LzRltC90Lgg0L/QvtC70ZbQsiBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9CX0LDQutGW0L3Rh9C40LLRgdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn0J7QsdGB0LvRg9Cz0L7QstGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0ZbQu9C+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9CX0LDQv9C70LDQvdC+0LLQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn0KDQtdC80L7QvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfQndCwINC/0LXQvdGB0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn0J7Qs9C70Y/QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn0KLQtdGB0YLRg9Cy0LDQvdC90Y8vUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9Ce0LPQu9GP0LQg0YLQsCDQv9GW0LTRgtCy0LXRgNC00LbQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfQhtC80L/QvtGA0YIg0LrQu9Cw0YHRltCyL9GA0L7Qu9C10Lkg0YLQsCDQv9C+0LJcJ9GP0LfQsNC90LjRhSDQtyDQvdC40LzQuCDQv9C+0LvRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn0JLQuNC90LjQutC70LAg0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRltC80L/QvtGA0YLRgyDQutC70LDRgdGDLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g0J/RgNC40YXQvtCy0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDQn9C+0LrQsNC30LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQlNC+0LfQstC+0LvRj9GUINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDRgNC+0LfRiNC40YDQtdC90ZYg0YPQvNC+0LLQuCDQv9C+0YjRg9C60YMg0LTQu9GPINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4g0JfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0YbRltGU0Zcg0YTRg9C90LrRhtGW0Zcg0LLQuCDQvNC+0LbQtdGC0LUg0YjRg9C60LDRgtC4LCDQvdCw0L/RgNC40LrQu9Cw0LQsINC90LDQt9Cy0YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Lcg0YLQsNC60LjQvNC4INGD0LzQvtCy0LDQvNC4LCDRj9C6ICIoKmtleTEqJiYqa2V5MiopIiDQsNCx0L4gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQlNC+0LfQstC+0LvRj9GUINGA0L7Qt9GI0LjRgNC10L3RliDRg9C80L7QstC4INC/0L7RiNGD0LrRgyDRgyDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQutC70ZbRlNC90YLQsC4g0JfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0YbRltGU0Zcg0YTRg9C90LrRhtGW0Zcg0LLQuCDQvNC+0LbQtdGC0LUg0YjRg9C60LDRgtC4LCDQvdCw0L/RgNC40LrQu9Cw0LQsINC90LDQt9Cy0YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Lcg0YLQsNC60LjQvNC4INGD0LzQvtCy0LDQvNC4LCDRj9C6ICIoKmtleTEqJiYqa2V5MiopIiDQsNCx0L4gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfQn9GA0LjQt9C90LDRh9C10L3RliDQmtCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn0JrQhiwg0L/RgNC40LfQvdCw0YfQtdC90ZYg0LrQvtC80L/QsNC90ZbRly3QutC70ZbRlNC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9Cf0ZbQu9C+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQn9C10YDQtdCy0ZbRgNGP0YLQuCDRg9C90ZbQutCw0LvRjNC90LUg0ZbQvFwn0Y8g0YLRltC70YzQutC4INCyINC80LXQttCw0YUg0L7QtNC90L7Qs9C+INC60LvQsNGB0YMgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSDQsNCx0L4g0LPQu9C+0LHQsNC70YzQvdC+IChcJ2dsb2JhbFwnKSwg0YnQviDQvtC30L3QsNGH0LDRlCwg0YnQviDQv9GA0Lgg0L/QvtGI0YPQutGDINC00YPQsdC70ZbQutCw0YLRltCyINCy0YDQsNGF0L7QstGD0ZTRgtGM0YHRjyDQutC+0LbQtdC9INGW0YHQvdGD0Y7Rh9C40LkgQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LzQvtC00YPQu9GMLCDRidC+0LEg0LfQsNGB0YLQvtGB0YPQstCw0YLQuCDRgdGF0LXQvNGDINGW0LzQtdC90YPQstCw0L3QvdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQvNC+0LTRg9C70YwsINGJ0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INC90L7QvNC10YDQvdGDINGB0YXQtdC80YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LzQvtC00YPQu9GMINC00LvRjyDQt9Cw0YHRgtC+0YHRg9Cy0LDQvdC90Y8g0YHRhdC10LzQuCDRgNGP0LTQutGW0LIg0LLQtdGA0YHRltC5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LDRgtGA0LjQsdGD0YLQuCwg0YnQvtCxINC30LDQv9GD0YHRgtC40YLQuCDRgdGC0LLQvtGA0LXQvdC90Y8g0L3QvtCy0L7RlyDQstC10YDRgdGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LrQsNGC0LXQs9C+0YDRltGXLCDRj9C60ZYg0YHQu9GW0LQg0L/RgNC40LfQvdCw0YfQuNGC0Lgg0YbRjNC+0LzRgyDQutC70LDRgdGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ9Ck0ZbQu9GM0YLRgNC4INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YHRgtC+0LLQv9GG0Y8g0LTQu9GPINCe0LPQu9GP0LTRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn0KHRgtC+0LLQv9GG0ZYsINGP0LrRliDQvNC+0LbQvdCwINCy0ZbQtNGE0ZbQu9GM0YLRgNGD0LLQsNGC0Lgg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLiDQn9GA0LjQvNGW0YLQutCwOiDQlNC+0L/Rg9GB0LrQsNGO0YLRjNGB0Y8g0LvQuNGI0LUg0LDRgtGA0LjQsdGD0YLQuCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGC0LAg0LTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQldC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtC00LDRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQoNC10LTQsNCz0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC80L7QtNGD0LvRjyDQv9C+0LTRltC5LCDRj9C60LjQuSDQtNC+0LfQstC+0LvRj9GUINC30LDQv9C40YHRg9Cy0LDRgtC4INGW0YHRgtC+0YDRltGOINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC/0L7QtNGW0Lkg0LTQu9GPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrQuNC5INC+0L3QvtCy0LvRjtGUINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC00L4g0ZfRhSDQv9C+0YLQvtGH0L3QvtCz0L4g0LLQuNC30L3QsNGH0LXQvdC90Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn0IbRgdGC0L7RgNGW0Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0JTRgNGD0Log0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0JzQsNGB0YjRgtCw0LEg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn0JTQtdGA0LXQstC+INC10LvQtdC80LXQvdGC0LAg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0g0JLQtdGA0YHRltGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINC90LDRgdGC0YPQv9C90LjRhSDQutC70LDRgdGW0LIg0L3QtSDQsdGD0LTRg9GC0Ywg0LfQsdC10YDRltCz0LDRgtC40YHRjyDQvdCwINGB0LXRgNCy0LXRgNGWIEVsYXN0aWNzZWFyY2guINCp0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INGG0LUg0LTQviDRltGB0L3Rg9GO0YfQuNGFIENJLCDQvNGW0LPRgNCw0YbRltGPIENJINC/0L7QstC40L3QvdCwINCx0YPRgtC4INC30LDQv9GD0YnQtdC90LAg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9GW0YHQu9GPINC30LzRltC90Lgg0YbRltGU0Zcg0L7Qv9GG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0Lcg0L3QsNGB0YLRg9C/0L3QuNC80Lgg0YHRgtCw0L3QsNC80Lgg0YDQvtC30LPQvtGA0YLQsNC90L3RjyDQvdC1INCx0YPQtNGD0YLRjCDQt9Cx0LXRgNGW0LPQsNGC0LjRgdGPINC90LAg0YHQtdGA0LLQtdGA0ZYgRWxhc3RpY3NlYXJjaC4g0KnQvtCxINC30LDRgdGC0L7RgdGD0LLQsNGC0Lgg0YbQtSDQtNC+INGW0YHQvdGD0Y7Rh9C40YUgQ0ksINC80ZbQs9GA0LDRhtGW0Y8gQ0kg0L/QvtCy0LjQvdC90LAg0LHRg9GC0Lgg0LfQsNC/0YPRidC10L3QsCDRh9C10YDQtdC3INC60L7QvdGB0L7Qu9GMINC/0ZbRgdC70Y8g0LfQvNGW0L3QuCDRhtGW0ZTRlyDQvtC/0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQntCx0LzQtdC20LXQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Ca0L7QvdGE0ZbQs9GD0YDQsNGG0ZbRjyDQntCx0LzQtdC20LXQvdC90Y8g0LrRltC70YzQutC+0YHRgtGWINC10LvQtdC80LXQvdGC0ZbQsiDQvdCwINGB0YLQvtGA0ZbQvdGG0ZYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDQtNCw0L3QuNGFINGD0L/RgNCw0LLQu9GW0L3QvdGPINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC80LDRgdC+0LLQvtCz0L4g0LzQvtC00YPQu9GPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0L3RhNGW0LPRg9GA0LDRhtGW0Y8g0LXQu9C10LzQtdC90YLQsCDQv9C+0YjRg9C60YMg0LHQtdC60LXQvdC0LdC80LDRgNGI0YDRg9GC0LjQt9Cw0YLQvtGA0LAg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQodGC0LLQvtGA0Y7QudGC0LUg0YLQsCDQutC10YDRg9C50YLQtSDQstC40LfQvdCw0YfQtdC90L3Rj9C80Lgg0LTQu9GPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn0KHRgtCy0L7RgNGO0ZQg0LrQstC40YLQutC4INC00LvRjyBDb25maWdJdGVtcyDRgyDQv9C10LLQvdGWINC80L7QvNC10L3RgtC4INGH0LDRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfQmtC70ZbRlNC90YLQuCDQvNC+0LbRg9GC0Ywg0L/QtdGA0LXQs9C70Y/QtNCw0YLQuCDRltGB0YLQvtGA0LjRh9C90ZYg0LLQtdGA0YHRltGXIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfQmtC70ZbRlNC90YLQuCDQvNCw0Y7RgtGMINC80L7QttC70LjQstGW0YHRgtGMINCy0YDRg9GH0L3RgyDQv9C10YDQtdC80LjQutCw0YLQuNGB0Y8g0LzRltC2INGW0YHRgtC+0YDQuNGH0L3QuNC80Lgg0LLQtdGA0YHRltGP0LzQuCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfQlNCw0L3RliDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LIg0LDRgtGA0LjQsdGD0YLRliDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCf0YDQuNC60LvQsNC0OiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdGWINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQsiDQsNGC0YDQuNCx0YPRgtGWINC90LAg0LXQutGA0LDQvdGWINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0J/RgNC40LrQu9Cw0LQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9GC0LUg0LTRltGXLCDQtNC70Y8g0Y/QutC40YUg0LrQvdC+0L/QutCwINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0LTQvtGB0YLRg9C/0L3QsCDRgyDQstGW0LTQttC10YLRliDQv9C+0LJcJ9GP0LfQsNC90LjRhSDQvtCxXCfRlNC60YLRltCyIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCX0LLQtdGA0L3RltGC0Ywg0YPQstCw0LPRgywg0YnQviDQsiDRhtC40YUg0LTRltGP0YUg0L/QvtCy0LjQvdC90ZYg0LHRg9GC0Lgg0LfQsNGA0LXRlNGB0YLRgNC+0LLQsNC90ZYg0L3QsNGB0YLRg9C/0L3RliBKUyDRliBDU1Mg0YTQsNC50LvQuDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0ZYgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDRgdGF0LXQvNGDIFRlbXBsYXRlOjpUb29sa2l0INC00LvRjyDRgNGP0LTQutGW0LIg0LLQtdGA0YHRltC5LiDQktC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQu9C40YjQtSDRgyDQstC40L/QsNC00LrRgywg0Y/QutGJ0L4g0LzQvtC00YPQu9GMINGA0Y/QtNC60ZbQsiDQstC10YDRgdGW0Lkg0LzQsNGUINC30L3QsNGH0LXQvdC90Y8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9GC0LUg0L3QsNCx0ZbRgCDRg9C80L7Qsiwg0LfQsCDRj9C60LjRhSDQutC+0YDQuNGB0YLRg9Cy0LDRh9C10LLRliDQtNC+0LfQstC+0LvQtdC90L4g0LHQsNGH0LjRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQsCDQsdCw0LbQsNC90L3Rj9C8LCDRg9C80L7QstC4INC80L7QttGD0YLRjCDQsdGD0YLQuCDQvtCx0LzQtdC20LXQvdGWINC/0LXQstC90LjQvNC4INCz0YDRg9C/0LDQvNC4INC60L7RgNC40YHRgtGD0LLQsNGH0ZbQsi4g0ITQtNC40L3QuNC8INC+0LHQvtCyXCfRj9C30LrQvtCy0LjQvCDQsNGC0YDQuNCx0YPRgtC+0Lwg0ZQg0L3QsNC30LLQsC4g0K/QutGJ0L4g0L3QtSDQstC60LDQt9Cw0L3QviDQttC+0LTQvdC40YUg0ZbQvdGI0LjRhSDQv9Cw0YDQsNC80LXRgtGA0ZbQsiwg0LLRgdGWINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCx0YPQtNGD0YLRjCDQstC40LTQuNC80LjQvNC4INGDINGG0ZbQuSDQutCw0YLQtdCz0L7RgNGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC90LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC00LDQu9C10L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQt9Cw0LPQsNC70YzQvdC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQvtGC0YDQuNC80LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30LDQs9Cw0LvRjNC90L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC90LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQt9Cw0LPQsNC70YzQvdC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC+0LTRg9C70Ywg0L7Qs9C70Y/QtNGDINC00LvRjyDQstGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0L3QtdCy0LXQu9C40LrQvtCz0L4g0YHQv9C40YHQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGH0Lgg0L/QvtGC0YDRltCx0L3QviDQv9C+0LrQsNC30YPQstCw0YLQuCDQvNGW0YLQutC4INGC0LjQv9GDINC30LJcJ9GP0LfQutGDINGDINC3XCfRlNC00L3QsNC90L3Rj9GFINCy0YPQt9C70ZbQsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC00L7RgdGC0YPQv9C90ZYg0YHRgtC+0LLQv9GG0ZYgQ0kg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsNC70LXQttC90L4g0LLRltC0INC60LvQsNGB0YMgQ0kuINCa0L7QttC10L0g0LfQsNC/0LjRgSDQvNCw0ZQg0YHQutC70LDQtNCw0YLQuNGB0Y8g0Lcg0L3QsNC30LLQuCDQutC70LDRgdGDINGC0LAg0LzQsNGB0LjQstGDINC00L7RgdGC0YPQv9C90LjRhSDQv9C+0LvRltCyINC00LvRjyDQstGW0LTQv9C+0LLRltC00L3QvtCz0L4g0LrQu9Cw0YHRgy4g0JfQsNC/0LjRgdC4INC00LjQvdCw0LzRltGH0L3QuNGFINC/0L7Qu9GW0LIg0L/QvtCy0LjQvdC90ZYg0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRgdGF0LXQvNGWIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCw0YLRgNC40LHRg9GCINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINGB0L7RgNGC0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCw0YLRgNC40LHRg9GCINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINGB0L7RgNGC0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQutC70ZbRlNC90YLRgdGM0LrQvtC80YMg0ZbQvdGC0LXRgNGE0LXQudGB0ZYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRgdC+0YDRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsCDRhtGW0ZTRjiDQvtC/0LXRgNCw0YbRltGU0Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4g0JLQs9C+0YDRgzog0L3QsNC50YHRgtCw0YDRltGI0ZYg0LfQstC10YDRhdGDLiDQktC90LjQtzog0L3QsNC50L3QvtCy0ZbRiNGWINC30LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L/QvtGA0Y/QtNC+0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LrQu9GW0ZTQvdGC0YHRjNC60L7QvNGDINGW0L3RgtC10YDRhNC10LnRgdGWLiDQktCz0L7RgNGDOiDQvdCw0LnRgdGC0LDRgNGW0YjRliDQt9Cy0LXRgNGF0YMuINCS0L3QuNC3OiDQvdCw0LnQvdC+0LLRltGI0ZYg0LfQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC00LvRjyDRhtGW0ZTRlyDQvtC/0LXRgNCw0YbRltGXLiDQktCz0L7RgNGDOiDQvdCw0LnRgdGC0LDRgNGW0YjQuNC5INC30LLQtdGA0YXRgy4g0JLQvdC40Lc6INC90LDQudC90L7QstGW0YjQuNC5INC30LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YHRgtC+0LLQv9GG0ZYgQ0ksINGJ0L4g0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDIENJLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINGB0LrQu9Cw0LTQsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC80LDRgdC40LLRgyDQtNC+0YHRgtGD0L/QvdC40YUg0L/QvtC70ZbQsiDQtNC70Y8g0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INC60LvQsNGB0YMuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC80LDRjtGC0Ywg0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRgdGF0LXQvNGWIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ9CS0LjQt9C90LDRh9Cw0ZQg0LPQu9C40LHQuNC90YMg0LfQslwn0Y/Qt9C60ZbQsiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8LCDRj9C60YMg0LHRg9C00LUg0L/QvtC60LDQt9Cw0L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrQuNC5INCx0YPQtNC1INC/0L7QutCw0LfQsNC90L4g0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGC0LjQv9C+0LLQuNC5INCw0YLRgNC40LHRg9GCINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0Y/QutC40Lkg0LHRg9C00LUg0L/QvtC60LDQt9Cw0L3QviDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCf0YDQuNC60LvQsNC0OiAi0JrQu9GO0YciINC80LDRlCDQvNGW0YHRgtC40YLQuCDQvdCw0LfQstGDINC00LjQvdCw0LzRltGH0L3QvtCz0L4g0L/QvtC70Y8sINGDINGG0YzQvtC80YMg0LLQuNC/0LDQtNC60YMgXCdYXCcsICLQl9C80ZbRgdGCIiDQvNCw0ZQg0LzRltGB0YLQuNGC0Lgg0LfQvdCw0YfQtdC90L3RjyDQtNC40L3QsNC80ZbRh9C90L7Qs9C+INC/0L7Qu9GPINC30LDQu9C10LbQvdC+INCy0ZbQtCDRgtC40L/RgyDQtNC40L3QsNC80ZbRh9C90L7Qs9C+INC/0L7Qu9GPLCDQotC10LrRgdGCOiBcJ9GC0LXQutGB0YJcJywg0JLQuNC/0LDQtNCw0Y7Rh9C40Lkg0YHQv9C40YHQvtC6OiBcJzFcJywg0JTQsNGC0LAv0KfQsNGBOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0YLQsCDQsNCx0L4gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9GW0LTQvtCxXCfRlNC60YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQutC70LDRgdGDIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LTQvtGB0YLRg9C/0L3RliDRgdGC0L7QstC/0YbRliBDSSDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyBDSS4g0JrQvtC20LXQvSDQt9Cw0L/QuNGBINC80LDRlCDRgdC60LvQsNC00LDRgtC40YHRjyDQtyDQvdCw0LfQstC4INC60LvQsNGB0YMg0YLQsCDQvNCw0YHQuNCy0YMg0LTQvtGB0YLRg9C/0L3QuNGFINC/0L7Qu9GW0LIg0LTQu9GPINCy0ZbQtNC/0L7QstGW0LTQvdC+0LPQviDQutC70LDRgdGDLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiDQv9C+0LLQuNC90L3RliDQstGW0LTQv9C+0LLRltC00LDRgtC4INGB0YXQtdC80ZYgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQstC40YHQvtGC0YMg0LrQvtC80L/QvtC90LXQvdGC0LAg0YDQtdC00LDQutGC0L7RgNCwINGA0L7Qt9GI0LjRgNC10L3QvtCz0L4g0YLQtdC60YHRgtGDINC00LvRjyDRhtGM0L7Qs9C+INC10LrRgNCw0L3QsC4g0JLQstC10LTRltGC0Ywg0YfQuNGB0LvQviAo0L/RltC60YHQtdC70ZYpINCw0LHQviDQt9C90LDRh9C10L3QvdGPINGDINCy0ZbQtNGB0L7RgtC60LDRhSAo0LLRltC00L3QvtGB0L3QtSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LrRltC70YzQutGW0YHRgtGMINGA0Y/QtNC60ZbQsiDQtNC70Y8g0YDQtdC00LDQutGC0L7RgNCwINCy0LjQt9C90LDRh9C10L3RjCBDSSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INGB0YLQsNC90ZbQsiDRltC90YbQuNC00LXQvdGC0YMg0LLRltC0INCy0LjRgdC+0LrQvtCz0L4gKNC90LDQv9GA0LjQutC70LDQtCwg0LrRgNC40YLQuNGH0L3QvtCz0L4pINC00L4g0L3QuNC30YzQutC+0LPQviAo0L3QsNC/0YDQuNC60LvQsNC0LCDRhNGD0L3QutGG0ZbQvtC90LDQu9GM0L3QvtCz0L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LLRltC00L/QvtCy0ZbQtNC90ZYg0YHRgtCw0L3QuCDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPLCDQsiDRj9C60LjRhSDQv9C+0LJcJ9GP0LfQsNC90ZYg0YLRltC60LXRgtC4INC80L7QttGD0YLRjCDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC10LbRgyDQv9C+0YjRg9C60YMg0LTQu9GPINC10LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGB0YLQvtCy0L/RhtGWINCa0IYsINGJ0L4g0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQsiDQutC+0LzQv9C70LXQutGB0L3QvtC80YMg0L/QvtC00LDQvdC90ZYg0YLQsNCx0LvQuNGG0ZYg0L/QvtGB0LjQu9Cw0L3RjCDQtNC70Y8g0LLRgdGW0YUg0LrQu9Cw0YHRltCyINCa0IYuINCv0LrRidC+INC30LDQv9C40YEg0LLRltC00YHRg9GC0L3RltC5LCDRgtC+INC/0L7QutCw0LfRg9GO0YLRjNGB0Y8g0YHRgtC+0LLQv9GG0ZYg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDRgdGC0L7QstC/0YbRliDQmtCGINCy0ZbQtNC+0LHRgNCw0LbQsNGC0LjQvNGD0YLRjNGB0Y8g0YMg0LrQvtC80L/Qu9C10LrRgdC90L7QvNGDINC/0L7QtNCw0L3QvdGWINGC0LDQsdC70LjRhtGWINC/0L7RgdC40LvQsNC90YwsINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDINCa0IYuINCa0L7QttC10L0g0LfQsNC/0LjRgSDQvNCw0ZQg0L/QvtGH0LjQvdCw0YLQuNGB0Y8g0Lcg0L3QsNC30LLQuCDQutC70LDRgdGDINGC0LAg0L/QvtC00LLRltC50L3QvtCz0L4g0LTQstC+0LrRgNCw0L/QutC4ICjQvdCw0L/RgNC40LrQu9Cw0LQsIENvbXB1dGVyOjopLiDQhtGB0L3Rg9GUINC00LXQutGW0LvRjNC60LAg0LDRgtGA0LjQsdGD0YLRltCyINCa0IYsINGP0LrRliDRlCDRgdC/0ZbQu9GM0L3QuNC80Lgg0LTQu9GPINCy0YHRltGFINCa0IYgKNC90LDQv9GA0LjQutC70LDQtCwg0LTQu9GPINC60LvQsNGB0YMgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCU0LvRjyDQstGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0L7QutGA0LXQvNC40YUgQ0kt0LDRgtGA0LjQsdGD0YLRltCyLCDQstC40LfQvdCw0YfQtdC90LjRhSDRgyBDSS3QstC40LfQvdCw0YfQtdC90L3Rliwg0YHQu9GW0LQg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INC90LDRgdGC0YPQv9C90YMg0YHRhdC10LzRgyAo0L/RgNC40LrQu9Cw0LQg0LTQu9GPINC60LvQsNGB0YMgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0K/QutGJ0L4g0LTQu9GPINC60LvQsNGB0YMgQ0kg0L3QtdC80LDRlCDQttC+0LTQvdC+0LPQviDQt9Cw0L/QuNGB0YMsINCx0YPQtNC1INC/0L7QutCw0LfQsNC90L4g0YHRgtC+0LLQv9GH0LjQutC4INC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutGWINC10LvQtdC80LXQvdGC0Lgg0LTQvtGB0YLRg9C/0L3RliDQtNC70Y8gItCU0ZbRlyIg0L3QsCDRgtGA0LXRgtGM0L7QvNGDINGA0ZbQstC90ZYg0YHRgtGA0YPQutGC0YPRgNC4IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0L3QsCDQv9C10YDRiNC+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutGWINC10LvQtdC80LXQvdGC0Lgg0LTQvtGB0YLRg9C/0L3RliDQvdCwINC00YDRg9Cz0L7QvNGDINGA0ZbQstC90ZYg0YHRgtGA0YPQutGC0YPRgNC4IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60LjQuSDRgtC40L8g0LfQslwn0Y/Qt9C60YMgKNC90LDQt9Cy0LDQvdC40Lkg0Lcg0YLQvtGH0LrQuCDQt9C+0YDRgyDQutCy0LjRgtC60LApINC80L7QttC1INCy0L/Qu9C40LLQsNGC0Lgg0L3QsCDRgdGC0LDRgtGD0YEg0LfQslwn0Y/Qt9Cw0L3QvtCz0L4g0JrQhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60LjQuSDRgtC40L8g0LrQstC40YLQutCwINC80L7QttC1INCy0L/Qu9C40LLQsNGC0Lgg0L3QsCDRgdGC0LDRgtGD0YEg0L/QvtCyXCfRj9C30LDQvdC+0Zcg0JrQhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfQntC90L7QstC70LXQvdC90Y8g0LLQuNC30L3QsNGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CS0LjQtNCw0LvQuNGC0Lgg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0JrQvtC70ZbRgCDRgdGC0LDQvdGDINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9CU0YPQsdC70ZbQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0L/QvtC00ZbQuSDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyLCDRj9C60LjQuSDQv9C+0LfQvdCw0YfQsNGUINCy0LjQt9C90LDRh9C10L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Y/QuiDQvdC10YHQuNC90YXRgNC+0L3RltC30L7QstCw0L3Rliwg0Y/QutGJ0L4g0LfQvNGW0L3RjtGO0YLRjNGB0Y8g0LTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLCDQv9C+0LrQsNC30LDQvdGWINC90LAg0LTQvtC00LDRgtC60L7QstC+0LzRgyDQtdC60YDQsNC90ZYg0L/QvtC70ZbQsiBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0L3QsCDQtdC60YDQsNC90ZYg0L7Qs9C70Y/QtNGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LrQu9GW0ZTQvdGC0YHRjNC60L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQktC80LjQutCw0ZQg0YTRg9C90LrRhtGW0Y4g0LzQsNGB0L7QstC40YUg0LTRltC5INC3INC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtNC70Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLCDRidC+INC00L7Qt9Cy0L7Qu9GP0ZQg0L/RgNCw0YbRjtCy0LDRgtC4INC3INC00LXQutGW0LvRjNC60L7QvNCwINC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQvtC00L3QvtGH0LDRgdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQktC80LjQutCw0ZQg0YTRg9C90LrRhtGW0Y4g0LzQsNGB0L7QstC40YUg0LTRltC5INC00LvRjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC70LjRiNC1INC00LvRjyDQv9C10YDQtdC70ZbRh9C10L3QuNGFINCz0YDRg9C/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQlNC+0LfQstC+0LvRj9GUINCy0LLRltC80LrQvdGD0YLQuC/QstC40LzQutC90YPRgtC4INGE0YPQvdC60YbRltGOINC/0LXRgNC10LLRltGA0LrQuCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0L3QsCDQvdCw0Y/QstC90ZbRgdGC0Ywg0YPQvdGW0LrQsNC70YzQvdC40YUg0ZbQvNC10L0uINCf0LXRgNGIINC90ZbQtiDRg9Cy0ZbQvNC60L3Rg9GC0Lgg0YbRjiDQvtC/0YbRltGOLCDQstCw0Lwg0YHQu9GW0LQg0L/QtdGA0LXQstGW0YDQuNGC0Lgg0YHQuNGB0YLQtdC80YMg0L3QsCDQvdCw0Y/QstC90ZbRgdGC0Ywg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDQv9C+0LLRgtC+0YDRjtCy0LDQvdC40LzQuCDRltC80LXQvdCw0LzQuC4g0KbQtSDQvNC+0LbQvdCwINC30YDQvtCx0LjRgtC4INC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC60L7QvdGB0L7Qu9GM0L3QvtGXINC60L7QvNCw0L3QtNC4IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC/0L7QtNGW0Lkg0LTQu9GPINCy0YHRgtCw0L3QvtCy0LvQtdC90L3RjyBjb25maWdpdGVtLXN0YXR1cyDQt9CwINC/0L7RgdC40LvQsNC90L3Rj9C8IHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ9Cf0L7Qu9GPINGW0L3QtNC10LrRgdGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGJ0L4g0LLQuNC60L7RgNC40YHRgtC+0LLRg9GO0YLRjNGB0Y8g0LTQu9GPINC/0L7QstC90L7RgtC10LrRgdGC0L7QstC+0LPQviDQv9C+0YjRg9C60YMuINCf0L7Qu9GPINGC0LDQutC+0LYg0LfQsdC10YDRltCz0LDRjtGC0YzRgdGPLCDQsNC70LUg0L3QtSDRlCDQvtCx0L7Qslwn0Y/Qt9C60L7QstC40LzQuCDQtNC70Y8g0LfQsNCz0LDQu9GM0L3QvtGXINGE0YPQvdC60YbRltC+0L3QsNC70YzQvdC+0YHRgtGWLiDQktC60LvRjtGH0LXQvdC90Y8g0LLQutC70LDQtNC10L3RjCDQvNC+0LbQvdCwINCy0LjQvNC60L3Rg9GC0LgsINCy0YHRgtCw0L3QvtCy0LjQstGI0Lgg0LfQvdCw0YfQtdC90L3RjyAwINCw0LHQviDQstC40LTQsNC70LjQstGI0Lgg0ZfRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ9Cf0L7Qu9GPLCDRidC+INC30LHQtdGA0ZbQs9Cw0Y7RgtGM0YHRjyDQsiDRltC90LTQtdC60YHRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GO0YLRjNGB0Y8g0LTQu9GPINGW0L3RiNC40YUg0YbRltC70LXQuSwg0L7QutGA0ZbQvCDQv9C+0LLQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L4g0L/QvtGI0YPQutGDLiDQlNC70Y8g0L/QvtCy0L3QvtGXINGE0YPQvdC60YbRltC+0L3QsNC70YzQvdC+0YHRgtGWINCy0YHRliDQv9C+0LvRjyDRlCDQvtCx0L7Qslwn0Y/Qt9C60L7QstC40LzQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICfQlNC70Y8g0LrQvtC20L3QvtCz0L4g0LLQtdCxLdGB0LXRgNCy0ZbRgdGDICjQutC70Y7Rhykg0LzQvtC20L3QsCDQstC40LfQvdCw0YfQuNGC0Lgg0LzQsNGB0LjQsiDQutC70LDRgdGW0LIgKNC30L3QsNGH0LXQvdC90Y8pLCDQtNC70Y8g0Y/QutC40YUg0ZbQvNC/0L7RgNGCINC+0LHQvNC10LbQtdC90L4uINCU0LvRjyDQstGB0ZbRhSDQstC40LHRgNCw0L3QuNGFINC60LvQsNGB0ZbQsiDQsNCx0L4g0LLRgdGW0YUg0ZbRgdC90YPRjtGH0LjRhSDQutC70LDRgdGW0LIg0L/QvtGC0YDRltCx0L3QviDQsdGD0LTQtSDQstC40LHRgNCw0YLQuCDRltC00LXQvdGC0LjRhNGW0LrQsNGG0ZbQudC90ZYg0LDRgtGA0LjQsdGD0YLQuCDRgyDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0ZbQvdCy0L7QutC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGI0LDRgNGDINCy0LjQutC70LjQutGDIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10ZTRgdGC0YDQsNGG0ZbRjyDQvNC+0LTRg9C70Y8gR2VuZXJpY0ludGVyZmFjZSDQtNC70Y8g0YjQsNGA0YMg0LLQuNC60LvQuNC60YMgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10ZTRgdGC0YDQsNGG0ZbRjyDQvNC+0LTRg9C70Y8gR2VuZXJpY0ludGVyZmFjZSDQtNC70Y8g0YjQsNGA0YMg0LLQuNC60LvQuNC60YMgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfQntCz0LvRj9C0INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNGUINGB0YLQsNC90Lgg0YDQvtC30LPQvtGA0YLQsNC90L3RjyDQtNC+INC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC60LvRltGU0L3RgtGB0YzQutC+0LzRgyDRltC90YLQtdGA0YTQtdC50YHRli4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNGUINGB0YLQsNC90Lgg0ZbQvdGG0LjQtNC10L3RgtGW0LIg0YMg0L/QvtGI0YPQuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC60LvRltGU0L3RgtGB0YzQutC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQsdGD0LTQtSDQstGW0LTQvtCx0YDQsNC20LXQvdC+INCyINGA0LXQt9GD0LvRjNGC0LDRgtGWINGG0ZbRlNGXINC+0L/QtdGA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDQv9C10YDQtdCy0ZbRgNC60Lgg0LPRgNGD0L/QuCwg0LLRltC00L/QvtCy0ZbQtNCw0LvRjNC90L7RlyDQt9CwINC60LvQsNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/QtdGA0LXQstGW0YDQutC4INCz0YDRg9C/0LgsINCy0ZbQtNC/0L7QstGW0LTQsNC70YzQvdC+0Zcg0LfQsCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDQs9C10L3QtdGA0LDRhtGW0Zcg0YHRgtCw0YLQuNGB0YLQuNC60Lgg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRltC80LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGH0LjRgdC70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQsdGD0LTRg9GC0Ywg0LLRltC00L7QsdGA0LDQttCw0YLQuNGB0Y8g0L3QsCDQutC+0LbQvdGW0Lkg0YHRgtC+0YDRltC90YbRliDRgNC10LfRg9C70YzRgtCw0YLRltCyINC/0L7RiNGD0LrRgyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LHRg9C00YPRgtGMINCy0ZbQtNC+0LHRgNCw0LbQsNGC0LjRgdGPINC90LAg0LrQvtC20L3RltC5INGB0YLQvtGA0ZbQvdGG0ZYg0YDQtdC30YPQu9GM0YLQsNGC0ZbQsiDQv9C+0YjRg9C60YMg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LrQu9GW0ZTQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn0J7QsVwn0ZTQutGC0Lgg0LTQu9GPINC/0L7RiNGD0LrRgywg0LrRltC70YzQutGW0YHRgtGMINC30LDQv9C40YHRltCyINGWINGP0LrRliDQsNGC0YDQuNCx0YPRgtC4INC/0L7QutCw0LfRg9Cy0LDRgtC4LiDQkNGC0YDQuNCx0YPRgtC4IENvbmZpZ0l0ZW0g0LzQsNGO0YLRjCDQsdGD0YLQuCDRj9Cy0L3QviDQt9Cx0LXRgNC10LbQtdC90ZYg0YfQtdGA0LXQtyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQntCz0LvRj9C0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC60LDRgtC10LPQvtGA0ZbQuSDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINGE0ZbQu9GM0YLRgNGW0LIg0YHRgtC+0LLQv9GG0ZbQsiDQsiDQvtCz0LvRj9C00ZYg0LzQsNC70LjRhSDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLiDQl9Cy0LXRgNC90ZbRgtGMINGD0LLQsNCz0YM6INCy0YHRgtCw0L3QvtCy0LvQtdC90L3RjyDQt9C90LDRh9C10L3QvdGPICLQkNC60YLQuNCy0L3QuNC5IiDQvdCwIDAg0LvQuNGI0LUg0LfQsNCx0L7RgNC+0L3QuNGC0Ywg0LDQs9C10L3RgtCw0Lwg0YDQtdC00LDQs9GD0LLQsNGC0Lgg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPINGG0ZbRlNGXINCz0YDRg9C/0Lgg0YMg0YHQstC+0ZfRhSDQvtGB0L7QsdC40YHRgtC40YUg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGP0YUsINCw0LvQtSDQtNC+0LfQstC+0LvQuNGC0Ywg0LDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YDQsNC8INGA0LXQtNCw0LPRg9Cy0LDRgtC4INC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstGW0LQg0ZbQvNC10L3RliDRltC90YjQvtCz0L4g0LrQvtGA0LjRgdGC0YPQstCw0YfQsC4g0JLQuNC60L7RgNC40YHRgtC+0LLRg9C50YLQtSAiUHJlZmVyZW5jZUdyb3VwIiwg0YnQvtCxINC60L7QvdGC0YDQvtC70Y7QstCw0YLQuCwg0LIg0Y/QutGW0Lkg0L7QsdC70LDRgdGC0ZYg0LrQvtGA0LjRgdGC0YPQstCw0YbRjNC60L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDINCy0ZbQtNC+0LHRgNCw0LbQsNGC0Lgg0YbRliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggcmVmZXJlbmNlIGZpZWxkIGlzIHVzZWQgZm9yIGEgQ29uZmlnSXRlbSBjbGFzcyAoS2V5PUNsYXNzLCBWYWx1ZT1EeW5hbWljRmllbGROYW1lKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0YHRgtCw0L3RltCyINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L/QvtC30L3QsNGH0LDRjtGC0YzRgdGPINC60L7Qu9GM0L7RgNC+0Lwg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINGB0YLQsNC90ZbQsiDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0L/RgNC40LrQu9Cw0LTRgyDQtNC+0LfQstC+0LvRgyDQs9GA0YPQvyDQt9Cw0LPQsNC70YzQvdC40YUg0LDRgtGA0LjQsdGD0YLRltCyINC60LDRgtCw0LvQvtCz0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC80L7QtNGD0LvRjyDRltC80LXQvSDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQvNC+0LTRg9C70Y8g0YfQuNGB0LvQsCDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgdGC0L7RgNGW0L3QvtC6ICjQvdCwINGP0LrQuNGFINCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRiNCw0LHQu9C+0L3RgyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDRltC90YHRgtGA0YPQvNC10L3RgtCw0YDRltGOINC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQv9C+0LTQsNC90L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgtGA0LjQs9C10YDQsCDQstC10YDRgdGW0Zcg0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn0JLQuNC60L7QvdGD0ZQg0L3QsNC70LDRiNGC0L7QstCw0L3RgyDQtNGW0Y4g0LTQu9GPINC60L7QttC90L7RlyDQv9C+0LTRltGXICjRj9C6INGW0L3QstC+0LrQtdGAKSDQtNC70Y8g0LrQvtC20L3QvtCz0L4g0L3QsNC70LDRiNGC0L7QstCw0L3QvtCz0L4g0LLQtdCx0YHQtdGA0LLRltGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINC00L7Qt9Cy0L7Qu9GW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LTRltGXINC/0YDQuNC60YDRltC/0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQutC70ZbRlNC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0L/QtdGA0LXQs9C70Y/QtNGDINC00LXRgNC10LLQsCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LTQvtC00LDQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LzQsNGB0L7QstC40YUg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINGA0LXQtNCw0LPRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0ZbRgdGC0L7RgNGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LTRgNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn0J3QtdC+0LHRhdGW0LTQvdGWINC/0YDQuNCy0ZbQu9C10Zcg0LTQu9GPINCy0LjQtNCw0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9CQ0LLRgtC+0LzQsNGC0LjRh9C90L4g0LLRgdGC0LDQvdC+0LLQu9GO0LLQsNGC0Lgg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINC00LvRjyDQmtCGLCDQutC+0LvQuCDQotGW0LrQtdGCINC/0YDQuNCyXCfRj9C30LDQvdC40Lkg0LTQviDQmtCGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0YHRgtCw0L3QvtCy0LvRjtGUINGB0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L3QsCDQvtGB0L3QvtCy0L3QvtC80YMg0LXQutGA0LDQvdGWINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLRgdGC0LDQvdC+0LLQu9GO0ZQg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINC90LAg0L7RgdC90L7QstC90L7QvNGDINC10LrRgNCw0L3RliDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOLCDRj9C60LUg0LTQvtC30LLQvtC70Y/RlCDQt9CyXCfRj9C30LDRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDRltC90YjQuNC8INC+0LFcJ9GU0LrRgtC+0Lwg0YMg0LLRltC60L3RliDQvNCw0YHRiNGC0LDQsdGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/RgyDQtNC+INGW0YHRgtC+0YDRltGXINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/RgyDQtNC+INGW0YHRgtC+0YDRltGXINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0LLQuNC00LDQu9C10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC30LHRltC70YzRiNC10L3QvtC80YMg0LLQuNCz0LvRj9C00ZYg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQstGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0L/QvtGB0LjQu9Cw0L3RjCDQvdCwINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0LjQs9C70Y/QtNGWINC00LXRgNC10LLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YPQsdC70Y7QstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNGD0LHQu9GO0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDQudC+0LPQviDQt9Cx0ZbQu9GM0YjQtdC90L7QvNGDINCy0LjQs9C70Y/QtNGWINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQstGW0LrQvdGWINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0L/QvtCy0LXRgNC90LXQvdC90Y8g0LTQviDQv9GD0L3QutGC0YMg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YDRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LfQsdGW0LvRjNGI0LXQvdC+0LzRgyDQstC40LPQu9GP0LTRliDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQt9Cx0ZbQu9GM0YjQtdC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDRltGB0YLQvtGA0ZbRjiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXICjRgyDQt9Cy0L7RgNC+0YLQvdC+0LzRgyDQv9C+0YDRj9C00LrRgykg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfQmtCw0YLQtdCz0L7RgNGW0Y8g0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCwg0Y/QutCwINCy0ZbQtNC+0LHRgNCw0LbQsNGU0YLRjNGB0Y8sINGP0LrRidC+INC90LUg0LLQuNCx0YDQsNC90L4g0LbQvtC00L3QvtGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn0IbQtNC10L3RgtC40YTRltC60LDRgtC+0YAg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINC90LDQv9GA0LjQutC70LDQtCwgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuINCX0LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0YbQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICfQkNCy0YLQvtC80LDRgtC40YfQvdC+INC30LDQv9GD0YHQutCw0ZQg0LLQuNC60LvQuNGH0L3QuNC6IENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LjRgNCw0Lcg0YDRj9C00LrQsCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGA0Y/QtNC60LAg0LLQtdGA0YHRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9Ci0YDQuNCz0LXRgCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9Cn0Lgg0LzQvtC20L3QsCDRg9C90LjQutC90YPRgtC4INCy0LjQutC+0L3QsNC90L3RjyBDb25maWdJdGVtQUNMINGI0LvRj9GF0L7QvCDQv9C10YDQtdCy0ZbRgNC60Lgg0LrQtdGI0L7QstCw0L3QuNGFINC30LDQu9C10LbQvdC+0YHRgtC10Lkg0L/QvtC70ZbQsi4g0KbQtSDQvNC+0LbQtSDQv9C+0LrRgNCw0YnQuNGC0Lgg0YfQsNGBINC30LDQstCw0L3RgtCw0LbQtdC90L3RjyDRhNC+0YDQvNGD0LssINCw0LvQtSDQudC+0LPQviDRgdC70ZbQtCDQstC40LzQutC90YPRgtC4LCDRj9C60YnQviBBQ0xNLdC80L7QtNGD0LvRliDQsdGD0LTQtSDQstC40LrQvtGA0LjRgdGC0LDQvdC+INC00LvRjyBJVFNNQ29uZmlnSXRlbS0g0ZYgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9Cv0LrQsCDQt9Cw0LPQsNC70YzQvdCwINGW0L3RhNC+0YDQvNCw0YbRltGPINCy0ZbQtNC+0LHRgNCw0LbQsNGU0YLRjNGB0Y8g0LIg0LfQsNCz0L7Qu9C+0LLQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ9Cz0LvQvtCx0LDQu9GM0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YLQv9GA0L7QtNGD0LrRgtC40LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ9C/0YDQtdC/0YDQvtC00YPQutGC0LjQstC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YLQuNCy0L3QuNC5JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC00Y7QudC80ZbQsiAoNDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg0LTRjtC50LwgKDUzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1INC00Y7QudC80LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQtNGO0LnQvNCwICg4MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS3QtNGO0LnQvNC+0LLQsCDRgdGC0ZbQudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC00Y7QudC80LAgKDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDQtNGO0LnQvNGW0LIgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LTRjtC50LzQvtCy0LAg0YHRgtGW0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDQtNGO0LnQvNGW0LIgKDk3LDc5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLdC00Y7QudC80L7QstCwINGB0YLRltC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LTRjtC50LzQsCAoNjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDQtNGO0LnQvNC4ICgxMDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1INC00Y7QudC80ZbQsiAoMTIwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUg0LTRjtC50LzQsCAoOCw4OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1INC00Y7QudC80LAgKDEzMywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUg0LTRjtC50LzQsCAoODAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSDQtNGO0LnQvNGW0LIgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LTRjtC50LzQsCAoOTAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDQtNGO0LnQvNC4ICgxNjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDQtNGO0LnQvNCwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQtNGO0LnQvNGW0LIgKDE3MywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1INC00Y7QudC80LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LTRjtC50LzQsCAoMTg2LDY5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzINC00Y7QudC80LAgKDExMDAg0LzQvCk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSDQtNGO0LnQvNGW0LIgKDIwMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyINC00Y7QudC80LAgKDEyMDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0INC00Y7QudC80LggKDIxMywzNiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INC00Y7QudC80ZbQsiAoMTcsNzgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSDQtNGO0LnQvNCwICgyMiwyMyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1INC00Y7QudC80ZbQsiAoMjYsNjcg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1INC00Y7QudC80LAgKDMxLDEyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDQtNGO0LnQvNGW0LIgKDM1LDU2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSDQtNGO0LnQvNCwICg0MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9CR0YPRhdCz0LDQu9GC0LXRgNGB0YzQutC40Lkg0L7QsdC70ZbQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cf0YDQuNGB0LLQvtGU0L3QvdGPINCw0LTRgNC10YHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn0JDQvdCw0LvQvtCz0L7QstC40Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9Ci0LjQvyDQv9GA0LjQu9Cw0LTRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn0ITQvNC90ZbRgdGC0Ywg0LDQutGD0LzRg9C70Y/RgtC+0YDQsCAo0JDRhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn0KLQuNC/INCx0LDRgtCw0YDQtdGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn0LHRg9C00LjQvdC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CG0L3RgtC10YDRhNC10LnRgSDRiNC40L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0J/QoNCe0KbQldCh0J7QoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfQmtC70LDRgSDQv9GA0L7RhtC10YHQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ9CE0LzQvdGW0YHRgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9Cf0L7RgtGD0LbQvdGW0YHRgtGMINC90LAg0L7QtNC90YMg0LLRltC00LXQvtC60LDRgNGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC60LDRgNGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9CX0YfQuNGC0YPQstCw0Ycg0LrQsNGA0YLQvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9Ci0LjQvyDQutCw0YDRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ9Ca0LvRltGU0L3RgtGB0YzQutGWINGB0LXRgNGC0LjRhNGW0LrQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn0JrQu9GW0ZTQvdGC0YHRjNC60LUg0L/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfQmtCw0YLQtdCz0L7RgNGW0Y8g0LrQu9GW0ZTQvdGC0ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfQotCw0LrRgtC+0LLQsCDRh9Cw0YHRgtC+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn0KLQsNC60YLQvtCy0LAg0YfQsNGB0YLQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0Lgg0LrQvtC00L7QstC+0LPQviDQv9GW0LTQv9C40YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn0JrQvtC90YTQtdGA0LXQvdGGLdGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstGW0YAg0L/RgNC+INC90LDQtNCw0L3QvdGPINC60L7QvdGB0YPQu9GM0YLQsNGG0ZbQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn0JrQvtC90YLQsNC60YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn0JfQslwn0Y/Qt9Cw0YLQuNGB0Y8g0Lcg0LTQuNGB0YLRgNC40LFcJ9GO0YLQvtGA0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9GW0L3QvdGPINC60L7QvdGC0LXQudC90LXRgNCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9Ca0L7QvdGC0YDQsNC60YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQutC+0L3RgtGA0LDQutGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfQn9C10YDRltC+0LQg0LTRltGXINC60L7QvdGC0YDQsNC60YLRgyDQstGW0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn0KLQtdGA0LzRltC9INC00ZbRlyDQutC+0L3RgtGA0LDQutGC0YMg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfQkdC10LfQtNGA0L7RgtC+0LLQuNC5INGC0LXQu9C10YTQvtC9IChERUNULdGC0LXQu9C10YTQvtC9KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfQntC00LjQvdC40YbRjyDQstC40LzRltGA0YMg0LLQuNGC0YDQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn0JrRltC70YzQutGW0YHRgtGMINC70ZbRhtC10L3Qt9GW0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtCwINGB0YLQstC+0YDQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn0KHQv9C10YbRltCw0LvRjNC90LjQuSDRgdGC0LXQu9Cw0LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag0LfQsNGA0LXQt9C10YDQstC+0LLQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy3RgdC10YDQstC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9CU0LDRgtCwINGW0L3QstC+0LnRgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfQlNCw0YLQsCDQt9Cw0LzQvtCy0LvQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn0JTQsNGC0LAg0L/QvtGH0LDRgtC60YMg0LTRltGXINCz0LDRgNCw0L3RgtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn0JTQsNGC0LAg0LLQuNC/0YPRgdC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9Cg0L7QsdC+0YfQuNC5INGB0YLRltC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTRltC60LDRgtC4INC/0ZbQtNC/0LjRgdCw0L3QvdGPINC00L7QutGD0LzQtdC90YLRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfQodC10YDRgtC40YTRltC60LDRgtC4INC10LvQtdC60YLRgNC+0L3QvdC+0Zcg0L/QvtGI0YLQuCAoUy9NSU1FINGB0LXRgNGC0LjRhNGW0LrQsNGC0LgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9Ci0YDRg9C00L7QstC40Lkg0LTQvtCz0L7QstGW0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfQmtGW0L3RhtC10LLQsCBJUC3QsNC00YDQtdGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfQmtGW0L3QtdGG0Ywg0L/RltC00YLRgNC40LzQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn0KLQtdGA0LzRltC9INC/0YDQuNC00LDRgtC90L7RgdGC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ9CX0L7QstC90ZbRiNC90ZbQuSDQttC+0YDRgdGC0LrQuNC5INC00LjRgdC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn0JHRgNCw0L3QtNC80LDRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfQn9GA0L7RiNC40LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn0J3QsNC60L7Qv9C40YfRg9Cy0LDRhyDQtdC90LXRgNCz0ZbRlyDQvNCw0YXQvtCy0LjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn0KTQvtGA0Lwt0YTQsNC60YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0ZbRgCDRhNGA0LDQvdGH0LDQudC30LjQvdCz0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10LfQutC+0YjRgtC+0LLQvdC1INC/0YDQvtCz0YDQsNC80L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0JfQsNCz0LDQu9GM0L3QsCDRltC90YTQvtGA0LzQsNGG0ZbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ9CS0ZbQtNC10L7QutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfQktGW0LTQtdC+0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9CQ0L/QsNGA0LDRgtC90LUg0LfQsNCx0LXQt9C/0LXRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn0JzQvtC00LXQu9GMINC+0LHQu9Cw0LTQvdCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9CS0LDQs9CwINC+0LHQu9Cw0LTQvdCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfQk9Cw0YDQvdGW0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICfQn9GA0L7RgtC+0LrQvtC7IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ9Cj0L/RgNCw0LLQu9GW0L3QvdGPINGW0LTQtdC90YLQuNGE0ZbQutCw0YbRltGU0Y4g0YLQsCDQtNC+0YHRgtGD0L/QvtC8IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfQhtC90LLQtdC90YLQsNGA0L3QuNC5INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfQhtC90LLQtdGB0YLQuNGG0ZbQudC90ZYg0LLQuNGC0YDQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGA0LDRhdGD0L3QutGDLdGE0LDQutGC0YPRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0JrQu9Cw0LLRltCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAn0KDQmi3QvNC+0L3RltGC0L7RgCAo0YDRltC00LrQvtC60YDQuNGB0YLQsNC70ZbRh9C90LjQuSDQtNC40YHQv9C70LXQuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ9Ch0LLRltGC0LvQvtC00ZbQvtC00L3QuNC5INC80L7QvdGW0YLQvtGAICjRgdCy0ZbRgtC70L7QtNGW0L7QtNC4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfQodGC0LDRhtGW0L7QvdCw0YDQvdC40Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0J3QvtGD0YLQsdGD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfQqNC40YDQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgMTog0KTRltC30LjRh9C90LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDI6INCa0LDQvdCw0LvRjNC90LjQuSDRgNGW0LLQtdC90Ywg0L/QtdGA0LXQtNCw0YfRliDQtNCw0L3QuNGFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgMzog0JzQtdGA0LXQttC10LLQuNC5INGA0ZbQstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfQoNGW0LLQtdC90YwgMzog0JzQtdGA0LXQttC10LLQuNC5INGA0ZbQstC10L3RjCAo0YHRg9C/0LXRgNC80LXRgNC10LbQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDQ6INCi0YDQsNC90YHQv9C+0YDRgtC90LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA1OiDQoNGW0LLQtdC90Ywg0YHQtdCw0L3RgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA2OiDQoNGW0LLQtdC90Ywg0L/RgNC10LfQtdC90YLQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA3OiDQv9GA0LjQutC70LDQtNC90LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstGW0YAg0L7RgNC10L3QtNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn0JvRltGG0LXQvdC30ZbQudC90LAg0YPQs9C+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn0JvRltGG0LXQvdC30ZbQudC90LjQuSDQutC70Y7Rhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfQotC40L8g0LvRltGG0LXQvdC30ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn0KLQtdGA0LzRltC9INC00ZbRlyDQu9GW0YbQtdC90LfRltGXINCy0ZbQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9Ci0LXRgNC80ZbQvSDQtNGW0Zcg0LvRltGG0LXQvdC30ZbRlyDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfQm9GW0YLRltC5LdC30LDQu9GW0LfQvi3RhNC+0YHRhNCw0YLQvdC40LkgKExpRmVQTzQpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfQm9GW0YLRltC5LdGW0L7QvdC90LjQuSAoTGktaW9uKSDQsNC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9Ca0YDQtdC00LjRgtC90LjQuSDQtNC+0LPQvtCy0ZbRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn0KDQvtC30YLQsNGI0L7QstCw0L3QuNC5INCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9CU0L7QstCz0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfQktC40YDQvtCx0L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfQnNCw0LrRgdC40LzQsNC70YzQvdCwINC90LDQstCw0L3RgtCw0LbRg9Cy0LDQu9GM0L3QsCDQt9C00LDRgtC90ZbRgdGC0YwgKNCS0YIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ9Cf0LDQvFwn0Y/RgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn0KLQuNC/INC/0LDQvFwn0Y/RgtGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfQnNGW0L3Rli3RgdGC0LXQu9Cw0LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LzQvtCx0ZbQu9GM0L3QvtCz0L4g0YLQtdC70LXRhNC+0L3Rgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfQnNC+0LHRltC70YzQvdC40Lkv0LLQsdGD0LTQvtCy0LDQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfQnNC+0LTQtdC70YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgSDQvNC+0LTQtdC70ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn0KDQvtC30LTRltC70YzQvdCwINC30LTQsNGC0L3RltGB0YLRjCDQvNC+0L3RltGC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ9Cg0L7Qt9C80ZbRgCDQvNC+0L3RltGC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn0JzQuNGI0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfQnNC10YDQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L/RgNC+INC80LXRgNC10LbRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L/RgNC+INC80LXRgNC10LbRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn0JzQtdGA0LXQttC10LLQuNC5INGA0ZbQstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ9Cd0ZbQutC10LvRjC3QutCw0LTQvNGW0ZTQstGWIChOaUNkKSDQsNC60YPQvNGD0LvRj9GC0L7RgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn0J3RltC60LXQu9GMLdC80LXRgtCw0Lst0LPRltC00YDQuNC00L3QuNC5IChOaU1IKSDQsNC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfQo9Cz0L7QtNCwINC/0YDQviDQvdC10YDQvtC30LPQvtC70L7RiNC10L3QvdGPIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn0JHQu9C+0LrQvdC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0L/RgNC+0YbQtdGB0L7RgNGW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn0JrRltC70YzQutGW0YHRgtGMINC80L7QtNGD0LvRltCyINC+0L/QtdGA0LDRgtC40LLQvdC+0Zcg0L/QsNC8XCfRj9GC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn0JrRltC70YzQutGW0YHRgtGMINCy0ZbQtNC10L7QutCw0YDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC3QvNC+0L3RltGC0L7RgCAo0L7RgNCz0LDQvdGW0YfQvdC40Lkg0YHQstGW0YLQu9C+0LTRltC+0LQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ9Ce0L/QtdGA0LDRhtGW0LnQvdGWINCy0LjRgtGA0LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LfQsNC80L7QstC70LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQhtC90YjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn0KDQtdC30YPQu9GM0YLQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn0J/QhtCdLdCa0J7QlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTi3QmtCe0JQgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICfQkdCb0K7QktCe0KLQkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ9Cf0LDRgNGC0L3QtdGA0YHRjNC60LAg0YPQs9C+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3Rgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn0KLQuNC/INGC0LXQu9C10YTQvtC90YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfQpNGW0LfQuNGH0L3RliDRj9C00YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ9Cf0L7RgdGC0LDRh9Cw0L3QvdGPINC10LvQtdC60YLRgNC+0LXQvdC10YDQs9GW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfQn9GA0LjQtNCx0LDQvdC+INC30LAg0LDQtNGA0LXRgdC+0Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9CT0LvQuNCx0LjQvdCwINGB0YLRltC50LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ9Ch0YLQtdC70LDQttC90ZYg0LHQu9C+0LrQuCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9Ca0ZbQvNC90LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLdC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTRltC60LDRgtC4IFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfQlNC+0LPQvtCy0ZbRgCDQutGD0L/RltCy0LvRli3Qv9GA0L7QtNCw0LbRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfQodGD0L/Rg9GC0L3QuNC60L7QstC40Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn0JPQtdGA0LzQtdGC0LjRh9C90LjQuSDRgdCy0LjQvdGG0LXQstC+LdC60LjRgdC70L7RgtC90LjQuSAoU0xBKSDQsNC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9Ch0LXRgNGW0LnQvdC40Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfQodC10YDQstC10YDQvdC1INC/0YDQvtCz0YDQsNC80L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0ZbRgCDQv9GA0L4g0L3QsNC00LDQvdC90Y8g0L/QvtGB0LvRg9CzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn0KHQtdGA0LLRltGB0L3QuNC5INGC0LXQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfQotC40L8g0YDQvtC30LXRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfQn9GA0L7Qs9GA0LDQvNC90LUg0LfQsNCx0LXQt9C/0LXRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn0KHQv9GW0LrQtdGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn0KHRgtCw0L3QtNCw0YDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn0J/QvtGH0LDRgtC60L7QstCwIElQLdCw0LTRgNC10YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn0JfQsdC10YDRltCz0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfQoNC+0LfQtNGW0Lsg0LTQu9GPINC30LHQtdGA0ZbQs9Cw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn0JTQvtGH0ZbRgNC90ZQg0L/RltC00L/RgNC40ZTQvNGB0YLQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfQn9GW0LTRgdGD0LzQvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn0KLQvtC90LrQuNC5INC60LvRltGU0L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn0J3QuNGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ9CR0LvQuNGB0LrQsNCy0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ9CX0LDQs9Cw0LvRjNC90LjQuSDQvtCx0YHRj9CzINC+0L/QtdGA0LDRgtC40LLQvdC+0Zcg0L/QsNC8XCfRj9GC0ZYg0LLRltC00LXQvtC60LDRgNGC0LggKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn0JfQsNCz0LDQu9GM0L3QsCDQvtC/0LXRgNCw0YLQuNCy0L3QsCDQv9Cw0LxcJ9GP0YLRjCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9Ch0LXQvdGB0L7RgNC90LjQuSDQvNC+0L3RltGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ9CS0LXQttCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0It0LrQvtC90YbQtdC90YLRgNCw0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIt0LPQsNGA0L3RltGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAt0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ9CS0LXQsS3QutCw0LzQtdGA0LAnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/vi_VN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnZpX1ZOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdC4bqhbiBjw7MgdGjhuq10IHPhu7EgbXXhu5FuIHhvw6EgxJHDoXAgw6FuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVOG6oW8gbOG6p24gY+G6rXAgbmjhuq10JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ+G6pXUgaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSBoaeG7h24gdGjhu51pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1RoYXkgxJHhu5VpIGzhuqduIGN14buRaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUaGF5IMSR4buVaSBs4bqnbiBjdeG7kWknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1RoYW0gY2hp4bq/dSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ0hv4bqhdCDEkeG7mW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdD4bqjbmggYsOhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVHLhuqFuZyB0aMOhaSB0cmnhu4NuIGtoYWkgY+G7p2EgxJHhu5FpIHTGsOG7o25nIG7DoHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0tow7RuZyBjw7MgcXV54buBbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1Ry4bqhbmcgdGjDoWkgc+G7sSBj4buRIGhp4buHbiB0aOG7nWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnR2nhu69hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnxJDDoyBo4bq/dCBo4bqhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0LhuqNvIHRyw6wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RoZW8ga+G6vyBob+G6oWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1Phu61hIGNo4buvYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnS2jDtG5nIHPhu60gZOG7pW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Ro4bqpbSDEkeG7i25oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdLaeG7g20gdHJhL0jhu49pIMSRw6FwJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgbeG7mXQgbcO0LcSRdW4gdOG7lW5nIHF1w6F0IMSR4buDIGhp4buDbiB0aOG7iyBt4buZdCBkYW5oIHPDoWNoIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ05ow6JuIMSRw7RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1Ry4bqhbmcgdGjDoWkgc+G7sSBj4buRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Thu5VuZyBxdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1RoYW0gc+G7kSBjaG8gbmjDs20gY+G6pXAgcGjDqXAgY+G7p2EgdGh14buZYyB0w61uaCBkYW5oIG3hu6VjIGNodW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBxdWF5IGzhuqFpIHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdRdeG6o24gbMO9IHRo4budaSBnaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdUb8OgIG5ow6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0dpYW8gZGnhu4duJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdNw6F5IMSR4buDIGLDoG4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnUGjhuqduIG3hu4FtIG1p4buFbiBwaMOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCw6BuIHBow61tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdNw6F5IHjDoWNoIHRheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdDaOG7p25nIGxv4bqhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnQ2h14buZdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnS2jDoWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0vhur90IHF14bqjIHThu6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdQaMOybmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdUaG/huqMgdGh14bqtbiBN4bupYyDEkeG7mSBE4buLY2ggduG7pSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnVGnDqnUgY2h14bqpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/zh_CN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUueexu+WumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn57G76L+H5ruk5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOS7juWIl+ihqOS4remAieaLqeexu++8jOeEtuWQjuWIm+W7uuaWsOeahOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+exuyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG5IOaJuemHj+aTjeS9nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn5LqL5Lu254q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+mTvuaOpeWIsOWFtuS7lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5peg5pWI55qE6YWN572u6aG557yW5Y+377yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+WwhuimgemTvuaOpeeahOWPpuWkluS4gOS4qumFjee9rumhuee8luWPt+OAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+S9oOecn+eahOaDs+imgeWIoOmZpOi/meS4qumFjee9rumhueWQlz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn5Li66L+Z5Liq6YWN572u6aG55ZG95ZCNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfnvJblj7fkuLoocyk6JXPnmoTphY3nva7pobnlt7Lnu4/kvb/nlKjkuobmraTlkI3lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpznirbmgIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhue+8miVzIOeahOWOhuWPsuS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfljoblj7LlgLwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WIm+W7uuaXtumXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfor6bmg4Xop4blm74nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aG16YWN572u6aG55Liq5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn5ZCM5pe25pCc57Si5Lul5YmN55qE54mI5pys5ZCXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+a3seW6puetiee6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+aUvuWkpy/nvKnlsI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSDlt7Lovr7liLDmnIDlpKfpk77mjqXnuqfliKvvvIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6YWN572u6aG55L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+W9k+WJjeeahOmDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn5b2T5YmN55qE5pWF6Zqc54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+acgOWQjuS/ruaUuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDlkI7kv67mlLnkuronOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfmgqjnmoTphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6YWN572u6aG55pCc57SiJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICflr7nosaHnsbvlnosnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfmjInnsbvlnovov4fmu6QnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn5bCG5a+85YWl5Lul5LiL6KeS6ImyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ+ivt+azqOaEj++8jOS5n+S8muWIm+W7uuebuOW6lOeahOWKqOaAgeWtl+auteWSjCBHZW5lcmFsQ2F0YWxvZyDnsbvvvIzogIzkuJTkuI3kvJroh6rliqjliKDpmaTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfmgqjopoHnu6fnu63ov5vooYzlkJfvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn6ZyA6KaB56S65L6L57G777yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ+WumuS5ieayoeacieacieaViOeahCBZQU1MIOWTiOW4jOWAvOOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU03phY3nva7pobnmpoLop4gnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a6YWN572u6aG5SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfmgqjoh7PlsJHpnIDopoHkuIDkuKrpgInlrprnmoTphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfkvaDmsqHmnInmraTphY3nva7pobnnmoTlhpnmnYPpmZDvvJolc+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfmsqHmnInnsbsgJXPnmoTlrprkuYnvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+WcqOaVsOaNruW6k+S4reaJvuS4jeWIsOmFjee9rumhueKAnCVz4oCd77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn5peg5rOV5Yig6Zmk6YWN572u6aG5SUQgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ+aJvuS4jeWIsOmFjee9rumhuUlEJXPnmoTniYjmnKzvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a6YWN572u6aG5SUTjgIFEdXBsaWNhdGVJROaIlkNsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ+ayoeacieiuv+mXruadg+mZkO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfkuI3og73mmL7npLrljoblj7Lkv6Hmga/vvIzlm6DkuLrmsqHmnInmjIflrprphY3nva7poblJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuuWOhuWPsuiusOW9le+8jOWboOS4uuayoeacieiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn5paw5bu66YWN572u6aG577yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ+aWsOW7uueJiOacrO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn6YOo572y54q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+aVhemanOeKtuaAgeW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ+mFjee9rumhue+8iElEPSVz77yJ5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn5YiwJXPpk77mjqXnmoTvvIjnsbvlnos9JXPvvInlt7Lmt7vliqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ+WIsCVz6ZO+5o6l55qE77yI57G75Z6LPSVz77yJ5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfphY3nva7pobnlrprkuYnlt7Lmm7TmlrDvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+WQjeensOW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ+WxnuaApyVz5bey5LuO4oCcJXPigJ3mm7TmlrDkuLrigJwlc+KAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfniYjmnKwlcyDlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a6YWN572u6aG5SUTmiJbniYjmnKxJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrphY3nva7pobnvvIzlm6DkuLrmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICflnKjmlbDmja7lupPkuK3mib7kuI3liLDphY3nva7poblJRCAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfmiZPljbDkurrvvJolcyDvvIzmiZPljbDml6XmnJ/vvJolcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnQUNM6K6+572u5Y+C6ICDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn5peg5pWI55qE57G7SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprnsbtJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+ayoeaciei/meS4quaMh+Wumuexu+eahOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn5peg57uT5p6c77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn6YWN572u6aG55pCc57Si57uT5p6cJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfml6Dms5XmmL7npLrphY3nva7pobnvvIzlm6DkuLrmsqHmnInnu5nlrprphY3nva7pobnnmoTorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAn5pyq5om+5Yiw6YWN572u6aG577yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ+acquaJvuWIsOS7u+S9leeJiOacrO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+ato+W4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn6K2m5ZGKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn5pWF6ZqcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnmlYXpmpznirbmgIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfmsqHmnInmnYPpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn6L+H5ruk5Zmo5peg5pWI77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfmkJzntKLlj4LmlbDml6DmlYjvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICflt7LmmL7npLrnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn6YOo572y54q25oCB57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+W9k+WJjeeahOaVhemanOeKtuaAgeexu+Weiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfml7bpl7TljLrpl7QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueeahOexu+WIq+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn6YCJ5oup5LiA5Liq5oiW5aSa5Liq57G75Yir5p2l6ZmQ5Yi25Y+v6YCJ5oup55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnnmoTnsbvliKvpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgInmi6nkuIDkuKrmiJblpJrkuKrnsbvliKvmnaXpmZDliLblj6/pgInmi6nnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfliqjmgIHvvIhDb25maWdJdGVt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfpnZnmgIHvvIjniYjmnKzvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn6ZO+5o6l5byV55So57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ+atpOmTvuaOpemAgueUqOS6juW8leeUqOWvueixoeeahOmFjee9rumhuei/mOaYr+mdmeaAgeeJiOacrOOAguW9k+WJjeS6i+S7tueKtuaAgeiuoeeul+S7heWcqOWKqOaAgemTvuaOpeS4iuaJp+ihjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ+mAieaLqeaQnOe0oumFjee9rumhueeahOWxnuaApyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfln7rnoYDnu5PmnoTml6DmlYjjgILor7fmj5DkvpvljIXlkKsgWUFNTCDmoLzlvI/mlbDmja7nmoTlk4jluIzlgLzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICflv4Xpobvku6UiLS0tIuW8gOWniyBZQU1MIOWtl+espuS4suOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfml6Dms5XmuIXpmaTooaggY29uZmlnaXRlbV9saW5r44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfmnKrmib7liLDnm7jlhbPliqjmgIHlrZfmrrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfml6Dms5Xmj5LlhaXooaggY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICflkJHooaggY29uZmlnaXRlbV9saW5rIOaPkuWFpeS6hiAwIOadoeiusOW9lSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfljZXkuKrlhYPntKDnmoTmnIDlpKfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAn5a+85YWlL+WvvOWHuumZhOS7tu+8iOS9nOS4uuavj+ihjOeahOacgOWQjuS4gOS4quadoeebru+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ+eJiOacrOWtl+espuS4sic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICflkIzmraXlrprkuYnml7blh7rplJnjgILor7fmn6XnnIvml6Xlv5fjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfmgqjnmoQgSVRTTUNvbmZpZ0l0ZW0g5a6a5LmJ5pyq5ZCM5q2l44CC6K+36YOo572y5oKo55qEIElUU01Db25maWdJdGVtIOWKqOaAgeWtl+auteabtOaUueOAgic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn5bey6L+H5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn57u05oqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn6K+V6aqMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICflt7LorqHliJInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn5L+u5aSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfmiqXlup8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn5aSN5a6hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfmtYvor5Uv5ZOB6LSo5L+d6K+BJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfmpoLov7Dlkoznoa7orqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn5a+85YWl57G7L+inkuiJsuWPiuWFtuebuOWFs+Wtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ+exu+WvvOWFpeaXtuWPkeeUn+mUmeivr+OAgic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g6ZqQ6JePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDmmL7npLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOS7o+eQhueVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOWuouaIt+eVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+W3suWIhumFjeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+W3suWIhumFjee7meWuouaIt+WNleS9jeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ+W3suWIhumFjee7meWuouaIt+eUqOaIt+eahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQuiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5qOA5p+l5piv5ZCm5Li65ZSv5LiA5ZCN56ew55qE6IyD5Zu05piv5LuF5ZyoXCdjbGFzc1wn77yI6YWN572u6aG557G777yJ5YaF6L+Y5pivXCdnbG9iYWxcJyjlhajlsYAp77yM5bCx5piv5Zyo5p+l5om+6YeN5aSN6YWN572u6aG55ZCN56ew5pe255qE6IyD5Zu044CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzlkb3lkI3mlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOaVsOWtl+aWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzniYjmnKzlrZfnrKbkuLLmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfpgInmi6nop6blj5HliJvlu7rmlrDniYjmnKznmoTlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn6YCJ5oup6KaB5YiG6YWN57uZ5q2k6YWN572u6aG557G75Yir55qE57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ+mFjee9rumhueamguiniOeahOWIl+mFjee9rumhuei/h+a7pOWZqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn5Y+v5Zyo5Luj55CG55WM6Z2i6YWN572u6aG55qaC6KeI5Lit6L+H5ruk55qE5YiX44CC5rOo5oSP77ya5Y+q5YWB6K645L2/55So6YWN572u6aG55bGe5oCn5ZKM5Yqo5oCB5a2X5q61IChEeW5hbWljRmllbGRfTmFtZVgp44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+mFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn5re75Yqg6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn57yW6L6R6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i55So5LqO6K6w5b2V6YWN572u6aG55LqL5Lu25Yiw5Y6G5Y+y55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ+mFjee9rumhueS6i+S7tuaooeWdl++8jOeUqOS6juWwhumFjee9rumhueabtOaWsOS4uuW9k+WJjeWumuS5ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ+mFjee9rumhueWOhuWPsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfmiZPljbDphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfphY3nva7pobnor6bmg4XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfphY3nva7pobnmoJHlvaLop4blm74nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6YWN572u6aG555uu54mI5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+exu+WIq+eahOmFjee9rumhueWwhuS4jeS8muWtmOWCqOWcqCBFbGFzdGljc2VhcmNoIOacjeWKoeWZqOS4iuOAguimgeWwhuatpOW6lOeUqOS6jueOsOacieeahCBDSe+8jOW/hemhu+WcqOabtOaUueatpOmAiemhueWQjumAmui/h+aOp+WItuWPsOi/kOihjCBDSSDov4Hnp7vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn5YW35pyJ5Lul5LiL6YOo572y54q25oCB55qE6YWN572u6aG55bCG5LiN5Lya5a2Y5YKo5ZyoIEVsYXN0aWNzZWFyY2gg5pyN5Yqh5Zmo5LiK44CC6KaB5bCG5q2k5bqU55So5LqO546w5pyJ55qEIENJ77yM5b+F6aG75Zyo5pu05pS55q2k6YCJ6aG55ZCO6YCa6L+H5o6n5Yi25Y+w6L+Q6KGMIENJIOi/geenu+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfphY3nva7pobnpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ+avj+S4qumhtemdouS4iueahOmFjee9rumhuemZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn6YWN572u566h55CG5pWw5o2u5bqT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfphY3nva7pobnmibnlpITnkIbmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i55qE6YWN572u6aG55pCc57Si5ZCO56uv6Lev55Sx44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+WIm+W7uuWSjOeuoeeQhumFjee9rumhueWumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+WcqOeJueWumuaXtumXtOeCueS4uiBDb25maWdJdGVtcyDliJvlu7ogVGlja2V0c+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICflrqLmiLflj6/ku6Xmn6XnnIvljoblj7IgQ0kg54mI5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ+WuouaIt+WPr+S7peaJi+WKqOWIh+aNouWOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9Mjsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn5Zyo6YWN572u6aG55pCc57Si5bGP5bmV55qE5bGe5oCn5LiK5L2/55So55qE6buY6K6k5pWw5o2u44CC5L6L5aaC77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn5a6a5LmJ6ZO+5o6l5a+56LGh5bCP6YOo5Lu2KExpbmtPYmplY3Q6OlZpZXdNb2RlID0gXCJjb21wbGV4XCIp6K6+572u5oyJ6ZKu5Lit55qE5pON5L2c44CC6K+35rOo5oSP77yM6L+Z5Lqb5pON5L2c5b+F6aG75bey57uP5Zyo5Lul5LiLSlPlkoxDU1Pmlofku7bkuK3ms6jlhozvvJpDb3JlLkFsbG9jYXRpb25MaXN0LmNzc+OAgUNvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanPjgIEgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanPlkoxDb3JlLkFnZW50LkxpbmtPYmplY3QuanPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ+S4uueJiOacrOWtl+espuS4suWumuS5ieS4gOS4qiBUZW1wbGF0ZTo6VG9vbGtpdCDmlrnmoYjjgILku4XlnKjniYjmnKzlrZfnrKbkuLLmqKHlnZforr7nva7kuLogVGVtcGxhdGVUb29sa2l0IOaXtuS9v+eUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOe7hOWFgeiuuOWuouaIt+afpeeci+mFjee9rumhueeahOadoeS7tuOAguWPr+mAieaLqeWwhuadoeS7tumZkOWItuS4uuafkOS6m+WuouaIt+e7hOOAguWQjeensOaYr+WUr+S4gOeahOW8uuWItuWxnuaAp+OAguWmguaenOayoeaciee7meWHuuWFtuS7lumAiemhue+8jOWImeivpeexu+WIq+S4i+eahOaJgOaciemFjee9rumhuemDveWwhuWPr+ingeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j5Yig6ZmkSVRTTemFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j6I635Y+WSVRTTemFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j5pCc57SiSVRTTemFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j6K6+572uIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+WumuS5ieaYvuekuumFjee9rumhueWIl+ihqOeugOa0geinhuWbvueahOamguiniOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICflrprkuYnmmK/lkKblv4XpobvlnKjoioLngrnov57mjqXkuK3mmL7npLrpk77mjqXnsbvlnovmoIfnrb7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+S4uuavj+S4qumFjee9rumhueexu+WumuS5ieeLrOeri+eahOato+WImeihqOi+vuW8j++8jOS7peajgOafpemFjee9rumhueWQjeensOW5tuaYvuekuuebuOW6lOeahOmUmeivr+a2iOaBr+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ+agueaNriBDSSDnsbvliKvlrprkuYnphY3nva7pobnmpoLop4jkuK0gQ0kg55qE5Y+v55So5YiX44CC5q+P5Liq5p2h55uu5b+F6aG75YyF5ZCr5LiA5Liq57G75ZCN5ZKM55u45bqU57G755qE5Y+v55So5a2X5q615pWw57uE44CC5Yqo5oCB5a2X5q615p2h55uu5b+F6aG76YG15a6IIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnku6PnkIbnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3phY3nva7pobnmjpLluo/nmoTpu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt+eVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4remFjee9rumhueaOkuW6j+eahOm7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+WumuS5ieatpOaTjeS9nOeahOmFjee9rumhueaQnOe0oue7k+aenOeahOmFjee9rumhueaOkuW6j+m7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Luj55CG55WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlrqLmiLfnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3nmoTpu5jorqTphY3nva7pobnpobrluo/jgILkuIrvvJrmnIDml6fnmoTlnKjmnIDliY3pnaLjgILkuIvvvJrmnIDmlrDnmoTlnKjkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5q2k5pON5L2c55qE6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75a6a5LmJ6YWN572u6aG55qaC6KeI5Lit6buY6K6k5pi+56S655qEIENJIOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICflrprkuYnpu5jorqTmmL7npLrnmoTlhbPns7vmt7HluqbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG555uu5pCc57Si55WM6Z2i6buY6K6k5pi+56S655qE6YWN572u6aG555uu5pCc57Si5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICflrprkuYnphY3nva7pobnmkJzntKLlsY/luZXpu5jorqTmmL7npLrnmoTphY3nva7pobnmkJzntKLlsZ7mgKfjgIJFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzTvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDHvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI277ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDDvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAx77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01Oe+8m1wn5ZKM5oiWIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnO+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn5a6a5LmJXCdJVFNNQ29uZmlnSXRlbVwn57G755qE6buY6K6k5a2Q5a+56LGh44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir5a6a5LmJ6YWN572u6aG55qaC6KeI5LitIENJIOeahOWPr+eUqOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICflrprkuYnmnKzlsY/luZXlr4zmlofmnKznvJbovpHlmajnu4Tku7bnmoTpq5jluqbjgILovpPlhaXmlbDlgLzvvIjlg4/ntKDlgLzvvInmiJbnmb7liIbmr5TlgLzvvIjnm7jlr7nlgLzvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo57O757uf566h55CG6Z2i5p2/5Lit5L+u5pS56YWN572u6aG55a6a5LmJ55qE57yW6L6R5Zmo55qE6KGM5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ+WumuS5ieaVhemanOeKtuaAgeS7jumrmO+8iOWmgue0p+aApe+8ieWIsOS9ju+8iOWmguato+W4uO+8ieeahOmhuuW6j+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ+WumuS5ieWFs+iBlOeahOmDqOe9sueKtuaAge+8jOWNs+mTvuaOpeeahOW3peWNleWPr+S7peW9seWTjemFjee9rumhueeKtuaAgeeahOaDheWGteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5iUFnZW50SVRTTUNvbmZpZ0l0ZW3vvIjmnI3liqHkurrlkZjphY3nva7pobnvvInnqpflj6PnmoTmkJzntKLpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYlBZ2VudElUU01Db25maWdJdGVtU2VhcmNo77yI5pyN5Yqh5Lq65ZGY6YWN572u6aG55pCc57Si77yJ56qX5Y+j55qE5pCc57Si6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW0g5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn5Zyo5omA5pyJ6YWN572u6aG557G755qE6ZO+5o6l6KGo5aSN5p2C6KeG5Zu+5Lit5a6a5LmJ6KaB5pi+56S655qE6YWN572u6aG55a2X5q6144CCIOWmguaenOayoeacieadoeebru+8jOWImeaYvuekuum7mOiupOWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn5a6a5LmJ6ZO+5o6l6KGo5aSN5ZCI6KeG5Zu+5Lit5oyJ6YWN572u6aG557G75YiG57G75pi+56S655qE5a2X5q6144CC5q+P5Liq5p2h55uu5Z2H6ZyA5Lul57G75ZCN5Li65YmN57yA5YaN5Yqg5LiK5Y+M5YaS5Y+377yI5aaC6K6h566X5py6OjrvvInjgILmnInkuIDkupvphY3nva7pobnlsZ7mgKfmmK/miYDmnInphY3nva7pobnpg73mnInnmoTvvIjkvovlpoLvvIzlr7nkuo7orqHnrpfmnLrnsbvvvJrorqHnrpfmnLo6OuWQjeensOOAgeiuoeeul+acujo6Q3VyRGVwbFN0YXRl5b2T5YmN6YOo572y54q25oCB44CB6K6h566X5py6OjpDcmVhdGVUaW1l5Yib5bu65pe26Ze077yJ44CC6KaB5pi+56S65Zyo6YWN572u6aG55a6a5LmJ5Lit5a6a5LmJ55qE54us54m555qE6YWN572u6aG55bGe5oCn77yM5b+F6aG75L2/55So5LiL6Z2i55qE5pa55qGI77yI5L6L5aaC77ya5a+55LqO6K6h566X5py657G777ya6K6h566X5py6Ojrnoaznm5g6OjHjgIHorqHnrpfmnLo6OuehrOebmDo65a656YePOjox44CB6K6h566X5py6Ojrnoaznm5g6OjLjgIHorqHnrpfmnLo6OuehrOebmDo6Muiuoeeul+acujo656Gs55uYOjoy77yJ44CC5aaC5p6c5LiA5Liq6YWN572u6aG557G75rKh5pyJ5p2h55uu5a2Y5Zyo77yM5YiZ5L2/55So5ZyoSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnPkuK3orr7nva7nmoTpu5jorqTlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYnlk6rkupvpobnnm67lj6/nlKjkuo4gSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuInlsYLkuK3nmoQgIuaTjeS9nCLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYkgSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuIDlsYLkuK3nmoTlj6/nlKjpobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn5a6a5LmJIElUU00gQ29uZmlnIOmhueebriBBQ0wg57uT5p6E56ys5LqM5bGC5Lit55qE5Y+v55So6aG555uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquS4gOexuyjku47lt6XljZXop5Lluqblkb3lkI3nmoQp6ZO+5o6l5Y+v5Lul5b2x5ZON5LiA5Liq6ZO+5o6l55qE6YWN572u6aG555qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq5LiA57G75bel5Y2V5Y+v5Lul5b2x5ZON5LiA5Liq6ZO+5o6l55qE6YWN572u6aG555qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn5a6a5LmJ5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfliKDpmaTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfpg6jnvbLnirbmgIHnmoTpopzoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+WkjeWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ+WKqOaAgeWtl+auteS6i+S7tuaooeWdl++8jOeUqOS6juWcqOWMheWQq+eahOWKqOaAgeWtl+auteWPkeeUn+WPmOWMluaXtuWwhumFjee9rumhueWumuS5ieagh+iusOS4uuS4jeWQjOatpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i55qE6ZmE5YqgSVRTTeWtl+auteeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrqLmiLfnlYzpnaLphY3nva7pobnnm67mpoLop4jlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueaQnOe0ouWxj+W5leS4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLlkK/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73vvIzlj6/ku6XkuIDmrKHlpITnkIblpJrkuKrphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+WPquacieWIl+ihqOS4reeahOe7hOaJjeacieadg+mZkOS9v+eUqOmFjee9rumhueaJuemHj+aTjeS9nOWKn+iDveOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICflkK/nlKgv56aB55So5qOA5p+lIElUU00g6YWN572u6aG55piv5ZCm5YW35pyJ5ZSv5LiA5ZCN56ew55qE5Yqf6IO944CC5ZCv55So5q2k6YCJ6aG55YmN77yM5bqU5qOA5p+l57O757uf5Lit5piv5ZCm5a2Y5Zyo5ZCN56ew6YeN5aSN55qE6YWN572u6aG544CC5oKo5Y+v5Lul5L2/55So5o6n5Yi25Y+w5ZG95LukIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyDov5vooYzmo4Dmn6XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn5Zyo5bel5Y2VLemFjee9rumhueeahOmTvuaOpeS4reiuvue9rumFjee9rumhuS3nirbmgIHnmoTkuovku7bmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn6YWN572u6aG557Si5byV5a2X5q6177yM55So5LqO5YWo5paH5pCc57Si44CC5a2X5q615Lmf5Lya6KKr5a2Y5YKo77yM5L2G5a+55LqO5pW05L2T5Yqf6IO95p2l6K+05bm26Z2e5b+F6aG744CC5Y+v6YCa6L+H5bCG5p2h55uu6K6+572u5Li6IDAg5oiW5Yig6Zmk5p2l56aB55So6ZmE5Lu255qE5YyF5ZCr44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICflrZjlgqjlnKjphY3nva7pobnntKLlvJXkuK3nmoTlrZfmrrXvvIzpmaTnlKjkuo7lhajmlofmo4DntKLlpJbvvIzov5jlj6/nlKjkuo7lhbbku5bnlKjpgJTjgILkuLrkuoblrp7njrDlrozmlbTnmoTlip/og73vvIzmiYDmnInlrZfmrrXpg73mmK/lv4XloavlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICflj6/ku6XkuLrmr4/kuKogd2Vic2VydmljZe+8iOmUru+8ieWumuS5ieS4gOS4quexu++8iOWAvO+8ieaVsOe7hO+8jOWcqOatpOWfuuehgOS4iumZkOWItuWvvOWFpeOAguWvueS6juaJgOaciemAieWumueahOexu+aIluaJgOacieeOsOacieeahOexu++8jOW/hemhu+WcqOiwg+eUqOiAhemFjee9ruS4remAieaLqeivhuWIq+WxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00g6YWN572u6aG555uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTemFjee9rumhueamguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+S6i+S7tueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnmkJzntKLkuK3ljIXlkKvpg6jnvbLnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueebruaQnOe0ouS4reWMheWQq+S6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn5Zyo5q2k5pON5L2c57uT5p6c5Lit5pi+56S655qE6YWN572u6aG555qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn55So5LqO5qOA5p+l6YWN572u6aG557G755qE57uE5p2D6ZmQ55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn55So5LqO5qOA5p+l6YWN572u6aG555qE57uE5p2D6ZmQ55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn55So5LqO55Sf5oiQSVRTTemFjee9rumhuee7n+iuoeeahOaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+WQjeensOaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn57yW5Y+35qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouaQnOe0oue7k+aenOeahOavj+S4gOmhteS4reaYvuekuueahOmFjee9rumhueaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrqLmiLfnlYzpnaLmkJzntKLnu5Pmnpzmr4/pobXmmL7npLrnmoTphY3nva7pobnmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfopoHmkJzntKLnmoTlr7nosaHjgIHmnaHnm67mlbDph4/ku6Xlj4ropoHmmL7npLrnmoTlsZ7mgKfjgILphY3nva7pobnlsZ7mgKflv4XpobvpgJrov4cgRWxhc3RpY3NlYXJjaCDmmI7noa7lrZjlgqjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC6KeI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvliKvnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflsI/phY3nva7pobnnm67mpoLop4jnmoTliJfov4fmu6Tlmajlj4LmlbDjgILor7fms6jmhI/vvJrlsIYgIkFjdGl2Ze+8iOa0u+WKqO+8iSLorr7nva7kuLogMCDlj6rkvJrpmLvmraLku6PnkIblnKjlhbbkuKrkurrlgY/lpb3orr7nva7kuK3nvJbovpHor6Xnu4TnmoTorr7nva7vvIzkvYbku43lhYHorrjnrqHnkIblkZjnvJbovpHlhbbku5bnlKjmiLfnmoTorr7nva7jgILkvb/nlKggIlByZWZlcmVuY2VHcm91cO+8iOWBj+Wlvee7hO+8iSLlj6/mjqfliLbov5nkupvorr7nva7lupTmmL7npLrlnKjnlKjmiLfnlYzpnaLnmoTlk6rkuKrljLrln5/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCByZWZlcmVuY2UgZmllbGQgaXMgdXNlZCBmb3IgYSBDb25maWdJdGVtIGNsYXNzIChLZXk9Q2xhc3MsIFZhbHVlPUR5bmFtaWNGaWVsZE5hbWUpLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5a6i5oi355So5oi35YiX6KGo6KeG5Zu+5Luq6KGo5p2/5ZCO56uv55qE5Y+C5pWw44CC4oCcTGltaXTvvIjpmZDliLbvvInlrprkuYnpu5jorqTmmL7npLrnmoTmnaHnm67mlbDjgILigJxHUk9VUO+8iOe7hO+8ieeUqOS6juWIsOacrOaPkuS7tueahOiuv+mXruadg+mZkOmZkOWItu+8iOWmgiBHcm91cDphZG1pbjtncm91cDE7Z3JvdXAy77yJ44CC4oCcRGVmYXVsdO+8iOm7mOiupO+8ieKAneS7o+ihqOi/meS4quaPkuS7tuaYr+m7mOiupOWQr+eUqOi/mOaYr+mcgOimgeeUqOaIt+aJi+WKqOWQr+eUqOOAguKAnENhY2hlVFRMTG9jYWzigJ3ooajmmI7mnKzmj5Lku7bnmoTnvJPlrZjov4fmnJ/ml7bpl7TvvIjljZXkvY3vvJrliIbpkp/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlrqLmiLfnlKjmiLfliJfooajop4blm77ku6rooajmnb/lkI7nq6/nmoTlj4LmlbDjgILigJxMaW1pdO+8iOmZkOWItu+8ieWumuS5iem7mOiupOaYvuekuueahOadoeebruaVsOOAguKAnEdST1VQ77yI57uE77yJ55So5LqO5Yiw5pys5o+S5Lu255qE6K6/6Zeu5p2D6ZmQ6ZmQ5Yi277yI5aaCIEdyb3VwOmFkbWluO2dyb3VwMTtncm91cDLvvInjgILigJxEZWZhdWx077yI6buY6K6k77yJ4oCd5Luj6KGo6L+Z5Liq5o+S5Lu25piv6buY6K6k5ZCv55So6L+Y5piv6ZyA6KaB55So5oi35omL5Yqo5ZCv55So44CC4oCcQ2FjaGVUVExMb2NhbOKAneihqOaYjuacrOaPkuS7tueahOe8k+WtmOi/h+acn+aXtumXtO+8iOWNleS9je+8muWIhumSn++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouWBj+Wlveiuvue9ruinhuWbvuS4reeUqOS6jumDqOe9sueKtuaAgeminOiJsueahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouWBj+Wlveiuvue9ruinhuWbvuS4reeUqOS6jumDqOe9sueKtuaAgeeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfnm67lvZXlsZ7mgKfmoLfkvost5p2D6ZmQ57uE55qE5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75ZCN56ew5qih5Z2X55qE5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvliKvnmoTnvJblj7fmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn5pi+56S66YWN572u6aG555qE6aG16Z2i5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+eahOeJiOacrOWtl+espuS4suaooeWdl+WPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+eUqOS6juS7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+eahOeJiOacrOWtl+espuS4suaooeadv+W3peWFt+WMheaooeWdl+WPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzop6blj5Hlmajlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfkuLrmr4/kuKrphY3nva7nmoRXRULmnI3liqHnmoTmr4/kuKrkuovku7bmiafooYzphY3nva7lpb3nmoTmk43kvZzvvIjku6XosIPnlKjnqIvluo/op5LoibLvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+adg+mZkOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKggSVRTTSDphY3nva7pobnnm67pmYTku7bmk43kvZzmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55pCc57Si56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5qCR6KeG5Zu+5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnor6bmg4Xnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKjmt7vliqBJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqOaJuemHjyBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKjnvJbovpFJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnljoblj7Lnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnmiZPljbDnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ+WIoOmZpOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ+aQnOe0oumFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn5b2T5LiA5Liq5bel5Y2V6ZO+5o6l5Yiw5LiA5Liq6YWN572u6aG55pe26Ieq5Yqo6K6+572u6L+Z5Liq6YWN572u6aG555qE5pWF6Zqc54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG55om56YeP5pON5L2c56qX5Y+j6K6+572u6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueaJuemHj+aTjeS9nOeql+WPo+iuvue9ruS6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWFgeiuuOmTvuaOpemFjee9rumhueWIsOWPpuS4gOWvueixoeeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWFgeiuuOiuv+mXrumFjee9rumhueWOhuWPsueahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjorr/pl67phY3nva7pobnljoblj7LnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrliKDpmaTphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOS7peagkeW9ouinhuWbvuaYvuekuumFjee9rumhuemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWkjeWItumFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlpI3liLbphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4que8lui+kemFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6L+U5Zue6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5omT5Y2w6YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG55qaC6KeI6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5p+l55yL6YWN572u6aG56K+m5oOF55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLmmL7npLrphY3nva7pobnljoblj7LvvIjlgJLluo/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn5aaC5p6c5pyq6YCJ5oup5Lu75L2V57G75Yir77yM5YiZ5pi+56S66buY6K6k57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfphY3nva7pobnmoIfor4bnrKbvvIzlpoJDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPvvIzpu5jorqTmmK9Db25maWdJdGVtI+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ+iHquWKqOinpuWPkSBDb25maWdJdGVtRmV0Y2gg6LCD55So5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfniYjmnKzlrZfnrKbkuLLooajovr7lvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn54mI5pys5a2X56ym5Liy5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ+eJiOacrOinpuWPkeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICflrZfmrrXmmK/lkKboh6rliqjloavlhYUoMSnvvIwg6YKj56eN5oOF5Ya15LiL5bCG5Lya5Zyo5bel5Y2V6KGo5Lit6ZqQ6JeP6LW35p2lKDIp44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ+aYr+WQpuWPr+S7pemAmui/h+ajgOafpee8k+WtmOeahOWtl+auteS+nei1luWFs+ezu+adpemBv+WFjeaJp+ihjCBDb25maWdJdGVtQUNM44CC6L+Z5Y+v5Lul57yp55+t6KGo5qC855qE5Yqg6L295pe26Ze077yM5L2G5aaC5p6c6KaB5ZyoIElUU01Db25maWdJdGVtIOWSjCBGb3JtLVJldHVyblR5cGUg5Lit5L2/55SoIEFDTCDmqKHlnZfvvIzliJnlv4XpobvnpoHnlKjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ+agh+mimOS4reaYvuekuuS6huWTquS6m+S4gOiIrOS/oeaBr+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+exuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICflhajlsYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfpl7Lnva4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ+WHhuWkh+aKleS6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn5oqV5LqnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBV77yaMTcuNSDoi7Hlr7jvvIg0NC40NSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVe+8mjIxIOiLseWvuO+8iDUzLjM0IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVV77yaMjYuMjUg6Iux5a+477yINjYuNjgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4Ve+8mjMxLjUg6Iux5a+477yIODAuMDEg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IOiLseWvuOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVXvvJoxLjc1IOiLseWvuO+8iDQuNDUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVe+8mjM1IOiLseWvuO+8iDg4Ljkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxIOiLseWvuOaUr+aetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlXvvJozOC41IOiLseWvuO+8iDk3Ljc5IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyDoi7Hlr7jmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy42IOiLseWvuO+8iDYwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFXvvJo0MiDoi7Hlr7jvvIgxMDYuNjgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdV77yaNDcuMjUg6Iux5a+477yIMTIwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVe+8mjMuNSDoi7Hlr7jvvIg4Ljg5IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBV77yaNTIuNSDoi7Hlr7jvvIgxMzMuMzUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNSDoi7Hlr7jvvIg4MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNV77yaNTcuNzUg6Iux5a+477yIMTQ2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjQg6Iux5a+477yIOTAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2Ve+8mjYzIOiLseWvuO+8iDE2MC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNCDoi7Hlr7jvvIgxMDAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5Ve+8mjY4LjI1IOiLseWvuO+8iDE3My4zNSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVe+8mjUuMjUg6Iux5a+477yIMTMuMzQg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlXvvJo3My41IOiLseWvuO+8iDE4Ni42OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjMg6Iux5a+477yIMTEwMCDmr6vnsbPvvInvvJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVXvvJo3OC43NSDoi7Hlr7jvvIgyMDAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjIg6Iux5a+477yIMTIwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFXvvJo4NCDoi7Hlr7jvvIgyMTMuMzYg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFXvvJo3IOiLseWvuO+8iDE3Ljc4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVV77yaOC43NSDoi7Hlr7jvvIgyMi4yMyDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2Ve+8mjEwLjUg6Iux5a+477yIMjYuNjcg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdV77yaMTIuMjUg6Iux5a+477yIMzEuMTIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhV77yaMTQg6Iux5a+477yIMzUuNTYg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlV77yaMTUuNzUg6Iux5a+477yINDAuMDEg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn5Lya6K6hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn5Zyw5Z2A5YiG6YWNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfnrqHnkIblkZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn5qih5ouf55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICforr7lpIfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+eUteaxoOWuuemHj++8iOWuieaXtu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfnlLXmsaDnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKfljqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+aAu+e6v+aOpeWPoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHj++8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn5q+P5Liq5Zu+5b2i5Y2h55qE5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn5Y2h5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn6K+75Y2h5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+WNoeeJh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn5a6i5oi36K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+WuouaIt+err+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICflrqLmiLfnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn5pe26ZKf6aKR546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfml7bpkp/pgJ/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+S7o+eggeetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn5Lya6K6u55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn5ZKo6K+i5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfogZTns7vmlrnlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+iBlOezu+e7j+mUgOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+mbhuijheeuseeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn5ZCI5ZCM57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn5ZCI5ZCM5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+WQiOWQjOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfml6Dnu7PnlLXor53vvIhERUNUIOeUteivne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfmiJDmnKzljZXkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICforrjlj6/or4HmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+WIm+W7uuaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn5a6a5Yi25py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOS/neeVmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn5Y+R56Wo5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICforqLotK3ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+aOiOadg+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICflj5HluIPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+WPsOW8j+eUteiEkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5paH5Lu2562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+eUteWtkOmCruS7tuivgeS5pu+8iFMvTUlNRSDor4HkuabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH5L2j5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57uI56uvIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+aUr+aMgee7k+adnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+acieaViOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn5aSW572u56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn6Ziy54Gr5aKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn5Zu65Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn6aOe6L2u5YKo6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn5aSW5b2i5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfnibnorrjnu4/okKXljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3otLnova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn5LiA6Iis5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfnoazku7blnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn56Gs5Lu26YeN6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfogLPmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn6Lqr5Lu95ZKM6K6/6Zeu566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflupPlrZjnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfovazmjaLmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICflj5Hnpajlj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfplK7nm5gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIOaYvuekuuWZqO+8iOa2suaZtuaYvuekuuWZqO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIOaYvuekuuWZqO+8iOWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICflm7rlrprnlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn57qs5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn56ysIDEg5bGC77ya54mp55CG5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ+esrCAyIOWxgu+8muaVsOaNrumTvui3r+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+esrCAzIOWxgu+8mue9kee7nOWxgu+8iOi2hee6p+e9ke+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICfnrKwgNCDlsYLvvJrkvKDovpPlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ+esrCA1IOWxgu+8muS8muivneWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfnrKwgNiDlsYLvvJrmmL7npLrlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfnrKwgNyDlsYLvvJrlupTnlKjlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn56ef6LWB5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn6K645Y+v5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICforrjlj6/or4Hlr4bpkqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn6K645Y+v6K+B57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICforrjlj6/or4HmnInmlYjmnJ/ku44nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICforrjlj6/or4HmnInmlYjmnJ/oh7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ+ejt+mFuOmTgemUgu+8iExpRmVQTzTvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ+mUguemu+WtkO+8iExpLUlvbu+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ+i0t+asvuWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn5L2N5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ+e7j+W6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGl6ZW56J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn5Yi26YCg5ZWGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfotJ/ovb3og73lipvvvIjnk6bvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn5YaF5a2YJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn5YaF5a2Y57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfov7fkvaDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+aJi+acuuWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfnp7vliqgv5bWM5YWl5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn5Z6L5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn5Z6L5Y+36K+05piOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ+aYvuekuuWZqOWIhui+qOeOhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfmmL7npLrlmajlsLrlr7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfpvKDmoIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+e9kee7nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfnvZHnu5zkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn6ZWN6ZWJ77yITmlDZO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+mVjeawou+8iE5pTUjvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn5L+d5a+G5Y2P6K6u77yITkRB77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIOaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICflhoXlrZjmqKHlnZfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn5Zu+5b2i5Y2h5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIOaYvuekuuWZqO+8iOacieacuuWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfov5DokKXmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn6K6i5Y2V5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5YW25a6DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfovpPlh7onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5a+G56CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5a+G56CBIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn5ZCI5LyZ5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn55S16K+d5Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfnlLXor53nsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfniannkIbno4Hoiq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfnlLXlipvovpPpgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICflnKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+acuuaetua3seW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+acuuaetuWNleWFgyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+aIv+mXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIOivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+mUgOWUruWQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfljavmmJ/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn5a+G5bCB6ZOF6YW4IChTTEEpIOeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+W6j+WIl+WPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfmnI3liqHlmajova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfmnI3liqHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfmnI3liqHmoIfnrb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn5o+S5bqn57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn5Y+R6KiA5Lq6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+agh+WHhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn5ZCv5YqoIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn5a2Y5YKoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn5a2Y5YKo5YiG5Yy6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn6ZmE5bGe5py65p6EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfmkZjopoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfnmKblrqLmiLfmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ+e6v+eoiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ+mbt+eUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn5pi+5Y2h5oC75YaF5a2Y77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn6Kem5pG45bGP5pi+56S65ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn5aGU5qW8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ig6ZuG57q/5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+iZmuaLn+S4k+eUqOe9kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIg5aS055uUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAn6Jma5ouf6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfnvZHnu5znlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+e9kee7nOaRhOWDj+WktCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/zh_TW_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUuemhnuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn6YGO5r++6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOW+nuWIl+ihqOS4remBuOaTh+mhnuWIpe+8jOeEtuW+jOW7uueri+aWsOeahOmFjee9rumgheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+mhnuWIpSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG555uu5om56YeP5pON5L2cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn5Y+m5LiA5Liq6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfphY3nva7pobnnm67nvJblj7fml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn6KaB6ZO+5o6l55qE5Y+m5LiA5Liq6YWN572u6aG555qE57yW5Y+344CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn5oKo55yf55qE5oOz5Yig6Zmk6L+Z5Liq6YWN572u6aG55ZCX77yfJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+eCuumAmeWAi+mFjee9rumgheWRveWQjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn5ZCN56ew5bey6KKr6YWN572u6aG55L2/55So77yM57yW5Y+35aaC5LiL77yaJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzomZ/norwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhueWOhuWPsu+8miAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfmrbflj7LlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WJteW7uuaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfnvKnmlL7oppblnJYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aCB6YWN572u6aCF5YCL5pW4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn5ZCM5pmC5pCc57Si5Lul5YmN55qE54mI5pysPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+a3seW6puetiee6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+aUvuWkpy/nvKnlsI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSDlt7Lovr7liLDmnIDlpKfpk77mjqXnuqfliKvvvIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6YWN572u6aCF5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+eVtuWJjeeahOmDqOe9sueLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn55W25YmN55qE5pWF6Zqc54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+acgOW+jOS/ruaUuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDlvozkv67mlLnmlrwnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfmgqjnmoTphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6YWN572u6aG55pCc57SiJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICflr7nosaHnsbvlnosnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfmjInpoZ7lnovpgY7mv74nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn5bCG5a+85YWl5Lul5LiL6KeS6ImyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ+ivt+azqOaEj++8jOS5n+S8muWIm+W7uuebuOW6lOeahOWKqOaAgeWtl+auteWSjCBHZW5lcmFsQ2F0YWxvZyDnsbvvvIzogIzkuJTkuI3kvJroh6rliqjliKDpmaTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfkvaDmg7Pnu6fnu63lkJfvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn6ZyA6KaB56S65L6L57G777yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ+WumuS5ieayoeacieacieaViOeahCBZQU1MIOWTiOW4jOWAvOOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ+amgui/sO+8mklUU00g6YWN572u6aG555uuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+acque7meWHuiBDb25maWdJdGVtSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfmgqjpnIDopoHoh7PlsJHkuIDkuKrpgInlrprnmoTphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfmgqjmsqHmnInlhpnlhaXmraTphY3nva7pobnnmoTmnYPpmZDvvJolcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn5pyq5a6a5LmJICVzIOexu+eahOWumuS5ie+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn5pWw5o2u5bqT5Lit5pyq5Y+R546w6YWN572u6aG5ICIlcyLvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfml6Dms5XliKDpmaTphY3nva7pobkgSUQgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ+a3u+WKoOmFjee9rumhueebruOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmnKrnu5nlh7ogQ29uZmlnSXRlbUlE44CBRHVwbGljYXRlSUQg5oiWIENsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ+acquaPkOS+m+iuv+mXruadg+mZkO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrljoblj7LorrDlvZXvvIzlm6DkuLrmsqHmnInnu5nlh7ogQ29uZmlnSXRlbUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S65Y6G5Y+y6K6w5b2V77yM5rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDphY3nva7pobnvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn5paw54mI5pys77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfpg6jnvbLnirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5LqL5Lu254q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn6YWN572u6aG555uu77yISUQ9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICflt7Lmt7vliqAgJXMgKHR5cGU9JXMpIOmTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn5oyH5ZCRICVzICh0eXBlPSVzKSDnmoTpk77mjqXlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ+mFjee9rumhueWumuS5ieW3suabtOaWsO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5ZCN56ew5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn5bGe5oCnICVzIOS7jiIlcyAi5pu05paw5Li6IiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfniYjmnKwgJXMg5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ+acque7meWHuiBDb25maWdJdGVtSUQg5oiWIFZlcnNpb25JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrphY3nva7pobnvvIzmnKrotYvkuojorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfmlbDmja7lupPkuK3mib7kuI3liLDphY3nva7pobnnm67nvJblj7cgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAn55SxICVzIOWcqCAlcyDmiZPljbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+ebuOmXnOWPguiAgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ+aXoOaViCBDbGFzc0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn5pyq57uZ5Ye6IENsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfor6XnsbvmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+aykuaciee1kOaenCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfphY3nva7poIXnm67mkJzlsIvntZDmnpwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ+aXoOazleaYvuekuumhueebru+8jOayoeaciee7meWumiBDb25maWdJdGVtIOeahOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfmnKrmib7liLDphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn5pyq5om+5Yiw5Lu75L2V54mI5pys77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn5Lia5YqhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfkuovku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumghemDqOe9sueLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumgheaVhemanOeLgOaFiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+aykuacieasiumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfov4fmu6Tlmajml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+aQnOe0ouWPguaVsOaXoOaViO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+aYvuekuueahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfpg6jnvbLni4DmhYvpoZ7lnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn55W25YmN55qE5pWF6Zqc54uA5oWL6aGe5Z6LJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+S5i+mXtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG555qE57G75Yir6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgInmi6nkuIDkuKrmiJblpJrkuKrnsbvliKvmnaXpmZDliLblj6/pgInmi6nnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueeahOexu+WIq+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mAieaLqeS4gOS4quaIluWkmuS4quexu+WIq+adpemZkOWItuWPr+mAieaLqeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ+WKqOaAge+8iENvbmZpZ0l0ZW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+mdmeaAge+8iOeJiOacrO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfpk77mjqXlvJXnlKjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn5q2k6ZO+5o6l6YCC55So5LqO5byV55So5a+56LGh55qE6YWN572u6aG56L+Y5piv6Z2Z5oCB54mI5pys44CC5b2T5YmN5LqL5Lu254q25oCB6K6h566X5LuF5Zyo5Yqo5oCB6ZO+5o6l5LiK5omn6KGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6YCJ5oup5pCc57Si6YWN572u6aG555qE5bGe5oCnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+WfuuehgOe7k+aehOaXoOaViOOAguivt+aPkOS+m+WMheWQqyBZQU1MIOagvOW8j+aVsOaNrueahOWTiOW4jOWAvOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ+W/hemhu+S7pSItLS0i5byA5aeLIFlBTUwg5a2X56ym5Liy44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ+aXoOazlea4hemZpOihqCBjb25maWdpdGVtX2xpbmvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+acquaJvuWIsOebuOWFs+WKqOaAgeWtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+aXoOazleaPkuWFpeihqCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+WQkeihqCBjb25maWdpdGVtX2xpbmsg5o+S5YWl5LqGIDAg5p2h6K6w5b2VJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ+atpOWFg+e0oOeahOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICflr7zlhaUv5a+85Ye66ZmE5Lu277yI5L2c5Li65q+P6KGM55qE5pyA5ZCO5LiA5Liq5p2h55uu77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn54mI5pys5a2X56ym5LiyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ+WQjOatpeWumuS5ieaXtuWHuumUmeOAguivt+afpeeci+aXpeW/l+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ+aCqOeahCBJVFNNQ29uZmlnSXRlbSDlrprkuYnmnKrlkIzmraXjgILor7fpg6jnvbLmgqjnmoQgSVRTTUNvbmZpZ0l0ZW0g5Yqo5oCB5a2X5q615pu05pS544CCJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfliLDmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfntq3orbcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfoqabpqZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+W3suioiOWKgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfkv67lvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+WgseW7oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfopIflr6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+a1i+ippi9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn5qaC6L+w5ZKM56Gu6K6kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ+WvvOWFpeexuy/op5LoibLlj4rlhbbnm7jlhbPlrZfmrrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfnsbvlr7zlhaXml7blj5HnlJ/plJnor6/jgIInOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIOmakOiXjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g5pi+56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICflhYHorrjlnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLkuK3kvb/nlKjmianlsZXmkJzntKLmnaHku7bjgILliKnnlKjor6Xlip/og73vvIzmgqjlj6/ku6Xkvb/nlKgiKCprZXkxKiYmKmtleTIqKSAi5oiWIigqa2V5MSp8fCprZXkyKikgIuetieadoeS7tuaQnOe0oumFjee9rumhueWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICflhYHorrjlnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnmkJzntKLkuK3kvb/nlKjmianlsZXmkJzntKLmnaHku7bjgILliKnnlKjor6Xlip/og73vvIzmgqjlj6/ku6Xkvb/nlKgiKCprZXkxKiYmKmtleTIqKSAi5oiWIigqa2V5MSp8fCprZXkyKikgIuetieadoeS7tuaQnOe0oumFjee9rumhueWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfliIbphY3nmoQgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfliIbphY3nu5nlrqLmiLflhazlj7jnmoQgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfliIbphY3nu5nlrqLmiLfnlKjmiLfnmoQgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIg6K6+572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfku4XlnKjlkIzkuIAgQ29uZmlnSXRlbSDnsbvvvIgiY2xhc3Mi77yJ5oiW5YWo5bGA77yIImdsb2JhbCLvvInlhoXmo4Dmn6XllK/kuIDlkI3np7DvvIzov5nmhI/lkbPnnYDlnKjmn6Xmib7ph43lpI3ml7bvvIzmr4/kuKrnjrDmnInnmoQgQ29uZmlnSXRlbSDpg73kvJrooqvogIPomZHlnKjlhoXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOWRveWQjeaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn6YCJ5oup5LiA5Liq5qih5Z2X5p2l5omn6KGM5pWw5a2X5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOeJiOacrOWtl+espuS4suaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ+mAieaLqeinpuWPkeWIm+W7uuaWsOeJiOacrOeahOWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfpgInmi6nopoHliIbphY3nu5nmraTphY3nva7pobnnsbvliKvnmoTnsbvliKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn6YWN572u6aG55qaC6KeI55qE5YiX6YWN572u6aG56L+H5ruk5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICflj6/lnKjku6PnkIbnlYzpnaLphY3nva7pobnmpoLop4jkuK3ov4fmu6TnmoTliJfjgILms6jmhI/vvJrlj6rlhYHorrjkvb/nlKjphY3nva7pobnlsZ7mgKflkozliqjmgIHlrZfmrrUgKER5bmFtaWNGaWVsZF9OYW1lWCnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn6YWN572u6aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfmt7vliqDphY3nva7pobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfphY3nva7pobnnm67nvJbovpHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfphY3nva7pobnkuovku7bmqKHlnZfvvIzlj6/lsIbml6Xlv5forrDlvZXliLDku6PnkIbnlYzpnaLnmoTljoblj7LorrDlvZXkuK3jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn6YWN572u6aG55LqL5Lu25qih5Z2X77yM55So5LqO5bCG6YWN572u6aG55pu05paw5Li65b2T5YmN5a6a5LmJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn6YWN572u6aG555uu5Y6G5Y+y44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+mFjee9rumhueebruaJk+WNsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+mFjee9rumhueebrue8qeaUvuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfphY3nva7pobnnm67niYjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn5Lul5LiL57G75Yir55qE6YWN572u6aG55bCG5LiN5Lya5a2Y5YKo5ZyoIEVsYXN0aWNzZWFyY2gg5pyN5Yqh5Zmo5LiK44CC6KaB5bCG5q2k5bqU55So5LqO546w5pyJ55qEIENJ77yM5b+F6aG75Zyo5pu05pS55q2k6YCJ6aG55ZCO6YCa6L+H5o6n5Yi25Y+w6L+Q6KGMIENJIOi/geenu+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICflhbfmnInku6XkuIvpg6jnvbLnirbmgIHnmoTphY3nva7pobnlsIbkuI3kvJrlrZjlgqjlnKggRWxhc3RpY3NlYXJjaCDmnI3liqHlmajkuIrjgILopoHlsIbmraTlupTnlKjkuo7njrDmnInnmoQgQ0nvvIzlv4XpobvlnKjmm7TmlLnmraTpgInpobnlkI7pgJrov4fmjqfliLblj7Dov5DooYwgQ0kg6L+B56e744CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+mFjee9rumhueebrumZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn5q+P6aG16YWN572u6aG555uu6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfphY3nva7nrqHnkIbmlbDmja7lupPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+mFjee9rumhueaJuemHj+aooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfphY3nva7pobnmkJzntKLku6PnkIbmjqXlj6PnmoTlkI7nq6/ot6/nlLHlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn5Ym15bu65ZKM566h55CG6YWN572u6aCF5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn5Zyo54m55a6a5pe26Ze054K55Li6IENvbmZpZ0l0ZW1zIOWIm+W7uiBUaWNrZXRz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+WuouaIt+WPr+S7peafpeeci+WOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn5a6i5oi35Y+v5Lul5omL5Yqo5YiH5o2i5Y6G5Y+yIENJIOeJiOacrOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+WcqOmFjee9rumhueaQnOe0ouWxj+W5leeahOWxnuaAp+S4iuS9v+eUqOeahOm7mOiupOaVsOaNruOAguS+i+Wmgu+8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9Mzsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICflrprkuYnlj6/lnKjpk77mjqXlr7nosaEgd2lkZ2V0IOS4reS9v+eUqOiuvue9ruaMiemSrueahOaTjeS9nO+8iExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgi77yJ44CC6K+35rOo5oSP77yM6L+Z5Lqb5pON5L2c5b+F6aG75bey5rOo5YaM5Lul5LiLIEpTIOWSjCBDU1Mg5paH5Lu277yaQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg5ZKMIENvcmUuQWdlbnQuTGlua09iamVjdC5qc+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn5Li654mI5pys5a2X56ym5Liy5a6a5LmJ5LiA5LiqIFRlbXBsYXRlOjpUb29sa2l0IOaWueahiOOAguS7heWcqOeJiOacrOWtl+espuS4suaooeWdl+iuvue9ruS4uiBUZW1wbGF0ZVRvb2xraXQg5pe25L2/55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn5a6a5LmJ5LiA57uE5YWB6K645a6i5oi35p+l55yL6YWN572u6aG555qE5p2h5Lu244CC5Y+v6YCJ5oup5bCG5p2h5Lu26ZmQ5Yi25Li65p+Q5Lqb5a6i5oi357uE44CC5ZCN56ew5piv5ZSv5LiA55qE5by65Yi25bGe5oCn44CC5aaC5p6c5rKh5pyJ57uZ5Ye65YW25LuW6YCJ6aG577yM5YiZ6K+l57G75Yir5LiL55qE5omA5pyJ6YWN572u6aG56YO95bCG5Y+v6KeB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PliKDpmaQgSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+iOt+WPliBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j5pCc57SiIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Porr7nva4gSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn5a6a5LmJ5LiA5Liq5qaC6KeI5qih5Z2X77yM55So5LqO5pi+56S66YWN572u6aG555uu5YiX6KGo55qE5bCP6KeG5Zu+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ+WumuS5ieaYr+WQpuW/hemhu+WcqOiKgueCuei/nuaOpeS4reaYvuekuumTvuaOpeexu+Wei+agh+etvuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn5Li65q+P5LiqIENvbmZpZ0l0ZW0g57G75Y2V54us5a6a5LmJ5q2j5YiZ6KGo6L6+5byP77yM5Lul5qOA5p+lIENvbmZpZ0l0ZW0g5ZCN56ew5bm25pi+56S655u45bqU55qE6ZSZ6K+v5L+h5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WIq+WumuS5iemFjee9rumhueamguiniOS4rSBDSSDnmoTlj6/nlKjliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS7o+eQhueVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4remFjee9rumhueaOkuW6j+eahOm7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi355WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit6YWN572u6aG55o6S5bqP55qE6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn5a6a5LmJ5q2k5pON5L2c55qE6YWN572u6aG55pCc57Si57uT5p6c55qE6YWN572u6aG55o6S5bqP6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnku6PnkIbnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3nmoTpu5jorqTphY3nva7pobnpobrluo/jgILkuIrvvJrmnIDml6fnmoTlnKjmnIDliY3pnaLjgILkuIvvvJrmnIDmlrDnmoTlnKjkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt+eVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnmraTmk43kvZznmoTphY3nva7pobnmkJzntKLnu5PmnpzkuK3nmoTpu5jorqTphY3nva7pobnpobrluo/jgILkuIrvvJrmnIDml6fnmoTlnKjmnIDliY3pnaLjgILkuIvvvJrmnIDmlrDnmoTlnKjkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ+agueaNriBDSSDnsbvlrprkuYnphY3nva7pobnmpoLop4jkuK3pu5jorqTmmL7npLrnmoQgQ0kg5YiX44CC5q+P5Liq5p2h55uu5b+F6aG75YyF5ZCr5LiA5Liq57G75ZCN5ZKM55u45bqU57G755qE5Y+v55So5a2X5q615pWw57uE44CC5Yqo5oCB5a2X5q615p2h55uu5b+F6aG76YG15a6IIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ+WumuS5iem7mOiupOaYvuekuueahOWFs+ezu+a3seW6puOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYnphY3nva7pobnnm67mkJzntKLnlYzpnaLpu5jorqTmmL7npLrnmoTphY3nva7pobnnm67mkJzntKLlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ+WumuS5iemFjee9rumhueaQnOe0ouWxj+W5lem7mOiupOaYvuekuueahOmFjee9rumhueaQnOe0ouWxnuaAp+OAgkV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6U2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NO+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMe+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjbvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMO+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDHvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU577ybXCflkozmiJYgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc744CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICflrprkuYkgIklUU01Db25maWdJdGVtICLnsbvnmoTpu5jorqTlrZDlr7nosaHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ+agueaNriBDSSDnsbvliKvlrprkuYnphY3nva7pobnmpoLop4jkuK0gQ0kg55qE5Y+v55So5YiX44CC5q+P5Liq5p2h55uu5b+F6aG75YyF5ZCr5LiA5Liq57G75ZCN5ZKM55u45bqU57G755qE5Y+v55So5a2X5q615pWw57uE44CC5Yqo5oCB5a2X5q615p2h55uu5b+F6aG76YG15a6IIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ+WumuS5ieivpeWxj+W5leWvjOaWh+acrOe8lui+keWZqOe7hOS7tueahOmrmOW6puOAgui+k+WFpeaVsOWtl++8iOWDj+e0oO+8ieaIlueZvuWIhuavlOWAvO+8iOebuOWvueWAvO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnnrqHnkIbnlYzpnaLkuK0gQ0kg5a6a5LmJ57yW6L6R5Zmo55qE6KGM5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ+WumuS5ieS6i+S7tueKtuaAgeS7jumrmOWIsOS9ju+8iOWmgueOr+eKtu+8ieeahOmhuuW6j+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ+WumuS5ieebuOWFs+mDqOe9sueKtuaAge+8jOWFtuS4remTvuaOpeeahOelqOWNleWPr+W9seWTjSBDSSDnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYkgQWdlbnRJVFNNQ29uZmlnSXRlbSDlsY/luZXnmoTmkJzntKLpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYkgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDlsY/luZXnmoTmkJzntKLpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYnlrqLmiLdJVFNNQ29uZmlnSXRlbSDlsY/luZXnmoTmkJzntKLpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYnlrqLmiLdJVFNNQ29uZmlnSXRlbVNlYXJjaCDlsY/luZXnmoTmkJzntKLpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflrprkuYnpk77mjqXooajlpI3lkIjop4blm77kuK3miYDmnIkgQ0kg57G755qEIENJIOaYvuekuuWIl+OAguWmguaenOayoeacieadoeebru+8jOWImeaYvuekuum7mOiupOWIl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WIq++8jOWumuS5iemTvuaOpeihqOWkjeWQiOinhuWbvuS4reaYvuekuueahCBDSSDliJfjgILmr4/kuKrmnaHnm67pg73lv4Xpobvku6XnsbvlkI3lkozlj4zlhpLlj7fkuLrliY3nvIDvvIjlpoIgQ29tcHV0ZXI6Ou+8ieOAguaJgOaciSBDSSDpg73mnInkuIDkupvlhbHlkIznmoQgQ0kg5bGe5oCn77yI5LulICLorqHnrpfmnLogIuexu+S4uuS+i++8mkNvbXB1dGVyOjpOYW1l44CBQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZeOAgUNvbXB1dGVyOjpDcmVhdGVUaW1l77yJ44CC6KaB5pi+56S6IENJIOWumuS5ieS4reWumuS5ieeahOWNleS4qiBDSSDlsZ7mgKfvvIzlv4Xpobvkvb/nlKjku6XkuIvmlrnmoYjvvIjku6XorqHnrpfmnLrnsbvkuLrkvovvvInvvJpDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS7lpoLmnpzmsqHmnIkgQ0kg57G75p2h55uu77yM5YiZ5pi+56S66buY6K6k5YiX44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq5Lqb6aG555uu5Y+v55So5LqOIElUU00gQ29uZmlnIOmhueebriBBQ0wg57uT5p6E56ys5LiJ5bGC5Lit55qEICLmk43kvZwi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn5a6a5LmJIElUU00gQ29uZmlnIOmhueebriBBQ0wg57uT5p6E56ys5LiA5bGC5Lit55qE5Y+v55So6aG555uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5iSBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS6jOWxguS4reeahOWPr+eUqOmhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICflrprkuYnlk6rnp43nsbvlnovnmoTpk77mjqXvvIjku47npajmja7op5Lluqblkb3lkI3vvInkvJrlvbHlk43pk77mjqUgQ0kg55qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq56eN57G75Z6L55qE56Wo5Y2V5Lya5b2x5ZON6ZO+5o6lIENJIOeahOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ+WumuS5ieabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn5Yig6Zmk6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn6YOo572y54q25oCB6aKc6ImyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ+mDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfopIfoo70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfliqjmgIHlrZfmrrXkuovku7bmqKHlnZfvvIznlKjkuo7lnKjljIXlkKvnmoTliqjmgIHlrZfmrrXlj5HnlJ/lj5jljJbml7blsIbphY3nva7pobnlrprkuYnmoIforrDkuLrkuI3lkIzmraXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmZhOWKoCBJVFNNIOWtl+auteWxj+W5leS4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrqLmiLfnlYzpnaLphY3nva7pobnnm67mpoLop4jlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueaQnOe0ouWxj+W5leS4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICflkK/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73vvIzkvb/ku6PnkIbliY3lj7Dog73lkIzml7blpITnkIblpJrkuKrphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+S7heWvueWIl+WHuueahOe7hOWQr+eUqOmFjee9rumhueaJuemHj+aTjeS9nOWKn+iDveOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICflkK/nlKgv56aB55So5qOA5p+lIElUU00g6YWN572u6aG55piv5ZCm5YW35pyJ5ZSv5LiA5ZCN56ew55qE5Yqf6IO944CC5ZCv55So5q2k6YCJ6aG55YmN77yM5bqU5qOA5p+l57O757uf5Lit5piv5ZCm5a2Y5Zyo5ZCN56ew6YeN5aSN55qE6YWN572u6aG544CC5oKo5Y+v5Lul5L2/55So5o6n5Yi25Y+w5ZG95LukIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyDov5vooYzmo4Dmn6XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn5ZyoIHRpY2tldC1jb25maWdpdGVtLWxpbmsg5LiK6K6+572uIGNvbmZpZ2l0ZW0tc3RhdHVzIOeahOS6i+S7tuaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfphY3nva7pobnntKLlvJXlrZfmrrXvvIznlKjkuo7lhajmlofmkJzntKLjgILlrZfmrrXkuZ/kvJrooqvlrZjlgqjvvIzkvYblr7nkuo7mlbTkvZPlip/og73mnaXor7TlubbpnZ7lv4XpobvjgILlj6/pgJrov4flsIbmnaHnm67orr7nva7kuLogMCDmiJbliKDpmaTmnaXnpoHnlKjpmYTku7bnmoTljIXlkKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ+WtmOWCqOWcqOmFjee9rumhuee0ouW8leS4reeahOWtl+aute+8jOmZpOeUqOS6juWFqOaWh+ajgOe0ouWklu+8jOi/mOWPr+eUqOS6juWFtuS7lueUqOmAlOOAguS4uuS6huWunueOsOWujOaVtOeahOWKn+iDve+8jOaJgOacieWtl+autemDveaYr+W/heWhq+Wtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ+WPr+S7peS4uuavj+S4qiB3ZWJzZXJ2aWNl77yI6ZSu77yJ5a6a5LmJ5LiA5Liq57G777yI5YC877yJ5pWw57uE77yM5Zyo5q2k5Z+656GA5LiK6ZmQ5Yi25a+85YWl44CC5a+55LqO5omA5pyJ6YCJ5a6a55qE57G75oiW5omA5pyJ546w5pyJ55qE57G777yM5b+F6aG75Zyo6LCD55So6ICF6YWN572u5Lit6YCJ5oup6K+G5Yir5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSDphY3nva7pobnnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIOmFjee9rumhueebruamguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+S6i+S7tueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnmkJzntKLkuK3ljIXlkKvpg6jnvbLnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueebruaQnOe0ouS4reWMheWQq+S6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn5Zyo5q2k5pON5L2c57uT5p6c5Lit5pi+56S655qE6YWN572u6aG555qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn5qOA5p+l6LSf6LSj54+t57qn55qE5bCP57uE55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn5qih5Z2X77yM55So5LqO5qOA5p+l6LSf6LSj6YWN572u6aG555qE57uE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn55Sf5oiQIElUU00g6YWN572u6aG557uf6K6h5pWw5o2u55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn5ZCN56ew5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfnvJblj7fmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5pCc57Si57uT5p6c55qE5q+P5LiA6aG15Lit5pi+56S655qE6YWN572u6aG55pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdouaQnOe0oue7k+aenOavj+mhteaYvuekuueahOmFjee9rumhueaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+imgeaQnOe0oueahOWvueixoeOAgeadoeebruaVsOmHj+S7peWPiuimgeaYvuekuueahOWxnuaAp+OAgumFjee9rumhueWxnuaAp+W/hemhu+mAmui/hyBFbGFzdGljc2VhcmNoIOaYjuehruWtmOWCqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfmpoLms4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WIq+eahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+Wwj+mFjee9rumhueebruamguiniOeahOWIl+i/h+a7pOWZqOWPguaVsOOAguivt+azqOaEj++8muWwhiAiQWN0aXZl77yI5rS75Yqo77yJIuiuvue9ruS4uiAwIOWPquS8mumYu+atouS7o+eQhuWcqOWFtuS4quS6uuWBj+Wlveiuvue9ruS4ree8lui+keivpee7hOeahOiuvue9ru+8jOS9huS7jeWFgeiuuOeuoeeQhuWRmOe8lui+keWFtuS7lueUqOaIt+eahOiuvue9ruOAguS9v+eUqCAiUHJlZmVyZW5jZUdyb3Vw77yI5YGP5aW957uE77yJIuWPr+aOp+WItui/meS6m+iuvue9ruW6lOaYvuekuuWcqOeUqOaIt+eVjOmdoueahOWTquS4quWMuuWfn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHJlZmVyZW5jZSBmaWVsZCBpcyB1c2VkIGZvciBhIENvbmZpZ0l0ZW0gY2xhc3MgKEtleT1DbGFzcywgVmFsdWU9RHluYW1pY0ZpZWxkTmFtZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3pg6jnvbLnirbmgIHpopzoibLnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3pg6jnvbLnirbmgIHnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn6YCa55So55uu5b2V5bGe5oCn5p2D6ZmQ57uE56S65L6L55qE5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75ZCN56ew5qih5Z2X55qE5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvliKvnmoTnvJblj7fmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn6aG16Z2i77yI5pi+56S66YWN572u6aG555qE6aG16Z2i77yJ5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+eahOeJiOacrOWtl+espuS4suaooeWdl+WPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+eUqOS6juS7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+eahOeJiOacrOWtl+espuS4suaooeadv+W3peWFt+WMheaooeWdl+WPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzop6blj5Hlmajlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfkuLrmr4/kuKrphY3nva7nmoQgV2Vic2VydmljZSDnmoTmr4/kuKrkuovku7bvvIjkvZzkuLrosIPnlKjogIXvvInmiafooYzphY3nva7nmoTmk43kvZzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+adg+mZkOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKggSVRTTSDphY3nva7pobnnm67pmYTku7bmk43kvZzmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebruaQnOe0ouWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS9v+eUqCBJVFNNIOmFjee9rumhueebruaQnOe0ouWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebruagkeinhuWbvuWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKggSVRTTSDphY3nva7pobnnm67nvKnmlL7lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfkvb/nlKjku6PnkIbnlYzpnaLkuK3nmoTmt7vliqAgSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55So5om56YePIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S9v+eUqOS7o+eQhueVjOmdouS4reeahOe8lui+kSBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjljoblj7IgSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqOaJk+WNsCBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn5Yig6Zmk6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn5pCc57Si6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICflvZPnpajljZXpk77mjqXliLAgQ0kg5pe277yM6Ieq5Yqo6K6+572uIENJIOeahOS6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueaJuemHj+Wxj+W5leS4reiuvue9rumDqOe9sueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnnm67mibnph4/nlYzpnaLkuK3orr7nva7kuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmmL7npLroj5zljZXkuK3nmoTpk77mjqXvvIzlhYHorrjlnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnnvKnmlL7op4blm77kuK3lsIbkuIDkuKrphY3nva7pobnkuI7lj6bkuIDkuKrlr7nosaHnm7jpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnnm67mpoLop4jkuK3mmL7npLrkuIDkuKroj5zljZXpk77mjqXvvIznlKjkuo7orr/pl67phY3nva7pobnnm67nmoTljoblj7LorrDlvZXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pi+56S66I+c5Y2V5Lit55qE6ZO+5o6l77yM5Lul5L6/5Zyo5Luj55CG55WM6Z2i55qE57yp5pS+6KeG5Zu+5Lit6K6/6Zeu6YWN572u6aG555qE5Y6G5Y+y6K6w5b2V44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i57yp5pS+6KeG5Zu+55qE6I+c5Y2V5Lit5pi+56S65Yig6Zmk6YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIzku6XmoJHlvaLop4blm77mmL7npLrphY3nva7pobnpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnnm67mpoLop4jkuK3mmL7npLroj5zljZXpk77mjqXvvIzku6XlpI3liLbphY3nva7pobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM55So5LqO5Zyo5Luj55CG55WM6Z2i55qE57yp5pS+6KeG5Zu+5Lit5aSN5Yi25LiA5Liq6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3mmL7npLrnvJbovpHphY3nva7pobnnmoToj5zljZXpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOeUqOS6jui/lOWbnuS7o+eQhueVjOmdoueahOmFjee9rumhuee8qeaUvuinhuWbvuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOe8qeaUvuinhuWbvuS4reaYvuekuuiPnOWNlemTvuaOpe+8jOS7peaJk+WNsOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOeUqOS6juaUvuWkp+S7o+eQhueVjOmdoumFjee9rumhueamguiniOS4reeahOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pi+56S65Luj55CG55WM6Z2i5Lit55qE6YWN572u6aG555uu5Y6G5Y+y6K6w5b2V77yI6YCG5bqP77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ+WmguaenOacqumAieaLqeS7u+S9leexu+WIq++8jOWImeaYvuekuum7mOiupOexu+WIq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn6YWN572u6aG555qE5qCH6K+G56ym77yM5aaCIENvbmZpZ0l0ZW0j44CBTXlDb25maWdJdGVtI+OAgum7mOiupOS4uiBDb25maWdJdGVtI+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ+iHquWKqOinpuWPkSBDb25maWdJdGVtRmV0Y2gg6LCD55So5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfniYjmnKzlrZfnrKbkuLLooajovr7lvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn54mI5pys5a2X56ym5Liy5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ+eJiOacrOinpuWPkeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn5piv5ZCm5Y+v5Lul6YCa6L+H5qOA5p+l57yT5a2Y5a2X5q615L6d6LWW5YWz57O75p2l6YG/5YWN5omn6KGMIENvbmZpZ0l0ZW1BQ0zjgILov5nlj6/ku6XnvKnnn63ooajmoLznmoTliqDovb3ml7bpl7TvvIzkvYblpoLmnpzopoHlnKggSVRTTUNvbmZpZ0l0ZW0g5ZKMIEZvcm0tUmV0dXJuVHlwZSDkuK3kvb/nlKggQUNMIOaooeWdl++8jOWImeW/hemhu+emgeeUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn5qCH6aKY5Lit5pi+56S65LqG5ZOq5Lqb5LiA6Iis5L+h5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn57G7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ+WFqOeQgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ+WQjueUn+S6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn55Sf5q6W5YmNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfnlJ/kuqfmgKcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFXvvJoxNy41IOiLseWvuO+8iDQ0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJV77yaMjEg6Iux5a+477yINTMuMzQg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVXvvJoyNi4yNSDoi7Hlr7jvvIg2Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThV77yaMzEuNSDoi7Hlr7jvvIg4MC4wMSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVe+8mjEuNzUg6Iux5a+477yINC40NSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBV77yaMzUg6Iux5a+477yIODguOSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEg6Iux5a+45pSv5p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVe+8mjM4LjUg6Iux5a+477yIOTcuNzkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIOiLseWvuOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYg6Iux5a+477yINjAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0Ve+8mjQyIOiLseWvuO+8iDEwNi42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1XvvJo0Ny4yNSDoi7Hlr7jvvIgxMjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJV77yaMy41IOiLseWvuO+8iDguODkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFXvvJo1Mi41IOiLseWvuO+8iDEzMy4zNSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41IOiLseWvuO+8iDgwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1XvvJo1Ny43NSDoi7Hlr7jvvIgxNDYuNjgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCDoi7Hlr7jvvIg5MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZV77yaNjMg6Iux5a+477yIMTYwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40IOiLseWvuO+8iDEwMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlV77yaNjguMjUg6Iux5a+477yIMTczLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNV77yaNS4yNSDoi7Hlr7jvvIgxMy4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVe+8mjczLjUg6Iux5a+477yIMTg2LjY5IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuMyDoi7Hlr7jvvIgxMTAwIOavq+exs++8ie+8mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1Ve+8mjc4Ljc1IOiLseWvuO+8iDIwMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiDoi7Hlr7jvvIgxMjAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4Ve+8mjg0IOiLseWvuO+8iDIxMy4zNiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0Ve+8mjcg6Iux5a+477yIMTcuNzgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVXvvJo4Ljc1IOiLseWvuO+8iDIyLjIzIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZV77yaMTAuNSDoi7Hlr7jvvIgyNi42NyDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1XvvJoxMi4yNSDoi7Hlr7jvvIgzMS4xMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFXvvJoxNCDoi7Hlr7jvvIgzNS41NiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVXvvJoxNS43NSDoi7Hlr7jvvIg0MC4wMSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfkvJrorqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICflnLDlnYDliIbphY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ+euoeeQhuWRmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfmqKHmi5/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpemVueid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+iuvuWkh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGl6ZW56IChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn55S15rGg5a656YeP77yI5a6J5pe277yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ+eUteaxoOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+Wkp+W7iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn5oC757q/5o6l5Y+jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIOetiee6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn5a656YeP77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfmr4/kuKrlm77lvaLljaHnmoTlrrnph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfljaHlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfor7vljaHlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn5Y2h54mH57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICflrqLmiLfor4HkuaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn5a6i5oi356uv6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ+WuouaIt+exu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfml7bpkp/popHnjocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ+aXtumSn+mAn+W6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5Luj56CB562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfkvJrorq7nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICflkqjor6LljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ+iBlOezu+aWueW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn6IGU57O757uP6ZSA5ZWGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn6ZuG6KOF566x566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICflkIjlkIznsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICflkIjlkIzmnJ/ku44nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn5ZCI5ZCM5pyf6IezJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ+aXoOe7s+eUteivne+8iERFQ1Qg55S16K+d77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ+aIkOacrOWNleS9jSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ+iuuOWPr+ivgeaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn5Yib5bu65pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICflrprliLbmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag5L+d55WZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMg5pyN5Yqh5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICflj5Hnpajml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ+iuoui0reaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn5o6I5p2D5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ+WPkeW4g+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn5qGM5LiK5Z6L6Zu76IWmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfmlofku7bnrb7lkI3or4HkuaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAn55S15a2Q6YKu5Lu26K+B5Lmm77yIUy9NSU1FIOivgeS5pu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfpm4fkvaPlkIjlkIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfnu4jnq68gSVAg5Zyw5Z2AJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn5pSv5oyB57uT5p2fJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn5pyJ5pWI5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICflpJbnva7noaznm5gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfpmLLngavlopknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICflm7rku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfpo57ova7lgqjog70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICflpJblvaLlsLrlr7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ+eJueiuuOe7j+iQpeWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ+WFjeiyu+i7n+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfkuIDoiKzkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ+WbvuW9ouWNoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ+ehrOS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ+ehrOS7tuWei+WPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfnoazku7bph43ph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ+iAs+acuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIOWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfouqvku73lkozorr/pl67nrqHnkIbvvIhJQU3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ+W6k+WtmOe8luWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ+i9rOaNouaIkOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ+WPkeelqOWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+mNteebpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg5pi+56S65Zmo77yI5ray5pm25pi+56S65Zmo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQg5pi+56S65Zmo77yI5Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ+WbuuWumueUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfnrYboqJjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfnuqzluqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfnrKwgMSDlsYLvvJrniannkIblsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn56ysIDIg5bGC77ya5pWw5o2u6ZO+6Lev5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfnrKwgMyDlsYLvvJrnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGC77yI6LaF57qn572R77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ+esrCA0IOWxgu+8muS8oOi+k+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn56ysIDUg5bGC77ya5Lya6K+d5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+esrCA2IOWxgu+8muaYvuekuuWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ+esrCA3IOWxgu+8muW6lOeUqOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfnp5/otYHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICforrjlj6/ljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+iuuOWPr+ivgeWvhumSpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICforrjlj6/or4HnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+iuuOWPr+ivgeacieaViOacn+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+iuuOWPr+ivgeacieaViOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn56O36YW46ZOB6ZSC77yITGlGZVBPNO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn6ZSC56a75a2Q77yITGktSW9u77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn6LS35qy+5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfkvY3kuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57uP5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaXplbnonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfliLbpgKDllYYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ+acgOWkp+i0n+i9veiDveWKm++8iOeTpu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICflhoXlrZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICflhoXlrZjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ+i/t+S9oOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn5omL5py65Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ+enu+WKqC/ltYzlhaXlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICflnovomZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICflnovlj7for7TmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn5pi+56S65Zmo5YiG6L6o546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ+aYvuekuuWZqOWwuuWvuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+a7kem8oCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn572R57ucJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn572R57uc5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfplY3plYnvvIhOaUNk77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn6ZWN5rCi77yITmlNSO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfkv53lr4bljY/orq7vvIhOREHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfnrJTorrDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFUg5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ+WGheWtmOaooeWdl+aVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICflm77lvaLljaHmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQg5pi+56S65Zmo77yI5pyJ5py65Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ+i/kOiQpeaIkOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICforqLljZXlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICflhbblroMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ+i+k+WHuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICflr4bnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICflr4bnoIEgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICflkIjkvJnljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfnlLXor53lj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ+eUteivneexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ+eJqeeQhuejgeiKryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ+eUteWKm+i+k+mAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ+WcqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn5py65p625rex5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn5py65p625Y2V5YWDIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn5oi/6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIOWNoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMg6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn6ZSA5ZSu5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ+WNq+aYn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICflr4blsIHpk4XphbggKFNMQSkg55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn5bqP5YiX5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ+acjeWKoeWZqOi9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ+acjeWKoeWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ+acjeWKoeagh+etvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfmj5LluqfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICflj5HoqIDkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn5qiZ5rqWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICflkK/liqggSVAg5Zyw5Z2AJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICflrZjlgqgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICflrZjlgqjliIbljLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfpmYTlsZ7mnLrmnoQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ+aRmOimgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ+eYpuWuouaIt+acuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn57q/56iLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn6Zu355S1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfmmL7ljaHmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ+aAu+WGheWtmO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfop6bmkbjlsY/mmL7npLrlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfloZTmpbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDpm4bnur/lmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICfmmL7lg4/nrqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAn6Jma5ouf5LiT55So572RJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiDlpLTnm5QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfomZrmi5/pk77mjqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ+e9kee7nOeUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn572R57uc5pGE5YOP5aS0JzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceInvokerConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW07Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkV2Vic2VydmljZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1dlYnNlcnZpY2VJRCcgKTsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoJFdlYnNlcnZpY2VJRCkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBXZWJzZXJ2aWNlSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dlYnNlcnZpY2VJRCcsCiAgICAgICAgVmFsdWUgPT4gJFdlYnNlcnZpY2VJRAogICAgKTsKCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZ2V0IGRhdGEgZm9yIFdlYnNlcnZpY2VJRCAlcycsICRXZWJzZXJ2aWNlSUQgKSwKICAgICAgICApOwogICAgfQoKICAgICRTZWxmLT5fRXh0cmFTZXR0aW5ncygKICAgICAgICBXZWJzZXJ2aWNlID0+ICRXZWJzZXJ2aWNlRGF0YS0+e05hbWV9LAogICAgKTsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZEFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0NoYW5nZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9EZWxldGVBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRGVsZXRlRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbiEnKSwKICAgICk7Cn0KCnN1YiBfQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgSW52b2tlckNvbmZpZyA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJEdldFBhcmFtLT57SW52b2tlclR5cGV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgX0FkZEFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nSW5ib3VuZCcsCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdNYXBwaW5nVHlwZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nT3V0Ym91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBARXh0cmFQYXJhbXMsCiAgICAgICAgXSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJUVycm9yczsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbS0+e0ludm9rZXJ9ICkgKSB7CiAgICAgICAgJEVycm9yc3tJbnZva2VyU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIEludm9rZXIgd2l0aCBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuCiAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKSApIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRJbnZva2VyQ29uZmlnID0gewogICAgICAgIERlc2NyaXB0aW9uID0+ICRHZXRQYXJhbS0+e0Rlc2NyaXB0aW9ufSwKICAgICAgICBUeXBlICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyVHlwZX0sCiAgICB9OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICA9PiAnQWRkJywKICAgICAgICAgICAgSW52b2tlckNvbmZpZyA9PiAkSW52b2tlckNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJEludm9rZXJDb25maWctPnskRGlyZWN0aW9ufSA9IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICB9OwogICAgfQoKICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfSA9ICRJbnZva2VyQ29uZmlnOwoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0NoYW5nZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkSW52b2tlckNvbmZpZyAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAlcycsICRHZXRQYXJhbS0+e0ludm9rZXJ9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICAleyRHZXRQYXJhbX0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIEludm9rZXIgICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyfSwKICAgICAgICBJbnZva2VyQ29uZmlnICAgPT4gJEludm9rZXJDb25maWcsCiAgICAgICAgTWFwcGluZ0luYm91bmQgID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ091dGJvdW5kfS0+e1R5cGV9LAogICAgKTsKfQoKc3ViIF9DaGFuZ2VBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09sZEludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICVzJywgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntJbnZva2VyfSApICkgewogICAgICAgICRFcnJvcnN7SW52b2tlclNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBJbnZva2VyIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSBuZSAkR2V0UGFyYW0tPntJbnZva2VyfQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRJbnZva2VyQ29uZmlnLT57RGVzY3JpcHRpb259ID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXskR2V0UGFyYW19LAogICAgICAgICAgICAlRXJyb3JzLAogICAgICAgICAgICBNb2RlICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBJbnZva2VyICAgICAgID0+ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9LAogICAgICAgICAgICBJbnZva2VyQ29uZmlnID0+ICRJbnZva2VyQ29uZmlnLAogICAgICAgICAgICBOZXdJbnZva2VyICAgID0+ICRHZXRQYXJhbS0+e0ludm9rZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRJbnZva2VyQ29uZmlnLT57JERpcmVjdGlvbn07CiAgICAgICAgICAgIG5leHQgRElSRUNUSU9OOwogICAgICAgIH0KCiAgICAgICAgIyBNYXBwaW5nIGFkZGVkIG9yIGNoYW5nZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgaWYgKCAhJE9sZE1hcHBpbmcgfHwgKCAkT2xkTWFwcGluZyAmJiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSBuZSAkT2xkTWFwcGluZyApICkgewogICAgICAgICAgICAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgaW52b2tlciBjb25maWcuCiAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gPSAkSW52b2tlckNvbmZpZzsKCiAgICAjIFRha2UgY2FyZSBvZiBlcnJvciBoYW5kbGVycyB3aXRoIGludm9rZXIgZmlsdGVycyBpZiBpbnZva2VyIHdhcyByZW5hbWVkLgogICAgaWYgKAogICAgICAgICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IG5lICRHZXRQYXJhbS0+e0ludm9rZXJ9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ30gKQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkRXJyb3JIYW5kbGluZ0NvbmZpZyA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ307CgogICAgICAgIEVSUk9SSEFORExJTkc6CiAgICAgICAgZm9yIG15ICRFcnJvckhhbmRsaW5nICggc29ydCBrZXlzICV7JEVycm9ySGFuZGxpbmdDb25maWd9ICkgewogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfSApOwoKICAgICAgICAgICAgbXkgJEludm9rZXJGaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkSW52b2tlckZpbHRlcik7CgogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIWdyZXAgeyAkXyBlcSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSB9IEB7JEludm9rZXJGaWx0ZXJ9OwoKICAgICAgICAgICAgIyBSZW5hbWUgaW52b2tlciBpbiBlcnJvciBoYW5kbGluZyBpbnZva2VyIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3SW52b2tlckZpbHRlciA9IG1hcCB7ICRfIGVxICRHZXRQYXJhbS0+e09sZEludm9rZXJ9ID8gJEdldFBhcmFtLT57SW52b2tlcn0gOiAkXyB9IEB7JEludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9ID0gXEBOZXdJbnZva2VyRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntFcnJvckhhbmRsaW5nfSA9ICRFcnJvckhhbmRsaW5nQ29uZmlnOwogICAgfQoKICAgICMgYWRkZWQgZm9yIE9UT0JPVGlja2V0SW52b2tlcgoKICAgICMgVGFrZSBjYXJlIG9mIGludm9rZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24gaWYgaW52b2tlciB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkSW52b2tlcn0gbmUgJEdldFBhcmFtLT57SW52b2tlcn0gKSB7CgogICAgICAgICMgSW52b2tlciBjb250cm9sbGVyIG1hcHBpbmcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ307CgogICAgICAgICAgICBJTlZPS0VSOgogICAgICAgICAgICBmb3IgbXkgJEludm9rZXIgKCBzb3J0IGtleXMgJXskSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgICAgIG5leHQgSU5WT0tFUiBpZiAkSW52b2tlciBuZSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfTsKCiAgICAgICAgICAgICAgICAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICAgICA9ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIE91dGJvdW5kIGhlYWRlciBjb25maWcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRPdXRib3VuZEhlYWRlckNvbmZpZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIElOVk9LRVI6CiAgICAgICAgICAgIGZvciBteSAkSW52b2tlciAoIHNvcnQga2V5cyAleyRPdXRib3VuZEhlYWRlckNvbmZpZ30gKSB7CiAgICAgICAgICAgICAgICBuZXh0IElOVk9LRVIgaWYgJEludm9rZXIgbmUgJEdldFBhcmFtLT57T2xkSW52b2tlcn07CgogICAgICAgICAgICAgICAgJE91dGJvdW5kSGVhZGVyQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e091dGJvdW5kSGVhZGVyc30tPntTcGVjaWZpY30KICAgICAgICAgICAgICAgID0gJE91dGJvdW5kSGVhZGVyQ29uZmlnOwogICAgICAgIH0KCiAgICB9CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgSWYgdGhlIHVzZXIgd291bGQgbGlrZSB0byBjb250aW51ZSBlZGl0aW5nIHRoZSBpbnZva2VyIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztJbnZva2VyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0UGFyYW0tPntJbnZva2VyfSApCiAgICAgICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgICAgICAuICRHZXRQYXJhbS0+e0V2ZW50VHlwZX0KICAgICAgICAgICAgLiAnOyc7CiAgICB9CgogICAgIyBPdGhlcndpc2UgcmV0dXJuIHRvIG92ZXJ2aWV3LgogICAgZWxzZSB7CiAgICAgICAgJFJlZGlyZWN0VVJMID0KICAgICAgICAgICAgJ0FjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gJFJlZGlyZWN0VVJMLAogICAgKTsKfQoKc3ViIF9EZWxldGVBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17V2Vic2VydmljZURhdGF9LT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAiIC4gJEdldFBhcmFtLT57SW52b2tlcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgUmVtb3ZlIGludm9rZXIgZnJvbSBjb25maWcuCiAgICBkZWxldGUgJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyAkUGFyYW17V2Vic2VydmljZURhdGF9IH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+ICRTdWNjZXNzICk7Cn0KCnN1YiBfQWRkRXZlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ05ld0V2ZW50JywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdBc3luY2hyb25vdXMnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRXZlbnRUeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIGludm9rZXIgJXMnLCAkR2V0UGFyYW0tPntJbnZva2VyfSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBBZGQgdGhlIG5ldyBldmVudCB0byB0aGUgbGlzdC4KICAgIG15IEBFdmVudHMgPSBJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApID8gQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gOiAoKTsKICAgIHB1c2ggQEV2ZW50cywgewogICAgICAgIEFzeW5jaHJvbm91cyA9PiAkR2V0UGFyYW0tPntBc3luY2hyb25vdXN9LAogICAgICAgIEV2ZW50ICAgICAgICA9PiAkR2V0UGFyYW0tPntOZXdFdmVudH0sCiAgICB9OwoKICAgICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSA9IFxARXZlbnRzOwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgU3RheSBpbiBlZGl0IG1vZGUuCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgIC4gJEdldFBhcmFtLT57RXZlbnRUeXBlfQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUV2ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudE5hbWUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICRHZXRQYXJhbS0+e0ludm9rZXJ9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgZGVsZXRlIHNlbGVjdGVkIGV2ZW50IGZyb20gbGlzdCBvZiBldmVudHMuCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGZpbmQgZXZlbnQgdG8gZGVsZXRlIGluIGNvbmZpZyBjb25maWcgZm9yIGludm9rZXIgJEdldFBhcmFtLT57SW52b2tlcn0hIiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gPSBncmVwIHsgJF8tPntFdmVudH0gbmUgJEdldFBhcmFtLT57RXZlbnROYW1lfSB9IEB7ICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSB9OwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAxICk7Cn0KCnN1YiBfU2hvd1NjcmVlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJbnZva2VyJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17SW52b2tlcn0sCiAgICApOwoKICAgIG15ICVUZW1wbGF0ZURhdGEgPSAoCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJFBhcmFte0ludm9rZXJDb25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIEludm9rZXJUeXBlID0+ICRQYXJhbXtJbnZva2VyQ29uZmlnfS0+e1R5cGV9LAogICAgICAgIEludm9rZXIgICAgID0+ICRQYXJhbXtJbnZva2VyfSwKICAgICAgICBOZXdJbnZva2VyICA9PiAkUGFyYW17TmV3SW52b2tlcn0gLy8gJFBhcmFte0ludm9rZXJ9LAogICAgKTsKCiAgICAjIEhhbmRsZSBtYXBwaW5nLgogICAgbXkgJE1hcHBpbmdNb2R1bGVzICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKSB8fCB7fTsKICAgIG15IEBNYXBwaW5nTW9kdWxlTGlzdCA9IHNvcnQga2V5cyAleyRNYXBwaW5nTW9kdWxlc307CiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAocXcoTWFwcGluZ0luYm91bmQgTWFwcGluZ091dGJvdW5kKSkgewogICAgICAgIG15ICRPbGRNYXBwaW5nID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57JERpcmVjdGlvbn0tPntUeXBlfTsKICAgICAgICBteSAkTWFwcGluZyAgICA9ICRQYXJhbXskRGlyZWN0aW9ufTsKCiAgICAgICAgJFRlbXBsYXRlRGF0YXsgJERpcmVjdGlvbiAuICdTdHJnJyB9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBNYXBwaW5nTW9kdWxlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRNYXBwaW5nLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplIFJlZ2lzdGVyQ2hhbmdlJywKICAgICAgICApOwoKICAgICAgICAjIE9ubHkgc2hvdyBjb25maWd1cmUgYnV0dG9uIGlmIHdlIGhhdmUgYW4gdW5jaGFuZ2VkIGV4aXN0aW5nIG1hcHBpbmcgdHlwZS4KICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE9sZE1hcHBpbmc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICRNYXBwaW5nIG5lICRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkRGlyZWN0aW9uIC4gJ0NvbmZpZ3VyZUJ1dHRvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiAuIENvbmZpZ0RpYWxvZyA9PiAkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgU0VDVElPTjoKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc307CiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICEkU2VsZi0+e1NldHRpbmdzfXskU2VjdGlvbn07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRTZWN0aW9uLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkU2V0dGluZyAoICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SW52b2tlckNvbmZpZ30tPnsgJFNldHRpbmctPntOYW1lfSB9IC8vICRTZXR0aW5nLT57U2VsZWN0ZWRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldHRpbmcnIC4gJFNlY3Rpb24sCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTmFtZSAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTGFiZWwgICAgICAgPT4gJFNldHRpbmctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgU2V0dGluZ0hUTUwgICAgICAgID0+ICRTZXR0aW5nSFRNTCwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nRXhwbGFuYXRpb24gPT4gJFNldHRpbmctPntFeHBsYW5hdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgICAgICAgID0+ICRQYXJhbXsgJFNldHRpbmctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ2hhbmdlJyApIHsKCiAgICAgICAgIyBTaG93IGFsbCBpbnZva2VyIGV2ZW50IHRyaWdnZXJzLgogICAgICAgIG15ICRJbnZva2VyRXZlbnRzID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57RXZlbnRzfSAvLyBbXTsKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJEludm9rZXJFdmVudHMpICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0aGUgZXZlbnQgdHJpZ2dlcnMgdGFibGUuCiAgICAgICAgbXkgQEV2ZW50czsKICAgICAgICBteSAlSW52b2tlckV2ZW50TG9va3VwOwogICAgICAgIG15ICVSZWdpc3RlcmVkRXZlbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkV2ZW50JyktPkV2ZW50TGlzdCgpOwogICAgICAgIGZvciBteSAkRXZlbnQgKCBAeyRJbnZva2VyRXZlbnRzfSApIHsKICAgICAgICAgICAgcHVzaCBARXZlbnRzLCAkRXZlbnQtPntFdmVudH07CgogICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBldmVudHMgdGhhdCBhcmUgYWxyZWFkeSBhc3NpZ25lZCB0byB0aGlzIGludm9rZXIKICAgICAgICAgICAgIyAgIHRoZSBzZWxlY3RzIHNob3VsZCBsb29rIGZvciB0aGlzIHZhbHVlcyBhbmQgb21pdCB0aGVtIGZyb20gdGhlaXIgbGlzdHMuCiAgICAgICAgICAgICRJbnZva2VyRXZlbnRMb29rdXB7ICRFdmVudC0+e0V2ZW50fSB9ID0gMTsKCiAgICAgICAgICAgICMgU2V0IHRoZSBldmVudCB0eXBlIChldmVudCBvYmplY3QgbGlrZSBBcnRpY2xlIG9yIFRpY2tldCkuCiAgICAgICAgICAgICMgVmFsdWUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnV0IGtlcHQgYXMgaXQgbWlnaHQgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUuCiAgICAgICAgICAgIG15ICRFdmVudFR5cGU7CiAgICAgICAgICAgIEVWRU5UVFlQRToKICAgICAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICAgICAgbmV4dCBFVkVOVFRZUEUgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9ICk7CiAgICAgICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhZ3JlcCB7ICRfIGVxICRFdmVudC0+e0V2ZW50fSB9IEB7ICRSZWdpc3RlcmVkRXZlbnRzeyRUeXBlfSB9OwoKICAgICAgICAgICAgICAgICRFdmVudFR5cGUgPSAkVHlwZTsKICAgICAgICAgICAgICAgIGxhc3QgRVZFTlRUWVBFOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkUGFyYW17V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFBhcmFte0ludm9rZXJ9LAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAkRXZlbnQtPntFdmVudH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRFdmVudFR5cGUgLy8gJy0nLAogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAkRXZlbnQtPntBc3luY2hyb25vdXN9ICAgICAgICAgICAgICAgICAgID8gVHJhbnNsYXRhYmxlKCdZZXMnKSA6IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb24gICAgPT4gSXNIYXNoUmVmV2l0aERhdGEoICRFdmVudC0+e0NvbmRpdGlvbn0gKSA/IFRyYW5zbGF0YWJsZSgnWWVzJykgOiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnRXZlbnRzJywKICAgICAgICAgICAgVmFsdWUgPT4gXEBFdmVudHMKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBldmVudCB0cmlnZ2VyIHNlbGVjdG9ycyAob25lIGZvciBlYWNoIHR5cGUpLgogICAgICAgIG15IEBFdmVudFR5cGVMaXN0OwogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUmVnaXN0ZXJlZEV2ZW50c3skVHlwZX0gKTsKCiAgICAgICAgICAgICMgUmVmcmVzaCBldmVudCBsaXN0IGZvciBlYWNoIGV2ZW50IHR5cGUuCiAgICAgICAgICAgIG15IEBFdmVudExpc3QgPSBncmVwIHsgISRJbnZva2VyRXZlbnRMb29rdXB7JF99IH0gQHsgJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9IH07CgogICAgICAgICAgICAjIGhpZGUgaW5hY3RpdmUgZXZlbnQgbGlzdHMKICAgICAgICAgICAgbXkgJEV2ZW50TGlzdEhpZGRlbiA9ICcnOwogICAgICAgICAgICBpZiAoICRUeXBlIG5lICRQYXJhbXtFdmVudFR5cGV9ICkgewogICAgICAgICAgICAgICAgJEV2ZW50TGlzdEhpZGRlbiA9ICdIaWRkZW4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRXZlbnRTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBFdmVudExpc3QsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFR5cGUgLiAnRXZlbnQnLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0V2ZW50JyksCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBFdmVudExpc3QgR2VuZXJpY0ludGVyZmFjZVNwYWNpbmcgJyAuICRFdmVudExpc3RIaWRkZW4sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50QWRkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEV2ZW50U3RyZyA9PiAkRXZlbnRTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEV2ZW50VHlwZUxpc3QsICRUeXBlOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgZXZlbnQgdHlwZSBzZWxlY3Rvci4KICAgICAgICAkVGVtcGxhdGVEYXRhe0V2ZW50VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBFdmVudFR5cGVMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdFdmVudFR5cGUnLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0V2ZW50VHlwZX0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAlR2V0UGFyYW07CiAgICBERUZJTklUSU9OOgogICAgZm9yIG15ICREZWZpbml0aW9uICggQHsgJFBhcmFte0RlZmluaXRpb259IH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbi0+e05hbWV9OwoKICAgICAgICBpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ1N0cmluZycgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmFtZSApIC8vICREZWZpbml0aW9uLT57RGVmYXVsdH07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntUeXBlfSBlcSAnQXJyYXknICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gWyAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkTmFtZSApIF07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXskTmFtZX0gKTsKCiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntNYW5kYXRvcnl9OwogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gVHJhbnNsYXRhYmxlKCAnTmVlZCAlcycsICggJERlZmluaXRpb24tPntMYWJlbH0gfHwgJERlZmluaXRpb24tPntOYW1lfSApICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICAjIFR5cGUgY2hlY2tzLgogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntDaGVja307CgogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ0ludm9rZXJUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fSW52b2tlclR5cGVDaGVjayggSW52b2tlclR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludm9rZXJUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ01hcHBpbmdUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17TmFtZX0gKTsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fTWFwcGluZ1R5cGVDaGVjayggTWFwcGluZ1R5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ01hcHBpbmdUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlR2V0UGFyYW07Cn0KCnN1YiBfSW52b2tlclR5cGVDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0ludm9rZXJUeXBlfTsKCiAgICBteSAkSW52b2tlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZScpOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlcnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2Vycy0+eyAkUGFyYW17SW52b2tlclR5cGV9IH0gKTsKICAgIHJldHVybiAxOwp9CgpzdWIgX01hcHBpbmdUeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtNYXBwaW5nVHlwZX07CgogICAgbXkgJE1hcHBpbmdzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE1hcHBpbmdzKTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkTWFwcGluZ3MtPnsgJFBhcmFte01hcHBpbmdUeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9KU09OUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiBKU09OIG91dHB1dC4KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkpTT05SZXBseSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkUGFyYW17U3VjY2Vzc30gLy8gMCwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9FeHRyYVNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENsYXNzTGlzdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICk7CiAgICBteSAkQ2xhc3NSZXN0cmljdGlvbnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW1GZXRjaDo6Q2xhc3NlcycpOwogICAgbXkgQENsYXNzZXM7CgogICAgaWYgKCAkQ2xhc3NSZXN0cmljdGlvbnMgJiYgJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9ICkgewogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgQENsYXNzZXMgPSBtYXAgeyAkQ2xhc3NMb29rdXB7JF99IH0gJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9LT5AKjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBDbGFzc2VzID0ga2V5cyAkQ2xhc3NMaXN0LT4lKjsKICAgIH0KCiAgICAkU2VsZi0+e1NldHRpbmdzfXtSZXNwb25zZX0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceOperationConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRXZWJzZXJ2aWNlSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnV2Vic2VydmljZUlEJyApOwogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkV2Vic2VydmljZUlEKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIFdlYnNlcnZpY2VJRCEnKSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnV2Vic2VydmljZUlEJywKICAgICAgICBWYWx1ZSA9PiAkV2Vic2VydmljZUlECiAgICApOwoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VEYXRhKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgV2Vic2VydmljZUlEICVzJywgJFdlYnNlcnZpY2VJRCApLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPl9FeHRyYVNldHRpbmdzKAogICAgICAgIFdlYnNlcnZpY2UgPT4gJFdlYnNlcnZpY2VEYXRhLT57TmFtZX0sCiAgICApOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2VBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0RlbGV0ZUFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgU3ViYWN0aW9uIScpLAogICAgKTsKfQoKc3ViIF9BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICAgICAgQ2hlY2sgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb25UeXBlfSwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9BZGRBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdpdGggc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgZWxzaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRPcGVyYXRpb25Db25maWcgPSB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJEdldFBhcmFtLT57RGVzY3JpcHRpb259LAogICAgICAgIFR5cGUgICAgICAgID0+ICRHZXRQYXJhbS0+e09wZXJhdGlvblR5cGV9LAogICAgfTsKCiAgICBmb3IgbXkgJFBhcmFtQ29uZmlnIChARXh0cmFQYXJhbXMpIHsKICAgICAgICBpZiAoIGV4aXN0cyAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufSApIHsKICAgICAgICAgICAgbXkgJEVycm9yID0gJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0tPigKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEdldFBhcmFtID0+ICRHZXRQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkRXJyb3IpIHsKICAgICAgICAgICAgICAgICRFcnJvcnN7ICRQYXJhbUNvbmZpZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9ID0gJEVycm9yOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkT3BlcmF0aW9uQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZGQnLAogICAgICAgICAgICBPcGVyYXRpb25Db25maWcgPT4gJE9wZXJhdGlvbkNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICBUeXBlID0+ICRHZXRQYXJhbS0+eyREaXJlY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ID0gJE9wZXJhdGlvbkNvbmZpZzsKCiAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXskV2Vic2VydmljZURhdGF9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFJlZGlyZWN0VVJMID0KICAgICAgICAnQWN0aW9uPScKICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgIC4gJztTdWJhY3Rpb249Q2hhbmdlO1dlYnNlcnZpY2VJRD0nCiAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57T3BlcmF0aW9ufSApCiAgICAgICAgLiAnOyc7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICRSZWRpcmVjdFVSTCwKICAgICk7Cn0KCnN1YiBfQ2hhbmdlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhICA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbkNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3Igb3BlcmF0aW9uICVzJywgJEdldFBhcmFtLT57T3BlcmF0aW9ufSApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd1NjcmVlbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIE9wZXJhdGlvbiAgICAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgIE9wZXJhdGlvbkNvbmZpZyA9PiAkT3BlcmF0aW9uQ29uZmlnLAogICAgICAgIE1hcHBpbmdJbmJvdW5kICA9PiAkT3BlcmF0aW9uQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRPcGVyYXRpb25Db25maWctPntNYXBwaW5nT3V0Ym91bmR9LT57VHlwZX0sCiAgICApOwp9CgpzdWIgX0NoYW5nZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT2xkT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEBFeHRyYVBhcmFtcywKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSAgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJE9wZXJhdGlvbkNvbmZpZyA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT3BlcmF0aW9uQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAlcycsICRHZXRQYXJhbS0+e09sZE9wZXJhdGlvbn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IG5lICRHZXRQYXJhbS0+e09wZXJhdGlvbn0KICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRPcGVyYXRpb25Db25maWctPntEZXNjcmlwdGlvbn0gPSAkR2V0UGFyYW0tPntEZXNjcmlwdGlvbn07CgogICAgZm9yIG15ICRQYXJhbUNvbmZpZyAoQEV4dHJhUGFyYW1zKSB7CiAgICAgICAgaWYgKCBleGlzdHMgJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0gKSB7CiAgICAgICAgICAgIG15ICRFcnJvciA9ICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259LT4oCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBHZXRQYXJhbSA9PiAkR2V0UGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJEVycm9yKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUGFyYW1Db25maWctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfSA9ICRFcnJvcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyAkUGFyYW1Db25maWctPntOYW1lfSB9ID0gJEdldFBhcmFtLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH07CiAgICB9CgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBPcGVyYXRpb24gICAgICAgPT4gJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSwKICAgICAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+ICRPcGVyYXRpb25Db25maWcsCiAgICAgICAgICAgIE5ld09wZXJhdGlvbiAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufTsKICAgICAgICAgICAgbmV4dCBESVJFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQgb3IgY2hhbmdlZCwgaW5pdGlhbGl6ZSB3aXRoIGVtcHR5IGNvbmZpZy4KICAgICAgICBteSAkT2xkTWFwcGluZyA9ICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufS0+e1R5cGV9OwogICAgICAgIGlmICggISRPbGRNYXBwaW5nIHx8ICggJE9sZE1hcHBpbmcgJiYgJEdldFBhcmFtLT57JERpcmVjdGlvbn0gbmUgJE9sZE1hcHBpbmcgKSApIHsKICAgICAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgb3BlcmF0aW9uIGNvbmZpZy4KICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSA9ICRPcGVyYXRpb25Db25maWc7CgogICAgIyBUYWtlIGNhcmUgb2YgZXJyb3IgaGFuZGxlcnMgd2l0aCBvcGVyYXRpb24gZmlsdGVycyBpZiBvcGVyYXRpb24gd2FzIHJlbmFtZWQuCiAgICBpZiAoCiAgICAgICAgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntFcnJvckhhbmRsaW5nfSApCiAgICAgICAgKQogICAgewogICAgICAgIG15ICRFcnJvckhhbmRsaW5nQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9OwoKICAgICAgICBFUlJPUkhBTkRMSU5HOgogICAgICAgIGZvciBteSAkRXJyb3JIYW5kbGluZyAoIHNvcnQga2V5cyAleyRFcnJvckhhbmRsaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJEVycm9ySGFuZGxpbmdDb25maWctPnskRXJyb3JIYW5kbGluZ30gKTsKCiAgICAgICAgICAgIG15ICRPcGVyYXRpb25GaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e09wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgIG5leHQgRVJST1JIQU5ETElORyBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRPcGVyYXRpb25GaWx0ZXIpOwoKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFncmVwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CgogICAgICAgICAgICAjIFJlbmFtZSBvcGVyYXRpb24gaW4gZXJyb3IgaGFuZGxpbmcgb3BlcmF0aW9uIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3T3BlcmF0aW9uRmlsdGVyID0gbWFwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSA/ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gOiAkXyB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgICRFcnJvckhhbmRsaW5nQ29uZmlnLT57JEVycm9ySGFuZGxpbmd9LT57T3BlcmF0aW9uRmlsdGVyfSA9IFxATmV3T3BlcmF0aW9uRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9ID0gJEVycm9ySGFuZGxpbmdDb25maWc7CiAgICB9CgogICAgIyBhZGRlZCBmb3IgT1RPQk9UaWNrZXRJbnZva2VyCgogICAgIyBUYWtlIGNhcmUgb2Ygb3BlcmF0aW9uIGRlcGVuZGVudCBjb25maWd1cmF0aW9uIGlmIG9wZXJhdGlvbiB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgewoKICAgICAgICAjIFJvdXRlIG9wZXJhdGlvbiBtYXBwaW5nLgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgbXkgJFJvdXRlT3BlcmF0aW9uTWFwcGluZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9OwoKICAgICAgICAgICAgT1BFUkFUSU9OOgogICAgICAgICAgICBmb3IgbXkgJE9wZXJhdGlvbiAoIHNvcnQga2V5cyAleyRSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRSb3V0ZU9wZXJhdGlvbk1hcHBpbmctPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9CiAgICAgICAgICAgICAgICAgICAgPSBkZWxldGUgJFJvdXRlT3BlcmF0aW9uTWFwcGluZy0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30KICAgICAgICAgICAgICAgID0gJFJvdXRlT3BlcmF0aW9uTWFwcGluZzsKICAgICAgICB9CgogICAgICAgICMgT3V0Ym91bmQgaGVhZGVyIGNvbmZpZy4KICAgICAgICBpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBteSAkT3V0Ym91bmRIZWFkZXJDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIE9QRVJBVElPTjoKICAgICAgICAgICAgZm9yIG15ICRPcGVyYXRpb24gKCBzb3J0IGtleXMgJXskT3V0Ym91bmRIZWFkZXJDb25maWd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRPdXRib3VuZEhlYWRlckNvbmZpZy0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICAgICA9ICRPdXRib3VuZEhlYWRlckNvbmZpZzsKICAgICAgICB9CgogICAgfQoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIElmIHRoZSB1c2VyIHdvdWxkIGxpa2UgdG8gY29udGludWUgZWRpdGluZyB0aGUgb3BlcmF0aW9uIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gKQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICAjIE90aGVyd2lzZSByZXR1cm4gdG8gb3ZlcnZpZXcuCiAgICBlbHNlIHsKICAgICAgICAkUmVkaXJlY3RVUkwgPQogICAgICAgICAgICAnQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJzsnOwogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+IDAgKTsKICAgIH0KCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAkR2V0UGFyYW0tPntPcGVyYXRpb259IiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgIyBSZW1vdmUgb3BlcmF0aW9uIGZyb20gY29uZmlnLgogICAgZGVsZXRlICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX0tPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH07CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXsgJFBhcmFte1dlYnNlcnZpY2VEYXRhfSB9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAkU3VjY2VzcyApOwp9CgpzdWIgX1Nob3dTY3JlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17T3BlcmF0aW9ufSwKICAgICk7CgogICAgbXkgJVRlbXBsYXRlRGF0YSA9ICgKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRQYXJhbXtPcGVyYXRpb25Db25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIE9wZXJhdGlvblR5cGUgPT4gJFBhcmFte09wZXJhdGlvbkNvbmZpZ30tPntUeXBlfSwKICAgICAgICBPcGVyYXRpb24gICAgID0+ICRQYXJhbXtPcGVyYXRpb259LAogICAgICAgIE5ld09wZXJhdGlvbiAgPT4gJFBhcmFte05ld09wZXJhdGlvbn0gLy8gJFBhcmFte09wZXJhdGlvbn0sCiAgICApOwoKICAgICMgSGFuZGxlIG1hcHBpbmcuCiAgICBteSAkTWFwcGluZ01vZHVsZXMgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Ok1hcHBpbmc6Ok1vZHVsZScpIHx8IHt9OwogICAgbXkgQE1hcHBpbmdNb2R1bGVMaXN0ID0gc29ydCBrZXlzICV7JE1hcHBpbmdNb2R1bGVzfTsKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgbXkgJE1hcHBpbmcgICAgPSAkUGFyYW17JERpcmVjdGlvbn07CgogICAgICAgICRUZW1wbGF0ZURhdGF7ICREaXJlY3Rpb24gLiAnU3RyZycgfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFxATWFwcGluZ01vZHVsZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJERpcmVjdGlvbiwKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkTWFwcGluZywKICAgICAgICAgICAgU29ydCAgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBSZWdpc3RlckNoYW5nZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBPbmx5IHNob3cgY29uZmlndXJlIGJ1dHRvbiBpZiB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBleGlzdGluZyBtYXBwaW5nIHR5cGUuCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkTWFwcGluZyBuZSAkT2xkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJERpcmVjdGlvbiAuICdDb25maWd1cmVCdXR0b24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gLiBDb25maWdEaWFsb2cgPT4gJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgISRTZWxmLT57U2V0dGluZ3N9OwogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkU2VjdGlvbiwKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFNldHRpbmcgKCBzb3J0IHsgJGEtPntOYW1lfSBjbXAgJGItPntOYW1lfSB9ICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyAkU2V0dGluZy0+e05hbWV9IH0gLy8gJFNldHRpbmctPntTZWxlY3RlZElEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2V0dGluZycgLiAkU2VjdGlvbiwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNldHRpbmdOYW1lICAgICAgICA9PiAkU2V0dGluZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdMYWJlbCAgICAgICA9PiAkU2V0dGluZy0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nSFRNTCAgICAgICAgPT4gJFNldHRpbmdIVE1MLAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdFeHBsYW5hdGlvbiA9PiAkU2V0dGluZy0+e0V4cGxhbmF0aW9ufSwKICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJFcnJvciAgICAgICAgPT4gJFBhcmFteyAkU2V0dGluZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCgogICAgICAgICAgICAjIFRPRE86IENvcGllZCBmcm9tIENJSW52b2tlciAtIG1heWJlIHVubmVjZXNzYXJ5CiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX1BhcmFtc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJUdldFBhcmFtOwogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e1R5cGV9IGVxICdTdHJpbmcnICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5hbWUgKSAvLyAkRGVmaW5pdGlvbi0+e0RlZmF1bHR9OwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNTdHJpbmdXaXRoRGF0YSggJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICEkRGVmaW5pdGlvbi0+e01hbmRhdG9yeX07CiAgICAgICAgICAgICRHZXRQYXJhbXtFcnJvcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5hbWUgKTsKICAgICAgICAgICAgcmV0dXJuIFwlR2V0UGFyYW07CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ0FycmF5JyApIHsKICAgICAgICAgICAgJEdldFBhcmFteyROYW1lfSA9IFsgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJE5hbWUgKSBdOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9IFRyYW5zbGF0YWJsZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgIyBUeXBlIGNoZWNrcy4KICAgIERFRklOSVRJT046CiAgICBmb3IgbXkgJERlZmluaXRpb24gKCBAeyAkUGFyYW17RGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57Q2hlY2t9OwoKICAgICAgICBteSAkTmFtZSA9ICREZWZpbml0aW9uLT57TmFtZX07CiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ09wZXJhdGlvblR5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9PcGVyYXRpb25UeXBlQ2hlY2soIE9wZXJhdGlvblR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ09wZXJhdGlvblR5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0NoZWNrfSBlcSAnTWFwcGluZ1R5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbXtOYW1lfSApOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9NYXBwaW5nVHlwZUNoZWNrKCBNYXBwaW5nVHlwZSA9PiAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTWFwcGluZ1R5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVHZXRQYXJhbTsKfQoKc3ViIF9PcGVyYXRpb25UeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtPcGVyYXRpb25UeXBlfTsKCiAgICBteSAkT3BlcmF0aW9ucyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRPcGVyYXRpb25zLT57ICRQYXJhbXtPcGVyYXRpb25UeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9NYXBwaW5nVHlwZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17TWFwcGluZ1R5cGV9OwoKICAgIG15ICRNYXBwaW5ncyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6TWFwcGluZzo6TW9kdWxlJyk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRNYXBwaW5ncyk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJE1hcHBpbmdzLT57ICRQYXJhbXtNYXBwaW5nVHlwZX0gfSApOwogICAgcmV0dXJuIDE7Cn0KCnN1YiBfSlNPTlJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZXR1cm4gSlNPTiBvdXRwdXQuCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5KU09OUmVwbHkoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gJFBhcmFte1N1Y2Nlc3N9IC8vIDAsCiAgICAgICAgfSwKICAgICk7Cn0KCnN1YiBfRXh0cmFTZXR0aW5ncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDbGFzc0xpc3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApOwogICAgbXkgJENsYXNzUmVzdHJpY3Rpb25zID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1VcHNlcnQ6OkNsYXNzZXMnKTsKICAgIG15IEBDbGFzc2VzOwoKICAgIGlmICggJENsYXNzUmVzdHJpY3Rpb25zICYmICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfSApIHsKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgIEBDbGFzc2VzID0gbWFwIHsgJENsYXNzTG9va3VweyRffSB9ICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfS0+QCo7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAQ2xhc3NlcyA9IGtleXMgJENsYXNzTGlzdC0+JSo7CiAgICB9CgogICAgJFNlbGYtPntTZXR0aW5nc317UmVxdWVzdH0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5JVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjcwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY2xhc3MgbGlzdCBhbmQgY2hlY2sgaXQKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgJENsYXNzTGlzdDsKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICRDbGFzc0xpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IHJvbGUgbGlzdCBhbmQgY2hlY2sgaXQsIHRoZSByb2xlIGxpc3QgbWF5IGJlIGVtcHR5CiAgICBteSAkUm9sZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICk7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyAkUm9sZUxpc3Q7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4gdW5sZXNzIHJlZiAkUm9sZUxpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkVXNlck9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgbXkgQEV4YW1wbGVDbGFzc2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RGlyZWN0b3J5UmVhZCgKICAgICAgICBEaXJlY3RvcnkgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAnL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzJywKICAgICAgICBGaWx0ZXIgICAgPT4gJyoueW1sJywKICAgICk7CgogICAgIyBsb2FkIHRoZSBSZWFkeTJJbXBvcnQgc2VsZWN0aW9uIGxpc3Qgd2l0aCBleGFtcGxlIGNsYXNzZXMgKGZvciBSZWFkeTJJbXBvcnQgZmVhdHVyZSkKICAgIG15ICVFeGFtcGxlQ2xhc3NEYXRhOwoKICAgIGZvciBteSAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgKEBFeGFtcGxlQ2xhc3NlcykgewogICAgICAgIG15ICRLZXkgPSAkRXhhbXBsZUNsYXNzRmlsZW5hbWU7CiAgICAgICAgJEtleSA9fiBze14uKi8oW14vXSspJH17JDF9c214OwogICAgICAgIG15ICRWYWx1ZSA9ICRLZXk7CiAgICAgICAgJFZhbHVlID1+IHN7XiguKykueW1sfXskMX1zbXg7CiAgICAgICAgJFZhbHVlID1+IHN7X317IH1zbXhnOwogICAgICAgICRFeGFtcGxlQ2xhc3NEYXRheyRLZXl9ID0gJFZhbHVlOwogICAgfQoKICAgICRQYXJhbXtFeGFtcGxlQ2xhc3NMaXN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdFeGFtcGxlQ2xhc3MnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUV4YW1wbGVDbGFzc0RhdGEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQnLAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNvbmZpZyBpdGVtIGNsYXNzIGltcG9ydDogbGlzdCBjbGFzc2VzIG9mIGZpbGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdGaWxlQ2xhc3NMaXN0JyApIHsKCiAgICAgICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICAgICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgICAgICBteSAkRXhhbXBsZUZpbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUZpbGUnICk7CgogICAgICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvdmFyL2l0c20vY29uZmlnaXRlbWNsYXNzZXMvJEV4YW1wbGVGaWxlIiwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDb250ZW50ICkgewogICAgICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCByZWFkICVzIScsICRFeGFtcGxlRmlsZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAgICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgICAgIH0KCiAgICAgICAgbXkgJUltcG9ydEl0ZW1zID0gKAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEl0ZW0gKCAkQ29udGVudC0+QCogKSB7CiAgICAgICAgICAgIGlmICggJEl0ZW0tPntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30tPkAqLCAkSXRlbS0+e0NsYXNzfXtOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRJdGVtLT57Um9sZU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEltcG9ydEl0ZW1ze1JvbGVzfSAvLz0gW107CiAgICAgICAgICAgICAgICBwdXNoICRJbXBvcnRJdGVtc3tSb2xlc30tPkAqLCAkSXRlbS0+e1JvbGVOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkpTT05SZXBseSgKICAgICAgICAgICAgRGF0YSA9PiBcJUltcG9ydEl0ZW1zLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBpbXBvcnQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0ltcG9ydCcgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRDb250ZW50OwoKICAgICAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgICAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgICAgIG15ICRFeGFtcGxlQ2xhc3MgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUNsYXNzJyApOwogICAgICAgIG15ICRGaWxlV2l0aG91dEV4dGVuc2lvbjsKCiAgICAgICAgbXkgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0V4YW1wbGVDbGFzcycgKTsKICAgICAgICAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgPX4gc3svK3xcLnsyLH19e31zbXg7ICAgICMgcmVtb3ZlIHNsYXNoZXMgYW5kIC4uCgogICAgICAgIGlmICggISRFeGFtcGxlQ2xhc3NGaWxlbmFtZSApIHsKICAgICAgICAgICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZWVkIEV4YW1wbGVDbGFzc2VzIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbgogICAgICAgICgkRmlsZVdpdGhvdXRFeHRlbnNpb24pID0gJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID1+IG17KC4qPylcLnltbCR9c214OwoKICAgICAgICAjIHJ1biBfcHJlLnBtIGlmIGF2YWlsYWJsZQogICAgICAgIGlmICggLWUgIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzLyIgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAiX3ByZS5wbSIgKSB7CgogICAgICAgICAgICBteSAkQmFja2VuZE5hbWUgPSAndmFyOjppdHNtOjpjb25maWdpdGVtY2xhc3Nlczo6JyAuICRGaWxlV2l0aG91dEV4dGVuc2lvbiAuICdfcHJlJzsKCiAgICAgICAgICAgIG15ICRMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAgICAgICAgICRCYWNrZW5kTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkTG9hZGVkKSB7CiAgICAgICAgICAgICAgICBteSAkQmFja2VuZFByZSA9ICRLZXJuZWw6Ok9NLT5HZXQoCiAgICAgICAgICAgICAgICAgICAgJEJhY2tlbmROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlU3RhdHVzID0gJEJhY2tlbmRQcmUtPlJ1bigpOwogICAgICAgICAgICAgICAgaWYgKCAhJFN0YXR1c3tTdWNjZXNzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSBlcnJvciBzY3JlZW4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJFN0YXR1c3tFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy8kRXhhbXBsZUNsYXNzRmlsZW5hbWUiLAogICAgICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbnRlbnQgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IHJlYWQgJXMhJywgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICAgICAgfQoKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJENvbnRlbnQpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVcGRhdGVFeGlzdGluZ0VudGl0aWVzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1VwZGF0ZUV4aXN0aW5nRW50aXRpZXMnICk7CgogICAgICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPyAnVVBEQVRFJyA6ICdFUlJPUicsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgIyByZXR1cm4gZXJyb3IKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkpTT05SZXBseSgKICAgICAgICAgICAgICAgIERhdGEgPT4gJFJlc3VsdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICMgUnVuIF9wb3N0LnBtIGlmIGF2YWlsYWJsZS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEV4YW1wbGVDbGFzcwogICAgICAgICAgICAgICAgJiYgLWUgIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzLyIgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAiX3Bvc3QucG0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRCYWNrZW5kTmFtZSA9ICd2YXI6Oml0c206OmNvbmZpZ2l0ZW1jbGFzc2VzOjonIC4gJEZpbGVXaXRob3V0RXh0ZW5zaW9uIC4gJ19wb3N0JzsKCiAgICAgICAgICAgICAgICBteSAkTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgICAgICAgICAgICAgJEJhY2tlbmROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJExvYWRlZCkgewoKICAgICAgICAgICAgICAgICAgICBteSAkQmFja2VuZFBvc3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAkQmFja2VuZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJVN0YXR1cyA9ICRCYWNrZW5kUG9zdC0+UnVuKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN0YXR1c3tTdWNjZXNzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgZXJyb3Igc2NyZWVuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJFN0YXR1c3tFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+SlNPTlJlcGx5KAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBsaXN0IG9mIHRoZSB2ZXJzaW9ucyBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbmZpZyBpdGVtIGNsYXNzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NEZWZpbml0aW9uTGlzdCcgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2xhc3NJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJENsYXNzSUQ7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25MaXN0JywKICAgICAgICApOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uIGxpc3QKICAgICAgICBteSAkRGVmaW5pdGlvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkxpc3QoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggcmV2ZXJzZSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgICAgIG15ICRGdWxsTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGRlZmluaXRpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25MaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICREZWZpbml0aW9uLT4lKiwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJEZ1bGxOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBsaXN0IG9mIHRoZSB2ZXJzaW9ucyBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbmZpZyBpdGVtIHJvbGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvbkxpc3QnICkgewoKICAgICAgICAjIGdldCByb2xlIGlkCiAgICAgICAgbXkgJFJvbGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSb2xlSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRSb2xlSUQ7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkxpc3QnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGxpc3Qgb2YgZGVmaW5pdGlvbnMgZm9yIHRoYXQgcm9sZSwga2VlcGluZyB0aGUgY2FsbCB0byBEZWZpbml0aW9uTGlzdCgpCiAgICAgICAgbXkgJERlZmluaXRpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uTGlzdCgKICAgICAgICAgICAgUm9sZUlEID0+ICRSb2xlSUQsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggcmV2ZXJzZSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgICAgIG15ICRGdWxsTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGRlZmluaXRpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgICAgIFJvbGUgICAgICAgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJEZ1bGxOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBkZWZpbml0aW9uIHZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25WaWV3JyApIHsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpZAogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRGVmaW5pdGlvbklEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkRGVmaW5pdGlvbklEOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBDbGFzc1NlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmluaXRpb24tPntDbGFzc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENsYXNzVmVyc2lvblNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJERlZmluaXRpb24tPntWZXJzaW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJERlZmluaXRpb24tPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvblZpZXcnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREZWZpbml0aW9uLT4lKiwKICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkVXNlck5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiB2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUm9sZURlZmluaXRpb25WaWV3JyApIHsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpZAogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRGVmaW5pdGlvbklEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkRGVmaW5pdGlvbklEOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgUm9sZVNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntSb2xlSUR9LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRGVmaW5pdGlvbi0+e1JvbGV9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBSb2xlVmVyc2lvblNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJERlZmluaXRpb24tPntWZXJzaW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJERlZmluaXRpb24tPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uVmlldycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgQ3JlYXRlQnlVc2VyID0+ICRVc2VyTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZGVmaW5pdGlvbiBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnICkgewoKICAgICAgICAjIGdldCBjbGFzcyBpZAogICAgICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRDbGFzc0lEOwoKICAgICAgICAjIEFkZCBjb2RlIG1pcnJvciBsYW5ndWFnZSBtb2RlLgogICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdFZGl0b3JMYW5ndWFnZU1vZGUnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ3RleHQveC15YW1sJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNsYXNzIGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgQ2xhc3NTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICBJRCAgID0+ICREZWZpbml0aW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICBteSAkRWRpdG9yUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0VkaXRvclJvd3N9IHx8IDMwOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICV7JERlZmluaXRpb259LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFJvd3MgICAgPT4gJEVkaXRvclJvd3MsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvbkNoYW5nZScgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJFJvbGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSb2xlSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRSb2xlSUQ7CgogICAgICAgICMgQWRkIGNvZGUgbWlycm9yIGxhbmd1YWdlIG1vZGUuCiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0VkaXRvckxhbmd1YWdlTW9kZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAndGV4dC94LXlhbWwnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2xhc3MgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFJvbGVJRCwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICBPcmlnaW5hbCAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgIFJvbGVTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICBJRCAgID0+ICREZWZpbml0aW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICBteSAkRWRpdG9yUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0VkaXRvclJvd3N9IHx8IDMwOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBSb2xlSUQgPT4gJFJvbGVJRCwKICAgICAgICAgICAgICAgIFJvbGUgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgIFJvd3MgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZGVmaW5pdGlvbiBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NEZWZpbml0aW9uU2F2ZScgKSB7CgogICAgICAgICMgZ2V0IGFuZCBjaGVjayBwYXJhbXMKICAgICAgICBteSAlRGVmaW5pdGlvbjsKICAgICAgICBmb3IgbXkgJEZvcm1QYXJhbSAocXcoQ2xhc3NJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRGb3JtUGFyYW0gKSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KENsYXNzSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb257JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRGb3JtUGFyYW0hIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFZhbGlkYXRlIFlBTUwgY29kZSBieSBjb252ZXJ0aW5nIGl0IHRvIFBlcmwuCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9ue0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICREZWZpbml0aW9uUmVmIGVxICdIQVNIJzsKCiAgICAgICAgIyBhZGQgdG8gZGF0YWJhc2UKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZGlzcGxheSBjaGFuZ2Ugc2NyZWVuIHdpdGggZXJyb3IgaWYgY2hlY2sgZmFpbGVkCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUmVzdWx0KSAmJiAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgICAgICBPcmlnaW5hbCAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgICAgICBSb2xlTGlzdCAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgICAgIENsYXNzU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb257Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkQ2xhc3NMaXN0LT57ICREZWZpbml0aW9ue0NsYXNzSUR9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRWRpdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NEZWZpbml0aW9uQ2hhbmdlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICAgICAgICAgIEVycm9yICAgICAgICA9PiAkUmVzdWx0LT57RXJyb3J9LAogICAgICAgICAgICAgICAgICAgIEVycm9yQXJnMSAgICA9PiAkUmVzdWx0LT57RXJyb3JBcmdzfS0+WzBdLAogICAgICAgICAgICAgICAgICAgIEVycm9yQXJnMiAgICA9PiAkUmVzdWx0LT57RXJyb3JBcmdzfS0+WzFdLAogICAgICAgICAgICAgICAgICAgIEVycm9yQ2xhc3NlcyA9PiAnU2VydmVyRXJyb3IgRXJyb3InLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkRGVmaW5pdGlvbntDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkRGVmaW5pdGlvbntDbGFzc0lEfSB9LAogICAgICAgICAgICAgICAgICAgIFJvd3MgICAgICAgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29udGludWVBZnRlclNhdmUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29udGludWVBZnRlclNhdmUnICk7CiAgICAgICAgaWYgKCRDb250aW51ZUFmdGVyU2F2ZSkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249Q2xhc3NEZWZpbml0aW9uQ2hhbmdlO0NsYXNzSUQ9JERlZmluaXRpb257Q2xhc3NJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUm9sZURlZmluaXRpb25TYXZlJyApIHsKCiAgICAgICAgIyBnZXQgYW5kIGNoZWNrIHBhcmFtcwogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhSb2xlSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgJERlZmluaXRpb257JEZvcm1QYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkRm9ybVBhcmFtICkgfHwgJyc7CiAgICAgICAgfQogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhSb2xlSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb257JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRGb3JtUGFyYW0hIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFZhbGlkYXRlIFlBTUwgY29kZSBieSBjb252ZXJ0aW5nIGl0IHRvIFBlcmwuCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9ue0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICREZWZpbml0aW9uUmVmIGVxICdIQVNIJzsKCiAgICAgICAgIyBhZGQgdG8gZGF0YWJhc2UKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgICAgICAlRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRpc3BsYXkgY2hhbmdlIHNjcmVlbiB3aXRoIGVycm9yIGlmIGNoZWNrIGZhaWxlZAogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFJlc3VsdCkgJiYgJFJlc3VsdC0+e0Vycm9yfSApIHsKCiAgICAgICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICAgICAgT3JpZ2luYWwgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJvbGVMaXN0ICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgICAgICBSb2xlU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb257Um9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRSb2xlTGlzdC0+eyAkRGVmaW5pdGlvbntSb2xlSUR9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRWRpdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUm9sZURlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURlZmluaXRpb24sCiAgICAgICAgICAgICAgICAgICAgRXJyb3IgICAgICAgID0+ICRSZXN1bHQtPntFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcxICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMF0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcyICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDbGFzc2VzID0+ICdTZXJ2ZXJFcnJvciBFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgUm9sZUlEICAgICAgID0+ICREZWZpbml0aW9ue1JvbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUm9sZSAgICAgICAgID0+ICRSb2xlTGlzdC0+eyAkRGVmaW5pdGlvbntSb2xlSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgUm93cyAgICAgICAgID0+ICRFZGl0b3JSb3dzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICB9CgogICAgICAgIG15ICRDb250aW51ZUFmdGVyU2F2ZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKTsKICAgICAgICBpZiAoJENvbnRpbnVlQWZ0ZXJTYXZlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkNoYW5nZTtSb2xlSUQ9JERlZmluaXRpb257Um9sZUlEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZXhwb3J0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NFeHBvcnQnICkgewoKICAgICAgICBteSBAQ2xhc3NJRExpc3QgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhwb3J0SUQnICk7CgogICAgICAgICMgZXhwb3J0IHRoZSBjbGFzc2VzIHRvIGEgWUFNTCBzdHJpbmcKICAgICAgICBteSAkWUFNTENvbnRlbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NFeHBvcnQoIEl0ZW1JRExpc3QgPT4gXEBDbGFzc0lETGlzdCApOwoKICAgICAgICBpZiAoICEkWUFNTENvbnRlbnQgKSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIGVycm9yIHNjcmVlbgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICdDbGFzcyBleHBvcnQgZmFpbGVkLicsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRZQU1MQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAiRXhwb3J0Q2xhc3MueW1sIiwKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJEhUTUw7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBvdmVydmlldyBpcyB0aGUgZGVmYXVsdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKDEpIHsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0LCBmb3Igcm9sZXMgYW5kIGRlZmluaXRpb25zCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGlzdCcsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRDbGFzc0xpc3QtPnskYX0gY21wICRDbGFzc0xpc3QtPnskYn0gfSBrZXlzICRDbGFzc0xpc3QtPiUqICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0RlZmluaXRpb25MaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUm9sZUlEICggc29ydCB7ICRSb2xlTGlzdC0+eyRhfSBjbXAgJFJvbGVMaXN0LT57JGJ9IH0ga2V5cyAkUm9sZUxpc3QtPiUqICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1JvbGVMaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFJvbGVJRCA9PiAkUm9sZUlELAogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFBhcmFte09yaWdpbmFsfSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQp9CgpzdWIgX1Nob3dTaWRlYmFyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkQ2xhc3NEZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZW5lcmF0ZSBSb2xlT3B0aW9uU3RyZywgQ2xhc3NPcHRpb25TdHJnIGFuZCBDbGFzc09wdGlvbk11bHRTdHJnIHdoaWNoIGFyZSBuZWVkZWQgZm9yIHRoZSBzaWRlYm94CiAgICBteSAkUm9sZUlEICAgICAgICAgPSAkUGFyYW17Um9sZVNlbGVjdGVkfSA/ICRQYXJhbXtSb2xlU2VsZWN0ZWR9LT57SUR9IDogJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JvbGVJRCcgKTsKICAgIG15ICRSb2xlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17Um9sZUxpc3R9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUm9sZUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFJvbGVJRCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgbXkgJENsYXNzSUQgICAgICAgICA9ICRQYXJhbXtDbGFzc1NlbGVjdGVkfSA/ICRQYXJhbXtDbGFzc1NlbGVjdGVkfS0+e0lEfSA6ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApOwogICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17Q2xhc3NMaXN0fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15IEBFeHBvcnRJRHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhwb3J0SUQnICk7CiAgICBteSAlQ2xhc3NMaXN0Rm9yTXVsdFNlbDsKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJXsgJFBhcmFte0NsYXNzTGlzdH0gfSApIHsKICAgICAgICBteSAkSGFzQ29udGVudCA9ICV7ICRDbGFzc0RlZmluaXRpb24tPkRlZmluaXRpb25HZXQoIENsYXNzSUQgPT4gJENsYXNzSUQgKSB9OwogICAgICAgIGlmICgkSGFzQ29udGVudCkgewogICAgICAgICAgICAkQ2xhc3NMaXN0Rm9yTXVsdFNlbHskQ2xhc3NJRH0gPSAkUGFyYW17Q2xhc3NMaXN0fS0+eyRDbGFzc0lEfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENsYXNzT3B0aW9uTXVsdFN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUNsYXNzTGlzdEZvck11bHRTZWwsCiAgICAgICAgICAgICRQYXJhbXtSb2xlTGlzdH0tPiUqLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0V4cG9ydElEJywKICAgICAgICBTZWxlY3RlZElEICA9PiBcQEV4cG9ydElEcywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQnLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgICMgdGhpcyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgT3ZlcnZpZXcgYmxvY2sKICAgIG15ICVCbG9ja0RhdGEgPSAoCiAgICAgICAgUm9sZU9wdGlvblN0cmcgICAgICA9PiAkUm9sZU9wdGlvblN0cmcsCiAgICAgICAgQ2xhc3NPcHRpb25TdHJnICAgICA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgIENsYXNzT3B0aW9uTXVsdFN0cmcgPT4gJENsYXNzT3B0aW9uTXVsdFN0cmcsCiAgICAgICAgRXhhbXBsZUNsYXNzTGlzdCAgICA9PiAkUGFyYW17T3JpZ2luYWx9LT57RXhhbXBsZUNsYXNzTGlzdH0sCiAgICApOwoKICAgICMgdGhlcmUgbWlnaHQgYmUgYWRkaXRpb25hbCBkYXRhIGZvciB0aGUgT3ZlcnZpZXcgYmxvY2sKICAgIEtFWToKICAgIGZvciBteSAkS2V5IChxdyhDbGFzc1NlbGVjdGVkIENsYXNzVmVyc2lvblNlbGVjdGVkIFJvbGVTZWxlY3RlZCBSb2xlVmVyc2lvblNlbGVjdGVkIEVkaXQpKSB7CiAgICAgICAgbmV4dCBLRVkgdW5sZXNzIGRlZmluZWQgJFBhcmFteyRLZXl9OwoKICAgICAgICAkQmxvY2tEYXRheyRLZXl9ID0gJFBhcmFteyRLZXl9OwogICAgfQoKICAgICMgdGhlIE92ZXJ2aWV3IGJsb2NrIGlzIHRoZSBjb21wbGV0ZSBwYWdlCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJUJsb2NrRGF0YSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17U2hvd092ZXJ2aWV3TGlua30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzU3RyaW5nV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7JVBhcmFtfSwgJFR5cGU7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgIG15ICRGaWx0ZXIgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJ0FsbCc7CiAgICBteSAkQ2F0ZWdvcnlGaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICk7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENhdGVnb3J5TGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2F0ZWdvcnlMaXN0LT57JF99ICkgKSB9IGtleXMgJENhdGVnb3J5TGlzdC0+JSo7CiAgICBteSAlUmV2ZXJzZUNhdGVnb3J5TGlzdCAgICA9IHJldmVyc2UgJVRyYW5zbGF0ZWRDYXRlZ29yeUxpc3Q7CiAgICBteSAkRGVmYXVsdENhdGVnb3J5ICAgICAgICA9ICRDb25maWctPntEZWZhdWx0Q2F0ZWdvcnl9OwogICAgbXkgJERlZmF1bHRDYXRlZ29yeUlEOwogICAgaWYgKCAkRGVmYXVsdENhdGVnb3J5ICYmICRSZXZlcnNlQ2F0ZWdvcnlMaXN0eyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJERlZmF1bHRDYXRlZ29yeSkgfSApIHsKICAgICAgICAkRGVmYXVsdENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5TGlzdHsgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ29uZmlnLT57RGVmYXVsdENhdGVnb3J5fSApIH07CiAgICAgICAgJENhdGVnb3J5RmlsdGVyIHx8PSAkRGVmYXVsdENhdGVnb3J5SUQ7CiAgICB9CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0NvbHVtbkZpbHRlckR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgKTsKCiAgICAgICAgIyBpZiBubyBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdCwgdHJ5IGZyb20gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICggIWRlZmluZWQgJEZpbHRlclZhbHVlIHx8ICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0tPntFcXVhbHN9OwogICAgICAgIH0KCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIGRlZmluZWQgJEZpbHRlclZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICBFcXVhbHMgPT4gJEZpbHRlclZhbHVlLAogICAgICAgIH07CiAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICB9CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyICYgdG8gZ2V0IHRoZSBvdXRwdXQgZmFzdGVyIQogICAgbXkgJFJlZnJlc2ggPSAnJzsKICAgIGlmICggJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ICkgewogICAgICAgICRSZWZyZXNoID0gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX07CiAgICB9CgogICAgbXkgJE91dHB1dDsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENsYXNzTGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2xhc3NMaXN0LT57JF99ICkgKSB9IGtleXMgJENsYXNzTGlzdC0+JSo7CgogICAgIyBnZXQgcG9zc2libGUgZGVwbG95bWVudCBzdGF0ZSBsaXN0IGZvciBjb25maWcgaXRlbXMgdG8gYmUgc2hvd24KICAgIG15ICRTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgdGhlIGRlcGxveW1lbnQgc3RhdGUgSURzIHBhcmFtZXRlciBmb3IgdGhlIHNlYXJjaAogICAgbXkgJERlcGxTdGF0ZUlEczsKICAgIGZvciBteSAkRGVwbFN0YXRlS2V5ICggc29ydCBrZXlzICV7JFN0YXRlTGlzdH0gKSB7CiAgICAgICAgcHVzaCBAeyREZXBsU3RhdGVJRHN9LCAkRGVwbFN0YXRlS2V5OwogICAgfQoKICAgICMgdmlld2FibGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9IGtleXMgJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApCiAgICB9OwoKICAgICMgZ2V0IHBlcm1pc3Npb25zCiAgICBteSAkUGVybWlzc2lvbiA9ICdydyc7CgogICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgbXkgJVNvcnQ7CgogICAgIyBnZXQgaWYgc2VhcmNoIHJlc3VsdCBzaG91bGQgYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eQogICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyB0byBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMKICAgIG15ICVGaWx0ZXJzOwogICAgbXkgJUNhdGVnb3J5MkNsYXNzSUQ7CgogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkVHJhbnNsYXRlZENsYXNzTGlzdHskYX0gY21wICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRifSB9IGtleXMgJVRyYW5zbGF0ZWRDbGFzc0xpc3QgKSB7CgogICAgICAgICMgc2hvdyBtZW51IGxpbmsgb25seSBpZiB1c2VyIGhhcyBhY2Nlc3MgcmlnaHRzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRDb25maWctPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgISRIYXNBY2Nlc3M7CgogICAgICAgICMgZmV0Y2ggY2xhc3MgcHJlZmVyZW5jZXMgdG8gcmV0cmlldmUgY2F0ZWdvcmllcyBmb3IgY2xhc3MKICAgICAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkQ2xhc3NQcmVmZXJlbmNlc3tDYXRlZ29yaWVzfSApOwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5ICggJENsYXNzUHJlZmVyZW5jZXN7Q2F0ZWdvcmllc30tPkAqICkgewogICAgICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlMaXN0eyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENhdGVnb3J5KSB9OwogICAgICAgICAgICBwdXNoIEB7ICRDYXRlZ29yeTJDbGFzc0lEeyRDYXRlZ29yeUlEfSB9LCAkQ2xhc3NJRDsKICAgICAgICB9CiAgICB9CgogICAgIyBvcmRlciB0aGUgY2F0ZWdvcnkgZmlsdGVycyBhbmQgLSBpZiBub3QgeWV0IHNldCAtIHNlbGVjdCB0aGUgY2F0ZWdwcnkgc2hvd24KICAgIG15ICVDYXRlZ29yeUZpbHRlcnM7CiAgICB7CiAgICAgICAgbXkgQFNvcnRlZENhdGVnb3JpZXMgPSBzb3J0IHsgJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENhdGVnb3J5TGlzdHskYn0gfSBrZXlzICVDYXRlZ29yeTJDbGFzc0lEOwoKICAgICAgICBteSAkUHJpbyA9IDI7CiAgICAgICAgJUNhdGVnb3J5RmlsdGVycyA9IG1hcCB7CiAgICAgICAgICAgICRfID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JF99LAogICAgICAgICAgICAgICAgUHJpbyA9PiAkUHJpbysrLAogICAgICAgICAgICB9CiAgICAgICAgfSBAU29ydGVkQ2F0ZWdvcmllczsKCiAgICAgICAgaWYgKCAkRGVmYXVsdENhdGVnb3J5SUQgJiYgJENhdGVnb3J5RmlsdGVyc3skRGVmYXVsdENhdGVnb3J5SUR9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyREZWZhdWx0Q2F0ZWdvcnlJRH17UHJpb30gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgY2xhc3MgZmlsdGVycyBmb3IgdGhlIHNlbGVjdGVkIGNhdGVnb3J5CiAgICBteSAkQ291bnRUb3RhbCA9IDA7CiAgICBteSBAQWxsQ3VycmVudENsYXNzZXM7CiAgICBpZiAoJENhdGVnb3J5RmlsdGVyKSB7CgogICAgICAgIG15ICRQcmlvID0gMjsKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJFRyYW5zbGF0ZWRDbGFzc0xpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENsYXNzTGlzdHskYn0gfSAkQ2F0ZWdvcnkyQ2xhc3NJRHskQ2F0ZWdvcnlGaWx0ZXJ9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENvdW50Q2xhc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgUGVybWlzc2lvbiAgID0+ICRQZXJtaXNzaW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgICA9PiAnQ09VTlQnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ291bnRUb3RhbCArPSAkQ291bnRDbGFzczsKCiAgICAgICAgICAgIHB1c2ggQEFsbEN1cnJlbnRDbGFzc2VzLCAkQ2xhc3NJRDsKCiAgICAgICAgICAgICMgYWRkIGZpbHRlciB3aXRoIHBhcmFtcyBmb3IgdGhlIHNlYXJjaCBtZXRob2QKICAgICAgICAgICAgJEZpbHRlcnN7JENsYXNzSUR9ID0gewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpbysrLAogICAgICAgICAgICAgICAgQ291bnQgID0+ICRDb3VudENsYXNzLAogICAgICAgICAgICAgICAgU2VhcmNoID0+IHsKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgICAgICAgICAlU29ydCwKICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFBlcm1pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCAiYWxsIiBmaWx0ZXIgaWYgdGhlcmUgaXMgbm90IG9ubHkgb25lIGN1cnJlbnQgZmlsdGVyLCBzZXQgdGhlIGZpbHRlciBpZiBub3QgcHJvdmlkZWQKICAgIGlmICggc2NhbGFyIGtleXMgJUZpbHRlcnMgPT0gMSApIHsKICAgICAgICAoJEZpbHRlcikgPSBrZXlzICVGaWx0ZXJzOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbHRlcnN7QWxsfSA9IHsKICAgICAgICAgICAgTmFtZSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQWxsJyksCiAgICAgICAgICAgIFByaW8gICA9PiAxLAogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50VG90YWwsCiAgICAgICAgICAgIFNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gXEBBbGxDdXJyZW50Q2xhc3NlcywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAkUGVybWlzc2lvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICB9LAogICAgICAgIH07CgogICAgICAgIGlmICggISRGaWx0ZXIgfHwgISRGaWx0ZXJzeyRGaWx0ZXJ9ICkgewogICAgICAgICAgICAkRmlsdGVyID0gJ0FsbCc7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkVmlldyAmJiAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgb3RoZXJ3aXNlIHVzZSBQcmV2aWV3IGFzIGRlZmF1bHQgYXMgaW4gTGF5b3V0Q29uZmlnSXRlbQogICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+e1Nlc3Npb259eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CgogICAgIyBkbyBzaG93biBjb25maWcgaXRlbSBsb29rdXAKICAgIG15ICRMaW1pdCA9IDFfMDAwOwoKICAgIG15ICRFbGVtZW50Q2hhbmdlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKICAgIG15ICRIZWFkZXJDb2x1bW4gICA9ICRFbGVtZW50Q2hhbmdlZDsKICAgICRIZWFkZXJDb2x1bW4gPX4gc3tcQSBDb2x1bW5GaWx0ZXIgfXt9bXN4ZzsKCiAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAjIHNlYXJjaCBhbGwgY29uZmlnIGl0ZW1zCiAgICBteSBAVmlld2FibGVDb25maWdJdGVtczsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgaWYgKCBAVmlld2FibGVEZXBsU3RhdGVJRHMgJiYgQEFsbEN1cnJlbnRDbGFzc2VzICkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSB2YWx1ZXMKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoJEhlYWRlckNvbHVtbikKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ09ubHlWYWx1ZXNPbkNvbmZpZ0l0ZW0nKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkTGltaXQsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRTdGFydCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICAgICAgQFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgogICAgIyBUT0RPIE1heWJlIHRoZXJlIGlzIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzPwogICAgJFNlbGYtPntGaWx0ZXJ9ICAgICAgICAgID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gICAgICAgICA9IFwlRmlsdGVyczsKICAgICRTZWxmLT57Q2F0ZWdvcnlGaWx0ZXJzfSA9IFwlQ2F0ZWdvcnlGaWx0ZXJzOwogICAgJFNlbGYtPntDYXRlZ29yeUZpbHRlcn0gID0gJENhdGVnb3J5RmlsdGVyOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJEZpbHRlckNvbnRlbnQgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICBGaWx0ZXJDb250ZW50T25seSAgICAgPT4gMSwKICAgICAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIEVsZW1lbnRDaGFuZ2VkICAgICAgICA9PiAkRWxlbWVudENoYW5nZWQsCiAgICAgICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtJywKICAgICAgICAgICAgRW52ICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlcnMgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRGaWx0ZXJDb250ZW50ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDYW5cJ3QgZ2V0IGZpbHRlciBjb250ZW50IGRhdGEgb2YgJXMhJywgJEhlYWRlckNvbHVtbiApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbHRlckNvbnRlbnQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBzdG9yZSBjb2x1bW4gZmlsdGVycwogICAgICAgIG15ICRTdG9yZWRGaWx0ZXJzID0gXCVDb2x1bW5GaWx0ZXI7CgogICAgICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CiAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFN0b3JlZEZpbHRlcnNLZXksCiAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRTdG9yZWRGaWx0ZXJzICksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlTmF2QmFyRmlsdGVyID0gbWFwIHsKICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyRffXtQcmlvfSA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5RmlsdGVyID0+ICRfLAogICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyRffS0+JSosCiAgICAgICAgfQogICAgfSBrZXlzICVDYXRlZ29yeUZpbHRlcnM7CgogICAgbXkgJUNsYXNzRmlsdGVyID0gbWFwIHsKICAgICAgICAkRmlsdGVyc3skX317UHJpb30gPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJF8sCiAgICAgICAgICAgICRGaWx0ZXJzeyRffS0+JSosCiAgICAgICAgfQogICAgfSBrZXlzICVGaWx0ZXJzOwoKICAgIG15ICRDb2x1bW5GaWx0ZXJMaW5rID0gJyc7CiAgICBDT0xVTU5OQU1FOgogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBrZXlzICVHZXRDb2x1bW5GaWx0ZXIgKSB7CgogICAgICAgIG5leHQgQ09MVU1OTkFNRSB1bmxlc3MgJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIHVubGVzcyBkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKCiAgICAgICAgJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAnPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSApOwogICAgfQoKICAgIG15ICRDYXRlZ29yeUZpbHRlclVSSSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DYXRlZ29yeUZpbHRlciB8IHVyaSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBDYXRlZ29yeUZpbHRlciA9PiAkQ2F0ZWdvcnlGaWx0ZXIsCiAgICAgICAgfSwKICAgICk7CiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO0NhdGVnb3J5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDYXRlZ29yeUZpbHRlclVSSSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBteSAkTGlua1NvcnQgPSAnVmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO0NhdGVnb3J5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDYXRlZ29yeUZpbHRlclVSSSApCiAgICAgICAgLiAnO0ZpbHRlcj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtGaWx0ZXIgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExhc3RDb2x1bW5GaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFzdENvbHVtbkZpbHRlcicgKSB8fCAnJzsKCiAgICBpZiAoICEkTGFzdENvbHVtbkZpbHRlciAmJiAkQ29sdW1uRmlsdGVyTGluayApIHsKCiAgICAgICAgIyBpcyBwbGFubmVkIHRvIGhhdmUgYSBsaW5rIHRvIGdvIGJhY2sgaGVyZQogICAgICAgICRMYXN0Q29sdW1uRmlsdGVyID0gMTsKICAgIH0KCiAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgRmlsdGVyICAgICAgICAgICAgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgQ2F0ZWdvcnlGaWx0ZXIgICAgICAgID0+ICRDYXRlZ29yeUZpbHRlciwKICAgICAgICBGaWx0ZXJzICAgICAgICAgICAgICAgPT4gXCVDbGFzc0ZpbHRlciwKICAgICAgICBDYXRlZ29yeUZpbHRlcnMgICAgICAgPT4gXCVOYXZCYXJGaWx0ZXIsCiAgICAgICAgQ29uZmlnSXRlbUlEcyAgICAgICAgID0+IFxAVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgR2V0Q29sdW1uRmlsdGVyICAgICAgID0+IFwlR2V0Q29sdW1uRmlsdGVyLAogICAgICAgIExhc3RDb2x1bW5GaWx0ZXIgICAgICA9PiAkTGFzdENvbHVtbkZpbHRlciwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBSZXF1ZXN0ZWRVUkwgICAgICAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICBCdWxrICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBUaXRsZU5hbWUgICAgICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJyksCiAgICAgICAgVGl0bGVWYWx1ZSAgICAgICAgICAgID0+ICRTZWxmLT57RmlsdGVyc317JEZpbHRlcn17TmFtZX0sCiAgICAgICAgRW52ICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgICAgICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICAgICAgICAgICAgID0+ICRMaW5rU29ydCwKICAgICAgICBMaW5rRmlsdGVyICAgICAgICAgICAgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlcnMgICA9PiAxLAogICAgICAgIENvbHVtbkZpbHRlckZvcm0gICAgICA9PiB7CiAgICAgICAgICAgIEZpbHRlciAgID0+ICRGaWx0ZXIgICAgICAgICB8fCAnJywKICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gJENhdGVnb3J5RmlsdGVyIHx8ICcnLAogICAgICAgIH0sCgogICAgICAgICMgZG8gbm90IHByaW50IHRoZSByZXN1bHQgZWFybGllciwgYnV0IHJldHVybiBjb21wbGV0ZSBjb250ZW50CiAgICAgICAgT3V0cHV0ID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHBhZ2UgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpIGlmICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZSc7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTX0lEIGlmICRIYXNBY2Nlc3M7CgogICAgICAgICMgcmVtb3ZlIGZyb20gY2xhc3MgbGlzdCB3aGVuIGFjY2VzcyBpcyBkZW5pZWQKICAgICAgICBkZWxldGUgJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyB0aGUgbGlzdCBvZiBDSSBjbGFzc2VzIHNvcnRlZCBieSBuYW1lCiAgICBmb3IgbXkgJEl0ZW1JRCAoCiAgICAgICAgc29ydCB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJHskQ2xhc3NMaXN0fXskYX0gKSBjbXAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkeyRDbGFzc0xpc3R9eyRifSApCiAgICAgICAgfSBrZXlzICV7JENsYXNzTGlzdH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IGl0ZW0gbGlzdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0l0ZW1MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0xpc3QtPnskSXRlbUlEfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0FkZCcpLAogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUFkZCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICk7CiAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAjICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgIyAgICAgICAgIChBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9XGQrO0ZpbGVuYW1lPVx3KykKICAgICAgICAjICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgICMgfQoKICAgICAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgbGlzdCBmb3IgaGFuZGxpbmcgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICAgICAgbXkgJUF0dGFjaG1lbnRzOwogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfXtDb250ZW50SUR9ID0gJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICAgICAgbXkgJFVSTCA9ICdBY3Rpb249JyAuICggJExheW91dE9iamVjdC0+e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJyApIC4gJ0lUU01Db25maWdJdGVtQXR0YWNobWVudDtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50JwogICAgICAgICAgICAuICI7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtWZXJzaW9uSUQ9JENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9O0ZpbGVuYW1lPSI7CgogICAgICAgICMgcmVmb3JtYXQgcmljaCB0ZXh0IGRvY3VtZW50IHRvIGhhdmUgY29ycmVjdCBjaGFyc2V0IGFuZCBsaW5rcyB0bwogICAgICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgICAgICVEYXRhID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudFNlcnZlKAogICAgICAgICAgICBEYXRhICAgICAgICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgID0+IFwlQXR0YWNobWVudHMsCiAgICAgICAgICAgIExvYWRFeHRlcm5hbEltYWdlcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkRGF0YXtDb250ZW50fTsKCiAgICAgICAgIyByZW1vdmUgYWN0aXZlIGh0bWwgY29udGVudCAoc2NyaXB0cywgYXBwbGV0cywgZXRjLi4uKQogICAgICAgIG15ICVTYWZlQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0V4dFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWtlIHRoZSBzYWZlIGNvbnRlbnQgaWYgbmVjY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkRmllbGRDb250ZW50ID0gJFNhZmVDb250ZW50e1N0cmluZ307CiAgICAgICAgfQoKICAgICAgICAjIGRldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0YXJnZXQ9Il9ibGFuayIgYXR0cmlidXRlIHRvIGFsbCBIVE1MIDxhPiB0YWdzCiAgICAgICAgIyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCBhZ2FpbgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBuZWVkZWQgSFRNTCBoZWFkZXJzCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgIFN0cmluZyAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgICAgICk7CgogICAgICAgICMgZXNjYXBlIHNpbmdsZSBxdW90ZXMKICAgICAgICAkRmllbGRDb250ZW50ID1+IHMvJy8mIzM5Oy9nOwoKICAgICAgICAjIFJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQuCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgIG15ICRGaWxlbmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlbmFtZScgKTsKCiAgICAgICAgIyBjaGVjayBwYXJhbQogICAgICAgIGlmICggISRGaWxlbmFtZSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ZpbGVuYW1lIGlzIG5lZWRlZCEnLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYW4gYXR0YWNobWVudAogICAgICAgIG15ICREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREYXRhKSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKS4iLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCAkRGF0YS0+JSogKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgIyBObyAoa25vd24pIHN1YmFjdGlvbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbi4nKSwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemBulk.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtQnVsazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0J1bGsgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGludm9sdmVkIGNvbmZpZyBpdGVtcywgZmlsdGVyaW5nIGVtcHR5IENvbmZpZ0l0ZW1JRHMKICAgIG15IEBDb25maWdJdGVtSURzID0gZ3JlcCB7JF99CiAgICAgICAgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhQENvbmZpZ0l0ZW1JRHMgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnKSwKICAgICAgICApOwogICAgfQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgICMgZGVjbGFyZSB0aGUgdmFyaWFibGVzIGZvciBhbGwgdGhlIHBhcmFtZXRlcnMKICAgIG15ICVFcnJvcjsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGFsbCBwYXJhbWV0ZXJzIGFuZCBjaGVjayBmb3IgZXJyb3JzCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG8nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGdldCBhbGwgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkS2V5ICgKICAgICAgICAgICAgcXcoIExpbmtUb2dldGhlciBMaW5rVG9nZXRoZXJBbm90aGVyIExpbmtUeXBlIExpbmtUb2dldGhlckxpbmtUeXBlIERlcGxTdGF0ZUlECiAgICAgICAgICAgIEluY2lTdGF0ZUlEICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScpLT5TdHJpbmdDbGVhbigKICAgICAgICAgICAgICAgIFN0cmluZ1JlZiA9PiBcJEdldFBhcmFteydMaW5rVG9nZXRoZXJBbm90aGVyJ30sCiAgICAgICAgICAgICAgICBUcmltTGVmdCAgPT4gMSwKICAgICAgICAgICAgICAgIFRyaW1SaWdodCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRHZXRQYXJhbXsnTGlua1RvZ2V0aGVyQW5vdGhlcid9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgJEVycm9yeydMaW5rVG9nZXRoZXJBbm90aGVySW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHByZXByb2Nlc3MgY29uZmlnIGl0ZW0KICAgIG15IEBTZWxlY3RlZENvbmZpZ0l0ZW1zOwogICAgbXkgJUNvbmZpZ0l0ZW1DbGFzc2VzOwoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsb29wIG92ZXIgY29uZmlnIGl0ZW1zIHRvIHByZWRldGVybWluZSBhY2Nlc3MgYW5kIGR5bmFtaWMgZmllbGQgaGFuZGxpbmcKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKTsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQWNjZXNzICkgewoKICAgICAgICAgICAgIyBlcnJvciBzY3JlZW4sIGRvbid0IHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBEYXRhID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJywKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQ7CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHNlbGVjdGVkIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGlkcwogICAgICAgIHB1c2ggQFNlbGVjdGVkQ29uZmlnSXRlbXMsICRDb25maWdJdGVtOwogICAgICAgICRDb25maWdJdGVtQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSA9ICRDb25maWdJdGVtLT57Q2xhc3NJRH07CiAgICB9CgogICAgIyBjaGVjayBpZiBkeW5hbWljIGZpZWxkcyBzaG91bGQgYmUgZGlzcGxheWVkIGFuZCB3aGljaCBvbmVzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKICAgIG15ICVEeW5hbWljRmllbGRWYWx1ZXM7CiAgICBteSAlQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkczsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBvbmx5IGRpc3BsYXllZCBpZiBhbGwgY29uZmlnIGl0ZW1zIGFyZSBmcm9tIHRoZSBzYW1lIGNsYXNzCiAgICBpZiAoIHNjYWxhciBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyA9PSAxICkgewogICAgICAgIG15ICRDbGFzcyAgICAgID0gKCBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyApWzBdOwogICAgICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc2VzeyRDbGFzc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzIScsICRDbGFzcyApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntEZWZpbml0aW9ufSA9ICREZWZpbml0aW9uOwogICAgICAgICAgICAkU2VsZi0+e0NsYXNzfSAgICAgID0gJENsYXNzOwogICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCAgID0gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID8gWyB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiBdIDogW107CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZmV0Y2ggZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICk7CgogICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcm9jZXNzIGNvbmZpZyBpdGVtcwogICAgbXkgJEFjdGlvbkZsYWcgPSAwOwogICAgbXkgJENvdW50ZXIgICAgPSAxOwoKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKEBTZWxlY3RlZENvbmZpZ0l0ZW1zKSB7CgogICAgICAgICMgZG8gc29tZSBhY3Rpb25zIG9uIENJcwogICAgICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RvJyApICYmICggISVFcnJvciApICkgewoKICAgICAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGNvbmZpZ2l0ZW0gdXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZhbHVlcywKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGxpbmtzCiAgICAgICAgICAgICMgbGluayBhbGwgY29uZmlnIGl0ZW1zIHRvIGFub3RoZXIgY29uZmlnIGl0ZW0KICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgICAgIG15ICRNYWluQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzcGxpdCB0aGUgdHlwZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBteSBAVHlwZSA9IHNwbGl0IC86Oi8sICRHZXRQYXJhbXtMaW5rVHlwZX07CgogICAgICAgICAgICAgICAgaWYgKCAkVHlwZVswXSAmJiAkVHlwZVsxXSAmJiAoICRUeXBlWzFdIGVxICdTb3VyY2UnIHx8ICRUeXBlWzFdIGVxICdUYXJnZXQnICkgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbXkgJFRhcmdldEtleSA9ICRNYWluQ29uZmlnSXRlbUlEOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzFdIGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJE1haW5Db25maWdJdGVtSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWFpbkNvbmZpZ0l0ZW1JRCBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsaW5rIHRvZ2V0aGVyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteydMaW5rVG9nZXRoZXInfSApIHsKCiAgICAgICAgICAgICAgICAjIHNwbGl0IHRoZSB0eXBlIGlkZW50aWZpZXIKICAgICAgICAgICAgICAgIG15IEBUeXBlID0gc3BsaXQgLzo6LywgJEdldFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlfTsKCiAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzBdICYmICRUeXBlWzFdICYmICggJFR5cGVbMV0gZXEgJ1NvdXJjZScgfHwgJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbUlEUGFydG5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJENvbmZpZ0l0ZW1JRFBhcnRuZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGFyZ2V0S2V5ID0gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQWN0aW9uRmxhZyA9IDE7CiAgICAgICAgfQogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyByZWRpcmVjdAogICAgaWYgKCRBY3Rpb25GbGFnKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFVSTCA9PiAoICRTZWxmLT57TGFzdFNjcmVlbk92ZXJ2aWV3fSB8fCAnQWN0aW9uPUFnZW50RGFzaGJvYXJkJyApLAogICAgICAgICk7CiAgICB9CgogICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGQgID0+IFwlRHluYW1pY0ZpZWxkVmFsdWVzLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyBdLAogICAgICAgIEVycm9ycyAgICAgICAgPT4gXCVFcnJvciwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBwcmVwYXJlIGVycm9ycyEKICAgIGlmICggJFBhcmFte0Vycm9yc30gKSB7CiAgICAgICAgZm9yIG15ICRLZXlFcnJvciAoIHNvcnQga2V5cyAleyAkUGFyYW17RXJyb3JzfSB9ICkgewogICAgICAgICAgICAkUGFyYW17JEtleUVycm9yfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFBhcmFte0Vycm9yc30tPnskS2V5RXJyb3J9ICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0J1bGtBY3Rpb24nLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBpZHMKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVXNlZENvbmZpZ0l0ZW1JRCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGRlcGxveW1lbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57RGVwbFN0YXRlfSApIHsKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgRGVwbFN0YXRlU3RyZwogICAgICAgICRQYXJhbXtEZXBsU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdEZXBsU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaW5jaWRlbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57SW5jaVN0YXRlfSApIHsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ29wZXJhdGlvbmFsJywgJ2luY2lkZW50JyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgSW5jaVN0YXRlU3RyZwogICAgICAgICRQYXJhbXtJbmNpU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsaW5rIHR5cGVzIGxpc3QKICAgICMgZ2V0IHBvc3NpYmxlIHR5cGVzIGxpc3QKICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRlZmluZSBibGFuayBsaW5lIGVudHJ5CiAgICBteSAlQmxhbmtMaW5lID0gKAogICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICBWYWx1ZSAgICA9PiAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScsCiAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgdGhlIHNlbGVjdGFibGUgdHlwZSBsaXN0CiAgICBteSAkQ291bnRlciA9IDA7CiAgICBteSBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKICAgIG15IEBMaW5rVG9nZXRoZXJUeXBlTGlzdDsKICAgIFBPU1NJQkxFVFlQRToKICAgIGZvciBteSAkUG9zc2libGVUeXBlICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0ICkgewoKICAgICAgICAjIGxvb2t1cCB0eXBlIGlkCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJFBvc3NpYmxlVHlwZSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0eXBlCiAgICAgICAgbXkgJVR5cGUgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB0eXBlIGxpc3QgZm9yIGxpbmsgdG9nZXRoZXIgY2FuIGNvbnRhaW4gb25seQogICAgICAgICMgbGluayB0eXBlcyB3aGljaCBhcmUgbm90IGRpcmVjdGVkIChub3QgcG9pbnRlZCkKICAgICAgICBpZiAoICEkVHlwZXtQb2ludGVkfSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgICAgICBteSAlU291cmNlTmFtZTsKICAgICAgICAgICAgJFNvdXJjZU5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlNvdXJjZSc7CiAgICAgICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICAgICAgcHVzaCBATGlua1RvZ2V0aGVyVHlwZUxpc3QsIFwlU291cmNlTmFtZTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgIG15ICVTb3VyY2VOYW1lOwogICAgICAgICRTb3VyY2VOYW1le0tleX0gICA9ICRQb3NzaWJsZVR5cGUgLiAnOjpTb3VyY2UnOwogICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICBwdXNoIEBTZWxlY3RhYmxlVHlwZXNMaXN0LCBcJVNvdXJjZU5hbWU7CgogICAgICAgIG5leHQgUE9TU0lCTEVUWVBFIGlmICEkVHlwZXtQb2ludGVkfTsKCiAgICAgICAgIyBjcmVhdGUgdGhlIHRhcmdldCBuYW1lCiAgICAgICAgbXkgJVRhcmdldE5hbWU7CiAgICAgICAgJFRhcmdldE5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlRhcmdldCc7CiAgICAgICAgJFRhcmdldE5hbWV7VmFsdWV9ID0gJFR5cGV7VGFyZ2V0TmFtZX07CgogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlVGFyZ2V0TmFtZTsKICAgIH0KICAgIGNvbnRpbnVlIHsKCiAgICAgICAgIyBhZGQgYmxhbmsgbGluZQogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlQmxhbmtMaW5lOwoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgICMgcmVtb3ZlZCBsYXN0IChlbXB0eSkgZW50cnkKICAgIHBvcCBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKCiAgICAjIGFkZCBibGFuayBsaW5lcyBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgbGlzdCBpZiBtb3JlIHRoZW4gdHdvIGxpbmt0eXBlcwogICAgaWYgKCAkQ291bnRlciA+IDIgKSB7CiAgICAgICAgdW5zaGlmdCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICAgICAgcHVzaCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBMaW5rVHlwZVN0cmcKICAgICRQYXJhbXtMaW5rVHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFNlbGVjdGFibGVUeXBlc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwogICAgJFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFxATGlua1RvZ2V0aGVyVHlwZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVG9nZXRoZXJMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwoKICAgICRQYXJhbXtMaW5rVG9nZXRoZXJZZXNOb09wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdZZXNOb09wdGlvbnMnKSwKICAgICAgICBOYW1lICAgICAgID0+ICdMaW5rVG9nZXRoZXInLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xpbmtUb2dldGhlcn0gfHwgMCwKICAgICk7CgogICAgIyByZW5kZXIgZHluYW1pYyBmaWVsZHMKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RGVmaW5pdGlvbn0gKSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntEZWZpbml0aW9ufXtEZWZpbml0aW9uUmVmfSApICYmICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9ICkgewoKICAgICAgICAjIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gc3dpdGNoIGJldHdlZW4gcGFnZXMgZm9yIHRoZSBlZGl0IG1hc2ssIHRvby4gS2VlcGluZyB0aGUgZmllbGRzIGluIHN5bmMKICAgICAgICAjICAgICAgIHdoaWxlIGVkaXRpbmcgbmVlZHMgYSBiaXQgbW9yZSBwcmVwYXJhdGlvbiB0aG91Z2gKICAgICAgICAjIFRodXMgZm9yIG5vdyBtYWtlIHN1cmUgdG8gc2hvdyBkeW5hbWljIGZpZWxkcyBvbmx5IG9uY2UsIGV2ZW4gaWYgcHJlc2VudCBvbiBtdWx0aXBsZSBwYWdlcy9zZWN0aW9ucwogICAgICAgIG15ICRGaWVsZHNTZWVuID0ge307CgogICAgICAgIGZvciBteSAkUGFnZSAoICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkU2VsZi0+e0RlZmluaXRpb259e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJzsKCiAgICAgICAgICAgICAgICAjIHdlZWQgb3V0IG11bHRpcGxlIG9jY3VyYW5jZXMgb2YgZHluYW1pYyBmaWVsZHMgLSBzZWUgY29tbWVudCBhYm92ZQogICAgICAgICAgICAgICAgJFNlY3Rpb24tPntDb250ZW50fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZWRERnMgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgICAgICAgID0+ICRGaWVsZHNTZWVuLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9IC49ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgID0+ICRTZWxmLT57RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRhYmxlICAgICAgPT4gMCwKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPIGFzayBpZiB0aGlzIHNob3VsZCBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiBcJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICMgRXJyb3JzICAgICAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICMgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIE9iamVjdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRTZWxmLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtQnVsaycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgpzdWIgX0Rpc2NhcmRGaWVsZHNTZWVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRlbnQ7CiAgICBteSAkUmVmID0gcmVmICRQYXJhbXtDb250ZW50fTsKCiAgICBpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICBteSBAQ2xlYW5lZEFycmF5OwoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoICRQYXJhbXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRSZWZFbGVtZW50ID0gcmVmICRFbGVtZW50OwoKICAgICAgICAgICAgaWYgKCAkUmVmRWxlbWVudCBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUmVmRWxlbWVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkRWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17Q29uZmlndXJlZERGc317ICRFbGVtZW50LT57REZ9IH0gfHwgJFBhcmFte1NlZW59eyAkRWxlbWVudC0+e0RGfSB9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRFbGVtZW50OwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcQENsZWFuZWRBcnJheTsKICAgIH0KCiAgICBlbHNpZiAoICRSZWYgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVDbGVhbmVkSGFzaDsKCiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICRQYXJhbXtDb250ZW50fS0+JSogKSB7CiAgICAgICAgICAgICRDbGVhbmVkSGFzaHskS2V5fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRQYXJhbXtDb250ZW50fXskS2V5fSwKICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcJUNsZWFuZWRIYXNoOwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRDb250ZW50ID0gJFBhcmFte0NvbnRlbnR9OwogICAgfQoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIENvbmZpZ0l0ZW1JRAogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBlcnJvciBzY3JlZW4KICAgIGlmICggISRBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnWW91IG5lZWQgJXMgcGVybWlzc2lvbnMhJywgJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgZm91bmQKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDb25maWdJdGVtRGVsZXRlJyApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvdWxkRGVsZXRlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ29uZmlnSXRlbSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBjb25maWcgaXRlbSBvdmVydmlldywgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvbklEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICMgb3V0cHV0IGNvbnRlbnQKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICk7CgogICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgIG15ICRPdXRwdXRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiBcJURhdGEgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBteSBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWdpdGVtIGlkIGFuZCBjbGFzcyBpZAogICAgbXkgJENvbmZpZ0l0ZW0gID0ge307CiAgICBteSAkRHVwbGljYXRlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRHVwbGljYXRlSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q2xhc3NJRH0gICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApICAgICAgfHwgMDsKCiAgICBteSAkSGFzQWNjZXNzOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IG5lZWRlZCBkYXRhCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAmJiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKSB7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICBteSAkVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAgICAgIyBUT0RPOiBDaGVjayBkdXBsaWNhdGlvbgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIHRvIGR1cGxpY2F0ZQogICAgICAgICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFjY2VzcyBmb3IgY29uZmlnIGl0ZW0KICAgICAgICAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICAjIHNldCBjb25maWcgaXRlbSBpZCBhbmQgbnVtYmVyCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ID0gJ05FVyc7CiAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICAgICAgID0gVHJhbnNsYXRhYmxlKCdOZXcnKTsKICAgIH0KICAgIGVsc2lmICggJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSApIHsKCiAgICAgICAgIyBzZXQgY29uZmlnIGl0ZW0gaWQgYW5kIG51bWJlcgogICAgICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICdORVcnOwogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSAgICAgICA9IFRyYW5zbGF0YWJsZSgnTmV3Jyk7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtLT57Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgdXNlciBoYXMgbm8gYWNjZXNzIHJpZ2h0cyBzaG93IGVycm9yIHBhZ2UKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVkaXQgdGhlIGNvbmZpZyBpdGVtIHdpdGggdGhlIG5ld2VzdCBjb25maWcgaXRlbSBkZWZpbml0aW9uIG9mIHRoZSByZWxldmFudCBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgYWJvcnQsIGlmIG5vIGRlZmluaXRpb24gaXMgZGVmaW5lZAogICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnLCAkQ29uZmlnSXRlbS0+e0NsYXNzfSApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBmb3JtIGlkCiAgICBteSAkRm9ybUNhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyk7CgogICAgJFNlbGYtPntGb3JtSUR9ID0gJEZvcm1DYWNoZU9iamVjdC0+UHJlcGFyZUZvcm1JRCgKICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICBteSAlR2V0UGFyYW07CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwogICAgbXkgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIGdldCBpbml0aWFsIHZhbHVlcyBmb3IgdGhlIGNvbmZpZ2l0ZW0KICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA/IFsgdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogXSA6IFtdOwoKICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lOwoKICAgICAgICAgICAgaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICAgICAgICAgICMgZ2V0IERhdGEgZnJvbSBkdXBsaWNhdGUgQ0kKICAgICAgICAgICAgICAgIGZvciBteSAkUGFyYW0gKHF3KE5hbWUgVmVyc2lvblN0cmluZyBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRDb25maWdJdGVtLT57JFBhcmFtfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU5hbWUgPSAkR2V0UGFyYW17TmFtZX0gLiAnIChDb3B5KSc7CgogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZGVsZXRlICRHZXRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbX0gPSAkQ29uZmlnSXRlbS0+eyRQYXJhbX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICBteSAkQWN0aXZlRmllbGRzID0gJEZvcm1DYWNoZU9iamVjdC0+R2V0Rm9ybURhdGEoCiAgICAgICAgICAgIEZvcm1JRCAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ0FjdGl2ZUR5bmFtaWNGaWVsZHMnLAogICAgICAgICkgLy8gW107CgogICAgICAgIGZvciBteSAkRmllbGROYW1lICggJEFjdGl2ZUZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggQHskRHluYW1pY0ZpZWxkTGlzdH0sICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskRmllbGROYW1lfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGdlbmVyYWwgZm9ybSBkYXRhCiAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbSApOwogICAgICAgIH0KCiAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIGNsYXNzCiAgICAgICAgJEdldFBhcmFte0NsYXNzSUR9ID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntSZWFkb25seX07CgogICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcGVyZm9ybSBBQ0xzIG9uIHZhbHVlcwogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBVcGRhdGFibGVGaWVsZHMgPSBxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbik7CiAgICBwdXNoIEBVcGRhdGFibGVGaWVsZHMsIGtleXMgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CgogICAgIyBjb252ZXJ0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGludG8gYSBzdHJ1Y3R1cmUgZm9yIEFDTHMKICAgIG15ICVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkfTsKCiAgICAgICAgJER5bmFtaWNGaWVsZEFDTFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQgfSA9ICREeW5hbWljRmllbGRWYWx1ZXN7JER5bmFtaWNGaWVsZH07CiAgICB9CiAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IFwlRHluYW1pY0ZpZWxkQUNMUGFyYW1ldGVyczsKCiAgICAjIGdldCB1cGxvYWQgY2FjaGUgb2JqZWN0CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgICMgYXR0YWNobWVudHMgb2YgZXhpc3RpbmcgY29uZmlnIGl0ZW0gbmVlZHMgdG8gYmUgbG9hZGVkIGluIHR3byBjYXNlczoKICAgICMgICAxLiBhbiBleGlzdGluZyBjb25maWcgaXRlbSBpcyBlZGl0ZWQgLSBubyBjbGFzcyBpZCBwcmVzZW50IGluIEdldFBhcmFtCiAgICAjICAgMi4gYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0gaXMgZHVwbGljYXRlZAogICAgaWYgKCAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICkgfHwgJER1cGxpY2F0ZUlEICkgewoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJER1cGxpY2F0ZUlEIHx8ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGNvcHkgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHRvIHVwbG9hZCBjYWNoZQogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZXhpc3RpbmcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRHVwbGljYXRlSUQgfHwgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxvZyBvYmplY3QKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnKTsKCiAgICBteSAkQXV0b3NlbGVjdCA9ICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCcpIHx8IHVuZGVmOwogICAgbXkgJEFDTFByZXNlbGVjdGlvbjsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQUNMOjpBQ0xQcmVzZWxlY3Rpb24nKSApIHsKCiAgICAgICAgIyBnZXQgY2FjaGVkIHByZXNlbGVjdGlvbiBydWxlcwogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbUFDTCcsCiAgICAgICAgICAgIEtleSAgPT4gJ1ByZXNlbGVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uICkgewogICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRXJyb3I7CiAgICBteSAkTmFtZUR1cGxpY2F0ZXM7CiAgICBteSAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2U7CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsaWRhdGlvblJlc3VsdDsKICAgIG15ICVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlczsKICAgIG15ICVEeW5hbWljRmllbGRWaXNpYmlsaXR5OwoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICROYW1lTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBtb2R1bGUgZXhpc3RzCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHVwbG9hZGVkIGF0dGFjaG1lbnQKICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgUGFyYW0gID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgICAgICk7CgogICAgICAgIGlmICglVXBsb2FkU3R1ZmYpIHsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEFsbFJlcXVpcmVkID0gMTsKCiAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICBmb3IgbXkgJFBhcmFtIChxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPnskUGFyYW19ID0gJEdldFBhcmFteyRQYXJhbX07CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbS0+eyRQYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkR2V0UGFyYW17RGVzY3JpcHRpb259IC8vPSAnJzsKCiAgICAgICAgIyBnZXQgbmFtZSBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkTmFtZU1vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntOYW1lfSA9ICRHZXRQYXJhbXtOYW1lfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57TmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB2ZXJzaW9uIHN0cmluZyBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkVmVyc2lvblN0cmluZ01vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSA9ICRHZXRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRDb25maWdJdGVtLT57TmFtZX0gKQogICAgICAgICAgICAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJOYW1lOiAkQ29uZmlnSXRlbS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSkiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE5hbWVEdXBsaWNhdGVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICRBbGxSZXF1aXJlZCA9IDA7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lICRDb25maWdJdGVtLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICROYW1lRHVwbGljYXRlc1N0cmluZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBjb25maWcgb3B0aW9uIGZvciB0aGUgbmFtZSByZWdleCBjaGVja3MKICAgICAgICBteSAkQ0lOYW1lUmVnZXhDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpDSU5hbWVSZWdleCIpOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBDSSBuYW1lIGlzIGdpdmVuIGFuZCBzaG91bGQgYmUgY2hlY2tlZCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uCiAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgJiYgJENJTmFtZVJlZ2V4Q29uZmlnICkgewoKICAgICAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgY2xhc3MgbmFtZQogICAgICAgICAgICBteSAkQ2xhc3NOYW1lID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH0gfHwgJyc7CgogICAgICAgICAgICAjIGdldCB0aGUgcmVnZXggZm9yIHRoaXMgY2xhc3MKICAgICAgICAgICAgbXkgJENJTmFtZVJlZ2V4ID0gJENJTmFtZVJlZ2V4Q29uZmlnLT57ICRDbGFzc05hbWUgLiAnOjonIC4gJ0NJTmFtZVJlZ2V4JyB9IHx8ICcnOwoKICAgICAgICAgICAgIyBpZiBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSBDSSBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KICAgICAgICAgICAgaWYgKCAkQ0lOYW1lUmVnZXggJiYgJENvbmZpZ0l0ZW0tPntOYW1lfSAhfiBteyAkQ0lOYW1lUmVnZXggfXhtcyApIHsKCiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGlzIGNsYXNzCiAgICAgICAgICAgICAgICAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UgPSAkQ0lOYW1lUmVnZXhDb25maWctPnsgJENsYXNzTmFtZSAuICc6OicgLiAnQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UnIH0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGR5bmFtaWMgZmllbGQgZGF0YSBpbnRvIERGTmFtZSA9PiBERk5hbWUgcGFpcgogICAgICAgIG15ICVEeW5hbWljRmllbGRBY2wgPSBtYXAgeyAkXy0+e05hbWV9ID0+ICRfLT57TmFtZX0gfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CgogICAgICAgICMgY2FsbCB0aWNrZXQgQUNMcyBmb3IgRHluYW1pY0ZpZWxkcyB0byBjaGVjayBmaWVsZCB2aXNpYmlsaXR5CiAgICAgICAgbXkgJEFDTFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdGb3JtJywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRBY2wsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCRBQ0xSZXN1bHQpIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZpc2liaWxpdHkgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXy0+e05hbWV9ID0+IDAgfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlRHluYW1pY0ZpZWxkVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfLT57TmFtZX0gPT4gMSB9ICREeW5hbWljRmllbGRMaXN0LT5AKjsKICAgICAgICB9CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoICREeW5hbWljRmllbGRMaXN0LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgaWYgKCAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWx0ZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgICMgcGVyZm9ybSB2YWxpZGF0aW9uCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0hIiksCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcm9wYWdhdGUgdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgRXJyb3IgdmFyaWFibGUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGZyb250ZW5kCiAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICAgICAgICAgICAgICAgICAgICAgICAgPSAnIFNlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWxpZGF0aW9uUmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkQWxsUmVxdWlyZWQgPSAlRXJyb3IgPyAwIDogMTsKCiAgICAgICAgIyBzYXZlIHZlcnNpb24gdG8gZGF0YWJhc2UKICAgICAgICBpZiAoJEFsbFJlcXVpcmVkKSB7CgogICAgICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc0RhdGEoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBidWlsZCBhIGxvb2t1cCBsb29rdXAgaGFzaCBvZiB0aGUgbmV3IGF0dGFjaG1lbnRzCiAgICAgICAgICAgIG15ICVOZXdBdHRhY2htZW50OwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgICAgIG15ICRDb250ZW50SUQgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL2ltYWdlL2kgKQogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElESFRNTFF1b3RlID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgd29ya2Fyb3VuZCBmb3IgbGluayBlbmNvZGUgb2YgcmljaCB0ZXh0IGVkaXRvciwgc2VlIGJ1ZyM1MDUzCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEZXNjcmlwdGlvbn0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgYXR0YWNobWVudCBpZiBub3QgbGlua2VkIGluIGJvZHkKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0Rlc2NyaXB0aW9ufSAhfiAvKFxRJENvbnRlbnRJREhUTUxRdW90ZVxFfFxRJENvbnRlbnRJRFxFKS9pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZSArIGNvbnRlbnQgdHlwZQogICAgICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgIyBzdG9yZSBhbGwgb2YgdGhlIG5ldyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdmVyaWZ5IGh0bWwgZG9jdW1lbnQKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIGV4aXN0aW5nIENvbmZpZ0l0ZW1zIGNvbXBhcmUgd2l0aCB0aGUgY3VycmVudCBkYXRhCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICAgICBGSUxFTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBleGlzdGluZyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgICAgICAgICAgIyAobm8gY29udGVudCBpZCwgYXMgZXhpc3RpbmcgYXR0YWNobWVudHMgZG9uJ3QgaGF2ZSBpdCkKICAgICAgICAgICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57RmlsZXNpemV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnQgaXMgYWxyZWFkeSBleGlzdGluZywgd2UgY2FuIGRlbGV0ZSBpdCBmcm9tIHRoZSBuZXcgYXR0YWNobWVudCBoYXNoCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTmV3QXR0YWNobWVudHskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGlzdGluZyBhdHRhY2htZW50IGlzIG5vIGxvbmdlciBpbiBuZXcgYXR0YWNobWVudHMgaGFzaAogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWxldGUgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3NmdWwgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCB2ZXJzaW9uIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nVmVyc2lvbkF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgRklMRU5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChARXhpc3RpbmdWZXJzaW9uQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemUgKyBjb250ZW50IHR5cGUKICAgICAgICAgICAgICAgICAgICAjIChubyBjb250ZW50IGlkLCBhcyBleGlzdGluZyBhdHRhY2htZW50cyBkb24ndCBoYXZlIGl0KQogICAgICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgICAgICMgYXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2gKICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld0F0dGFjaG1lbnR7JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudAogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2Vzc2Z1bCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRPRE86IGJldHRlciBhbGlnbiB3aXRoIHRoZSBpbml0aWFsIEVkaXRGaWVsZFZhbHVlR2V0PwogICAgICAgICAgICAjIFRPRE86IFZpc2liaWxpdHkKICAgICAgICAgICAgIyBwcmVwYXJlIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57UmVhZG9ubHl9OwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IGVxICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHRlbXBvcmFyeSBudW1iZXIgIyBUT0RPOiBjaGVjaywgd2hldGhlciBzZXR0aW5nIG5ldyBhcyBudW1iZXIgaXMgbmVjZXNzYXJ5IGluIHRoZSBmaXJzdCBwbGFjZQogICAgICAgICAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKCiAgICAgICAgICAgICAgICAgICAgIyBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LCAjIFRPRE86IHRoaXMgaXMgbm90IHVzZWQgeWV0CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZmV0Y2ggdXBkYXRlZCBjb25maWcgaXRlbSBkYXRhIHRvIHNlY3VyZSB2ZXJzaW9uIGlkIGJlaW5nIHByZXNlbnQKICAgICAgICAgICAgbXkgJE5ld0NvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgd3JpdGUgdGhlIG5ldyBhdHRhY2htZW50cwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCB2YWx1ZXMgJU5ld0F0dGFjaG1lbnQgKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudAogICAgICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSAmJiAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSBlcSAnaW5saW5lJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkTmV3Q29uZmlnSXRlbURhdGEtPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYWxzbyB3cml0ZSBhdHRhY2htZW50cyB0byBsYXN0IHZlcnNpb24gaWYgaXQgZGlmZmVycyBiZWNhdXNlIHdlIGRlbGV0ZWQgdGhlbSBwcmV2aW91c2x5CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0gJiYgJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9ICE9ICROZXdDb25maWdJdGVtRGF0YS0+e1ZlcnNpb25JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIGFsbCBmb3JtIGRhdGEKICAgICAgICAgICAgJEZvcm1DYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlKCBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9ICk7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIHpvb20gbWFzawogICAgICAgICAgICBteSAkU2NyZWVuVHlwZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTY3JlZW5UeXBlJyApIHx8IDA7CiAgICAgICAgICAgIGlmICgkU2NyZWVuVHlwZSkgewoKICAgICAgICAgICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0iOwoKICAgICAgICAgICAgICAgICMgcmV0dXJuIHRvIG92ZXJ2aWV3IG9yIHNlYXJjaCByZXN1bHRzIGluc3RlYWQgaWYgY2FsbGVkIER1cGxpY2F0ZSBmcm9tIHJvdyBhY3Rpb24KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1Nlc3Npb259e0xhc3RTY3JlZW5WaWV3fSBlcSAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW0nCiAgICAgICAgICAgICAgICAgICAgfHwgJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld30gPX4gbXtcQSBBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbSg/OiBTZWFyY2gpPzt9bXN4CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRVUkwgPSAkU2VsZi0+e1Nlc3Npb259e0xhc3RTY3JlZW5WaWV3fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgICAgICAgICBVUkwgPT4gJFVSTCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWFVwZGF0ZScgKSB7CiAgICAgICAgbXkgJEVsZW1lbnRDaGFuZ2VkICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKICAgICAgICBteSAlQ2hhbmdlZEVsZW1lbnRzID0gJEVsZW1lbnRDaGFuZ2VkID8gKCAkRWxlbWVudENoYW5nZWQgPT4gMSApIDogKCk7CiAgICAgICAgbXkgJExvb3BQcm90ZWN0aW9uICA9IDEwMDsKCiAgICAgICAgIyBnZXQgdmFsdWVzIGFuZCB2aXNpYmlsaXR5IG9mIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJUR5bkZpZWxkU3RhdGVzID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5HZXRGaWVsZFN0YXRlcygKICAgICAgICAgICAgQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9PiAkQ29uZmlnSXRlbU9iamVjdCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgIENoYW5nZWRFbGVtZW50cyAgICAgICAgICAgPT4gXCVDaGFuZ2VkRWxlbWVudHMsICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgdG8gcmVkdWNlIEFDTCBldmFsdWF0aW9uCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IHslR2V0UGFyYW19LAogICAgICAgICAgICBBdXRvc2VsZWN0ICAgICAgICAgICAgICAgID0+ICRBdXRvc2VsZWN0LAogICAgICAgICAgICBBQ0xQcmVzZWxlY3Rpb24gICAgICAgICAgID0+ICRBQ0xQcmVzZWxlY3Rpb24sCiAgICAgICAgICAgIExvb3BQcm90ZWN0aW9uICAgICAgICAgICAgPT4gXCRMb29wUHJvdGVjdGlvbiwKICAgICAgICApOwoKICAgICAgICAjIHN0b3JlIG5ldyB2YWx1ZXMKICAgICAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IHsKICAgICAgICAgICAgJXsgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gfSwKICAgICAgICAgICAgJXsgJER5bkZpZWxkU3RhdGVze05ld1ZhbHVlc30gfSwKICAgICAgICB9OwoKICAgICAgICAjIHVwZGF0ZSBEeW5hbWljIEZpZWxkcyBQb3NzaWJsZSBWYWx1ZXMgdmlhIEFKQVgKICAgICAgICBteSBARHluYW1pY0ZpZWxkQUpBWDsKCiAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkTmFtZSAoIGtleXMgJXsgJER5bkZpZWxkU3RhdGVze0ZpZWxkc30gfSApIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX07CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ICYmIHJlZiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkaSAoIDAgLi4gJCN7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgPyAoICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifVskaV0gLy8gJycgKQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9WyRpXSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICROYW1lIC4gJ18nIC4gJGksCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn1bJGldLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgdGVtcGxhdGUgdmFsdWUgZm9yIGtlZXBpbmcgdGVtcGxhdGVzIGluIGxpbmUgd2l0aCBBQ0xzCiAgICAgICAgICAgICAgICBpZiAoICEkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17Tm90QUNMUmVkdWNpYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9IC8vICcnIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX1RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgID8gKCAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0gLy8gJycgKQogICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifSwKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgfHwgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSwKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNldEZpZWxkICggdmFsdWVzICREeW5GaWVsZFN0YXRlc3tTZXRzfS0+JSogKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkU2V0RmllbGQtPntEeW5hbWljRmllbGRDb25maWd9OwoKICAgICAgICAgICAgIyB0aGUgZnJvbnRlbmQgbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgaW5uZXIgZmllbGQgaW5jbHVkaW5nIGl0cyBpbmRleCBvciB0aGUgJ19UZW1wbGF0ZScgc3VmZml4CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGcm9udGVuZE5hbWUgKCBrZXlzICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiByZWYgJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkaSAoIDAgLi4gJCN7ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17Tm90QUNMUmVkdWNpYmxlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX1bJGldIC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX1bJGldIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJEZyb250ZW5kTmFtZSAuICJfJGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGVtcGxhdGUgdmFsdWUgZm9yIGtlZXBpbmcgdGVtcGxhdGVzIGluIGxpbmUgd2l0aCBBQ0xzCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9IC8vICcnIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX1RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICA/ICggJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRnJvbnRlbmROYW1lLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9ICkgKSB7CiAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Jlc3RyaWN0aW9uc19WaXNpYmlsaXR5JywKICAgICAgICAgICAgICAgIERhdGEgPT4gJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgIEBEeW5hbWljRmllbGRBSkFYLAogICAgICAgICAgICBdLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSAkTG9vcFByb3RlY3Rpb24gPSAxMDA7CgogICAgICAgICMgZ2V0IHZhbHVlcyBhbmQgdmlzaWJpbGl0eSBvZiBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5GaWVsZFN0YXRlcyA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1PYmplY3QsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgICAgICA9PiB7JUdldFBhcmFtfSwKICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAkQUNMUHJlc2VsZWN0aW9uLAogICAgICAgICAgICBMb29wUHJvdGVjdGlvbiAgICAgICAgICAgID0+IFwkTG9vcFByb3RlY3Rpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9yZSBuZXcgdmFsdWVzCiAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gPSB7CiAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH0sCiAgICAgICAgfTsKCiAgICAgICAgJUR5bmFtaWNGaWVsZFZpc2liaWxpdHkgICAgID0gJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9LT4lKjsKICAgICAgICAlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXMgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskX317UG9zc2libGVWYWx1ZXN9IH0ga2V5cyAkRHluRmllbGRTdGF0ZXN7RmllbGRzfS0+JSo7CiAgICB9CgogICAgbXkgJE5hbWVFZGl0YWJsZSAgID0gJE5hbWVNb2R1bGUgPyAwIDogMTsKICAgIG15ICRSb3dOYW1lSW52YWxpZCA9ICRDb25maWdJdGVtLT57TmFtZX0KCiAgICAgICAgIyBJZiBhIG5hbWUgZXhpc3RzIHRoZW4gbWFyayByZWdleCBhbmQgZHVwbGljYXRlIGVycm9ycy4KICAgICAgICA/ICggKCAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UgfHwgSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSA/ICdTZXJ2ZXJFcnJvcicgOiB1bmRlZiApCgogICAgICAgICMgSWYgdGhlIG5hbWUgZG9lcyBub3QgZXhpc3QgYnV0IHNob3VsZCBleGlzdCB0aGVuIG1hcmsgaXQuCiAgICAgICAgOiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyAmJiAkTmFtZUVkaXRhYmxlICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKTsKCiAgICAjIG91dHB1dCBuYW1lIGJsb2NrCiAgICBpZiAoICRDb25maWdJdGVtLT57TmFtZX0gfHwgJE5hbWVFZGl0YWJsZSApIHsKCiAgICAgICAgIyBvdXRwdXQgbmFtZSBibG9jawogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dOYW1lJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICBSb3dOYW1lSW52YWxpZCA9PiAkUm93TmFtZUludmFsaWQsCiAgICAgICAgICAgICAgICBSZWFkb25seSAgICAgICA9PiAhJE5hbWVFZGl0YWJsZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBzcGVjaWZpYyBlcnJvcnMKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICMgYnVpbGQgYXJyYXkgd2l0aCBDSS1OdW1iZXJzCiAgICAgICAgbXkgQE5hbWVEdXBsaWNhdGVzQnlDSU51bWJlcjsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7JE5hbWVEdXBsaWNhdGVzfSApIHsKCiAgICAgICAgICAgICMgbG9va3VwIHRoZSBDSSBudW1iZXIKICAgICAgICAgICAgbXkgJENJTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQE5hbWVEdXBsaWNhdGVzQnlDSU51bWJlciwgJENJTnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgbXkgJER1cGxpY2F0ZVN0cmluZyA9IGpvaW4gJywgJywgQE5hbWVEdXBsaWNhdGVzQnlDSU51bWJlcjsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIlJlbmRlcmluZyBibG9jayBmb3IgZHVwbGljYXRlcyAoQ0ktTnVtYmVyczogJER1cGxpY2F0ZVN0cmluZykgZXJyb3IgbWVzc2FnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZUVycm9yRHVwbGljYXRlcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRHVwbGljYXRlcyA9PiAkRHVwbGljYXRlU3RyaW5nLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvclJlZ0V4JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBSZWdFeEVycm9yTWVzc2FnZSA9PiAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICgkUm93TmFtZUludmFsaWQpIHsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJlbmRlcmluZyBkZWZhdWx0IGVycm9yIGJsb2NrIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dOYW1lRXJyb3JEZWZhdWx0JywKICAgICAgICApOwogICAgfQoKICAgIG15ICRWZXJzaW9uU3RyaW5nRWRpdGFibGUgICA9ICRWZXJzaW9uU3RyaW5nTW9kdWxlID8gMCA6IDE7CiAgICBteSAkVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXMgPSBbXTsKICAgIG15ICRSb3dWZXJzaW9uU3RyaW5nSW52YWxpZCA9ICRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30KCiAgICAgICAgIyBJZiBhIHZlcnNpb24gc3RyaW5nIGV4aXN0cyB0aGVuIG1hcmsgZHVwbGljYXRlIGVycm9ycy4KICAgICAgICA/ICggSXNBcnJheVJlZldpdGhEYXRhKCRWZXJzaW9uU3RyaW5nRHVwbGljYXRlcykgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKQoKICAgICAgICAjIElmIHRoZSB2ZXJzaW9uIHN0cmluZyBkb2VzIG5vdCBleGlzdCBidXQgc2hvdWxkIGV4aXN0IHRoZW4gbWFyayBpdC4KICAgICAgICA6ICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICYmICRWZXJzaW9uU3RyaW5nRWRpdGFibGUgKSA/ICdTZXJ2ZXJFcnJvcicgOiB1bmRlZiApOwoKICAgICMgb3V0cHV0IHZlcnNpb24gc3RyaW5nIGJsb2NrCiAgICBpZiAoJFZlcnNpb25TdHJpbmdFZGl0YWJsZSkgewoKICAgICAgICAjIG91dHB1dCB2ZXJzaW9uIHN0cmluZyBibG9jawogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICBSb3dWZXJzaW9uU3RyaW5nSW52YWxpZCA9PiAkUm93VmVyc2lvblN0cmluZ0ludmFsaWQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgc3BlY2lmaWMgZXJyb3JzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXMpICkgewoKICAgICAgICAjIGJ1aWxkIGFycmF5IHdpdGggQ0ktTnVtYmVycwogICAgICAgIG15IEBWZXJzaW9uU3RyaW5nRHVwbGljYXRlc0J5Q0lOdW1iZXI7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyRWZXJzaW9uU3RyaW5nRHVwbGljYXRlc30gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgQ0kgbnVtYmVyCiAgICAgICAgICAgIG15ICRDSU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBWZXJzaW9uU3RyaW5nRHVwbGljYXRlc0J5Q0lOdW1iZXIsICRDSU51bWJlcjsKICAgICAgICB9CgogICAgICAgIG15ICREdXBsaWNhdGVTdHJpbmcgPSBqb2luICcsICcsIEBWZXJzaW9uU3RyaW5nRHVwbGljYXRlc0J5Q0lOdW1iZXI7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJSZW5kZXJpbmcgYmxvY2sgZm9yIGR1cGxpY2F0ZXMgKENJLU51bWJlcnM6ICREdXBsaWNhdGVTdHJpbmcpIGVycm9yIG1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER1cGxpY2F0ZXMgPT4gJER1cGxpY2F0ZVN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCRSb3dWZXJzaW9uU3RyaW5nSW52YWxpZCkgewogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUmVuZGVyaW5nIGRlZmF1bHQgZXJyb3IgYmxvY2siLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd1ZlcnNpb25TdHJpbmdFcnJvckRlZmF1bHQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgb3V0cHV0IGRlcGxveW1lbnQgc3RhdGUgaW52YWxpZCBibG9jawogICAgbXkgJFJvd0RlcGxTdGF0ZUludmFsaWQgPSAnJzsKICAgIGlmICggISRDb25maWdJdGVtLT57RGVwbFN0YXRlSUR9ICYmICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CiAgICAgICAgJFJvd0RlcGxTdGF0ZUludmFsaWQgPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdlbmVyYXRlIERlcGxTdGF0ZU9wdGlvblN0cmcKICAgIG15ICREZXBsU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnRGVwbFN0YXRlSUQnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnRm9ybVVwZGF0ZSBWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUnIC4gJFJvd0RlcGxTdGF0ZUludmFsaWQsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtEZXBsU3RhdGVJRH0sCiAgICApOwoKICAgICMgb3V0cHV0IGRlcGxveW1lbnQgc3RhdGUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1Jvd0RlcGxTdGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIERlcGxTdGF0ZU9wdGlvblN0cmcgPT4gJERlcGxTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAnb3BlcmF0aW9uYWwnLCAnaW5jaWRlbnQnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBvdXRwdXQgaW5jaWRlbnQgc3RhdGUgaW52YWxpZCBibG9jawogICAgbXkgJFJvd0luY2lTdGF0ZUludmFsaWQgPSAnJzsKICAgIGlmICggISRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9ICYmICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CiAgICAgICAgJFJvd0luY2lTdGF0ZUludmFsaWQgPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdlbmVyYXRlIEluY2lTdGF0ZU9wdGlvblN0cmcKICAgIG15ICRJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSUQnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnRm9ybVVwZGF0ZSBWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUnIC4gJFJvd0luY2lTdGF0ZUludmFsaWQsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtJbmNpU3RhdGVJRH0sCiAgICApOwoKICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdSb3dJbmNpU3RhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2VuZXJhdGUgYmFzZSB1cmwKICAgIG15ICRVUkwgPSAiQWN0aW9uPVBpY3R1cmVVcGxvYWQ7Rm9ybUlEPSRTZWxmLT57Rm9ybUlEfTtDb250ZW50SUQ9IjsKCiAgICAjIHJlcGxhY2UgbGlua3MgdG8gaW5saW5lIGltYWdlcyBpbiBodG1sIGNvbnRlbnQKICAgIG15IEBJbmxpbmVBdHRhY2htZW50TGlzdDsKICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewogICAgICAgIEBJbmxpbmVBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICBteSAlSW5saW5lQXR0YWNobWVudHM7CiAgICBGSUxFTkFNRToKICAgIGZvciBteSAkRmlsZW5hbWUgKEBJbmxpbmVBdHRhY2htZW50TGlzdCkgewogICAgICAgIG15ICRGaWxlRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwoKICAgICAgICAkSW5saW5lQXR0YWNobWVudHN7ICRGaWxlRGF0YS0+e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9IH0gPSAkRmlsZURhdGE7CiAgICAgICAgJElubGluZUF0dGFjaG1lbnRzeyAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfSB9LT57Q29udGVudElEfSA9ICRGaWxlRGF0YS0+e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9OwoKICAgICAgICAjIGFkZCB1cGxvYWRlZCBmaWxlIHRvIHVwbG9hZCBjYWNoZQogICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZURhdGEtPntGaWxlbmFtZX0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWxlRGF0YS0+e0NvbnRlbnR9LAogICAgICAgICAgICBDb250ZW50SUQgICA9PiAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEZpbGVEYXRhLT57Q29udGVudFR5cGV9LAoKICAgICAgICAgICAgIyBjdXJyZW50bHksIG9ubHkgaW5saW5lIGltYWdlcyBmb3IgZGVzY3JpcHRpb24gYXJlIHN0b3JlZCBhdCB0aGUgY29uZmlnaXRlbSB2ZXJzaW9uCiAgICAgICAgICAgICMgICBzbyB3ZSBjYW4gcmVseSB1cG9uIGRlYWxpbmcgd2l0aCBpbmxpbmUgaW1hZ2VzIGhlcmUKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgbXkgJEZpZWxkQ29udGVudCA9ICRDb25maWdJdGVtLT57RGVzY3JpcHRpb259OwogICAgbXkgJURhdGEgICAgICAgICA9ICgKICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50IC8vICcnLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9InV0Zi04IicsCiAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICApOwoKICAgICMgcmVmb3JtYXQgcmljaCB0ZXh0IGRvY3VtZW50IHRvIGhhdmUgY29ycmVjdCBjaGFyc2V0IGFuZCBsaW5rcyB0bwogICAgIyBpbmxpbmUgZG9jdW1lbnRzCiAgICAlRGF0YSA9ICRMYXlvdXRPYmplY3QtPlJpY2hUZXh0RG9jdW1lbnRTZXJ2ZSgKICAgICAgICBEYXRhICAgICAgICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFVSTCAgICAgICAgICAgICAgICA9PiAkVVJMLAogICAgICAgIEF0dGFjaG1lbnRzICAgICAgICA9PiBcJUlubGluZUF0dGFjaG1lbnRzLAogICAgICAgIExvYWRFeHRlcm5hbEltYWdlcyA9PiAxLAogICAgKTsKCiAgICAkRmllbGRDb250ZW50ID0gJERhdGF7Q29udGVudH07CgogICAgIyByZW1vdmUgYWN0aXZlIGh0bWwgY29udGVudCAoc2NyaXB0cywgYXBwbGV0cywgZXRjLi4uKQogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKICAgIG15ICVTYWZlQ29udGVudCAgICAgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgU3RyaW5nICAgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgTm9JbnRTcmNMb2FkID0+IDAsCiAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICApOwoKICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Vzc2FyeQogICAgaWYgKCAkU2FmZUNvbnRlbnR7UmVwbGFjZX0gKSB7CiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgfQoKICAgICMgZGV0ZWN0IGFsbCBwbGFpbiB0ZXh0IGxpbmtzIGFuZCBwdXQgdGhlbSBpbnRvIGFuIEhUTUwgPGE+IHRhZwogICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICk7CgogICAgIyBzZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncwogICAgIyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCBhZ2FpbgogICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICBTdHJpbmcgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICk7CgogICAgIyBlc2NhcGUgc2luZ2xlIHF1b3RlcwogICAgJEZpZWxkQ29udGVudCA9fiBzLycvJiMzOTsvZzsKCiAgICAjIHJlbmRlciBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZEhUTUw7CiAgICBteSAlR3JvdXBMb29rdXA7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9ICkgJiYgJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc30gKSB7CgogICAgICAgICMgVE9ETzogbG9vayB3aGF0IHRoaXMgd2FzL2lzIGFib3V0CiAgICAgICAgIyAgICAgICAgJFNlbGYtPntDdXN0b21lclNlYXJjaEl0ZW1JRHN9ID0gW107CgogICAgICAgICMgVE9ETzogSXQgd291bGQgYmUgbmljZSB0byBzd2l0Y2ggYmV0d2VlbiBwYWdlcyBmb3IgdGhlIGVkaXQgbWFzaywgdG9vLiBLZWVwaW5nIHRoZSBmaWVsZHMgaW4gc3luYwogICAgICAgICMgICAgICAgd2hpbGUgZWRpdGluZyBuZWVkcyBhIGJpdCBtb3JlIHByZXBhcmF0aW9uIHRob3VnaAogICAgICAgICMgVGh1cyBmb3Igbm93IG1ha2Ugc3VyZSB0byBzaG93IGR5bmFtaWMgZmllbGRzIG9ubHkgb25jZSwgZXZlbiBpZiBwcmVzZW50IG9uIG11bHRpcGxlIHBhZ2VzL3NlY3Rpb25zCiAgICAgICAgbXkgJEZpZWxkc1NlZW4gPSB7fTsKICAgICAgICBteSAkU2hvd0Rlc2NyaXB0aW9uOwogICAgICAgIG15IEBQYWdlSFRNTDsKICAgICAgICBteSAkU2VjdGlvbkhlYWRlclRlbXBsYXRlID0gJzxkaXYgY2xhc3M9IlJvdyBSb3dfU2VjdGlvbkhlYWRlciI+PGgzPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvaDM+PC9kaXY+JzsKCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CgogICAgICAgICAgICAjIEludGVyZmFjZXMgaXMgb3B0aW9uYWwsIGVmZmVjdGl2ZWx5IGRlZmF1bHQgdG8gWyAnQWdlbnQnIF0KICAgICAgICAgICAgaWYgKCAkUGFnZS0+e0ludGVyZmFjZXN9ICkgewogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQWdlbnQnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntHcm91cHN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25Vc2VyR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ3JhbnQgYWNjZXNzIHRvIHRoZSBwYWdlIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJEdyb3VwTG9va3VweyRffSB9ICRQYWdlLT57R3JvdXBzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRQYWdlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBpZiAoICRTZWN0aW9uLT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTaG93RGVzY3JpcHRpb24gPSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWN0aW9uLT57VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgd2VlZCBvdXQgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgZHluYW1pYyBmaWVsZHMgLSBzZWUgY29tbWVudCBhYm92ZQogICAgICAgICAgICAgICAgJFNlY3Rpb24tPntDb250ZW50fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJEZpZWxkc1NlZW4sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZG8gbm90IHByb2NlZWQgaWYgY29udGVudCBpcyBlbXB0eQogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKjsKCiAgICAgICAgICAgICAgICBteSAkSFRNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgICAgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgICAgICAgICAgICAgVXBkYXRhYmxlRmllbGRzICAgICAgPT4gXEBVcGRhdGFibGVGaWVsZHMsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkVmFsdWVzICAgPT4gJEdldFBhcmFte0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gXCVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgICAgICAgICBFcnJvcnMgICAgICAgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZFZhbGlkYXRpb25SZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIE9iamVjdCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LT4lKiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRIVE1MID1+IC9cdy87CgogICAgICAgICAgICAgICAgbXkgKCRTZWN0aW9uSGVhZGVyKSA9IGdyZXAgeyAkXy0+e0hlYWRlcn0gfSAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKjsKICAgICAgICAgICAgICAgIGlmICgkU2VjdGlvbkhlYWRlcikgewogICAgICAgICAgICAgICAgICAgICRQYWdlRHluYW1pY0ZpZWxkSFRNTCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRTZWN0aW9uSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFNlY3Rpb25IZWFkZXItPntIZWFkZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFBhZ2VEeW5hbWljRmllbGRIVE1MIC49ICRIVE1MOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzICRQYWdlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgICAgIHB1c2ggQFBhZ2VIVE1MLCB7CiAgICAgICAgICAgICAgICBIVE1MID0+ICRQYWdlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhZ2UtPntOYW1lfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15IEBBY3RpdmVEeW5hbWljRmllbGRzID0gKCBrZXlzICRGaWVsZHNTZWVuLT4lKiApOwoKICAgICAgICAjIHN0b3JlIHRoZSBhY3RpdmUgZHluYW1pYyBmaWVsZHMsIHRvIG9ubHkgdmFsaWRhdGUgdGhvc2UKICAgICAgICAkRm9ybUNhY2hlT2JqZWN0LT5TZXRGb3JtRGF0YSgKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnQWN0aXZlRHluYW1pY0ZpZWxkcycsCiAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiBcQEFjdGl2ZUR5bmFtaWNGaWVsZHMsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VIVE1MID4gMSApIHsKICAgICAgICAgICAgbXkgJEhlYWRlclRlbXBsYXRlID0KICAgICAgICAgICAgICAgICc8c3VtbWFyeT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfUGFnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICAgICAgPGhyLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3N1bW1hcnk+JzsKCiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VIVE1MKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAnPGRldGFpbHMgY2xhc3M9IlBhZ2VDb250ZW50Ij4nOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRIZWFkZXJUZW1wbGF0ZSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhZ2UtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRQYWdlLT57SFRNTH07CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAnPC9kZXRhaWxzPic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkU2hvd0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAnPGRldGFpbHMgY2xhc3M9IlBhZ2VDb250ZW50Ij4nOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRIZWFkZXJUZW1wbGF0ZSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoQFBhZ2VIVE1MKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRQYWdlSFRNTFswXXtIVE1MfTsKICAgICAgICB9CgogICAgICAgIGlmICgkU2hvd0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUm93RGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJEZpZWxkQ29udGVudCAvLyAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgIG15IEBBbGxBdHRhY2htZW50c0xpc3QgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgKTsKCiAgICAjIGV4Y2x1ZGUgaW5saW5lIGF0dGFjaG1lbnRzIGFzIHRoZXkgYXJlIGhhbmRsZWQgc2VwYXJhdGVseQogICAgJFBhcmFte0F0dGFjaG1lbnRMaXN0fSA9IFsgZ3JlcCB7ICRfLT57RGlzcG9zaXRpb259IG5lICdpbmxpbmUnIH0gQEFsbEF0dGFjaG1lbnRzTGlzdCBdOwoKICAgICMgVE9ETyBtYXliZSByZXN0cmljdCB0aGlzIHRvIG9ubHkgaWYgZGYgcmljaHRleHQgYXJlIHRvIGJlIGRpc3BsYXllZAogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvcgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyB1c2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgJFBhcmFte1JpY2hUZXh0SGVpZ2h0fSA9ICRTZWxmLT57Q29uZmlnfXtSaWNoVGV4dEhlaWdodH0gfHwgMDsKICAgICAgICAkUGFyYW17UmljaFRleHRXaWR0aH0gID0gJFNlbGYtPntDb25maWd9e1JpY2hUZXh0V2lkdGh9ICB8fCAwOwoKICAgICAgICAjIHNldCB1cCByaWNoIHRleHQgZWRpdG9yCiAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICYmICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApIHx8ICREdXBsaWNhdGVJRCApIHsKCiAgICAgICAgIyBvdXRwdXQgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnRTbWFsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnRW5kU21hbGwnICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0VkaXQnKSwKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTbWFsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiAkRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVJRCAgICAgID0+ICREdXBsaWNhdGVJRCwKICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBOZWNlc3Nhcnkgc3R1ZmYgZm9yIEFkZCBOZXcKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZGVsZXRlICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gaWYgISRIYXNBY2Nlc3M7CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIENsYXNzT3B0aW9uU3RyZwogICAgICAgIG15ICRDbGFzc09wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2xhc3NJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdXMTAwcGMnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICAgICApOwoKICAgICAgICAjIEVuZCBOZWNlc3Nhcnkgc3R1ZmYgZm9yIEFkZCBOZXcKCiAgICAgICAgIyBvdXRwdXQgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnROb3JtYWwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0VuZE5vcm1hbCcgKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRWRpdCcpLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gJER5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlSUQgICAgICA9PiAkRHVwbGljYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9Cn0KCnN1YiBfRGlzY2FyZEZpZWxkc1NlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29udGVudDsKICAgIG15ICRSZWYgPSByZWYgJFBhcmFte0NvbnRlbnR9OwoKICAgIGlmICggJFJlZiBlcSAnQVJSQVknICkgewogICAgICAgIG15IEBDbGVhbmVkQXJyYXk7CgogICAgICAgIEVMRU1FTlQ6CiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJFBhcmFte0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFJlZkVsZW1lbnQgPSByZWYgJEVsZW1lbnQ7CgogICAgICAgICAgICBpZiAoICRSZWZFbGVtZW50IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRQYXJhbXtTZWVufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoICRSZWZFbGVtZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIGlmICggISRFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENsZWFuZWRBcnJheSwgJFNlbGYtPl9EaXNjYXJkRmllbGRzU2VlbigKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NlZW59eyAkRWxlbWVudC0+e0RGfSB9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRFbGVtZW50OwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcQENsZWFuZWRBcnJheTsKICAgIH0KCiAgICBlbHNpZiAoICRSZWYgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVDbGVhbmVkSGFzaDsKCiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICRQYXJhbXtDb250ZW50fS0+JSogKSB7CiAgICAgICAgICAgICRDbGVhbmVkSGFzaHskS2V5fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRQYXJhbXtDb250ZW50fXskS2V5fSwKICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcJUNsZWFuZWRIYXNoOwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRDb250ZW50ID0gJFBhcmFte0NvbnRlbnR9OwogICAgfQoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBhbmQgY2hlY2sgY29uZmlnIGl0ZW0gSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICkgdW5sZXNzICRDb25maWdJdGVtSUQ7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJyksCiAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgKSB1bmxlc3MgJEhhc0FjY2VzczsKCiAgICAjIERlZmluZSB0cmFuc2xhdGFibGUgaGlzdG9yeSBzdHJpbmdzLgogICAgbXkgJUhpc3RvcnlTdHJpbmdzID0gKAogICAgICAgICdDSUhpc3Rvcnk6OkNvbmZpZ0l0ZW1DcmVhdGUnICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6VmVyc2lvbkNyZWF0ZScgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05ldyB2ZXJzaW9uIChJRD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZXBsb3ltZW50U3RhdGVVcGRhdGUnID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpJbmNpZGVudFN0YXRlVXBkYXRlJyAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6Q29uZmlnSXRlbURlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0FkZCcgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0RlbGV0ZScgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZWZpbml0aW9uVXBkYXRlJyAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6Ok5hbWVVcGRhdGUnICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6OlZhbHVlVXBkYXRlJyAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIicpLAogICAgICAgICdDSUhpc3Rvcnk6OlZlcnNpb25EZWxldGUnICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uICVzIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpBdHRhY2htZW50QWRkJyAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRmlsZSAiJXMiIHVwbG9hZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6QXR0YWNobWVudERlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0ZpbGUgIiVzIiByZW1vdmVkJyksCiAgICApOwoKICAgICMgZ2V0IGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICMgZ2V0IGFsbCBlbnRyaWVzIGluIHRoZSBoaXN0b3J5IGZvciB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSAkTGluZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgc2hvd24gdXNlciBpbmZvCiAgICBteSBATmV3TGluZXMgPSBAeyRMaW5lc307CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXInKSBlcSAncmV2ZXJzZScgKSB7CiAgICAgICAgQE5ld0xpbmVzID0gcmV2ZXJzZSBAeyRMaW5lc307CiAgICB9CgogICAgbXkgJFZlcnNpb24gPSAwOwogICAgZm9yIG15ICREYXRhVG1wIChATmV3TGluZXMpIHsKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgJXskRGF0YVRtcH0sCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbiwKICAgICAgICApOwoKICAgICAgICAjIHRyaW0gdGhlIGNvbW1lbnQgdG8gb25seSBzaG93IHZlcnNpb24gbnVtYmVyCiAgICAgICAgaWYgKCAkRGF0YXtIaXN0b3J5VHlwZX0gZXEgJ1ZlcnNpb25DcmVhdGUnICkgewogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1xELy9nOwogICAgICAgICAgICAkRGF0YXtWZXJzaW9uSUR9ID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgICAgICRWZXJzaW9uID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdEZXBsb3ltZW50U3RhdGVVcGRhdGUnICkgewoKICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IG5hbWVzLCBmaXJzdCBzcGxpdCB0aGUgcmVhc3NlbWJsZQogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9CiAgICAgICAgICAgICAgICBqb2luICclJScsCiAgICAgICAgICAgICAgICBtYXAgeyAkRGVwbFN0YXRlTGlzdC0+eyRffSB8fCAnJyB9CiAgICAgICAgICAgICAgICBzcGxpdCBtLyUlLywgJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdJbmNpZGVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgbmFtZXMsIGZpcnN0IHNwbGl0IHRoZSByZWFzc2VtYmxlCiAgICAgICAgICAgICREYXRhe0NvbW1lbnR9ID0KICAgICAgICAgICAgICAgIGpvaW4gJyUlJywKICAgICAgICAgICAgICAgIG1hcCB7ICRJbmNpU3RhdGVMaXN0LT57JF99IHx8ICcnIH0KICAgICAgICAgICAgICAgIHNwbGl0IG0vJSUvLCAkRGF0YXtDb21tZW50fTsKICAgICAgICB9CgogICAgICAgICMgcmVwbGFjZSB0ZXh0CiAgICAgICAgaWYgKCAkRGF0YXtDb21tZW50fSApIHsKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPX4gc3sgXEEgJSUgfXt9eG1zZzsKICAgICAgICAgICAgbXkgQFZhbHVlcyA9IHNwbGl0IC8lJS8sICREYXRhe0NvbW1lbnR9OwoKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkSGlzdG9yeVN0cmluZ3N7ICdDSUhpc3Rvcnk6OicgLiAkRGF0YXtIaXN0b3J5VHlwZX0gfSwKICAgICAgICAgICAgICAgIEBWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlbW92ZSBub3QgbmVlZGVkIHBsYWNlIGhvbGRlcgogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1wlcy8vZzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3cnLAogICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIHBhZ2UKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICBUeXBlICA9PiAnU21hbGwnCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICksCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemPrint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCB8fCAhJFZlcnNpb25JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKICAgICRDb25maWdJdGVtLT57Q3VycmVudE5hbWV9ID0gJExhc3RWZXJzaW9uLT57TmFtZX07CgogICAgIyBnZXQgdmVyc2lvbiBsaXN0CiAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uTnVtYmVyID0gMTsKICAgIExJU1RWRVJTSU9OSUQ6CiAgICBmb3IgbXkgJExpc3RWZXJzaW9uSUQgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgIGxhc3QgTElTVFZFUlNJT05JRCBpZiAkVmVyc2lvbklEIGVxICRMaXN0VmVyc2lvbklEOwogICAgICAgICRWZXJzaW9uTnVtYmVyKys7CiAgICB9CgogICAgIyBnZXQgdXNlciBvYmplY3QKICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGdldCBjcmVhdGUgJiBjaGFuZ2UgdXNlciBkYXRhCiAgICBmb3IgbXkgJEtleSAocXcoQ3JlYXRlIENoYW5nZSkpIHsKICAgICAgICAkQ29uZmlnSXRlbS0+eyAkS2V5IC4gJ0J5TmFtZScgfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnknIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGRhdGEgb2YgdmVyc2lvbiAoY3JlYXRlIGJ5KQogICAgJENvbmZpZ0l0ZW0tPntDcmVhdGVCeU5hbWV9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgIFVzZXJJRCA9PiAkQ29uZmlnSXRlbS0+e0NyZWF0ZUJ5fSwKICAgICk7CgogICAgIyBnZXQgbGlua2VkIG9iamVjdHMKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdHlwZSBsaXN0CiAgICBteSAlTGlua1R5cGVMaXN0ID0gJExpbmtPYmplY3QtPlR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaW5rIGRhdGEKICAgIG15ICVMaW5rRGF0YTsKICAgIGlmICggJExpbmtMaXN0V2l0aERhdGEgJiYgcmVmICRMaW5rTGlzdFdpdGhEYXRhIGVxICdIQVNIJyAmJiAleyRMaW5rTGlzdFdpdGhEYXRhfSApIHsKICAgICAgICAlTGlua0RhdGEgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJ1NpbXBsZVJhdycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBhdHRhY2htZW50cwogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIGdlbmVyYXRlIHBkZiBvdXRwdXQKICAgIG15ICVQYWdlOwoKICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAkUGFnZXtNYXhQYWdlc30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgfQoKICAgIG15ICRUaXRsZSA9ICRDb25maWdJdGVtLT57Q3VycmVudE5hbWV9OwoKICAgICRQYWdle01hcmdpblRvcH0gICAgPSAzMDsKICAgICRQYWdle01hcmdpblJpZ2h0fSAgPSA0MDsKICAgICRQYWdle01hcmdpbkJvdHRvbX0gPSA0MDsKICAgICRQYWdle01hcmdpbkxlZnR9ICAgPSA0MDsKICAgICRQYWdle0hlYWRlclJpZ2h0fSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0nKSAuICcjJwogICAgICAgIC4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwogICAgJFBhZ2V7SGVhZGxpbmVMZWZ0fSA9ICRDb25maWdJdGVtLT57TmFtZX07CiAgICAkUGFnZXtQYWdlVGV4dH0gICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAkUGFnZXtQYWdlQ291bnR9ICAgID0gMTsKCiAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOicgLiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBmaXJzdCBwZGYgcGFnZQogICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAlUGFnZSwKICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgKTsKICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCB0aXRsZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkVGl0bGUsCiAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgJ3ByaW50ZWQgYnkgJXMgYXQgJXMnLAogICAgICAgICAgICAkU2VsZi0+e1VzZXJGdWxsbmFtZX0sCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntUaW1lfSwKICAgICAgICApLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE0LAogICAgKTsKCiAgICAjIG91dHB1dCBnZW5lcmFsIGluZm9ybWF0aW9uCiAgICAkU2VsZi0+X1BERk91dHB1dEdlbmVyYWxJbmZvcygKICAgICAgICBQYWdlICAgICAgID0+IFwlUGFnZSwKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgKTsKCiAgICBteSAlU2VjdGlvbnMgPSAkU2VsZi0+X0dldENJU2VjdGlvbnMoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICk7CgogICAgIyBvdXRwdXQgdmVyc2lvbiBpbmZvcwogICAgJFNlbGYtPl9QREZPdXRwdXRWZXJzaW9uSW5mb3MoCiAgICAgICAgUGFnZSAgICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBWZXJzaW9uTnVtYmVyID0+ICRWZXJzaW9uTnVtYmVyLAogICAgICAgIERGU2VjdGlvbnMgICAgPT4gJFNlY3Rpb25ze0RGU2VjdGlvbnN9LAogICAgICAgIERlc2NyaXB0aW9uICAgPT4gJFNlY3Rpb25ze0Rlc2NyaXB0aW9ufSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudHMpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEF0dGFjaG1lbnRzKAogICAgICAgICAgICBQYWdlRGF0YSAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEF0dGFjaG1lbnREYXRhID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBpbnRlcm5hbCBiYWNrIGxpbmtzCiAgICAkU2VsZi0+X1BERk91dHB1dEJhY2tsaW5rcygKICAgICAgICBQYWdlICAgICAgICAgPT4gXCVQYWdlLAogICAgICAgIENvbmZpZ0l0ZW0gICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBMaW5rU2VjdGlvbnMgPT4gJFNlY3Rpb25ze0xpbmtTZWN0aW9uc30sCiAgICApOwoKICAgICMgb3V0cHV0IGxpbmtlZCBvYmplY3RzCiAgICBpZiAoJUxpbmtEYXRhKSB7CiAgICAgICAgJFNlbGYtPl9QREZPdXRwdXRMaW5rZWRPYmplY3RzKAogICAgICAgICAgICBQYWdlRGF0YSAgICAgPT4gXCVQYWdlLAogICAgICAgICAgICBMaW5rRGF0YSAgICAgPT4gXCVMaW5rRGF0YSwKICAgICAgICAgICAgTGlua1R5cGVMaXN0ID0+IFwlTGlua1R5cGVMaXN0LAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgY3VycmVudCBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJEN1cnJlbnRTeXN0ZW1EVE9iaiA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKICAgICMgY3JlYXRlIGZpbGUgbmFtZQogICAgbXkgJEZpbGVuYW1lID0gc3ByaW50ZigKICAgICAgICAnY29uZmlnaXRlbV8lc18lcy5wZGYnLAogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSwKICAgICAgICAkQ3VycmVudFN5c3RlbURUT2JqLT5Gb3JtYXQoIEZvcm1hdCA9PiAnJUZfJUgtJU0nICksCiAgICApOwogICAgbXkgJENsZWFuZWRGaWxlbmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZW5hbWUsCiAgICAgICAgVHlwZSAgICAgPT4gJ0F0dGFjaG1lbnQnLAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkQ2xlYW5lZEZpbGVuYW1lLAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9wZGYnLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgpzdWIgX1BERk91dHB1dEdlbmVyYWxJbmZvcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQYWdlIENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDbGFzc30sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnSXRlbScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDdXJyZW50TmFtZX0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+e0N1ckRlcGxTdGF0ZX0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPntDdXJJbmNpU3RhdGV9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgY3JlYXRlIHJpZ2h0IHRhYmxlCiAgICBteSAkVGFibGVSaWdodCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NyZWF0ZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LT57Q3JlYXRlQnlOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdJywKICAgICAgICAgICAgICAgIERhdGEgICAgID0+IFwleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LT57Q2hhbmdlQnlOYW1lfSwKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSAgPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgICA9IDM7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0gLi4gJFBhcmFte1BhZ2V9LT57TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgbGFzdCBQQUdFIGlmICRUYWJsZVBhcmFte1N0YXRlfTsKCiAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgJXsgJFBhcmFte1BhZ2V9IH0sCiAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYXJhbXtQYWdlfS0+e1BhZ2VUZXh0fSAuICcgJyAuICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9Kys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0TGlua2VkT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgTGlua0RhdGEgTGlua1R5cGVMaXN0KSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZSAgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVHlwZUxpc3QgPSAleyAkUGFyYW17TGlua1R5cGVMaXN0fSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIG15IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgZm9yIG15ICRMaW5rVHlwZUxpbmtEaXJlY3Rpb24gKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyAkUGFyYW17TGlua0RhdGF9IH0gKSB7CgogICAgICAgICMgaW52ZXN0aWdhdGUgbGluayB0eXBlIG5hbWUKICAgICAgICBteSBATGlua0RhdGEgICAgID0gc3BsaXQgLzo6LywgJExpbmtUeXBlTGlua0RpcmVjdGlvbjsKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJFR5cGVMaXN0eyAkTGlua0RhdGFbMF0gfS0+eyAkTGlua0RhdGFbMV0gLiAnTmFtZScgfTsKICAgICAgICAkTGlua1R5cGVOYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMaW5rVHlwZU5hbWUpOwoKICAgICAgICAjIGRlZmluZSBoZWFkbGluZQogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSA9ICRMaW5rVHlwZU5hbWUgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICcnOwoKICAgICAgICAjIGV4dHJhY3Qgb2JqZWN0IGxpc3QKICAgICAgICBteSAkT2JqZWN0TGlzdCA9ICRQYXJhbXtMaW5rRGF0YX0tPnskTGlua1R5cGVMaW5rRGlyZWN0aW9ufTsKCiAgICAgICAgZm9yIG15ICRPYmplY3QgKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyRPYmplY3RMaXN0fSApIHsKCiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRPYmplY3RMaXN0LT57JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gfHw9ICcnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJEl0ZW0tPntUaXRsZX0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGludWUgewogICAgICAgICAgICAgICAgJFJvdysrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgZ2V0IHBkZiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMaW5rZWQgT2JqZWN0cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0QXR0YWNobWVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZURhdGEgQ29uZmlnSXRlbUlEIEF0dGFjaG1lbnREYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskQXJndW1lbnR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGF0dGFjaG1lbnRzIGFyZSByZW5kZXJlZCBpbnRvIGEgc2VwYXJhdGUgcm93CiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnREYXRhfSB9ICkgewoKICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWZpbmUgYXR0YWNobWVudCBsaW5lCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9IC4gJyAgKCcgLiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0gLiAnKSc7CgogICAgICAgICRSb3crKzsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdBdHRhY2htZW50cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfR2V0Q0lTZWN0aW9ucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtDb25maWdJdGVtfXtEZWZpbml0aW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICBteSAkRGVzY3JpcHRpb247CiAgICBteSBATGlua1NlY3Rpb25zOwogICAgbXkgQERGU2VjdGlvbnM7CiAgICBteSAlU2VjdGlvbnNTZWVuOwogICAgbXkgJUdyb3VwTG9va3VwOwoKICAgIFBBR0U6CiAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CgogICAgICAgICMgSW50ZXJmYWNlcyBpcyBvcHRpb25hbCwgZWZmZWN0aXZlbHkgZGVmYXVsdCB0byBbICdBZ2VudCcgXQogICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQWdlbnQnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ3JhbnQgYWNjZXNzIHRvIHRoZSBwYWdlIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIFNFQ1RJT046CiAgICAgICAgZm9yIG15ICRTZWN0aW9uQ29uZmlnICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgIG5leHQgU0VDVElPTiBpZiAkU2VjdGlvbnNTZWVueyAkU2VjdGlvbkNvbmZpZy0+e1NlY3Rpb259IH0rKzsKICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbjsKCiAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICAgICAgICAgICREZXNjcmlwdGlvbiA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWN0aW9uLT57VHlwZX0gZXEgJ0NvbmZpZ0l0ZW1MaW5rcycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBATGlua1NlY3Rpb25zLCAkU2VjdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHB1c2ggQERGU2VjdGlvbnMsICRTZWN0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgRGVzY3JpcHRpb24gID0+ICREZXNjcmlwdGlvbiwKICAgICAgICBERlNlY3Rpb25zICAgPT4gXEBERlNlY3Rpb25zLAogICAgICAgIExpbmtTZWN0aW9ucyA9PiBcQExpbmtTZWN0aW9ucywKICAgICk7Cn0KCnN1YiBfUERGT3V0cHV0VmVyc2lvbkluZm9zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFBhZ2UgVmVyc2lvbiBWZXJzaW9uTnVtYmVyKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdWZXJzaW9uJykgLiAnICcKICAgICAgICAgICAgLiAkUGFyYW17VmVyc2lvbk51bWJlcn0sCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyBjcmVhdGUgdGFibGUKICAgIG15ICRUYWJsZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtWZXJzaW9ufSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NyZWF0ZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte1ZlcnNpb259LT57Q3JlYXRlQnlOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJyAnLAogICAgICAgICAgICBWYWx1ZSA9PiAnICcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTmFtZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VmVyc2lvbn0tPntOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZlcnNpb259LT57RGVwbFN0YXRlfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSApLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0Rlc2NyaXB0aW9ufSAmJiAkUGFyYW17VmVyc2lvbn17RGVzY3JpcHRpb259ICkgewogICAgICAgIG15ICRQbGFpbkRlc2NyaXB0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKCBTdHJpbmcgPT4gJFBhcmFte1ZlcnNpb259e0Rlc2NyaXB0aW9ufSApOwogICAgICAgICRQbGFpbkRlc2NyaXB0aW9uICAgID1+IHMvXltcblxyXSsvLzsKICAgICAgICAkUGxhaW5EZXNjcmlwdGlvbiAgICA9fiBzL1tcblxyXSskLy87CgogICAgICAgIHB1c2ggJFRhYmxlLT5AKiwgKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnICcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVzY3JpcHRpb24nKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQbGFpbkRlc2NyaXB0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgZHluYW1pYyBmaWVsZCBkYXRhIHRvIHRhYmxlCiAgICAkU2VsZi0+X1BERk91dHB1dERGT3V0cHV0KAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgIERGU2VjdGlvbnMgPT4gJFBhcmFte0RGU2VjdGlvbnN9LAogICAgICAgIFRhYmxlRGF0YSAgPT4gJFRhYmxlLAogICAgKTsKCiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3dzID0gQHskVGFibGV9OwoKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSAxMDA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MTE7CiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSAgICAgID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRERk91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtDb25maWdJdGVtfXtEZWZpbml0aW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICBteSBAREZPcmRlcmVkOwogICAgbXkgJURGU2VlbjsKICAgIG15ICRHcmVwREY7CiAgICAkR3JlcERGID0gc3ViIHsKICAgICAgICBFTlRSWToKICAgICAgICBmb3IgbXkgJEVudHJ5IChAXykgewogICAgICAgICAgICBpZiAoICRFbnRyeS0+e0RGfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRU5UUlkgaWYgJERGU2VlbnsgJEVudHJ5LT57REZ9IH0rKzsKCiAgICAgICAgICAgICAgICBwdXNoIEBERk9yZGVyZWQsICRFbnRyeS0+e0RGfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRFbnRyeS0+e0dyaWR9ICYmICRFbnRyeS0+e0dyaWR9e1Jvd3N9ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkRW50cnktPntHcmlkfXtSb3dzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgJEdyZXBERi0+KCAkUm93LT5AKiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBTRUNUSU9OOgogICAgZm9yIG15ICRTZWN0aW9uICggQHsgJFBhcmFte0RGU2VjdGlvbnN9IC8vIFtdIH0gKSB7CiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICEkU2VjdGlvbi0+e0NvbnRlbnR9OwoKICAgICAgICAkR3JlcERGLT4oICRTZWN0aW9uLT57Q29udGVudH0tPkAqICk7CiAgICB9CgogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBERk5BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoQERGT3JkZXJlZCkgewogICAgICAgIG5leHQgREZOQU1FIHVubGVzcyAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfTsKCiAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRWYWx1ZSA9ICREaXNwbGF5VmFsdWUtPntWYWx1ZX07CgogICAgICAgICMgcmVwbGFjZSBuZXdsaW5lcyB3aXRoIDxici8+IChmaXggZm9yIGJ1ZyMgNTkyOCkKICAgICAgICAkVmFsdWUgPX4gc3sgXG4gfXs8YnIvPn1neG1zOwoKICAgICAgICAjIGNvbnZlcnQgdmFsdWUgdG8gYXNjaWkKICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkVmFsdWUgKTsKCiAgICAgICAgIyBuZXcgcm93CiAgICAgICAgbXkgJE5ld1JvdyA9IHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICkgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICB9OwoKICAgICAgICAjIGFkZCByb3cgZGF0YQogICAgICAgIHB1c2ggQHsgJFBhcmFte1RhYmxlRGF0YX0gfSwgJE5ld1JvdzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRCYWNrbGlua3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZSBDb25maWdJdGVtKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIG15IEBCYWNrbGlua1NlY3Rpb25zID0gQHsgJFBhcmFte0xpbmtTZWN0aW9uc30gLy8gW10gfTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CiAgICByZXR1cm4gMSBpZiAhQEJhY2tsaW5rU2VjdGlvbnM7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRQREZPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJERlZmF1bHRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1JlZmVyZW5jZWQgYnknKTsKCiAgICBTRUNUSU9OOgogICAgZm9yIG15ICRTZWN0aW9uICggQEJhY2tsaW5rU2VjdGlvbnMgKSB7CgogICAgICAgIG15ICREaXJlY3Rpb24gPSAkU2VjdGlvbi0+e0xpbmtlZEFzfSB8fCAnU291cmNlJzsKICAgICAgICBteSAkVHlwZXMgICAgID0gSXNBcnJheVJlZldpdGhEYXRhKCAkU2VjdGlvbi0+e0xpbmtUeXBlc30gKSA/ICRTZWN0aW9uLT57TGlua1R5cGVzfSA6IHVuZGVmOwogICAgICAgIG15ICRIZWFkZXIgICAgPSAkU2VjdGlvbi0+e0hlYWRlcn0gPyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRTZWN0aW9uLT57SGVhZGVyfSApIDogJERlZmF1bHRIZWFkZXI7CgogICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJERpcmVjdGlvbiwKICAgICAgICAgICAgVHlwZXMgICAgICAgID0+ICRUeXBlcywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICFAeyAkTGlua2VkQ29uZmlnSXRlbXMgLy8gW10gfTsKCiAgICAgICAgbXkgJUxpbmtlZENsYXNzZXM7CgogICAgICAgIGZvciBteSAkTGluayAoICRMaW5rZWRDb25maWdJdGVtcy0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAeyAkTGlua2VkQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSB9LCB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTGluay0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJEhlYWRlciwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0YWJsZQogICAgICAgIG15ICRUYWJsZSA9IFtdOwoKICAgICAgICBmb3IgbXkgJENsYXNzICgga2V5cyAlTGlua2VkQ2xhc3NlcyApIHsKICAgICAgICAgICAgcHVzaCAkVGFibGUtPkAqLCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRDbGFzcyApLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9WzBde05hbWV9LAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICRpICggMSAuLiAkI3sgJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9IH0gKSB7CiAgICAgICAgICAgICAgICBwdXNoICRUYWJsZS0+QCosIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9WyRpXXtOYW1lfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgIG15ICRSb3dzID0gQHskVGFibGV9OwoKICAgICAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgICAgICRSb3ctLTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntLZXl9OwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRUYWJsZS0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgIH0KCiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gMTAwOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQxMTsKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSAgICAgID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIFBBR0U6CiAgICAgICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgbGFzdCBQQUdFIGlmICRUYWJsZVBhcmFte1N0YXRlfTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYXJhbXtQYWdlfS0+e1BhZ2VUZXh0fSAuICcgJyAuICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZWFyY2hQcm9maWxlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgdXNlIGNvbHVtbiBjb25maWdzIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbScpLT57Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfTsKICAgICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fSAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0nKS0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDEwMDAwOwogICAgJFNlbGYtPntTb3J0Qnl9ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ051bWJlcic7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzIG9uIHRoZSBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gaWYgISRIYXNBY2Nlc3M7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgaWQKICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgIyBjaGVjayBpZiBjbGFzcyBpZCBpcyB2YWxpZAogICAgaWYgKCAkQ2xhc3NJRCAmJiAhJENsYXNzTGlzdC0+eyRDbGFzc0lEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIENsYXNzSUQhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIG15ICREZWZpbml0aW9uOwoKICAgIGlmICgkQ2xhc3NJRCkgewoKICAgICAgICAjIHNldCBmaWx0ZXIgcGFyYW1zIGZvciBzaG93aW5nIGNvcnJlY3QgY29sdW1ucwogICAgICAgICRTZWxmLT57RmlsdGVyfSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfS0+JSogPSBtYXAgewogICAgICAgICAgICAkXyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRfLAogICAgICAgICAgICB9CiAgICAgICAgfSB2YWx1ZXMgJENsYXNzTGlzdC0+JSo7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXRJbm5lckZpZWxkczsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfSApOwoKICAgICAgICAgICAgIyBpdGVyYXRlIHRoZSBlbnRpcmUgSW5jbHVkZSBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZXJzaW9uZWQgZHluYW1pYyBmaWVsZCBjb25maWdzCiAgICAgICAgICAgIElOQ0xVREVFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVFbGVtZW50ICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewoKICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSApIC4gJzo6JwogICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkSW5jbHVkZUVsZW1lbnQtPntERn0gfSA9ICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfSApIHsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfSApOwoKICAgICAgICAgICAgICAgICAgICBST1c6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRSb3cpOwoKICAgICAgICAgICAgICAgICAgICAgICAgUk9XRUxFTUVOVDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3dFbGVtZW50ICggJFJvdy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUm93RWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXRJbm5lckZpZWxkc3sgJFJvd0VsZW1lbnQtPntERn0gfSA9ICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA9IHsKICAgICAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiwKICAgICAgICAgICAgJVNldElubmVyRmllbGRzLAogICAgICAgIH07CgogICAgICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zCiAgICAgICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRTZWxmLT57UHJvZmlsZX0gKSB8fCAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSApIHsKICAgICAgICAgICAgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnIC4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNvbnZlcnQgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9ICYmIHJlZiAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gPSBqb2luICc7JywgQHsgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEtleSA9fiAvXihDb25maWdJdGVtKShDcmVhdGV8Q2hhbmdlKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTnVtYmVyIE5hbWUgUHJldmlvdXNWZXJzaW9uU2VhcmNoIFJlc3VsdEZvcm0gU2hvd25BdHRyaWJ1dGVzKSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSB3aGl0ZSBzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID1+IHMvXHMrJC8vZzsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gPX4gcy9eXHMrLy9nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KERlcGxTdGF0ZUlEcyBJbmNpU3RhdGVJRHMpKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkS2V5ICk7CiAgICAgICAgICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgRHluYW1pYyBmaWVsZHMgZnJvbSBwYXJhbSBvYmplY3QKICAgICAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2ggcHJvZmlsZQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZSBzZWFyY2ggcHJvZmlsZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUHJvZmlsZURlbGV0ZScgKSB7CgogICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAxLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgaW5pdCBzZWFyY2ggZGlhbG9nIChzZWxlY3QgY2xhc3MpCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgIG15ICRFbXB0eVNlYXJjaCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbXB0eVNlYXJjaCcgKTsKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9ICkgewogICAgICAgICAgICAkRW1wdHlTZWFyY2ggPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9ICkgewoKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgPX4gL14oQ29uZmlnSXRlbSkoQ3JlYXRlfENoYW5nZSkvICkgewogICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSBjbGFzcwogICAgICAgICMgYXV0b21hdGljYWxseSBzaG93IHNlYXJjaCBtYXNrIGFmdGVyIHNlbGVjdGluZyBhIGNsYXNzIHZpYSBBSkFYCiAgICAgICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZWFyY2hDbGFzc0lEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCB8fCAnJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVgnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBFbXB0eVNlYXJjaCAgICAgPT4gJEVtcHR5U2VhcmNoLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzZXQgc2VhcmNoIGZpZWxkcyBmb3Igc2VsZWN0ZWQgY2xhc3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYVXBkYXRlJyB8fCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyApIHsKCiAgICAgICAgIyBDbGFzc0lEIGlzIHJlcXVpcmVkIGZvciB0aGUgc2VhcmNoIG1hc2sgYW5kIGZvciBhY3R1YWwgc2VhcmNoaW5nCiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDbGFzc0lEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gc2VhcmNoIGNsYXNzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4KICAgICAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zIG9mIGRlZmF1bHQgYXR0cmlidXRlcwogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSApIHsKCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eKENvbmZpZ0l0ZW0pKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICBteSBASXRlbXMgPSBzcGxpdCAvOy8sICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29udmVydCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IGpvaW4gJzsnLCBAeyAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFRPRE8gbWF5YmUgbmljZXIgdG8gaGF2ZSB0aGlzIGFsc28gaW4gYSBzeXNjb25maWcgc2V0dGluZwogICAgICAgICMgaW5pdGlhbGl6aW5nIHdpdGggY29tbW9uIGF0dHJpYnV0ZXMKICAgICAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB3YWxrIHRocm91Z2ggZGVmaW5pdGlvbiB0byBjaGVjayBwZXJtaXNzaW9ucyBvbiBwYWdlcyB3aGljaCBjb250YWluIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAlUGVybWl0dGVkRHluYW1pY0ZpZWxkczsKICAgICAgICBteSAlR3JvdXBMb29rdXA7CgogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBTRUNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBuZSAnRHluYW1pY0ZpZWxkcycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcHJvY2VlZCBpZiBjb250ZW50IGlzIGVtcHR5CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uLT57Q29udGVudH0tPkAqOwoKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uREZzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VjdGlvbkRGcykgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRERk5hbWUgKCAkU2VjdGlvbkRGcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyRERk5hbWV9ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWxzbyBpbmNsdWRlIFNldC1pbm5lciBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JERGTmFtZX17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTZXRJbm5lckZpZWxkcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRTZXRJbm5lckZpZWxkcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckRGICggJFNldElubmVyRmllbGRzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7JElubmVyREZ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkU2VwYXJhdG9yID0gMTsKCiAgICAgICAgIyBjcmVhdGUgZHluYW1pYyBmaWVsZHMgc2VhcmNoIG9wdGlvbnMgZm9yIGF0dHJpYnV0ZSBzZWxlY3QKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIGRlZmluaXRpb24KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBzb3J0IHsgJGEtPntMYWJlbH0gY21wICRiLT57TGFiZWx9IH0gdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGNyZWF0ZSBhIHNlcGFyYXRvciBmb3IgZHluYW1pYyBmaWVsZHMgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoJER5bmFtaWNGaWVsZFNlcGFyYXRvcikgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgID0+ICctJywKICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZXBhcmF0b3IgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZHluYW1pYyBmaWVsZCBsYWJlbAogICAgICAgICAgICBteSAkVHJhbnNsYXRlZER5bmFtaWNGaWVsZExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBzdWZmaXgKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkU3VmZml4ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlLT57TGFiZWxTdWZmaXh9LAogICAgICAgICAgICAgICAgKSB8fCAnJzsKCiAgICAgICAgICAgICAgICBpZiAoJFRyYW5zbGF0ZWRTdWZmaXgpIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFN1ZmZpeCA9ICcgKCcgLiAkVHJhbnNsYXRlZFN1ZmZpeCAuICcpJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCAuICRUcmFuc2xhdGVkU3VmZml4LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgICAgICAgICAgbXkgJEhpc3RvcmljYWxWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+SGlzdG9yaWNhbFZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGEgPSAkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGhpc3RvcmljIHZhbHVlcyB0byBjdXJyZW50IHZhbHVlcyAoaWYgdGhleSBkb24ndCBleGlzdCBhbnltb3JlKQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEhpc3RvcmljYWxWYWx1ZXMpICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREYXRhLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGEtPnskS2V5fSA9ICRIaXN0b3JpY2FsVmFsdWVzLT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyREYXRhfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJERhdGEtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9ID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYnVpbGQgYXR0cmlidXRlcyBzdHJpbmcgZm9yIGF0dHJpYnV0ZXMgbGlzdAogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQXR0cmlidXRlJywKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGF0dHJpYnV0ZXMgc3RyaW5nIGZvciByZWNvdmVyeSBvbiBhZGQgb3Igc3VidHJhY3Qgc2VhcmNoIGZpZWxkcwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzT3JpZ1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0F0dHJpYnV0ZU9yaWcnLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgIG15ICVQcm9maWxlcyA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVByb2ZpbGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJ1NlYXJjaFByb2ZpbGUnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGRlcGxveW1lbnQgc3RhdGVzCiAgICAgICAgbXkgJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGVwbFN0YXRlSURzJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSB8fCBbXSwKICAgICAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGluY2lkZW50IHN0YXRlcwogICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0luY2lTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgUHJldmlvdXNWZXJzaW9uT3B0aW9uU3RyZwogICAgICAgIG15ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByZXZpb3VzVmVyc2lvblNlYXJjaCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgMCA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gfHwgJzAnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdCBzdHJpbmcKICAgICAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgICAgICAgICBQcmludCAgPT4gVHJhbnNsYXRhYmxlKCdQcmludCcpLAogICAgICAgICAgICAgICAgQ1NWICAgID0+IFRyYW5zbGF0YWJsZSgnQ1NWJyksCiAgICAgICAgICAgICAgICBFeGNlbCAgPT4gVHJhbnNsYXRhYmxlKCdFeGNlbCcpLAogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FKQVhDb250ZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAgICA9PiAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgICAgPT4gJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0+ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnLAogICAgICAgICAgICAgICAgQXR0cmlidXRlc1N0cmcgICAgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc1N0cmd9LAogICAgICAgICAgICAgICAgQXR0cmlidXRlc09yaWdTdHJnICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSwKICAgICAgICAgICAgICAgIFJlc3VsdEZvcm1TdHJnICAgICAgICAgICAgPT4gJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSwKICAgICAgICAgICAgICAgIFByb2ZpbGVzU3RyZyAgICAgICAgICAgICAgPT4gJFBhcmFte1Byb2ZpbGVzU3RyZ30sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOdW1iZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0gICB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZAogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPntGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYXR0cmlidXRlcyBmb3Igc2VhcmNoCiAgICAgICAgbXkgQFNlYXJjaEF0dHJpYnV0ZXM7CgogICAgICAgIG15ICVHZXRQYXJhbUJhY2t1cCA9ICVHZXRQYXJhbTsKCiAgICAgICAgIyBzaG93IGF0dHJpYnV0ZXMKICAgICAgICBteSBAU2hvd25BdHRyaWJ1dGVzOwogICAgICAgIGlmICggJEdldFBhcmFtQmFja3Vwe1Nob3duQXR0cmlidXRlc30gKSB7CiAgICAgICAgICAgIEBTaG93bkF0dHJpYnV0ZXMgPSBzcGxpdCAvOy8sICRHZXRQYXJhbUJhY2t1cHtTaG93bkF0dHJpYnV0ZXN9OwogICAgICAgIH0KICAgICAgICBteSAlQWxyZWFkeVNob3duOwoKICAgICAgICBpZiAoJENsYXNzSUQpIHsKICAgICAgICAgICAgSVRFTToKICAgICAgICAgICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgbXkgJEtleSA9ICRJdGVtLT57S2V5fTsKICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAhJEtleTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHNob3duCiAgICAgICAgICAgICAgICBpZiAoQFNob3duQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgIG15ICRTaG93ID0gMDsKICAgICAgICAgICAgICAgICAgICBTSE9XTl9BVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRTaG93bkF0dHJpYnV0ZSAoQFNob3duQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICdMYWJlbCcgLiAkS2V5IGVxICRTaG93bkF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTaG93ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgU0hPV05fQVRUUklCVVRFOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAhJFNob3c7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAjIFNraXAgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICFkZWZpbmVkICRHZXRQYXJhbUJhY2t1cHskS2V5fTsKCiAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGVtcHR5IHN0cmluZ3MKICAgICAgICAgICAgICAgICAgICBuZXh0IElURU0gaWYgJEdldFBhcmFtQmFja3VweyRLZXl9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgYXJyYXlzCiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFtQmFja3VweyRLZXl9IGVxICdBUlJBWScgJiYgIUB7ICRHZXRQYXJhbUJhY2t1cHskS2V5fSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IElURU07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2hvdyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAkQWxyZWFkeVNob3dueyRLZXl9OwogICAgICAgICAgICAgICAgJEFscmVhZHlTaG93bnskS2V5fSA9IDE7CgogICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBObyBwcm9maWxlLCBzaG93IGRlZmF1bHQgc2NyZWVuCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIE1lcmdlIHJlZ3VsYXIgc2hvdy9oaWRlIHNldHRpbmdzIGFuZCB0aGUgc2V0dGluZ3MgZm9yIHRoZSBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBteSAlRGVmYXVsdHMgPSAleyAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9IHx8IHt9IH07CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkcyAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfSB8fCB7fSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGRzfSA9PSAyICkgewogICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3siU2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkcyJ9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQE9yZGVyZWREZWZhdWx0czsKICAgICAgICAgICAgaWYgKCVEZWZhdWx0cykgewoKICAgICAgICAgICAgICAgICMgb3JkZXJpbmcgYXR0cmlidXRlcyBvbiB0aGUgc2FtZSBvcmRlciBsaWtlIGluIEF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkS2V5QXRyID0gJEl0ZW0tPntLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVEZWZhdWx0cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkS2V5IGVxICRLZXlBdHIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBPcmRlcmVkRGVmYXVsdHMsICRLZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKEBPcmRlcmVkRGVmYXVsdHMpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOyAgICAjIElnbm9yZSBlbnRyeSBmb3IgREYgY29uZmlnCiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEFscmVhZHlTaG93bnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBJZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgZnVsbHRleHQgc2VhcmNoLgogICAgICAgICAgICBpZiAoICFrZXlzICVBbHJlYWR5U2hvd24gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hBdHRyaWJ1dGVzLCAnRnVsbHRleHQnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAUHJvZmlsZUF0dHJpYnV0ZXM7CgogICAgICAgICMgc2hvdyBhdHRyaWJ1dGVzCiAgICAgICAgbXkgJEF0dHJpYnV0ZUlzVXNlZCA9IDA7CiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRLZXk7CiAgICAgICAgICAgIG5leHQgS0VZIGlmICFkZWZpbmVkICRHZXRQYXJhbXskS2V5fTsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEdldFBhcmFteyRLZXl9IGVxICcnOwogICAgICAgICAgICBuZXh0IEtFWSBpZiByZWYgJEdldFBhcmFteyRLZXl9IGVxICdBUlJBWScgJiYgISRHZXRQYXJhbXskS2V5fS0+QCo7CgogICAgICAgICAgICAkQXR0cmlidXRlSXNVc2VkID0gMTsKCiAgICAgICAgICAgIHB1c2ggQFByb2ZpbGVBdHRyaWJ1dGVzLCAkS2V5OwogICAgICAgIH0KCiAgICAgICAgIyBpZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgY29uZmlnaXRlbSBudW1iZXIKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9ICkgewoKICAgICAgICAgICAgIyBtZXJnZSBzZWFyY2ggYW5kIHByb2ZpbGUgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoQFNlYXJjaEF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgIEBQcm9maWxlQXR0cmlidXRlcyA9IHVuaXEoIEBQcm9maWxlQXR0cmlidXRlcywgQFNlYXJjaEF0dHJpYnV0ZXMgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBQcm9maWxlQXR0cmlidXRlcyA9IHVuaXEoIEBQcm9maWxlQXR0cmlidXRlcywgJ051bWJlcicgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzJywKICAgICAgICAgICAgVmFsdWUgPT4gXEBQcm9maWxlQXR0cmlidXRlcywKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0ZW1wbGF0ZQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIEFKQVggICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHBlcmZvcm0gc2VhcmNoCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyApIHsKCiAgICAgICAgbXkgJFNlYXJjaERpYWxvZyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hEaWFsb2cnICk7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9IHx8ICEkU2VsZi0+e1NhdmVQcm9maWxlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX07IgogICAgICAgICAgICAuICJUYWtlTGFzdFNlYXJjaD0xO1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9O1N1YmFjdGlvbj1TZWFyY2g7IgogICAgICAgICAgICAuICJPcmRlckJ5PSRTZWxmLT57T3JkZXJCeX07U29ydEJ5PSRTZWxmLT57U29ydEJ5fSI7CgogICAgICAgIGlmICgkQ2xhc3NJRCkgewogICAgICAgICAgICAkVVJMIC49ICI7Q2xhc3NJRD0kQ2xhc3NJRCI7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzZXNzaW9uIG9iamVjdAogICAgICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGFzc0lEIGlzIHJlcXVpcmVkIGZvciB0aGUgc2VhcmNoIG1hc2sgYW5kIGZvciBhY3R1YWwgc2VhcmNoaW5nCiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDbGFzc0lEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gc2VhcmNoIGNsYXNzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4KICAgICAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgbXkgJVNldElubmVyRmllbGRzOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCc7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICAgICAjIGl0ZXJhdGUgdGhlIGVudGlyZSBJbmNsdWRlIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlcnNpb25lZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3MKICAgICAgICAgICAgSU5DTFVERUVMRU1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZUVsZW1lbnQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkSW5jbHVkZUVsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gKTsKICAgICAgICAgICAgICAgICAgICAkU2V0SW5uZXJGaWVsZHN7ICRJbmNsdWRlRWxlbWVudC0+e0RGfSB9ID0gJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICkgewoKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVFTEVNRU5UIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICk7CgogICAgICAgICAgICAgICAgICAgIFJPVzoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgUk9XIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFJvdyk7CgogICAgICAgICAgICAgICAgICAgICAgICBST1dFTEVNRU5UOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvd0VsZW1lbnQgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFJvd0VsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkUm93RWxlbWVudC0+e0RGfSB9ID0gJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID0gewogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgICAgICAgICAlU2V0SW5uZXJGaWVsZHMsCiAgICAgICAgfTsKCiAgICAgICAgIyB3YWxrIHRocm91Z2ggZGVmaW5pdGlvbiB0byBjaGVjayBwZXJtaXNzaW9ucyBvbiBwYWdlcyB3aGljaCBjb250YWluIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJVBlcm1pdHRlZER5bmFtaWNGaWVsZHM7CiAgICAgICAgbXkgJUdyb3VwTG9va3VwOwoKICAgICAgICBQQUdFOgogICAgICAgIGZvciBteSAkUGFnZSAoICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgICAgICMgSW50ZXJmYWNlcyBpcyBvcHRpb25hbCwgZWZmZWN0aXZlbHkgZGVmYXVsdCB0byBbICdBZ2VudCcgXQogICAgICAgICAgICBpZiAoICRQYWdlLT57SW50ZXJmYWNlc30gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRfIGVxICdBZ2VudCcgfSAkUGFnZS0+e0ludGVyZmFjZXN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUGFnZS0+e0dyb3Vwc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgU0VDVElPTjoKICAgICAgICAgICAgZm9yIG15ICRTZWN0aW9uQ29uZmlnICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkU2VjdGlvbiA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9eyAkU2VjdGlvbkNvbmZpZy0+e1NlY3Rpb259IH07CgogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbjsKICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWN0aW9uLT57VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZG8gbm90IHByb2NlZWQgaWYgY29udGVudCBpcyBlbXB0eQogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKjsKCiAgICAgICAgICAgICAgICBteSAkU2VjdGlvbkRGcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNlY3Rpb25ERnMpICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkREZOYW1lICggJFNlY3Rpb25ERnMtPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3skREZOYW1lfSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFsc28gaW5jbHVkZSBTZXQtaW5uZXIgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkU2V0SW5uZXJGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0TWFzaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfXtDb25maWd9e0luY2x1ZGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2V0SW5uZXJGaWVsZHMpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5uZXJERiAoICRTZXRJbm5lckZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyRJbm5lckRGfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgYXR0cmlidXRlcwogICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICcnICkgewogICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IFsgc3BsaXQgLzsvLCAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBdOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkKICAgICAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzIG9ubHkgaWYgc2VhcmNoIGlzIGNhbGxlZCBmcm9tIGEgc2VhcmNoIGRpYWxvZwogICAgICAgICMgbm90IGZyb20gcmVzdWx0cyBwYWdlCiAgICAgICAgaWYgKCAkU2VsZi0+e1NhdmVQcm9maWxlfSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICYmICRTZWFyY2hEaWFsb2cgKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSAmJiAkS2V5IG5lICdXaGF0JyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkR2V0UGFyYW17JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJUF0dHJpYnV0ZUxvb2t1cDsKCiAgICAgICAgIyBjcmVhdGUgYXR0cmlidXRlIGxvb2t1cCB0YWJsZQogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggQHsgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gfHwgW10gfSApIHsKICAgICAgICAgICAgJEF0dHJpYnV0ZUxvb2t1cHskQXR0cmlidXRlfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciB0aWNrZXQgc2VhcmNoCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgISRBdHRyaWJ1dGVMb29rdXB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMYWJlbFNlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAU2VhcmNoUmVzdWx0TGlzdDsKCiAgICAgICAgIyBzdGFydCBzZWFyY2ggaWYgY2FsbGVkIGZyb20gYSBzZWFyY2ggZGlhbG9nIG9yIGZyb20gYSByZXN1bHRzIHBhZ2UKICAgICAgICBpZiAoICRTZWFyY2hEaWFsb2cgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CgogICAgICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgICAgICBAU2VhcmNoUmVzdWx0TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICBPcmRlckJ5ICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIENsYXNzSURzID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGNvbmZjb25maWcgaXRlbSBkeW5hbWljIGZpZWxkcyBmb3IgQ1NWIGRpc3BsYXkKICAgICAgICBteSAkQ1NWRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57Q29uZmlnfXtTZWFyY2hDU1ZEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICk7CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnCiAgICAgICAgICAgIHx8CiAgICAgICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICMgY3JlYXRlIGhlYWQgKGFjdHVhbCBoZWFkIGFuZCBoZWFkIGZvciBkYXRhIGZpbGwpCiAgICAgICAgICAgIG15IEBUbXBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkRhdGF9IH07CiAgICAgICAgICAgIG15IEBDU1ZIZWFkICAgID0gQHsgJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkRhdGF9IH07CgogICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIGluIENWUyByZXN1bHRzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAnJzsKCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBTZWFyY2hSZXN1bHRMaXN0KSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IEB7ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaENTVkRhdGF9IH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBkYXRhCiAgICAgICAgICAgICAgICBteSBARGF0YTsKICAgICAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAVG1wQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGhlYWRlciBpcyBhIGR5bmFtaWMgZmllbGQgYW5kIGdldCB0aGUgdmFsdWUgZnJvbSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgIyBiYWNrZW5kCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyID1+IG17XEEgRHluYW1pY0ZpZWxkXyAoIFthLXpBLVpcZFwtXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJExhc3RWZXJzaW9uLT57JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gYXJ0aWNsZQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkTGFzdFZlcnNpb24tPnskSGVhZGVyfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9LT57U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgQ29uZmlnSXRlbU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBDb25maWdJdGVtTnVtYmVyIGhvb2sgZnJvbSBzeXNjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06Okhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IFNlcGFyYXRvciBmcm9tIGxhbmd1YWdlIGZpbGUuCiAgICAgICAgICAgIG15ICRVc2VyQ1NWU2VwYXJhdG9yID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+e1NlcGFyYXRvcn07CgogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKS0+e0NTVlNlcGFyYXRvcn0tPntBY3RpdmV9ICkgewogICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXNlckNTVlNlcGFyYXRvciA9ICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENTVk9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpOwogICAgICAgICAgICBteSAkQ3VyU3lzRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CgogICAgICAgICAgICAgICAgIyBBc3NlbWJsZSBDU1YgZGF0YS4KICAgICAgICAgICAgICAgIG15ICRDU1YgPSAkQ1NWT2JqZWN0LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICAgICAgSGVhZCAgICAgID0+IFxAQ1NWSGVhZCwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkVXNlckNTVlNlcGFyYXRvciwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gQ1NWIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMuY3N2JywKICAgICAgICAgICAgICAgICAgICAgICAgJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJyVGXyVILSVNJywKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJ0ZXh0L2NzdjsgY2hhcnNldD0iIC4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnICkgewoKICAgICAgICAgICAgICAgICMgQXNzZW1ibGUgRXhjZWwgZGF0YS4KICAgICAgICAgICAgICAgIG15ICRFeGNlbCA9ICRDU1ZPYmplY3QtPkFycmF5MkNTVigKICAgICAgICAgICAgICAgICAgICBIZWFkICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgICAgIERhdGEgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICdFeGNlbCcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUmV0dXJuIEV4Y2VsIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMueGxzeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJTeXNEVE9iamVjdC0+Rm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICclRl8lSC0lTScsCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQiLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRFeGNlbCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJpbnQgUERGIG91dHB1dAogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKCiAgICAgICAgICAgICMgZ2V0IHBkZiBvYmplY3QKICAgICAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBTZWFyY2hSZXN1bHRMaXN0KSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBwZGYgcm93cwogICAgICAgICAgICAgICAgbXkgQFBERlJvdzsKICAgICAgICAgICAgICAgIGZvciBteSAkU3RvcmVEYXRhIChxdyhDbGFzcyBJbmNpU3RhdGUgTmFtZSBOdW1iZXIgRGVwbFN0YXRlIFZlcnNpb25JRCBDcmVhdGVUaW1lKSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJExhc3RWZXJzaW9uLT57JFN0b3JlRGF0YX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBQREZEYXRhLCBcQFBERlJvdzsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ3VyYXRpb24gSXRlbScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBoZWFkZXIKICAgICAgICAgICAgbXkgJENlbGxEYXRhOwoKICAgICAgICAgICAgIyBvdXRwdXQgJ05vIFJlc3VsdCcsIGlmIG5vIGNvbnRlbnQgd2FzIGdpdmVuCiAgICAgICAgICAgIGlmIChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOYW1lJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ051bWJlcicpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls0XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzRdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzVdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZlcnNpb24nKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlIFRpbWUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05vIFJlc3VsdCEnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX0gICAgICAgICAgICA9ICRDZWxsRGF0YTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgdGFibGUgb3V0cHV0CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aXRsZQogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJGdWxsbmFtZX0gLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciBteSAkQ291bnQgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlCiAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRDb3VudCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiB0aGUgcGRmIGRvY3VtZW50CiAgICAgICAgICAgIG15ICRDdXJyZW50U3lzdGVtRFRPYmogPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJFBERlN0cmluZyAgICAgICAgICA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnY29uZmlnaXRlbV9zZWFyY2hfJXNfJXMucGRmJywKICAgICAgICAgICAgICAgICAgICAkQ3VycmVudFN5c3RlbURUT2JqLT5Gb3JtYXQoIEZvcm1hdCA9PiAnJUZfJUgtJU0nICksCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG5vcm1hbCBIVE1MIG91dHB1dAogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzdGFydCBodG1sIHBhZ2UKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgICAgICMgdXNlIGNsYXNzbmFtZSBhcyBmaWx0ZXIKICAgICAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSAgICAgICAgICAgICAgICAgICAgfHwgJ0FsbCc7CiAgICAgICAgICAgICRTZWxmLT57Vmlld30gICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgICAgICAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JyAuICRDbGFzc0lECiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScgLiAkQ2xhc3NJRAogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rRmlsdGVyID0gJ1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICAgICAgbXkgJENsYXNzTmFtZSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgIG15ICRUaXRsZSAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJykKICAgICAgICAgICAgICAgIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2xhc3MnKQogICAgICAgICAgICAgICAgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDbGFzc05hbWUpOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBcQFNlYXJjaFJlc3VsdExpc3QsCiAgICAgICAgICAgICAgICBUb3RhbCAgICAgICAgID0+IHNjYWxhciBAU2VhcmNoUmVzdWx0TGlzdCwKICAgICAgICAgICAgICAgIFZpZXcgICAgICAgICAgPT4gJFNlbGYtPntWaWV3fSwKICAgICAgICAgICAgICAgIEZpbHRlciAgICAgICAgPT4gJENsYXNzTmFtZSwKICAgICAgICAgICAgICAgIEVudiAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgICAgICBMaW5rUGFnZSAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIExpbmtTb3J0ICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICAgICAgTGlua0ZpbHRlciAgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgICAgIExpbmtCYWNrICAgICAgPT4gJExpbmtCYWNrLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVGl0bGVOYW1lICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTb3J0Qnl9ICksCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntPcmRlckJ5fSApLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFJlcXVlc3RVUkwgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgICAgICAgICAgQnVsayAgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2FsbCBzZWFyY2ggZGlhbG9nIGZyb20gc2VhcmNoIGVtcHR5IHNjcmVlbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CgogICAgICAgICMgc2hvdyBkZWZhdWx0IHNlYXJjaCBzY3JlZW4KICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBBY3Rpb24gID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0ZW1wbGF0ZQogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IG5lZWRlZCBwYXJhbWV0ZXJzLAogICAgIyBvbmx5IHRoZSBWZXJzaW9uSUQgaXMgbmVlZGVkIGFzIHRoZSBWZXJzaW9uSUQgZGV0ZXJtaW5lcyB0aGUgQ29uZmlnSXRlbUlECiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSAvLz0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5lZWRlZCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvbklEICAgID0gJEdldFBhcmFte1ZlcnNpb25JRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25Db25maWdJdGVtSURHZXQoIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICk7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEZyb250ZW5kQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwogICAgbXkgJEFjY2VzcyAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgID0+ICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGVycm9yIHNjcmVlbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259ICksCiAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICkgdW5sZXNzICRBY2Nlc3M7CgogICAgbXkgJERlcHRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0RlcHRoJyApCiAgICAgICAgfHwKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6RGVmYXVsdERlcHRoIikKICAgICAgICB8fAogICAgICAgIDE7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRUcmVlVmlldycgKSB7CgogICAgICAgICMgdGhlIEhUTUwgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIGZvciBkcmF3aW5nIHRoZSBncmFwaAogICAgICAgIG15ICRDYW52YXNIVE1MID0gJExheW91dE9iamVjdC0+R2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgKICAgICAgICAgICAgRGVwdGggICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBTZXNzaW9uSUQgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ2FudmFzSFRNTCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuYW1lIGFuZCBudW1iZXIgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDEsCiAgICApOwoKICAgICMgVGhlIGFjdHVhbCB0cmVlIHdpbGwgYmUgd3JpdHRlbiBsYXRlciBpbnRvIHRoZSBkaXYgd2l0aCB0aGUgSUQgJ0NhbnZhcycuCiAgICAjIFRoZSBpbmZvcm1hdGlvbiBmb3IgZHJhd2luZyB0aGUgZ3JhcGggd2lsbCBiZSBmZXRjaGVkIHdpdGggJ0xvYWRUcmVlVmlldycuCiAgICAjIFNlZSB2YXIvaHR0cGQvaHRkb2NzL2pzL0NvcmUuQWdlbnQuVHJlZVZpZXcuanMgZm9yIHRoZSBmdW5jdGlvbiBVcGRhdGVUcmVlKCkuCiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU5hbWUgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBEZXB0aCAgICAgICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICAgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICAgICAgU2hvd0xpbmtMYWJlbHMgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6U2hvd0xpbmtMYWJlbHMiKSB8fCAnWWVzJywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJEdldFBhcmFtVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbnRlbnQKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJEdldFBhcmFtVmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvbkxpc3QpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyB2ZXJzaW9ucyBmb3VuZCEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBUT0RPOiBDb21wYXJlIHdpdGggbGVnYWN5IGNvZGUgdG8gY2hlY2sgd2hldGhlciB0aGlzIGlzIGEgZ29vZCBwbGFjZS4gTGluZSAyNTYgdGhyb3dzIGFuIGVycm9yIGlmIG5vdCBzZXQsIGVsc2UKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH07CgogICAgIyBydW4gY29uZmlnIGl0ZW0gbWVudSBtb2R1bGVzCiAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlTWVudXMgICA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewoKICAgICAgICAgICAgICAgIG15ICRPYmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2VsZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNsYXNzZXMKICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ1BvcFVwJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e01lbnVDbGFzc30gPSAnQXNQb3B1cCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57TWVudUNsYXNzfSA9ICdIaXN0b3J5QmFjayc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgIENvdW50ZXIgICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgIE1lbnVJRCAgICAgPT4gJE1lbnUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBpbmNpZGVudCBzaWduYWwKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSBjb2xvciBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvdmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGJ1aWxkIHZlcnNpb24gc2VsZWN0aW9uCiAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTsnCiAgICAgICAgICAgIC4gIkNvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07IgogICAgKTsKCiAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gKCAkQmFzZUxpbmsgLiAiVmVyc2lvbklEPSRfLT57VmVyc2lvbklEfSIgKSwKICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgIlZlcnNpb24gIiAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICApLAogICAgICAgIH0KICAgIH0gJFZlcnNpb25MaXN0LT5AKjsKCiAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFZlcnNpb25TZWxlY3Rpb25EYXRhLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnVmVyc2lvblNlbGVjdGlvbicsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWxlY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uU2VsZWN0aW9uID0+ICRWZXJzaW9uU2VsZWN0aW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlciggVmFsdWUgPT4gIkNJIyRDb25maWdJdGVtLT57TnVtYmVyfSIgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgaWYgYSB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzIChUT0RPOiBXaGVuIGRvZXMgaXQgbm90PykKICAgIGlmICggJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKCiAgICAgICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgbmFtZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiAgPT4gMTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJZGVudGF0aW9uID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RhdGEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nKSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIG15ICVHcm91cExvb2t1cDsKICAgICAgICBteSBAUGFnZXM7CiAgICAgICAgbXkgJFBhZ2VTaG93bjsKICAgICAgICBteSAkUGFnZVJlcXVlc3RlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQYWdlJyApOwogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBQYWdlcywgJFBhZ2U7CgogICAgICAgICAgICBpZiAoICRQYWdlUmVxdWVzdGVkICYmICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VSZXF1ZXN0ZWQgKSB7CiAgICAgICAgICAgICAgICAkUGFnZVNob3duID0gJFBhZ2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VOYW1lJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lID0+ICRQYWdlc1swXXtOYW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlcykgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgICAgID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkR2V0UGFyYW1WZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICA9PiAkUGFnZS0+e05hbWV9IGVxICRQYWdlU2hvd24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKEBQYWdlcykgewogICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0R5bmFtaWNGaWVsZEhUTUx9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKS0+UGFnZVJlbmRlcigKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICAgICAgICAgUGFnZVJlZiAgICA9PiAkUGFnZVNob3duIC8vICRQYWdlc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgY3JlYXRlICYgY2hhbmdlIHVzZXIgZGF0YQogICAgZm9yIG15ICRLZXkgKHF3KENyZWF0ZSBDaGFuZ2UpKSB7CiAgICAgICAgJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeVVzZXJGdWxsTmFtZScgfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnknIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBtZXRhIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdGFibGUgdmlldyBtb2RlCiAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJyk7CgogICAgIyBjcmVhdGUgdGhlIGxpbmsgdGFibGUKICAgIG15ICRMaW5rVGFibGVTdHJnID0gJExheW91dE9iamVjdC0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgT2JqZWN0ICAgICAgICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBvdXRwdXQgdGhlIGxpbmsgdGFibGUKICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMaW5rVGFibGUnIC4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBteSBATm9uSW5saW5lQXR0YWNobWVudHM7CgogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICAgICAgcHVzaCBATm9uSW5saW5lQXR0YWNobWVudHMsICRBdHRhY2htZW50RGF0YTsKICAgIH0KCiAgICBpZiAoQE5vbklubGluZUF0dGFjaG1lbnRzKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnREYXRhIChATm9uSW5saW5lQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQnLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57U2Vzc2lvbn17VXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJE91dHB1dCwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyAgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXN0b21lclBlcm1pc3Npb24oCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBIVE1MVmlldyBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0hUTUxWaWV3JyApIHsKCiAgICAgICAgIyBHZXQgdGhlIEZpZWxkIGNvbnRlbnQuCiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRDb25maWdJdGVtLT57RGVzY3JpcHRpb259OwoKICAgICAgICAjICMgQnVpbGQgYmFzZSBVUkwgZm9yIGluLWxpbmUgaW1hZ2VzLgogICAgICAgICMgbXkgJFNlc3Npb25JRCA9ICcnOwogICAgICAgICMgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAjICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgIyAgICAgJEZpZWxkQ29udGVudCA9fiBzewogICAgICAgICMgICAgICAgICAoQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7Q29uZmlnSXRlbUlEPVxkKztGaWxlbmFtZT1cdyspCiAgICAgICAgIyAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICAjIH0KCiAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHN0b3JlIGluIGhhc2ggZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVBdHRhY2htZW50czsKICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudExpc3QpIHsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX0gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17Q29udGVudElEfSA9ICRBdHRhY2htZW50c3skRmlsZW5hbWV9e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9OwogICAgICAgIH0KCiAgICAgICAgIyBuZWVkZWQgdG8gcHJvdmlkZSBuZWNlc3NhcnkgcGFyYW1zIGZvciBSaWNoVGV4dERvY3VtZW50U2VydmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbDsgY2hhcnNldD0idXRmLTgiJywKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBiYXNlIHVybAogICAgICAgIG15ICRVUkwgPSAnQWN0aW9uPScgLiAoICRMYXlvdXRPYmplY3QtPntVc2VyVHlwZX0gZXEgJ1VzZXInID8gJ0FnZW50JyA6ICdDdXN0b21lcicgKSAuICdJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudCcKICAgICAgICAgICAgLiAiO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRDb25maWdJdGVtLT57VmVyc2lvbklEfTtGaWxlbmFtZT0iOwoKICAgICAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICAgICAjIGlubGluZSBkb2N1bWVudHMKICAgICAgICAlRGF0YSA9ICRMYXlvdXRPYmplY3QtPlJpY2hUZXh0RG9jdW1lbnRTZXJ2ZSgKICAgICAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICAgICAgVVJMICAgICAgICAgICAgICAgID0+ICRVUkwsCiAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgICA9PiBcJUF0dGFjaG1lbnRzLAogICAgICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkRmllbGRDb250ZW50ID0gJERhdGF7Q29udGVudH07CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyAgICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Nlc3NhcnkKICAgICAgICBpZiAoICRTYWZlQ29udGVudHtSZXBsYWNlfSApIHsKICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBkZXRlY3QgYWxsIHBsYWluIHRleHQgbGlua3MgYW5kIHB1dCB0aGVtIGludG8gYW4gSFRNTCA8YT4gdGFnCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncwogICAgICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIGVzY2FwZSBzaW5nbGUgcXVvdGVzCiAgICAgICAgJEZpZWxkQ29udGVudCA9fiBzLycvJiMzOTsvZzsKCiAgICAgICAgIyBSZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50LgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICBteSAkRmlsZW5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZW5hbWUnICk7CgogICAgICAgICMgY2hlY2sgcGFyYW0KICAgICAgICBpZiAoICEkRmlsZW5hbWUgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdGaWxlbmFtZSBpcyBuZWVkZWQhJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFuIGF0dGFjaG1lbnQKICAgICAgICBteSAkRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkuIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJERhdGEpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCggJERhdGEtPiUqICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIE1heSBiZSBhbiBhdHRhY2shISEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgTm8gKGtub3duKSBzdWJhY3Rpb24KICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnSW52YWxpZCBTdWJhY3Rpb24uJyksCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICApOwoKICAgICAgICAjIGlmIG5vIGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0LCB0cnkgZnJvbSB1c2VyIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkRmlsdGVyVmFsdWUgfHwgJEZpbHRlclZhbHVlIGVxICcnICkgewogICAgICAgICAgICAkRmlsdGVyVmFsdWUgPSAkU3RvcmVkRmlsdGVycy0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfS0+e0VxdWFsc307CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgJENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVyVmFsdWUsCiAgICAgICAgfTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZScgKSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICB9CgogICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgbXkgJVNvcnQ7CgogICAgIyBnZXQgaWYgc2VhcmNoIHJlc3VsdCBzaG91bGQgYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eQogICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBkZWZpbmUgcG9zaXRpb24gb2YgdGhlIGZpbHRlciBpbiB0aGUgZnJvbnRlbmQKICAgIG15ICRQcmlvQ291bnRlciA9IDEwMDA7CgogICAgIyB0byBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMKICAgIG15ICVGaWx0ZXJzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEczsKICAgIG15IEBWaWV3YWJsZUNsYXNzSURzOwoKICAgICMgZmV0Y2ggZmlsdGVycyBmcm9tIGNvbmZpZwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZ3JvdXAgbG9va3VwIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9IDA7CiAgICAgICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgICAgIGZvciBteSAkR3JvdXBOYW1lICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEdST1VQIGlmICEkR3JvdXBMb29rdXB7JEdyb3VwTmFtZX07CgogICAgICAgICAgICAgICAgICAgICRBY2Nlc3NPayA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgJEFjY2Vzc09rOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBhcyBzZWxlY3RlZCBmaWx0ZXIgaWYgbm90IHByZXNlbnQKICAgICAgICAgICAgJEZpbHRlciB8fD0gJENvbmZpZ0lkZW50aWZpZXI7CgogICAgICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXM7CiAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0ifSA9IHsKICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAkUGVybWlzc2lvbkNvbmRpdGlvblNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSJ9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRmlsdGVyU2VhcmNoID0gKAogICAgICAgICAgICAgICAgQ2xhc3NlcyAgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LAogICAgICAgICAgICAgICAgJURGU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXMsCiAgICAgICAgICAgICAgICAlU29ydCwKICAgICAgICAgICAgICAgIExpbWl0ID0+ICRTZWxmLT57U2VhcmNoTGltaXR9IC8vICcxMDAwJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXBwbHkgZmlsdGVyIHJlc3RyaWN0aW9ucyB0byBzZWFyY2ggZm9yCiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9ICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gc29ydCBrZXlzICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9ICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7RGVwbFN0YXRlc30gPSBbICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0RlcGxTdGF0ZXN9ID0gWyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gc29ydCBrZXlzICREZXBsU3RhdGVMaXN0LT4lKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICAgICAgaWYgKCBAVmlld2FibGVDbGFzc0lEcyAmJiBAVmlld2FibGVEZXBsU3RhdGVJRHMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICAgICAlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsdGVyc3skQ29uZmlnSWRlbnRpZmllcn0gPSB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpb0NvdW50ZXIsCiAgICAgICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkUHJpb0NvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBvbmx5IG9uZSBmaWx0ZXIgZXhpc3RzCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CgogICAgICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSBvbmx5IGZpbHRlcgogICAgICAgIG15ICgkRmlsdGVyTmFtZSkgPSBrZXlzICVGaWx0ZXJzOwoKICAgICAgICAjIGFjdGl2YXRlIHRoaXMgZmlsdGVyCiAgICAgICAgJEZpbHRlciA9ICRGaWx0ZXJOYW1lOwogICAgfQoKICAgICMgY2hlY2sgaWYgZmlsdGVyIGlzIHZhbGlkCiAgICBpZiAoICRGaWx0ZXIgJiYgIWV4aXN0cyAkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludmFsaWQgRmlsdGVyOiAlcyEnLCAkRmlsdGVyICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgaGVhZGVyIGZpbHRlcgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpbHRlcnMgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJIZWFkZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRLZXl9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJEtleSwKICAgICAgICAgICAgICAgIENsYXNzQSA9PiAkS2V5IGVxICRGaWx0ZXIgPyAnU2VsZWN0ZWQnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZmlsdGVyIGRlbGV0ZSBpZiBuZWVkZWQKICAgIGlmICglR2V0Q29sdW1uRmlsdGVyKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckRlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAlUGFnZU5hdjsKCiAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgbXkgJExpbWl0ID0gMV8wMDA7CgogICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApIHx8ICcnOwogICAgbXkgJEhlYWRlckNvbHVtbiAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgJEhlYWRlckNvbHVtbiA9fiBze1xBIENvbHVtbkZpbHRlciB9e31tc3hnOwoKICAgICMgZ2V0IGRhdGEgKHZpZXdhYmxlIGNvbmZpZyBpdGVtcy4uLikKICAgICMgc2VhcmNoIGFsbCBjb25maWcgaXRlbXMKICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zOwogICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAjIGJ1aWxkIGxpbmtzCiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICFkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICdDb2x1bW5GaWx0ZXInIC4gJENvbHVtbk5hbWUgKQogICAgICAgICAgICAuICc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtTb3J0ID0gJ1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztGaWx0ZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtGaWx0ZXIgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExhc3RDb2x1bW5GaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFzdENvbHVtbkZpbHRlcicgKSB8fCAnJzsKCiAgICBpZiAoICEkTGFzdENvbHVtbkZpbHRlciAmJiAkQ29sdW1uRmlsdGVyTGluayApIHsKCiAgICAgICAgIyBpcyBwbGFubmVkIHRvIGhhdmUgYSBsaW5rIHRvIGdvIGJhY2sgaGVyZQogICAgICAgICRMYXN0Q29sdW1uRmlsdGVyID0gMTsKICAgIH0KCiAgICBpZiAoIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyAmJiBAVmlld2FibGVDbGFzc0lEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gdmFsdWVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAhSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3RhcnRIaXQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAgICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgICAgIExpbWl0ICAgICA9PiAxMDAwMCwKICAgICAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgICAgIEFsbEhpdHMgICA9PiBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIElEUHJlZml4ICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlcn0tPntTZWFyY2h9IH0sCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRTdGFydEhpdCArICRQYWdlU2hvd24gLSAxLAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gPSBcJUZpbHRlcnM7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhGaWx0ZXJVcGRhdGUnICkgewoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ICAgICA9PiAxLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgRWxlbWVudENoYW5nZWQgICAgICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgRW5hYmxlQ29sdW1uRmlsdGVycyAgID0+IDEsCiAgICAgICAgICAgIEZyb250ZW5kICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgPT4gJEZpbHRlciwKICAgICAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlRmlsdGVycywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICRIZWFkZXJDb2x1bW4gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWx0ZXJDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgc3RvcmUgY29sdW1uIGZpbHRlcnMKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9IFwlQ29sdW1uRmlsdGVyOwoKICAgICAgICBteSAkU3RvcmVkRmlsdGVyc0tleSA9ICdVc2VyU3RvcmVkRmlsdGVyQ29sdW1ucy0nIC4gJFNlbGYtPntBY3Rpb259IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9OwoKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU3RvcmVkRmlsdGVyc0tleSwKICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJFN0b3JlZEZpbHRlcnMgKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudFRvdGFsID0gMDsKICAgIG15ICVOYXZCYXJGaWx0ZXI7CiAgICBmb3IgbXkgJEZpbHRlckNvbHVtbiAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGlmIChAVmlld2FibGVEZXBsU3RhdGVJRHMpIHsKICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKSB8fCAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmlsdGVyQ29sdW1uIGVxICRGaWx0ZXIgKSB7CiAgICAgICAgICAgICRDb3VudFRvdGFsID0gJENvdW50OwogICAgICAgIH0KCiAgICAgICAgJE5hdkJhckZpbHRlcnsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0tPntQcmlvfSB9ID0gewogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlckNvbHVtbiwKICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0gfSwKICAgICAgICB9OwogICAgfQoKICAgICMgc2hvdyBjb25maWcgaXRlbXMKICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIEZpbHRlcnMgICAgICAgICAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gXCVHZXRDb2x1bW5GaWx0ZXIsCiAgICAgICAgTGFzdENvbHVtbkZpbHRlciAgICAgID0+ICRMYXN0Q29sdW1uRmlsdGVyLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVG90YWwgICAgICAgICAgICAgICAgID0+ICRDb3VudFRvdGFsLAogICAgICAgIFJlcXVlc3RlZFVSTCAgICAgICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nKSwKICAgICAgICBUaXRsZVZhbHVlICAgICAgICAgICAgPT4gJFNlbGYtPntGaWx0ZXJzfXskRmlsdGVyfS0+e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICB9LAogICAgICAgIEZyb250ZW5kID0+ICdDdXN0b21lcicsCgogICAgICAgICMgZG8gbm90IHByaW50IHRoZSByZXN1bHQgZWFybGllciwgYnV0IHJldHVybiBjb21wbGV0ZSBjb250ZW50CiAgICAgICAgT3V0cHV0ID0+IDEsCiAgICApOwoKICAgIGlmICggZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoIkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSIpLT57IkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gifSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQm94JywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LAogICAgKTsKCiAgICBteSBAU2V0SW5uZXJGaWVsZHM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICMgZmV0Y2ggdGhlIGxpc3Qgb2YgaW5jbHVkZWQgZHluYW1pYyBmaWVsZCBuYW1lcyB0byBnZXQgdGhlIGNvbmZpZ3MKICAgICAgICBteSAkU2V0SW5uZXJGaWVsZE5hbWVzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgIENvbnRlbnQgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNldElubmVyRmllbGROYW1lcykgKSB7CiAgICAgICAgICAgIG15ICRJbm5lckZpZWxkQ29uZmlncyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4geyBtYXAgeyAoICRfID0+IDEgKSB9ICRTZXRJbm5lckZpZWxkTmFtZXMtPkAqIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkSW5uZXJGaWVsZENvbmZpZ3MpICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckZpZWxkQ29uZmlnUmVmICggJElubmVyRmllbGRDb25maWdzLT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBuZWNlc3NhcnkgdG8gbm90IG92ZXJ3cml0ZSBjYWNoZWQgZGF0YSBvZiBmaWVsZCBjb25maWcgYnkgYWx0ZXJpbmcgdGhlIHJlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgIG15ICVJbm5lckZpZWxkQ29uZmlnID0gJElubmVyRmllbGRDb25maWdSZWYtPiUqOwoKICAgICAgICAgICAgICAgICAgICAkSW5uZXJGaWVsZENvbmZpZ3tMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRJbm5lckZpZWxkQ29uZmlne0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNldElubmVyRmllbGRzLCBcJUlubmVyRmllbGRDb25maWc7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1c2ggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0sIEBTZXRJbm5lckZpZWxkczsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nICkgfHwgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncyA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+eyBzcHJpbnRmKCAiJTAyZCIsICRGaWx0ZXIgKSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpICkgewoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ZpbHRlciBpbnZhbGlkIScpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIGdyb3VwIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKICAgICAgICBteSAkQWNjZXNzT2sgPSAwOwoKICAgICAgICAjIGZldGNoIGdyb3VwcyBvZiBjdXN0b21lciB1c2VyCiAgICAgICAgbXkgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkUGVybWlzc2lvbkdyb3VwICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgaWYgKCAkR3JvdXBMb29rdXB7JFBlcm1pc3Npb25Hcm91cH0gKSB7CiAgICAgICAgICAgICAgICAkQWNjZXNzT2sgPSAxOwogICAgICAgICAgICAgICAgbGFzdCBHUk9VUDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZU5hdjsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2hBY3Rpb24nICkgewoKICAgICAgICBteSAkU29ydEJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdBZ2UnOwoKICAgICAgICBpZiAoICRTb3J0QnkgZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgICAgICB9CgogICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG9yZGVyaW5nIHRvIGJlIHVzZWQuCiAgICAgICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdVcCc7CgogICAgICAgICMgU2V0IHRoZSBzb3J0IG9yZGVyIGZyb20gdGhlIHJlcXVlc3QgcGFyYW1ldGVycywgb3IgdGFrZSB0aGUgZGVmYXVsdC4KICAgICAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgICAgIHx8ICREZWZhdWx0T3JkZXJCeTsKCiAgICAgICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgICAgIG15ICVTb3J0OwoKICAgICAgICAjIGdldCBpZiBzZWFyY2ggcmVzdWx0IHNob3VsZCBiZSBwcmUtc29ydGVkIGJ5IHByaW9yaXR5CiAgICAgICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICAgICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgICAgIGlmICggISRWaWV3ICYmICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgdXNlIFByZXZpZXcgYXMgZGVmYXVsdCBhcyBpbiBMYXlvdXRDb25maWdJdGVtCiAgICAgICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgICAgIC4gJztTdWJhY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTdWJhY3Rpb259ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApOwoKICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U3ViYWN0aW9ufSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBwYXJhbXMgZnJvbSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVHZXRQYXJhbTsKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtIChxdyhOdW1iZXIgTmFtZSkpIHsKCiAgICAgICAgICAgICMgZmV0Y2ggc2luZ2xlIHZhbHVlIHBhcmFtcwogICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRTZWFyY2hQYXJhbSApOwogICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjskU2VhcmNoUGFyYW09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gKTsKICAgICAgICAgICAgJExpbmtTb3J0IC49ICI7JFNlYXJjaFBhcmFtPSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICBteSBAQXJyYXlTZWFyY2hQYXJhbXMgPSBxdyhDbGFzc0lEcyk7CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnRGVwbFN0YXRlSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0luY2lTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtQXJyYXkgKEBBcnJheVNlYXJjaFBhcmFtcykgewoKICAgICAgICAgICAgIyBmZXRjaCBtdWx0aSB2YWx1ZSBwYXJhbXMKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtQXJyYXkgKTsKICAgICAgICAgICAgaWYgKCBncmVwIHskX30gQEFycmF5ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbUFycmF5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oICcnLCBtYXAgeyAiOyRTZWFyY2hQYXJhbUFycmF5PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSBAQXJyYXkgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVNlYXJjaENvbmZpZzsKICAgICAgICBteSAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gR2V0UGFyYW0gdG8gc3RvcmUgaXQgbGF0ZXIgaW4gdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewoKICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZCBzZWFyY2ggcGFyYW1zIHRvIGxpbmtzCiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYgJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCB7ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rU29ydCAuPSAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJExpbmtQYWdlIC49ICc7JzsKICAgICAgICAkTGlua1NvcnQgLj0gJzsnOwoKICAgICAgICAlU2VhcmNoQ29uZmlnID0gKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBtZXJnZSBmaWx0ZXJlZCBjbGFzc2VzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gY2xhc3NlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17Q2xhc3NJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hDbGFzc2VzOwogICAgICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCAkR2V0UGFyYW17Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzTGlzdC0+eyRDbGFzc0lEfSB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaENsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tDbGFzc2VzfSA9IFxAU2VhcmNoQ2xhc3NlczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7Q2xhc3Nlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFNlYXJjaENvbmZpZ3tDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIG1lcmdlIGZpbHRlcmVkIGRlcGxveW1lbnQgc3RhdGVzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gZGVwbG95bWVudCBzdGF0ZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0RlcGxTdGF0ZUlEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbFN0YXRlSUQgKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9IH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hEZXBsU3RhdGVzLCAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIUBTZWFyY2hEZXBsU3RhdGVzICkgewogICAgICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSBcQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9OwogICAgICAgIH0KCiAgICAgICAgIyBtYXAgZmlsdGVyZWQgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hJbmNpU3RhdGVzID0gbWFwIHsgJEluY2lTdGF0ZUxpc3QtPnskX30gfSAkR2V0UGFyYW17SW5jaVN0YXRlSURzfS0+QCo7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7SW5jaVN0YXRlc30gPSBcQFNlYXJjaEluY2lTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VhcmNoQ29uZmlne051bWJlcn0gPSAkR2V0UGFyYW17TnVtYmVyfSA/ICRHZXRQYXJhbXtOdW1iZXJ9IDogdW5kZWY7CiAgICAgICAgJFNlYXJjaENvbmZpZ3tOYW1lfSAgID0gJEdldFBhcmFte05hbWV9ICAgPyAkR2V0UGFyYW17TmFtZX0gICA6IHVuZGVmOwoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CgogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRmllbGROYW1lICgga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyByZXN0cmljdCBzZWFyY2ggYnkgcGVybWlzc2lvbiBjb25kaXRpb24gY3VzdG9tZXIgY29tcGFueSBhbmQgY3VzdG9tZXIgdXNlcgogICAgICAgICMgTk9URSB0aGlzIG92ZXJ3cml0ZXMgcHJldmlvdXNseSBzZXQgc2VhcmNoIHBhcmFtcyBmb3IgdGhlIGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMKICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3siRHluYW1pY0ZpZWxkXyRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSJ9ID0gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAkU2VhcmNoQ29uZmlneyJEeW5hbWljRmllbGRfJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9In0gPSB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJUZpbHRlcnMgPSAoCiAgICAgICAgICAgICRGaWx0ZXIgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBQcmlvICAgPT4gMTAwMCwKICAgICAgICAgICAgICAgIFNlYXJjaCA9PiBcJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElU2VhcmNoQ29uZmlnICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdTZWFyY2ggcGFyYW1zIGludmFsaWQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgICAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgICAgICMgVHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUuCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAgICAgJFZpZXcgPSAkS2V5OwogICAgICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICAgICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwoKICAgICAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgICAgIG15ICRMaW1pdCA9IDFfMDAwOwoKICAgICAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAgICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgTGltaXQgID0+ICRMaW1pdCwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRvdGFsID0gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgICAgIG15ICRTdGFydEhpdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICBteSBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICBMaW1pdCAgPT4gJFN0YXJ0SGl0ICsgJFBhZ2VTaG93biAtIDEsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICk7CgogICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+IDEwMDAwLAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgID0+IHNjYWxhciBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgSURQcmVmaXggID0+ICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICApOwoKICAgICAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ICA9ICRGaWx0ZXI7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfSA9IFwlRmlsdGVyczsKCiAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgPT4gJEZpbHRlciwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyAgICAgICAgID0+IFxAVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBMaW5rU29ydCAgICAgICAgICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXIgICAgPT4gMCwKICAgICAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgICAgICBUb3RhbCAgICAgICAgICAgICAgICAgPT4gJFRvdGFsLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIEZyb250ZW5kICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAoKICAgICAgICAgICAgIyBkbyBub3QgcHJpbnQgdGhlIHJlc3VsdCBlYXJsaWVyLCBidXQgcmV0dXJuIGNvbXBsZXRlIGNvbnRlbnQKICAgICAgICAgICAgT3V0cHV0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFJlc3VsdCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoIkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSIpLT57IkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gifSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hCb3gnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBzdG9yZSBkcm9wZG93biByZXN0cmljdGlvbnMgZnJvbSBwZXJtaXNzaW9uIGNvbmRpdGlvbgogICAgICAgIG15ICVTZWFyY2hhYmxlUGFyYW1zID0gKAogICAgICAgICAgICBJbmNpU3RhdGUgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgc2VhcmNoYWJsZSBwYXJhbXMKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSA9IHsKICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICRDbGFzc0xvb2t1cHskX30KICAgICAgICAgICAgICAgICAgICA/ICggJENsYXNzTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgOiAoKQogICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30gKSApIHsKICAgICAgICAgICAgbXkgJURlcGxTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJERlcGxTdGF0ZUxpc3QtPiUqOwogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gewogICAgICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgICAgICA/ICggJERlcGxTdGF0ZUxvb2t1cHskX30gPT4gJF8gKQogICAgICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gJERlcGxTdGF0ZUxpc3Q7CiAgICAgICAgfQoKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0N1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hGb3JtJywKICAgICAgICApOwoKICAgICAgICBteSAlRGVmYXVsdHM7CiAgICAgICAgaWYgKCAkQ29uZmlnLT57RGVmYXVsdHN9ICkgewogICAgICAgICAgICBLRVk6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRDb25maWctPntEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICEkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOwoKICAgICAgICAgICAgICAgIGlmICggJEtleSA9fiAvXkNvbmZpZ0l0ZW0oQ3JlYXRlfENoYW5nZSkvICkgewogICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkRGVmYXVsdHN7JEtleX0gPSAkVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJERlZmF1bHRzeyRLZXl9ID0gJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICAgICAgbXkgJVBlcm1pc3Npb25Db25kaXRpb25EYXRhID0gbWFwIHsgaW50KCRfKSA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPnskX30tPntOYW1lfSB9IGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzLT4lKjsKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gXCVQZXJtaXNzaW9uQ29uZGl0aW9uRGF0YSwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nLAogICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkRmlsdGVyIHx8ICcnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUGVybWlzc2lvbkNvbmRpdGlvblN0cmcgPT4gJFBlcm1pc3Npb25Db25kaXRpb25TdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgICAgICAgICAgbXkgJEhpc3RvcmljYWxWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+SGlzdG9yaWNhbFZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGEgPSAkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGhpc3RvcmljIHZhbHVlcyB0byBjdXJyZW50IHZhbHVlcyAoaWYgdGhleSBkb24ndCBleGlzdCBhbnltb3JlKQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEhpc3RvcmljYWxWYWx1ZXMpICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREYXRhLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGEtPnskS2V5fSA9ICRIaXN0b3JpY2FsVmFsdWVzLT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyREYXRhfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gPSBtYXAgeyAkXyA9PiAkRGF0YS0+eyRffSB9IGtleXMgJUZpbHRlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIEhUTUwKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICAgID0+IHt9LAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntEZWZhdWx0c317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ051bWJlcicsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgICk7CgogICAgICAgIG15ICRDbGFzc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZhdWx0c3tDbGFzc0lEc30sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3MnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzU3RyZyA9PiAkQ2xhc3NTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgICAgICBteSAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0RlcGxveW1lbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0+ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSB3YW50ZWQgaW5jaWRlbnQgc3RhdGVzCiAgICAgICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7SW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRGVmYXVsdHN7SW5jaWRlbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgZ2V0IHBhZ2UgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScpIC8vIHt9OwoKICAgIGlmICggISRDb25maWctPntWZXJzaW9uc0VuYWJsZWR9ICkgewogICAgICAgICRWZXJzaW9uSUQgPSB1bmRlZjsKICAgIH0KCiAgICAjIGdldCBjb250ZW50CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKCiAgICAgICAgIyBhZGRpdGlvbmFsIHNhbmV0eSBjaGVjayAtIEN1c3RvbWVyUGVybWlzc2lvbiBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSB1c3VhbGx5CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtIG5vdCBmb3VuZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIGNvbG9yIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJFByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY292ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICdDb2xvcicgLiAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkNvbG9yJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoIFZhbHVlID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSApOwoKICAgIGlmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfSApIHsKICAgICAgICBpZiAoICRDb25maWctPntHZW5lcmFsSW5mb317TnVtYmVyfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGdWxsU3ViJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgID0+ICRDb25maWctPntHZW5lcmFsSW5mb317Q2xhc3N9ID8gJENvbmZpZ0l0ZW0tPntDbGFzc30gOiAnQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtDbGFzc30gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NTdWInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVDb2xvckNsYXNzfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVDb2xvckNsYXNzfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSB9OwoKICAgICAgICBJTkZPOgogICAgICAgIGZvciBteSAkSW5mbyAocXcvRGVwbG95bWVudFN0YXRlIEluY2lkZW50U3RhdGUgQ3JlYXRlZFRpbWUgTGFzdENoYW5nZWRUaW1lLykgewogICAgICAgICAgICBuZXh0IElORk8gaWYgISRDb25maWctPntHZW5lcmFsSW5mb317JEluZm99OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRJbmZvLAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBhIHZlcnNpb24gYWxyZWFkeSBleGlzdHMgKFRPRE86IFdoZW4gZG9lcyBpdCBub3Q/KQogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgewogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUdyb3VwTG9va3VwOwogICAgICAgIG15IEBQYWdlczsKICAgICAgICBteSAkUGFnZVNob3duOwogICAgICAgIG15ICRQYWdlUmVxdWVzdGVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1BhZ2UnICk7CiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgJFBhZ2UtPntJbnRlcmZhY2VzfTsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQ3VzdG9tZXInIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CgogICAgICAgICAgICAjIHJlc3RyaWN0aW9uIGJ5IEdyb3VwcyBpcyBvcHRpb25hbAogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKCiAgICAgICAgICAgICAgICAjIGZldGNoIHRoZSBncm91cHMgd2hlcmUgdGhlIHVzZXIgaGFzIHJlYWQgYWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAUGFnZXMsICRQYWdlOwoKICAgICAgICAgICAgaWYgKCAkUGFnZVJlcXVlc3RlZCAmJiAkUGFnZS0+e05hbWV9IGVxICRQYWdlUmVxdWVzdGVkICkgewogICAgICAgICAgICAgICAgJFBhZ2VTaG93biA9ICRQYWdlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnZU5hbWUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgPT4gJFBhZ2VzWzBde05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdlTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lICAgICA9PiAkUGFnZS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQgICAgID0+ICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VTaG93bi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQFBhZ2VzKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtLT57RHluYW1pY0ZpZWxkSFRNTH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCcpLT5QYWdlUmVuZGVyKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdmVyc2lvbiBsaXN0CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSAmJiAkQ29uZmlnLT57VmVyc2lvbnNTZWxlY3RhYmxlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tOycKICAgICAgICAgICAgICAgICAgICAuICJDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1BhZ2U9WyUgRGF0YS5OYW1lIHwgdXJpICVdOyIsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlU2hvd24gPyAkUGFnZVNob3duLT57TmFtZX0gOiAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICggJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kXy0+e1ZlcnNpb25JRH0iICksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgICAgICAgICAiJF8tPntOYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiICgkXy0+e0NyZWF0ZVRpbWV9KSIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICRWZXJzaW9uTGlzdC0+QCo7CgogICAgICAgICAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAVmVyc2lvblNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZlcnNpb25TZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgQWxpZ25Ecm9wZG93blJpZ2h0JywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZlcnNpb25zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25TZWxlY3Rpb24gPT4gJFZlcnNpb25TZWxlY3Rpb24sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgbGluayB0YWJsZSB2aWV3IG1vZGUKICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRDb25maWdPYmplY3QtPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAjIGNyZWF0ZSB0aGUgbGluayB0YWJsZQogICAgbXkgJExpbmtUYWJsZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgTGlua0xpc3RXaXRoRGF0YSA9PiAkTGlua0xpc3RXaXRoRGF0YSwKICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICBPYmplY3QgICAgICAgICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIG91dHB1dCB0aGUgbGluayB0YWJsZQogICAgaWYgKCRMaW5rVGFibGVTdHJnKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUYWJsZScgLiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGlua1RhYmxlU3RyZyA9PiAkTGlua1RhYmxlU3RyZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRzJywKICAgICAgICApOwoKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRPdXRwdXQsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT4lKiwKICAgICAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU2lnbmFsID0+ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgICAgICBTdHlsZUNsYXNzZXMgID0+ICRTdHlsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/Dashboard/ITSMConfigItemGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIHBhcmFtZXRlcnMKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWcgTmFtZSBVc2VySUQpKSB7CiAgICAgICAgZGllICJHb3Qgbm8gJE5lZWRlZCEiIGlmICggISRTZWxmLT57JE5lZWRlZH0gKTsKICAgIH0KCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKICAgIG15ICVSZXZlcnRlZENsYXNzTGlzdCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgbXkgJFJlbW92ZUZpbHRlcnMgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUmVtb3ZlRmlsdGVycycgKSB8fCAkUGFyYW17UmVtb3ZlRmlsdGVyc30gfHwgMDsKCiAgICAjIGdldCBzb3J0aW5nIHBhcmFtcwogICAgZm9yIG15ICRJdGVtIChxdyhTb3J0QnkgT3JkZXJCeSkpIHsKICAgICAgICAkU2VsZi0+eyRJdGVtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRJdGVtICkgfHwgJFBhcmFteyRJdGVtfTsKICAgIH0KCiAgICAjIEdldCBhZGQgZmlsdGVycyBwYXJhbS4KICAgICRTZWxmLT57QWRkRmlsdGVyc30gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQWRkRmlsdGVycycgKSB8fCAkUGFyYW17QWRkRmlsdGVyc30gfHwgMDsKICAgICRTZWxmLT57VGFiQWN0aW9ufSAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGFiQWN0aW9uJyApICB8fCAkUGFyYW17VGFiQWN0aW9ufSAgfHwgMDsKCiAgICAjIEdldCBwcmV2aW91cyBzb3J0aW5nIGNvbHVtbi4KICAgICRTZWxmLT57U29ydGluZ0NvbHVtbn0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydGluZ0NvbHVtbicgKSB8fCAkUGFyYW17U29ydGluZ0NvbHVtbn07CgogICAgIyBzZXQgZmlsdGVyIHNldHRpbmdzCiAgICBmb3IgbXkgJEl0ZW0gKHF3KENvbHVtbkZpbHRlciBHZXRDb2x1bW5GaWx0ZXIgR2V0Q29sdW1uRmlsdGVyU2VsZWN0KSkgewogICAgICAgICRTZWxmLT57JEl0ZW19ID0gJFBhcmFteyRJdGVtfTsKICAgIH0KCiAgICAjIHNhdmUgY29sdW1uIGZpbHRlcnMKICAgICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9ICAgICAgICAgPSAnVXNlckRhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpY0NvbHVtbkZpbHRlcnMnIC4gJFNlbGYtPntOYW1lfTsKICAgICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gPSAnVXNlckRhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpY0NvbHVtbkZpbHRlcnNSZWFsS2V5cycgLiAkU2VsZi0+e05hbWV9OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkSlNPTk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFVzZXJPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgaWYgKCRSZW1vdmVGaWx0ZXJzKSB7CiAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30sCiAgICAgICAgICAgIFZhbHVlICA9PiAnJywKICAgICAgICApOwogICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30sCiAgICAgICAgICAgIFZhbHVlICA9PiAnJywKICAgICAgICApOwogICAgfQoKICAgICMganVzdCBpbiBjYXNlIG5ldyBmaWx0ZXIgdmFsdWVzIGFycml2ZQogICAgZWxzaWYgKAogICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0gKQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gKQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbkZpbHRlcn0gKQogICAgICAgICkKICAgIHsKCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyBmaWx0ZXIgcHJlZmVyZW5jZXMgZm9yIHRoaXMgd2lkZ2V0CiAgICAgICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDb2x1bW5QcmVmVmFsdWVzOwogICAgICAgICAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gfSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmVmFsdWVzID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFBSRUZWQUxVRVM6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskQ29sdW1ufSBlcSAnRGVsZXRlRmlsdGVyJyApIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVtblByZWZWYWx1ZXMtPnskQ29sdW1ufTsKICAgICAgICAgICAgICAgICAgICBuZXh0IFBSRUZWQUxVRVM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkQ29sdW1uUHJlZlZhbHVlcy0+eyRDb2x1bW59ID0gJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57JENvbHVtbn07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30sCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiAkQ29sdW1uUHJlZlZhbHVlcyApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzYXZlIHJlYWwga2V5J3MgbmFtZQogICAgICAgICAgICBteSAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzOwogICAgICAgICAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSB9ICkgewogICAgICAgICAgICAgICAgJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlcyA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgUkVBTEtFWVZBTFVFUzoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFJFQUxLRVlWQUxVRVMgaWYgISRDb2x1bW47CgogICAgICAgICAgICAgICAgbXkgJERlbGV0ZUZpbHRlciA9IDA7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gKSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGdyZXAgeyAkXyBlcSAnRGVsZXRlRmlsdGVyJyB9IEB7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxldGVGaWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59ICkgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcCB7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59LT57JF99IGVxICdEZWxldGVGaWx0ZXInIH0KICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAleyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxldGVGaWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJERlbGV0ZUZpbHRlcikgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzLT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICAgICAgICAgIG5leHQgUkVBTEtFWVZBTFVFUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMtPnskQ29sdW1ufSA9ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBjb2x1bW4gbmFtZXMgZnJvbSBQcmVmZXJlbmNlcwogICAgbXkgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyczsKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9ICkgewogICAgICAgICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzKSB7CiAgICAgICAgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyczsKICAgICAgICBteSBAQ29sdW1uRmlsdGVycyA9IGtleXMgJXskUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzfTsKICAgICAgICBmb3IgbXkgJEZpZWxkIChAQ29sdW1uRmlsdGVycykgewogICAgICAgICAgICAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0tPnsgJEZpZWxkIC4gJFNlbGYtPntOYW1lfSB9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVycy0+eyRGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbHVtbiByZWFsIG5hbWVzIGZyb20gUHJlZmVyZW5jZXMKICAgIG15ICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5czsKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9IH0gKSB7CiAgICAgICAgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXMpIHsKICAgICAgICBteSBAQ29sdW1uRmlsdGVyc1JlYWwgPSBrZXlzICV7JFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzfTsKICAgICAgICBmb3IgbXkgJEZpZWxkIChAQ29sdW1uRmlsdGVyc1JlYWwpIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JEZpZWxkfSA9ICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5cy0+eyRGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGN1cnJlbnQgZmlsdGVyCiAgICBteSAkTmFtZSAgICAgICAgICAgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICkgfHwgJyc7CiAgICBteSAkUHJlZmVyZW5jZXNLZXkgICAgICAgICAgID0gJ1VzZXJEYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWNGaWx0ZXInIC4gJFNlbGYtPntOYW1lfTsKICAgIG15ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXkgPSAnVXNlckRhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpY0FkZGl0aW9uYWxGaWx0ZXInIC4gJFNlbGYtPntOYW1lfTsKICAgIGlmICggJFNlbGYtPntOYW1lfSBlcSAkTmFtZSApIHsKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSAgICAgICAgICAgfHwgJyc7CiAgICAgICAgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBZGRpdGlvbmFsRmlsdGVyJyApIHx8ICcnOwogICAgfQoKICAgICMgUmVtZW1iZXIgdGhlIHNlbGVjdGVkIGZpbHRlciBpbiB0aGUgc2Vzc2lvbi4KICAgIGlmICggJFNlbGYtPntGaWx0ZXJ9ICkgewoKICAgICAgICAjIHVwZGF0ZSBzZXNzaW9uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICRQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJFNlbGYtPnskUHJlZmVyZW5jZXNLZXl9IHx8ICRTZWxmLT57Q29uZmlnfS0+e0ZpbHRlcn0gfHwgJ0Fzc2lnbmVkVG9FbnRpdHknOwogICAgfQoKICAgICMgUmVtZW1iZXIgdGhlIHNlbGVjdGVkIGZpbHRlciBpbiB0aGUgc2Vzc2lvbi4KICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSApIHsKCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkQWRkaXRpb25hbFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ID0gJFNlbGYtPnskQWRkaXRpb25hbFByZWZlcmVuY2VzS2V5fSB8fCAkU2VsZi0+e0NvbmZpZ30tPntBZGRpdGlvbmFsRmlsdGVyfSB8fCAnQXNzaWduZWRUb0VudGl0eSc7CiAgICB9CgogICAgJFNlbGYtPntQcmVmS2V5U2hvd259ICAgPSAnVXNlckRhc2hib2FyZFByZWYnIC4gJFNlbGYtPntOYW1lfSAuICctU2hvd24nOwogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gPSAnVXNlckRhc2hib2FyZFByZWYnIC4gJFNlbGYtPntOYW1lfSAuICctQ29sdW1ucyc7CiAgICAkU2VsZi0+e1BhZ2VTaG93bn0gICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+eyAkU2VsZi0+e1ByZWZLZXlTaG93bn0gfQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+e0xpbWl0fTsKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwoKICAgICMgaGFzaCB3aXRoIGFsbCB2YWxpZCBzb3J0YWJsZSBjb2x1bW5zICh0YWtlbiBmcm9tIElUU01Db25maWdJdGVtU2VhcmNoKQogICAgIyBTb3J0QnkgID0+ICdBZ2UnLCAgICMgQ3JlYXRlZHxOdW1iZXJ8Q2hhbmdlZHxOYW1lfERlcGxTdGF0ZXxDdXJEZXBsU3RhdGUKICAgICMgfEluY2lTdGF0ZXxDdXJJbmNpU3RhdGUKICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9ID0gewogICAgICAgICdBZ2UnICAgICAgICAgID0+IDEsCiAgICAgICAgJ051bWJlcicgICAgICAgPT4gMSwKICAgICAgICAnTmFtZScgICAgICAgICA9PiAxLAogICAgICAgICdDcmVhdGVkJyAgICAgID0+IDEsCiAgICAgICAgJ0xhc3RDaGFuZ2VkJyAgPT4gMSwKICAgICAgICAnRGVwbFN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJEZXBsU3RhdGUnID0+IDEsCiAgICAgICAgJ0luY2lTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VySW5jaVN0YXRlJyA9PiAxLAogICAgfTsKCiAgICAjIGRlZmluZSBmaWx0ZXJhYmxlIGNvbHVtbnMKICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgICMgc2V0IGNvbmZpZyBpdGVtIGtleSBmaWx0ZXIKICAgIG15ICVDb25maWdJdGVtS2V5czsKICAgIG15ICVSZW1vdmVLZXlzOwoKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtDb25maWdJdGVtS2V5fSApICkgewogICAgICAgIENMQVNTOgogICAgICAgIGZvciBteSAkQ2xhc3MgKCBrZXlzICRTZWxmLT57Q29uZmlnfXtDb25maWdJdGVtS2V5fS0+JSogKSB7CgogICAgICAgICAgICAjIGNvbmZpZ3VyZWQgY2xhc3Mgbm90IGZvdW5kIG9uIHN5c3RlbQogICAgICAgICAgICBpZiAoICEkUmV2ZXJ0ZWRDbGFzc0xpc3R7JENsYXNzfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgY2xhc3MgJyRDbGFzcycgd2FzIGNvbmZpZ3VyZWQgZm9yIHRoZSB3aWRnZXQgJFNlbGYtPntBY3Rpb259LCBidXQgZG9lcyBub3QgZXhpc3Qgb24gdGhlIHN5c3RlbS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgQ0xBU1M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggJENvbmZpZ0l0ZW1LZXlzeyAkU2VsZi0+e0NvbmZpZ317Q29uZmlnSXRlbUtleX17JENsYXNzfSB9LT5AKiwgJFJldmVydGVkQ2xhc3NMaXN0eyRDbGFzc307CiAgICAgICAgICAgICRSZW1vdmVLZXlzeyAkU2VsZi0+e0NvbmZpZ317Q29uZmlnSXRlbUtleX17JENsYXNzfSB9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXlzfSA9IFwlQ29uZmlnSXRlbUtleXM7CgogICAgaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgbXkgJEN1c3RvbWVyVXNlcldpZGdldENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ1VJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlcicpOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUtleSAoIGtleXMgJEN1c3RvbWVyVXNlcldpZGdldENvbmZpZy0+e0NvbmZpZ317Q29uZmlnSXRlbUtleX0tPiUqICkgewogICAgICAgICAgICAkUmVtb3ZlS2V5c3skQ29uZmlnSXRlbUtleX0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJlbW92ZSBDdXN0b21lcklEIGlmIEN1c3RvbWVyIEluZm9ybWF0aW9uIENlbnRlcgogICAgZm9yIG15ICRSZW1vdmVLZXkgKCBrZXlzICVSZW1vdmVLZXlzICkgewogICAgICAgIGRlbGV0ZSAkU2VsZi0+e0NvbHVtbkZpbHRlcn17JFJlbW92ZUtleX07CiAgICAgICAgZGVsZXRlICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfXskUmVtb3ZlS2V5fTsKICAgICAgICBkZWxldGUgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9eyRSZW1vdmVLZXl9OwogICAgICAgIGRlbGV0ZSAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc317JFJlbW92ZUtleX07CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNvbmZpZ3VyZSBjb2x1bW5zCiAgICBteSBAQ29sdW1uc0VuYWJsZWQ7CiAgICBteSBAQ29sdW1uc0F2YWlsYWJsZTsKICAgIG15IEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxlZDsKCiAgICAjIGNoZWNrIGZvciBkZWZhdWx0IHNldHRpbmdzCiAgICBpZiAoCiAgICAgICAgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApCiAgICAgICAgKQogICAgewogICAgICAgIEBDb2x1bW5zQXZhaWxhYmxlID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSB9CiAgICAgICAgICAgIGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSBlcSAnMicgfQogICAgICAgICAgICBzb3J0IHsgJFNlbGYtPl9EZWZhdWx0Q29sdW1uU29ydCgpIH0ga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyBmaWx0ZXIgcHJlZmVyZW5jZXMgZm9yIHRoaXMgd2lkZ2V0CiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBKU09OIG9iamVjdAogICAgbXkgJEpTT05PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCB0YWtlIHRoZW0KICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+eyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9LAogICAgICAgICk7CgogICAgICAgIEBDb2x1bW5zRW5hYmxlZCA9IGdyZXAgeyAkQ29sdW1uc0VuYWJsZWQtPntDb2x1bW5zfS0+eyRffSA9PSAxIH0KICAgICAgICAgICAga2V5cyAleyAkQ29sdW1uc0VuYWJsZWQtPntDb2x1bW5zfSB9OwoKICAgICAgICBpZiAoICRDb2x1bW5zRW5hYmxlZC0+e09yZGVyfSAmJiBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfSApIHsKICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQHsgJENvbHVtbnNFbmFibGVkLT57T3JkZXJ9IH07CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSBkdXBsaWNhdGUgY29sdW1ucwogICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgIG15IEBDb2x1bW5zRW5hYmxlZEF1eDsKCiAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBDb2x1bW5zRW5hYmxlZCkgewogICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNFbmFibGVkQXV4LCAkQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwogICAgfQoKICAgIG15ICVDb2x1bW5zOwogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCB7ICRhIGNtcCAkYiB9IEBDb2x1bW5zQXZhaWxhYmxlICkgewogICAgICAgICRDb2x1bW5ze0NvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gKCBncmVwIHsgJENvbHVtbk5hbWUgZXEgJF8gfSBAQ29sdW1uc0VuYWJsZWQgKSA/IDEgOiAwOwogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkQ29sdW1uTmFtZSB9IEBDb2x1bW5zRW5hYmxlZCApIHsKICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0F2YWlsYWJsZU5vdEVuYWJsZWQsICRDb2x1bW5OYW1lOwogICAgICAgIH0KICAgIH0KCiAgICBteSBAUGFyYW1zID0gKAogICAgICAgIHsKICAgICAgICAgICAgRGVzYyAgPT4gVHJhbnNsYXRhYmxlKCdTaG93biBjb25maWcgaXRlbXMnKSwKICAgICAgICAgICAgTmFtZSAgPT4gJFNlbGYtPntQcmVmS2V5U2hvd259LAogICAgICAgICAgICBCbG9jayA9PiAnT3B0aW9uJywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgNSAgPT4gJyA1JywKICAgICAgICAgICAgICAgIDEwID0+ICcxMCcsCiAgICAgICAgICAgICAgICAxNSA9PiAnMTUnLAogICAgICAgICAgICAgICAgMjAgPT4gJzIwJywKICAgICAgICAgICAgICAgIDI1ID0+ICcyNScsCiAgICAgICAgICAgICAgICA1MCA9PiAnNTAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2VsZi0+e1BhZ2VTaG93bn0sCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIERlc2MgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTaG93biBDb2x1bW5zJyksCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uc30sCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0FsbG9jYXRpb25MaXN0JywKICAgICAgICAgICAgQ29sdW1ucyAgICAgICAgICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFwlQ29sdW1ucyApLAogICAgICAgICAgICBDb2x1bW5zRW5hYmxlZCAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zRW5hYmxlZCApLAogICAgICAgICAgICBDb2x1bW5zQXZhaWxhYmxlID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxlZCApLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCnN1YiBDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGlmIGZyb250ZW5kIG1vZHVsZSBvZiBsaW5rIGlzIHVzZWQKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57TGlua30gJiYgJFNlbGYtPntDb25maWd9LT57TGlua30gPX4gL0FjdGlvbj0oLis/KShbJjtdLis/fCkkLyApIHsKICAgICAgICBteSAkQWN0aW9uID0gJDE7CiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPnskQWN0aW9ufSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57TGlua30gPSAnJzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICgKICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKCiAgICAgICAgIyBEb24ndCBjYWNoZSB0aGlzIGdsb2JhbGx5IGFzIGl0IGNvbnRhaW5zIEpTIHRoYXQgaXMgbm90IGluc2lkZSBvZiB0aGUgSFRNTC4KICAgICAgICBDYWNoZVRUTCA9PiB1bmRlZiwKICAgICAgICBDYWNoZUtleSA9PiB1bmRlZiwKICAgICk7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17RmlsdGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0ZpbHRlckNvbHVtbn07CiAgICBteSBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zOwoKICAgIGlmICgKICAgICAgICAjIFRPRE8gY2hlY2sKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ09ubHlWYWx1ZXNPbkNvbmZpZ0l0ZW0nKQogICAgICAgICkKICAgIHsKICAgICAgICBteSAlU2VhcmNoUGFyYW1zICAgICAgICAgICAgPSAkU2VsZi0+X1NlYXJjaFBhcmFtc0dldCglUGFyYW0pOwogICAgICAgIG15ICVDb25maWdJdGVtU2VhcmNoICAgICAgICA9ICV7ICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbVNlYXJjaH0gfTsKICAgICAgICBteSAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAleyAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5fSB9OwoKICAgICAgICAjIEFkZCB0aGUgYWRkaXRpb25hbCBmaWx0ZXIgdG8gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBwYXJhbS4KICAgICAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gKSB7CiAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoID0gKAogICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW1TZWFyY2gsCiAgICAgICAgICAgICAgICAleyAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRIZWFkZXJDb2x1bW4gPX4gbS9eRHluYW1pY0ZpZWxkXy8gJiYgIWRlZmluZWQgJFNlbGYtPntEeW5hbWljRmllbGR9ICkgewoKICAgICAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgICMgbWFrZSBzdXJlIHRoYXQgZXZlbiBhIHZhbHVlIG9mIDAgaXMgcGFzc2VkIGFzIGEgU2VsZWN0ZWQgdmFsdWUsIGUuZy4gVW5jaGVja2VkIHZhbHVlIG9mIGEKICAgICMgY2hlY2stYm94IGR5bmFtaWMgZmllbGQuCiAgICBteSAkU2VsZWN0ZWRWYWx1ZSA9IGRlZmluZWQgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJ9LT57ICRIZWFkZXJDb2x1bW4gLiAkU2VsZi0+e05hbWV9IH0KICAgICAgICA/ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfS0+eyAkSGVhZGVyQ29sdW1uIC4gJFNlbGYtPntOYW1lfSB9CiAgICAgICAgOiAnJzsKCiAgICBteSAkTGFiZWxDb2x1bW4gPSAkSGVhZGVyQ29sdW1uOwogICAgaWYgKCAkTGFiZWxDb2x1bW4gPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICRMYWJlbENvbHVtbiA9fiBze1xBIER5bmFtaWNGaWVsZF8gfXt9eG1zOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJExhYmVsQ29sdW1uOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRMYWJlbENvbHVtbiA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgfQogICAgfQoKICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRTZWxmLT5fQ29sdW1uRmlsdGVySlNPTigKICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWxDb2x1bW4sCiAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn0sCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRWYWx1ZSwKICAgICAgICBEYXNoYm9hcmROYW1lID0+ICRTZWxmLT57TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKCn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VhcmNoUGFyYW1zICAgICAgICAgICAgPSAkU2VsZi0+X1NlYXJjaFBhcmFtc0dldCglUGFyYW0pOwogICAgbXkgQENvbHVtbnMgICAgICAgICAgICAgICAgID0gQHsgJFNlYXJjaFBhcmFtc3tDb2x1bW5zfSB9OwogICAgbXkgJUNvbmZpZ0l0ZW1TZWFyY2ggICAgICAgID0gJXsgJFNlYXJjaFBhcmFtc3tDb25maWdJdGVtU2VhcmNofSB9OwogICAgbXkgJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5ID0gJXsgJFNlYXJjaFBhcmFtc3tDb25maWdJdGVtU2VhcmNoU3VtbWFyeX0gfTsKCiAgICAjIGRlZmluZSBpbmNpZGVudCBzaWduYWxzCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyBzdG9yZSBkZXBsb3ltZW50IHNpZ25hbHMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY29udmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9IGxjICRDb2xvciA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICBteSAkQ2FjaGVLZXkgICAgID0gam9pbiAnLScsICRTZWxmLT57TmFtZX0sICRTZWxmLT57QWN0aW9ufSwgJFNlbGYtPntQYWdlU2hvd259LCAkU2VsZi0+e1N0YXJ0SGl0fSwgJFNlbGYtPntVc2VySUR9OwogICAgbXkgJENhY2hlQ29sdW1ucyA9IGpvaW4oCiAgICAgICAgJywnLAogICAgICAgIG1hcCB7ICRfIC4gJz0+JyAuICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRffSB9IHNvcnQga2V5cyAleyAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gfQogICAgKTsKICAgICRDYWNoZUtleSAuPSAnLScgLiAkQ2FjaGVDb2x1bW5zIGlmICRDYWNoZUNvbHVtbnM7CgogICAgIyBJZiBTb3J0QnkgcGFyYW1ldGVyIGlzIG5vdCBkZWZpbmVkLCBzZXQgdG8gdmFsdWUgZnJvbSAlQ29uZmlnSXRlbVNlYXJjaCwgb3RoZXJ3aXNlIHNldCB0byBkZWZhdWx0IHZhbHVlICdBZ2UnLgogICAgaWYgKCAhZGVmaW5lZCAkU2VsZi0+e1NvcnRCeX0gKSB7CiAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnsgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSB9ICkgewogICAgICAgICAgICAkU2VsZi0+e1NvcnRCeX0gPSAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9ID0gJ0FnZSc7CiAgICAgICAgfQogICAgfQoKICAgICRDYWNoZUtleSAuPSAnLScgLiAkU2VsZi0+e1NvcnRCeX0gaWYgZGVmaW5lZCAkU2VsZi0+e1NvcnRCeX07CgogICAgIyBTZXQgT3JkZXJCeSBwYXJhbWV0ZXIgdG8gdGhlIHNlYXJjaC4KICAgIG15ICRJc0NhY2hlRm9yVXNlID0gMDsKICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRTZWxmLT57QWRkRmlsdGVyc30KICAgICAgICAgICAgfHwgJFNlbGYtPntUYWJBY3Rpb259CiAgICAgICAgICAgIHx8ICFkZWZpbmVkICRTZWxmLT57U29ydGluZ0NvbHVtbn0KICAgICAgICAgICAgfHwgJFNlbGYtPntTb3J0aW5nQ29sdW1ufSBuZSAkU2VsZi0+e1NvcnRCeX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gPSAkU2VsZi0+e09yZGVyQnl9OwogICAgICAgICAgICAkSXNDYWNoZUZvclVzZSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSA9ICRTZWxmLT57T3JkZXJCeX0gZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CiAgICAgICAgfQogICAgfQoKICAgICMgU2V0IG9yZGVyIGZvciBibG9ja3MuCiAgICAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSA9ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9IHx8ICdEb3duJzsKCiAgICAjIFNldCBwcmV2aW91cyBzb3J0aW5nIGNvbHVtbiBwYXJhbWV0ZXIgZm9yIGFsbCBjb2x1bW5zLgogICAgJFBhcmFte1NvcnRpbmdDb2x1bW59ID0gJFNlbGYtPntTb3J0Qnl9OwoKICAgICRDYWNoZUtleSAuPSAnLScgLiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSBpZiBkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9OwoKICAgICMgQ3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlciBzaG93cyBkYXRhIHBlciBDdXN0b21lcklECiAgICBpZiAoICRQYXJhbXtDdXN0b21lcklEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFBhcmFte0N1c3RvbWVySUR9OwogICAgfQoKICAgICMgQ3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIgc2hvd3MgZGF0YSBwZXIgQ3VzdG9tZXJVc2VySUQKICAgIGlmICggJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFBhcmFte0N1c3RvbWVyVXNlcklEfTsKICAgIH0KCiAgICAjIEFkZCB0aGUgYWRkaXRpb25hbCBmaWx0ZXIgYWx3YXlzIHRvIHRoZSBjYWNoZSBrZXksIGlmIGEgYWRkaXRpb25hbCBmaWx0ZXIgZXhpc3RzLgogICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewogICAgICAgICRDYWNoZUtleSAuPSAnLScgLiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9OwogICAgfQoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdEYXNoYm9hcmQnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9IC4gJy1MaXN0JywKICAgICk7CgogICAgIyBmaW5kIGFuZCBzaG93IGNvbmZpZyBpdGVtIGxpc3QKICAgIG15ICRDYWNoZVVzZWQgPSAxOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICMgYWRkIHNvcnQgYnkgcGFyYW1ldGVyIHRvIHRoZSBzZWFyY2gKICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfHwgISRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfSApIHsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1NvcnRCeX0gJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnsgJFNlbGYtPntTb3J0Qnl9IH0gKSB7CiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9ID0gJFNlbGYtPntTb3J0Qnl9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkQ2FjaGVVc2VkID0gJElzQ2FjaGVGb3JVc2UgPyAxIDogMDsKCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHNBcnJheTsKCiAgICAgICAgIyBUT0RPIHVuZGVyc3RhbmQKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9IHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlzdH0gKSApIHsKCiAgICAgICAgICAgICMgQ29weSBvcmlnaW5hbCBjb2x1bW4gZmlsdGVyLgogICAgICAgICAgICBteSAlQ29sdW1uRmlsdGVyID0gJXsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9IHx8IHt9IH07CgogICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfSApICkgewoKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5Q29uZmlnICggJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0tPkAqICkgewoKICAgICAgICAgICAgICAgICAgICAjIGlmIGNsYXNzZXMgYXJlIGZpbHRlcmVkLCBhZGp1c3Qgc2VhcmNoIGNvbmZpZyBhY2NvcmRpbmdseQogICAgICAgICAgICAgICAgICAgIGlmICggJENvbHVtbkZpbHRlcntDbGFzc0lEc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBGaWx0ZXJlZENsYXNzSURzOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCAkS2V5Q29uZmlnLT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZ3JlcCB7ICRfID09ICRDbGFzc0lEIH0gJENvbHVtbkZpbHRlcntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXlDb25maWctPntDbGFzc0lEc30gPSBcQEZpbHRlcmVkQ2xhc3NJRHM7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzQXJyYXksICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW1TZWFyY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICRLZXlDb25maWctPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAleyAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57RmlsdGVyfSB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIExpbWl0ID0+ICRTZWxmLT57UGFnZVNob3dufSArICRTZWxmLT57U3RhcnRIaXR9IC0gMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRDb25maWdJdGVtSURzID0gXEBDb25maWdJdGVtSURzQXJyYXk7CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJFN1bW1hcnkgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdEYXNoYm9hcmQnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5IC4gJy1TdW1tYXJ5JywKICAgICkgLy8ge307CgogICAgIyBJZiBubyBjYWNoZSBvciBuZXcgbGlzdCByZXN1bHQsIGRvIGNvdW50IGxvb2t1cC4KICAgIGlmICggISRTdW1tYXJ5IHx8ICEkQ2FjaGVVc2VkICkgewoKICAgICAgICAjIERlZmluZSB0aGUgc3VtbWFyeSB0eXBlcyBmb3Igd2hpY2ggbm8gY291bnQgaXMgbmVlZGVkLCBiZWNhdXNlIHdlIGhhdmUgbm8gb3V0cHV0LgogICAgICAgIG15ICVMb29rdXBOb0NvdW50U3VtbWFyeVR5cGUgPSAoCiAgICAgICAgICAgIEFzc2lnbmVkVG9FbnRpdHkgPT4gMSwKICAgICAgICApOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgKSB7CiAgICAgICAgICAgIG5leHQgVFlQRSBpZiAkTG9va3VwTm9Db3VudFN1bW1hcnlUeXBleyRUeXBlfTsKICAgICAgICAgICAgbmV4dCBUWVBFIGlmICEkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7JFR5cGV9OwoKICAgICAgICAgICAgIyBDb3B5IG9yaWdpbmFsIGNvbHVtbiBmaWx0ZXIuCiAgICAgICAgICAgIG15ICVDb2x1bW5GaWx0ZXIgPSAleyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0gfHwge30gfTsKCiAgICAgICAgICAgICMgTG9vcCB0aHJvdWdoIGFsbCBjb2x1bW4gZmlsdGVyIGVsZW1lbnRzLgogICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBzb3J0IGtleXMgJUNvbHVtbkZpbHRlciApIHsKCiAgICAgICAgICAgICAgICAjIFZlcmlmeSBpZiBjdXJyZW50IGNvbHVtbiBmaWx0ZXIgZWxlbWVudCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaAogICAgICAgICAgICAgICAgIyAgIHN1bW1hcnksIHRvIGRlbGV0ZSBpdCBmcm9tIHRoZSBjb2x1bW4gZmlsdGVyIGhhc2guCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gJiYgZ3JlcCB7ICRfLT57JEVsZW1lbnR9IH0gJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uRmlsdGVyeyRFbGVtZW50fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFN1bW1hcnktPnskVHlwZX0gPSAwOwoKICAgICAgICAgICAgaWYgKCAhJFNlbGYtPntDb25maWd9LT57SXNQcm9jZXNzV2lkZ2V0fSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57UHJvY2Vzc0xpc3R9ICkgKSB7CgogICAgICAgICAgICAgICAgIyBDaGFuZ2UgZmlsdGVyIG5hbWUgYWNjb3JkaW5nbHkuCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyOwoKICAgICAgICAgICAgICAgICMgRmlsdGVyIGlzIHVzZWQgYW5kIGlzIG5vdCBpbiB1c2VyIHByZWZlcmVkIHZhbHVlcywgc2hvdyBubyByZXN1bHRzLgogICAgICAgICAgICAgICAgIyBTZWUgYnVnIzEyODA4ICggaHR0cHM6Ly9idWdzLm90cnMub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgwOCApLgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRGaWx0ZXIKICAgICAgICAgICAgICAgICAgICAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXskVHlwZX0tPnskRmlsdGVyfSApCiAgICAgICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkQ29sdW1uRmlsdGVyeyRGaWx0ZXJ9ICkKICAgICAgICAgICAgICAgICAgICAmJiAhZ3JlcCB7ICRDb2x1bW5GaWx0ZXJ7JEZpbHRlcn0tPlswXSA9PSAkXyB9IEB7ICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXskVHlwZX0tPnskRmlsdGVyfSB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRTdW1tYXJ5LT57JFR5cGV9ID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFN1bW1hcnktPnskVHlwZX0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICAgICAleyAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7JFR5cGV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgKSB8fCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGNhY2hlCiAgICBpZiAoICEkQ2FjaGVVc2VkICYmICRTZWxmLT57Q29uZmlnfS0+e0NhY2hlVFRMTG9jYWx9ICkgewogICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAnRGFzaGJvYXJkJywKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5IC4gJy1TdW1tYXJ5JywKICAgICAgICAgICAgVmFsdWUgPT4gJFN1bW1hcnksCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q29uZmlnfS0+e0NhY2hlVFRMTG9jYWx9ICogNjAsCiAgICAgICAgKTsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSAuICctJyAuICRTZWxmLT57RmlsdGVyfSAuICctTGlzdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSAqIDYwLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZXQgdGhlIGNzcyBjbGFzcyBmb3IgdGhlIHNlbGVjdGVkIGZpbHRlciBhbmQgYWRkaXRpb25hbCBmaWx0ZXIuCiAgICAkU3VtbWFyeS0+eyAkU2VsZi0+e0ZpbHRlcn0gLiAnOjpTZWxlY3RlZCcgfSA9ICdTZWxlY3RlZCc7CiAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gKSB7CiAgICAgICAgJFN1bW1hcnktPnsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSAuICc6OlNlbGVjdGVkJyB9ID0gJ1NlbGVjdGVkJzsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYWRkIHBhZ2UgbmF2IGJhciAtIG9ubHkgcGFnaW5hdGlvbiBpcyBuZWVkZWQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAleyRTdW1tYXJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkVG90YWwgICAgICAgICAgICA9ICRTdW1tYXJ5LT57ICRTZWxmLT57RmlsdGVyfSB9IHx8IDA7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyICA9ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSA/ICV7ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSB9IDogKCk7CiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfTsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICdDb2x1bW5GaWx0ZXInIC4gJENvbHVtbk5hbWUgKQogICAgICAgICAgICAuICc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtQYWdlID0KICAgICAgICAnU3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT0nIC4gJFNlbGYtPntOYW1lfQogICAgICAgIC4gJztGaWx0ZXI9JyAuICRTZWxmLT57RmlsdGVyfQogICAgICAgIC4gJztBZGRpdGlvbmFsRmlsdGVyPScgLiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gIHx8ICcnICkKICAgICAgICAuICc7U29ydEJ5PScgLiAgICAgICAgICAgKCAkU2VsZi0+e1NvcnRCeX0gICAgICAgICAgICB8fCAnJyApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICAgICAgICAgICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gfHwgJycgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBpZiAoICRQYXJhbXtDdXN0b21lcklEfSApIHsKICAgICAgICAkTGlua1BhZ2UgLj0gIkN1c3RvbWVySUQ9JFBhcmFte0N1c3RvbWVySUR9OyI7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJExpbmtQYWdlIC49ICJDdXN0b21lclVzZXJJRD0kUGFyYW17Q3VzdG9tZXJVc2VySUR9OyI7CiAgICB9CgogICAgbXkgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgIFN0YXJ0SGl0ICAgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgIFBhZ2VTaG93biAgID0+ICRTZWxmLT57UGFnZVNob3dufSwKICAgICAgICBBbGxIaXRzICAgICA9PiAkVG90YWwgfHwgMSwKICAgICAgICBBY3Rpb24gICAgICA9PiAnQWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgQUpBWFJlcGxhY2UgPT4gJ0Rhc2hib2FyZCcgLiAkU2VsZi0+e05hbWV9LAogICAgICAgIElEUHJlZml4ICAgID0+ICdEYXNoYm9hcmQnIC4gJFNlbGYtPntOYW1lfSwKICAgICAgICBBSkFYICAgICAgICA9PiAkUGFyYW17QUpBWH0sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNGaWx0ZXJOYXZCYXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgdGFibGUgaGVhZGVyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlcicsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgIyByZW1vdmUgKC0pIGZyb20gbmFtZSBmb3IgSlMgY29uZmlnCiAgICBteSAkV2lkZ2V0TmFtZSA9ICRTZWxmLT57TmFtZX07CiAgICAkV2lkZ2V0TmFtZSA9fiBzey19e31nOwoKICAgICMgc2hvdyBub24tbGFiZWxlZCB0YWJsZSBoZWFkZXJzCiAgICBteSAkQ1NTID0gJyc7CgogICAgIyBTZW5kIGRhdGEgdG8gSlMgZm9yIGluaXQgY29udGFpbmVyLgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJbml0Q29udGFpbmVyRGFzaGJvYXJkJyAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICBTb3J0QnkgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgT3JkZXJCeSA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdIZWFkZXJDb2x1bW4nIC4gJFdpZGdldE5hbWUsCiAgICAgICAgVmFsdWUgPT4gXEBDb2x1bW5zCiAgICApOwoKICAgICMgc2hvdyBhbGwgbmVlZGVkIGhlYWRlcnMKICAgIEhFQURFUkNPTFVNTjoKICAgIGZvciBteSAkSGVhZGVyQ29sdW1uIChAQ29sdW1ucykgewoKICAgICAgICBpZiAoICRIZWFkZXJDb2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICRDU1MgPSAnJzsKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXJDb2x1bW4pOwoKICAgICAgICAgICAgIyBTZXQgdGl0bGUgZGVzY3JpcHRpb24uCiAgICAgICAgICAgIGlmICggJFNlbGYtPntTb3J0Qnl9ICYmICRTZWxmLT57U29ydEJ5fSBlcSAkSGVhZGVyQ29sdW1uICkgewogICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYyA9ICcnOwogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJEZXBsU3RhdGUnIHx8ICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0luY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnIHx8ICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0xhc3QgY2hhbmdlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXJDb2x1bW4pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBzdXJyb3VuZGluZyBjb250YWluZXIKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57JEhlYWRlckNvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4gICB8fCAnJywKICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0KICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBteSAkQ3NzOwoKICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgQ3NzICAgICAgICA9PiAkQ3NzLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXJTb3J0JyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgbXkgJENzczsKCiAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIENzcyAgICAgICAgPT4gJENzcywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3Qgc29ydGFibGUKICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtblNvcnRhYmxlJyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0aW5nQ29sdW1uICAgID0+ICRQYXJhbXtTb3J0aW5nQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRHluYW1pYyBmaWVsZHMKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBIRUFERVJDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJExhYmVsOwogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICBpZiAoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSAmJiBkZWZpbmVkICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKICAgICAgICAgICAgICAgICRDU1MgLj0gJ0ZpbHRlckFjdGl2ZSAnOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICMgZ2V0IGZpZWxkIHNvcnRhYmxlIGNvbmRpdGlvbgogICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aXRsZQogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAjIGFkZCBzdXJyb3VuZGluZyBjb250YWluZXIKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9CiAgICAgICAgICAgICAgICAgICAgJiYgKCAkU2VsZi0+e1NvcnRCeX0gZXEgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGR5bmFtaWMgZmllbGQgaXMgc29ydGFibGUgYW5kIGZpbHRlcmFibGUgKHNvcnRhYmxlIGNoZWNrIHdhcyBtYWRlIGJlZm9yZSkKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkZpbHRlclNvcnQnIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRpbmdDb2x1bW4gICAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IHNvcnRhYmxlIGFuZCBmaWx0ZXJhYmxlIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSB0aGUgZHluYW1pYyBmaWVsZCBpcyBvbmx5IHNvcnRhYmxlIChzb3J0YWJsZSBjaGVjayB3YXMgbWFkZSBiZWZvcmUpCiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5Tb3J0YWJsZScgLiAkRHluYW1pY0ZpZWxkTmFtZSAuICRXaWRnZXROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgc29ydGFibGUgZHluYW1pYyBmaWVsZAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCB3YXMgbm90IHNvcnRhYmxlIChjaGVjayB3YXMgbWFkZSBhbmQgZmFpbCBiZWZvcmUpCiAgICAgICAgICAgICMgaXQgbWlnaHQgYmUgZmlsdGVyYWJsZQogICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgZmlsdGVyYWJsZSAobm90IHNvcnRhYmxlKSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGZpZWxkIGlzIG5vdCBmaWx0ZXJhYmxlIGFuZCBub3Qgc29ydGFibGUKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IHBsYWluIGR5bmFtaWMgZmllbGQgaGVhZGVyIChub3QgZmlsdGVyYWJsZSwgbm90IHNvcnRhYmxlKQogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRMYWJlbCB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdGlja2V0cwogICAgbXkgJENvdW50ID0gMDsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgJENvdW50Kys7CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvdW50IDwgJFNlbGYtPntTdGFydEhpdH07CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgIyBzZXQgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc2lnbmFscwogICAgICAgICRDb25maWdJdGVte0N1ckRlcGxTaWduYWx9ID0gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbXtDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICElQ29uZmlnSXRlbTsKCiAgICAgICAgIyBzZXQgYSBkZWZhdWx0IHRpdGxlIGlmIGNvbmZpZyBpdGVtIGhhcyBubyB0aXRsZQogICAgICAgIGlmICggISRDb25maWdJdGVte1RpdGxlfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17VGl0bGV9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJ1RoaXMgdGlja2V0IGhhcyBubyB0aXRsZSBvciBzdWJqZWN0JwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93JywKICAgICAgICAgICAgRGF0YSA9PiBcJUNvbmZpZ0l0ZW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAgICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgIyBzaG93IGFsbCBuZWVkZWQgY29sdW1ucwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1Db2x1bW4gKEBDb2x1bW5zKSB7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1Db2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRCbG9ja1R5cGUgPSAnJzsKICAgICAgICAgICAgICAgIG15ICRDU1NDbGFzcyAgPSAnJzsKCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1OdW1iZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJENvbmZpZ0l0ZW17TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQWdlJyApIHsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgIEFnZSAgID0+ICRDb25maWdJdGVte0FnZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ0N1ckRlcGwnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ0N1ckluY2knOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnVGl0bGUnICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gIiREYXRhVmFsdWUgIiB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdob2xlVGl0bGUgPT4gIkR1bWIgdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbVNpZ25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1N0YXRlJyB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1NpZ25hbCcgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljVmFsdWUgPT4gJERhdGFWYWx1ZSB8fCAnLScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0KCiAgICAjIHNob3cgIm5vbmUiIGlmIG5vIGNvbmZpZyBpdGVtIGlzIGF2YWlsYWJsZQogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRHMgfHwgIUB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY05vbmUnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgcmVmcmVzaCB0aW1lCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKCiAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdXaWRnZXRSZWZyZXNoJyAuICRXaWRnZXROYW1lLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgTmFtZUhUTUwgICAgICAgPT4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICBSZWZyZXNoVGltZSAgICA9PiAkUmVmcmVzaCwKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBhY3RpdmUgZmlsdGVycyBhbmQgYWRkIGEgJ3JlbW92ZSBmaWx0ZXJzJyBidXR0b24gdG8gdGhlIHdpZGdldCBoZWFkZXIKICAgIG15ICRGaWx0ZXJBY3RpdmUgPSAwOwogICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSApICkgewogICAgICAgICRGaWx0ZXJBY3RpdmUgPSAxOwogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dpZGdldENvbnRhaW5lcicgLiAkV2lkZ2V0TmFtZSwKICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgRmlsdGVyQWN0aXZlICAgPT4gJEZpbHRlckFjdGl2ZSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICV7JFN1bW1hcnl9LAogICAgICAgICAgICBGaWx0ZXJWYWx1ZSAgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgQWRkaXRpb25hbEZpbHRlciA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICAgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBBSkFYID0+ICRQYXJhbXtBSkFYfSwKICAgICk7CgogICAgcmV0dXJuICRDb250ZW50Owp9CgpzdWIgX0luaXRpYWxDb2x1bW5GaWx0ZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb2x1bW5OYW1lfTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfSB8fCAkUGFyYW17Q29sdW1uTmFtZX07CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJycsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdDb2x1bW5GaWx0ZXInOwogICAgaWYgKCAkUGFyYW17Q3NzfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyAnIC4gJFBhcmFte0Nzc307CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwoKICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInKS0+JEZ1bmN0aW9uTmFtZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAkQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgSGVhZGVyQ29sdW1uICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpZWxkTmFtZSBuZSAkSGVhZGVyQ29sdW1uOwoKICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgICAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgIG15ICRJc0ZpbHRyYWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzRmlsdHJhYmxlOwoKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gPSAkSXNGaWx0cmFibGU7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtSURzKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgaGlzdG9yaWNhbCB2YWx1ZXMgZm9yIHRoZSBmaWVsZAogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICRCYWNrZW5kT2JqZWN0LT5Db2x1bW5GaWx0ZXJWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgPT4gJENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29sdW1uRmlsdGVyVmFsdWVzOwp9CgojID1oZWFkMiBfQ29sdW1uRmlsdGVySlNPTigpCgojICAgICBjcmVhdGVzIGEgSlNPTiBzZWxlY3QgZmlsdGVyIGZvciBjb2x1bW4gaGVhZGVyCgojICAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxPYmplY3QtPl9Db2x1bW5GaWx0ZXJKU09OKAojICAgICAgICAgQ29sdW1uTmFtZSA9PiAnUXVldWUnLAojICAgICAgICAgTGFiZWwgICAgICA9PiAnUXVldWUnLAojICAgICAgICAgQ29sdW1uVmFsdWVzID0+IHsKIyAgICAgICAgICAgICAxID0+ICdQb3N0TWFzdGVyJywKIyAgICAgICAgICAgICAyID0+ICdKdW5rJywKIyAgICAgICAgIH0sCiMgICAgICAgICBTZWxlY3RlZFZhbHVlICcxJywKIyAgICAgKTsKCiMgPWN1dAoKc3ViIF9Db2x1bW5GaWx0ZXJKU09OIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHluYW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQYXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyApIHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAgICAgICMgU2V0IHBvc3NpYmxlIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFZhbHVlS2V5ICggc29ydCB7IGxjICRWYWx1ZXN7JGF9IGNtcCBsYyAkVmFsdWVzeyRifSB9IGtleXMgJVZhbHVlcyApIHsKICAgICAgICAgICAgcHVzaCBAeyREYXRhfSwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFZhbHVlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlc3skVmFsdWVLZXl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9IC4gJFBhcmFte0Rhc2hib2FyZE5hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNLZXknLAogICAgICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1NlbGVjdGVkVmFsdWV9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZSA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gJEpTT047Cn0KCnN1YiBfU2VhcmNoUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIHNlYXJjaCBiYXNlIGF0dHJpYnV0ZXMKICAgIG15ICVDb25maWdJdGVtU2VhcmNoOwogICAgbXkgJUR5bmFtaWNGaWVsZHNQYXJhbWV0ZXJzOwogICAgbXkgQFBhcmFtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9LT57QXR0cmlidXRlc307CgogICAgIyByZWFkIHVzZXIgcHJlZmVyZW5jZXMgYW5kIGNvbmZpZyB0byBnZXQgY29sdW1ucyB0aGF0CiAgICAjIHNob3VsZCBiZSBzaG93biBpbiB0aGUgZGFzaGJvYXJkIHdpZGdldCAodGhlIHByZWZlcmVuY2VzCiAgICAjIGhhdmUgcHJlY2VkZW5jZSkKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbHVtbiBuYW1lcyBmcm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5jZXNDb2x1bW4gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0sCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGRlZmF1bHQgc2V0dGluZ3MKICAgIG15IEBDb2x1bW5zOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApICkgewogICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSBlcSAnMicgfQogICAgICAgICAgICBzb3J0IHsgJFNlbGYtPl9EZWZhdWx0Q29sdW1uU29ydCgpIH0ga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgIH0KICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW4pIHsKICAgICAgICBpZiAoICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9ICYmICV7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7CiAgICAgICAgICAgICAgICBkZWZpbmVkICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9LT57JF99CiAgICAgICAgICAgICAgICAgICAgJiYgJFByZWZlcmVuY2VzQ29sdW1uLT57Q29sdW1uc30tPnskX30gZXEgJzEnCiAgICAgICAgICAgIH0gc29ydCB7ICRTZWxmLT5fRGVmYXVsdENvbHVtblNvcnQoKSB9IGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAgICAgICAgfQogICAgICAgIGlmICggJFByZWZlcmVuY2VzQ29sdW1uLT57T3JkZXJ9ICYmIEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9ICkgewogICAgICAgICAgICBAQ29sdW1ucyA9IEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9OwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICBteSAlVW5pcXVlQ29sdW1uczsKICAgICAgICBteSBAQ29sdW1uc0VuYWJsZWRBdXg7CgogICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1ucykgewogICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNFbmFibGVkQXV4LCAkQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgQENvbHVtbnMgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CiAgICB9CgogICAgewoKICAgICAgICAjIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGR5bmFtaWMgZmllbGRzIHRvIGdldCB0aGUgb25lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIERZTkFNSUNGSUVMRE5BTUU6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lIChAQ29sdW1ucykgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FIGlmICREeW5hbWljRmllbGROYW1lICF+IG17IER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgICMgcmVtb3ZlIGR5bmFtaWMgZmllbGQgcHJlZml4CiAgICAgICAgICAgIG15ICRGaWVsZE5hbWUgPSAkRHluYW1pY0ZpZWxkTmFtZTsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9fiBzL0R5bmFtaWNGaWVsZF8vL2dpOwogICAgICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0tPnskRmllbGROYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0gfHwge30sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IGZpbHRlcmFibGUgRHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzRmlsdHJhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCBpcyBmaWx0ZXJhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRGaWx0cmFibGVDb2x1bW5zIGhhc2gKICAgICAgICBpZiAoJElzRmlsdHJhYmxlKSB7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHNvcnRhYmxlIER5bmFtaWMgZmllbGRzCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc1NvcnRhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICApOwoKICAgICAgICAjIGlmIHRoZSBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRTb3J0YWJsZUNvbHVtbnMgaGFzaAogICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIFNUUklORzoKICAgIGZvciBteSAkU3RyaW5nIChAUGFyYW1zKSB7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRTdHJpbmc7CiAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJFN0cmluZzsKCiAgICAgICAgIyBwdXNoIEFSUkFZUkVGIGF0dHJpYnV0ZXMgZGlyZWN0bHkgaW4gYW4gQVJSQVlSRUYKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXkKICAgICAgICAgICAgPX4gL14oU3RhdGVUeXBlfFN0YXRlVHlwZUlEc3xTdGF0ZXN8U3RhdGVJRHN8QXJjaGl2ZUZsYWdzfENyZWF0ZWRVc2VySURzfENyZWF0ZWRTdGF0ZXN8Q3JlYXRlZFN0YXRlSURzKSQvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIGlmICggJFZhbHVlID1+IG17LH1zbXggKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sIHNwbGl0KCAvLC8sICRWYWx1ZSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSB9LCAkVmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgcGFyYW1ldGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgY2FwdHVyZSBkeW5hbWljIGZpZWxkIG5hbWUgKHdpdGggRHluYW1pY0ZpZWxkXykKICAgICAgICAjIGluICQxIGFuZCB0aGUgT3BlcmF0b3IgaW4gJDIKICAgICAgICAjIHBvc3NpYmxlIER5bmFtaWMgRmllbGRzIG9wdGlvbnMgaW5jbHVkZToKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0VxdWFscz0xMjM7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9MaWtlPXZhbHVlKjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0dyZWF0ZXJUaGFuPTIwMDEtMDEtMDEgMDE6MDE6MDE7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9HcmVhdGVyVGhhbkVxdWFscz0yMDAxLTAxLTAxIDAxOjAxOjAxOwogICAgICAgICMgICBEeW5hbWljRmllbGRfTmFtZVhfU21hbGxlclRoYW49MjAwMi0wMi0wMiAwMjowMjowMjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX1NtYWxsZXJUaGFuRXF1YWxzPTIwMDItMDItMDIgMDI6MDI6MDI7CiAgICAgICAgZWxzaWYgKCAkS2V5ID1+IG17XEEgKER5bmFtaWNGaWVsZF8uKz8pIF8gKC4rPykgXHp9c3htICkgewogICAgICAgICAgICBwdXNoIEB7ICREeW5hbWljRmllbGRzUGFyYW1ldGVyc3skMX0tPnskMn0gfSwgJFZhbHVlOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSApIHsKCiAgICAgICAgICAgICMgY2hhbmdlIHNvcnQgYnksIGlmIG5lZWRlZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkS2V5IGVxICdTb3J0QnknCiAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1NvcnRCeX0KICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRTZWxmLT57U29ydEJ5fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRTZWxmLT57U29ydEJ5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRLZXkgZXEgJ1NvcnRCeScgJiYgISRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoeyRLZXl9ID0gJFZhbHVlOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICFyZWYgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZVRtcCA9ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9OwogICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSA9IFskVmFsdWVUbXBdOwogICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sICRWYWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQHsgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gfSwgJFZhbHVlOwogICAgICAgIH0KICAgIH0KICAgICVDb25maWdJdGVtU2VhcmNoID0gKAogICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICVEeW5hbWljRmllbGRzUGFyYW1ldGVycywKCiAgICAgICAgIyBUT0RPIGNoZWNrIGlmIHBlcm1pc3Npb24gaXMgbmVlZGVkCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSB8fCAncm8nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnk7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CgogICAgICAgICMgQWRkIGZpbHRlcnMgZm9yIGFzc2lnZW5kIGFuZCBhY2Nlc3NpYmxlIGNvbmZpZyBpdGVtcyBmb3IgdGhlIGN1c3RvbWVyIHVzZXIgaW5mb3JtYXRpb24gY2VudGVyIGFzIGEKICAgICAgICAjICAgYWRkaXRpb25hbCBmaWx0ZXIgdG9nZXRoZXIgd2l0aCB0aGUgb3RoZXIgZmlsdGVycy4gT25lIG9mIHRoZW0gbXVzdCBiZSBhbHdheXMgYWN0aXZlLgogICAgICAgIG15IEBDb25maWdJdGVtS2V5Q29uZmlnczsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1LZXlERiAoIGtleXMgJFNlbGYtPntDb25maWdJdGVtS2V5c30tPiUqICkgewogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtS2V5Q29uZmlncywgewogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXlzfXskQ29uZmlnSXRlbUtleURGfSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJENvbmZpZ0l0ZW1LZXlERiIgPT4gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9IC8vIHVuZGVmLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5ID0gKAogICAgICAgICAgICBBc3NpZ25lZFRvRW50aXR5ID0+IFxAQ29uZmlnSXRlbUtleUNvbmZpZ3MsCiAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoU3VtbWFyeSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CgogICAgICAgICMgQWRkIGZpbHRlcnMgZm9yIGFzc2lnZW5kIGFuZCBhY2Nlc3NpYmxlIGNvbmZpZyBpdGVtcyBmb3IgdGhlIGN1c3RvbWVyIHVzZXIgaW5mb3JtYXRpb24gY2VudGVyIGFzIGEKICAgICAgICAjICAgYWRkaXRpb25hbCBmaWx0ZXIgdG9nZXRoZXIgd2l0aCB0aGUgb3RoZXIgZmlsdGVycy4gT25lIG9mIHRoZW0gbXVzdCBiZSBhbHdheXMgYWN0aXZlLgogICAgICAgIG15IEBDb25maWdJdGVtS2V5Q29uZmlnczsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1LZXlERiAoIGtleXMgJFNlbGYtPntDb25maWdJdGVtS2V5c30tPiUqICkgewogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtS2V5Q29uZmlncywgewogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXlzfXskQ29uZmlnSXRlbUtleURGfSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJENvbmZpZ0l0ZW1LZXlERiIgPT4gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGFyYW17Q3VzdG9tZXJJRH0gLy8gdW5kZWYsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAoCiAgICAgICAgICAgIEFzc2lnbmVkVG9FbnRpdHkgPT4gXEBDb25maWdJdGVtS2V5Q29uZmlncywKICAgICAgICAgICAgJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICgKICAgICAgICBDb2x1bW5zICAgICAgICAgICAgICAgICA9PiBcQENvbHVtbnMsCiAgICAgICAgQ29uZmlnSXRlbVNlYXJjaCAgICAgICAgPT4gXCVDb25maWdJdGVtU2VhcmNoLAogICAgICAgIENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5ID0+IFwlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnksCiAgICApOwp9CgpzdWIgX0RlZmF1bHRDb2x1bW5Tb3J0IHsKCiAgICBteSAlRGVmYXVsdENvbHVtbnMgPSAoCiAgICAgICAgQ3VyRGVwbFNpZ25hbCA9PiAxMTAsCiAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAxMTEsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAxMTIsCiAgICAgICAgTnVtYmVyICAgICAgICA9PiAxMTMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAxMTQsCiAgICAgICAgQ3VyRGVwbFN0YXRlICA9PiAxMTUsCiAgICAgICAgQ3VySW5jaVN0YXRlICA9PiAxMTYsCiAgICAgICAgTGFzdENoYW5nZWQgICA9PiAxMTcsCiAgICApOwoKICAgICMgZHluYW1pYyBmaWVsZHMgY2FuIG5vdCBiZSBvbiB0aGUgRGVmYXVsdENvbHVtbnMgc29ydGluZyBoYXNoCiAgICAjIHdoZW4gY29tcGFyaW5nIDIgZHluYW1pYyBmaWVsZHMgc29ydGluZyBtdXN0IGJlIGFscGhhYmV0aWNhbAogICAgaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRhfSAmJiAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gJGEgY21wICRiOwogICAgfQoKICAgICMgd2hlbiBhIGR5bmFtaWMgZmllbGQgaXMgY29tcGFyZWQgdG8gYSBjb25maWcgaXRlbSBhdHRyaWJ1dGUgaXQgbXVzdCBiZSBoaWdoZXIKICAgIGVsc2lmICggISREZWZhdWx0Q29sdW1uc3skYX0gKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyB3aGVuIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGlzIGNvbXBhcmVkIHRvIGEgZHluYW1pYyBmaWVsZCBpdCBtdXN0IGJlIGxvd2VyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGJ9ICkgewogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBkbyBhIG51bWVyaWNhbCBjb21wYXJpc29uIHdpdGggdGhlIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMKICAgIHJldHVybiAkRGVmYXVsdENvbHVtbnN7JGF9IDw9PiAkRGVmYXVsdENvbHVtbnN7JGJ9Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/DynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIFRPRE86IE1heWJlIHJlbmFtZSB0byBBZ2VudFpvb20gb3Igc2ltaWxhcgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoZmlyc3QpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEgSXNBcnJheVJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkIC0gY29uZmlnaXRlbSBzcGVjaWZpYyBkeW5hbWljIGZpZWxkIG91dHB1dAoKPWhlYWQxIERFU0NSSVBUSU9OCgpGdW5jdGlvbnMgdG8gZ2VuZXJhdGUgRHluYW1pY0ZpZWxkIEhUTUwgZm9yIENvbmZpZ0l0ZW1zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYSBEeW5hbWljRmllbGRPdXRwdXQgb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICBteSAkRHluYW1pY0ZpZWxkT3V0cHV0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUGFnZVJlbmRlcigpCgpSZXR1cm5zIHRoZSBIVE1MIGZvciBhIHBhZ2Ugb2YgQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KCiAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRPdXRwdXRPYmplY3QoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgIFBhZ2VSZWYgICAgPT4gJFBhZ2UsICAgICAgICAjIGVpdGhlciBQYWdlUmVmIG9yIFBhZ2UgaXMgcmVxdWlyZWQKICAgICAgICBQYWdlICAgICAgID0+ICdOYW1lJywKICAgICk7Cgo9Y3V0CgpzdWIgUGFnZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0gRGVmaW5pdGlvbikpIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkUGFyYW17RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn07CiAgICBteSAkUGFnZSAgICAgICAgICA9ICRQYXJhbXtQYWdlUmVmfSAvLyBmaXJzdCB7ICRfLT57TmFtZX0gZXEgJFBhcmFte1BhZ2V9IH0gJERlZmluaXRpb25SZWYtPntQYWdlc30tPkAqOwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBhZ2UpIHx8ICFJc0FycmF5UmVmV2l0aERhdGEoICRQYWdlLT57Q29udGVudH0gKSApIHsKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gZGVmaW5lZCAkUGFyYW17UGFnZVJlZn0KICAgICAgICAgICAgPyAnUGFnZVJlZiBub3QgdmFsaWQuJwogICAgICAgICAgICA6ICRQYXJhbXtQYWdlfSA/ICJQYWdlICRQYXJhbXtQYWdlfSBub3QgdmFsaWQgZm9yIERlZmluaXRpb25JRCAkUGFyYW17RGVmaW5pdGlvbn17RGVmaW5pdGlvbklEfSBvZiBjbGFzcyAkUGFyYW17RGVmaW5pdGlvbn17Q2xhc3N9LiIKICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAnTmVlZCBQYWdlIG9yIFBhZ2VSZWYhJzsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRFcnJvck1lc3NhZ2UsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVMYXlvdXQ7CiAgICBpZiAoICRQYWdlLT57TGF5b3V0fSApIHsKICAgICAgICAkTGF5b3V0e0NvbHVtbnN9ID0gJFBhZ2UtPntMYXlvdXR9e0NvbHVtbnN9ID8gaW50KCAkUGFnZS0+e0xheW91dH17Q29sdW1uc30gKSA6IDE7CgogICAgICAgICMgYmFzaWMgY29ycmVjdGlvbnMgZm9yIGdyaWQtdGVtcGxhdGUtcm93cwogICAgICAgIG15IEBXaWR0aHMgPSAkUGFnZS0+e0xheW91dH17Q29sdW1uV2lkdGh9ID8gKCAkUGFnZS0+e0xheW91dH17Q29sdW1uV2lkdGh9ID1+IC8oW1xkXC5dKlx3KykvZyApIDogKCk7CgogICAgICAgIGlmICggQFdpZHRocyA8ICRMYXlvdXR7Q29sdW1uc30gKSB7CiAgICAgICAgICAgIHB1c2ggQFdpZHRocywgKCcxZnInKSB4ICggJExheW91dHtDb2x1bW5zfSAtIEBXaWR0aHMgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXR7V2lkdGhzfSA9IGpvaW4oICcgJywgQFdpZHRoc1sgMCAuLiAkTGF5b3V0e0NvbHVtbnN9IC0gMSBdICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAlTGF5b3V0ID0gKAogICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgIFdpZHRocyAgPT4gJzFmcicsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIHsKICAgICAgICBteSAkU2VjdGlvbnMgPSAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLyB7fTsKICAgICAgICBteSAlS2V5VG9Dc3MgPSBxdy9Sb3cgcm93IENvbHVtbiBjb2x1bW4vOwoKICAgICAgICBDT05URU5UQkxPQ0s6CiAgICAgICAgZm9yIG15ICRDb250ZW50QmxvY2sgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKCiAgICAgICAgICAgICMgVGhlIHJvbGUgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gbmFtZQogICAgICAgICAgICBteSAkU2VjdGlvbiA9ICRTZWN0aW9ucy0+eyAkQ29udGVudEJsb2NrLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgIG5leHQgQ09OVEVOVEJMT0NLIHVubGVzcyAkU2VjdGlvbjsKCiAgICAgICAgICAgIG15ICRHcmlkQXJlYTsKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3L1JvdyBDb2x1bW4vKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTdGFydCcgfSApIHsKICAgICAgICAgICAgICAgICAgICAkR3JpZEFyZWEgLj0gJ2dyaWQtJyAuICRLZXlUb0Nzc3skS2V5fSAuICctc3RhcnQ6JyAuIGludCggJENvbnRlbnRCbG9jay0+eyAkS2V5IC4gJ1N0YXJ0JyB9ICkgLiAnOyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTcGFuJyB9ICkgewogICAgICAgICAgICAgICAgICAgICRHcmlkQXJlYSAuPSAnZ3JpZC0nIC4gJEtleVRvQ3NzeyRLZXl9IC4gJy1lbmQ6c3BhbiAnIC4gaW50KCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3BhbicgfSApIC4gJzsnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEdyaWRBcmVhID0+ICRHcmlkQXJlYSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkU2VjdGlvbi0+e1R5cGV9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPl9TZWN0aW9uUmVuZGVyKAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBTZWN0aW9uICAgICAgPT4gJFNlY3Rpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdJVFNNQ29uZmlnSXRlbURldGFpbHMnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUxheW91dCwKICAgICk7Cn0KCnN1YiBfU2VjdGlvblJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e1R5cGV9ICkgewogICAgICAgIGlmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdDb25maWdJdGVtTGlua3MnICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9SZW5kZXJDSUxpbmtzKCVQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdSZWZlcmVuY2VkU2VjdGlvbicgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1JlbmRlclJlZmVyZW5jZWRTZWN0aW9uKCVQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1JlbmRlckRlc2NyaXB0aW9uU2VjdGlvbiglUGFyYW0pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBuZSAnRHluYW1pY0ZpZWxkcycgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHNlY3Rpb24gdHlwZSAnJFBhcmFte1NlY3Rpb259e1R5cGV9JyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBIVE1MIGZyb20gYWRkaXRpb25hbCBtb2R1bGVzCiAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtNb2R1bGV9ICkgewogICAgICAgIG15ICRNb2R1bGUgPSAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpTZWN0aW9uOjonIC4gJFBhcmFte1NlY3Rpb259e01vZHVsZX07CgogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJE1vZHVsZSkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIHNlY3Rpb24gbW9kdWxlICckTW9kdWxlJyIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICBteSAkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgkTW9kdWxlKTsKICAgICAgICBteSAkSFRNTCAgID0gJE9iamVjdC0+UnVuKCVQYXJhbSk7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljSFRNTCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSFRNTCA9PiAkSFRNTCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkUm93SGFzVmFsdWUgPSBzdWIgewogICAgICAgIHJldHVybiAxIGlmIGdyZXAgeyBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8tPntERn0gfSB9ICRfWzBdLT5AKjsKICAgICAgICByZXR1cm4gMDsKICAgIH07CiAgICBteSAkR3JpZEhhc1ZhbHVlID0gc3ViIHsKICAgICAgICBmb3IgbXkgJFJvdyAoICRfWzBdLT5AKiApIHsKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFJvd0hhc1ZhbHVlLT4oJFJvdyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoICRQYXJhbXtTZWN0aW9ufXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgaWYgKCAkUm93LT57SGVhZGVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyUm93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUm93LT57SGVhZGVyfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CgogICAgICAgIGVsc2lmICggJFJvdy0+e0RGfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgIWRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUm93LT57REZ9IH07CgogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkTGlzdCApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3QgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRSb3ctPntERn0gfTsKCiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRSb3ctPntERn0gfSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICA9PiAkUm93LT57TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0xhYmVsJywKICAgICAgICAgICAgICAgICAgICBDU1NDbGFzcyA9PiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyA/ICdEeW5hbWljRmllbGRTZXRMYWJlbCcgOiB1bmRlZiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnIHx8ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdSaWNoVGV4dCcgKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdGdWxsUm93JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREaXNwbGF5VmFsdWUtPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlUmF3JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkUm93LT57R3JpZH0gKSB7CiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkR3JpZEhhc1ZhbHVlLT4oICRSb3ctPntHcmlkfXtSb3dzfSApOwoKICAgICAgICAgICAgbXkgJENvbHVtbnMgPSBpbnQoICRSb3ctPntHcmlkfXtDb2x1bW5zfSApOwoKICAgICAgICAgICAgIyBiYXNpYyBjb3JyZWN0aW9ucyBmb3IgZ3JpZC10ZW1wbGF0ZS1yb3dzCiAgICAgICAgICAgIG15IEBXaWR0aHMgPSAkUm93LT57R3JpZH17Q29sdW1uV2lkdGh9ID8gKCAkUm93LT57R3JpZH17Q29sdW1uV2lkdGh9ID1+IC8oW1xkXC5dKlx3KykvZyApIDogKCk7CgogICAgICAgICAgICBpZiAoIEBXaWR0aHMgPCAkQ29sdW1ucyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFdpZHRocywgKCcxZnInKSB4ICggJENvbHVtbnMgLSBAV2lkdGhzICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gam9pbiggJyAnLCBAV2lkdGhzWyAwIC4uICRDb2x1bW5zIC0gMSBdICksCgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgR1JJRFJPVzoKICAgICAgICAgICAgZm9yIG15ICRHcmlkUm93ICggJFJvdy0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgR1JJRFJPVyBpZiAhJFJvd0hhc1ZhbHVlLT4oJEdyaWRSb3cpOwoKICAgICAgICAgICAgICAgIG15ICRDb2x1bW5JbmRleCA9IDA7CiAgICAgICAgICAgICAgICBteSBARGlzcGxheVZhbHVlczsKICAgICAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZCAoICRHcmlkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGQtPntERn07CgogICAgICAgICAgICAgICAgICAgICRDb2x1bW5JbmRleCsrOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRGaWVsZC0+e0RGfSB9OwoKICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlc1skQ29sdW1uSW5kZXhdID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZC0+e0RGfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgVE9ETzogZ3JpZCBjb2x1bW4gZnJvbSBkZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRGaWVsZC0+e0xhYmVsfSB8fCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAiZ3JpZC1jb2x1bW4tc3RhcnQ6ICRDb2x1bW5JbmRleDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnTGFiZWwnLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiAkQ29sdW1uSW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlc1skSW5kZXhdLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRDb2x1bW4gPT4gImdyaWQtY29sdW1uLXN0YXJ0OiAkSW5kZXg7IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlckNJTGlua3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICREaXJlY3Rpb24gPSAkUGFyYW17U2VjdGlvbn17TGlua2VkQXN9IHx8ICdTb3VyY2UnOwogICAgbXkgJFR5cGVzICAgICA9IElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259e0xpbmtUeXBlc30gKSA/ICRQYXJhbXtTZWN0aW9ufXtMaW5rVHlwZXN9IDogdW5kZWY7CgogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAoKICAgICAgICAjIFRPRE86IFdoYXQgYWJvdXQgdmVyc2lvbnMKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRGlyZWN0aW9uICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgVHlwZXMgICAgICAgID0+ICRUeXBlcywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkTGlua2VkQ29uZmlnSXRlbXM7CgogICAgbXkgJUxpbmtlZENsYXNzZXM7CgogICAgZm9yIG15ICRMaW5rICggJExpbmtlZENvbmZpZ0l0ZW1zLT5AKiApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogVGhpbmsgYWJvdXQgc29ydGluZwogICAgICAgIHB1c2ggQHsgJExpbmtlZENsYXNzZXN7ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gfSwgewogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMaW5rLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICB9OwogICAgfQoKICAgICMgVE9ETzogQWNjZXNzIHJpZ2h0czsgY2xhc3NlcyBmb3IgYWdlbnRzOyBmb3IgY3VzdG9tZXJzPwogICAgIyBUT0RPOiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0aWxlOyBjbGFzcyByZXN0cmljdGlvbnMsIGRmIHJlc3RyaWN0aW9ucywgPwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0hlYWRlcn0gKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUGFyYW17U2VjdGlvbn17SGVhZGVyfSwKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSAmJiAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gZXEgJ0N1c3RvbWVyJwogICAgICAgID8gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJwogICAgICAgIDogJ0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tJzsKCiAgICBmb3IgbXkgJENsYXNzICggc29ydCBrZXlzICVMaW5rZWRDbGFzc2VzICkgewogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnTGFiZWwnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkQ0kgKCBzb3J0IHsgJGEtPntOYW1lfSBjbXAgJGItPntOYW1lfSB9ICRMaW5rZWRDbGFzc2VzeyRDbGFzc30tPkAqICkgewogICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gJENJLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICA9PiAkQ0ktPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9e0Jhc2VsaW5rfSAuICJBY3Rpb249JEFjdGlvbjtDb25maWdJdGVtSUQ9JENJLT57Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICBHcmlkQ29sdW1uID0+ICdncmlkLWNvbHVtbi1zdGFydDoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlckRlc2NyaXB0aW9uU2VjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdIZWFkZXJSb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBIZWFkZXIgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlbmRlciBkZXNjcmlwdGlvbiByaWNodGV4dCBlZGl0b3IKICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBXaWR0aHMgPT4gJzFmcicsCiAgICAgICAgfSwKICAgICk7CgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17VmVyc2lvbklEfSwKICAgICAgICAgICAgRnJvbnRlbmQgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdJZnJhbWUnLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlclJlZmVyZW5jZWRTZWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17TGF5b3V0T2JqZWN0fTsKCiAgICBteSAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0gPSAkU2VsZi0+X1JlZmVyZW5jZWRDb25maWdJdGVtR2V0KAogICAgICAgIFNlY3Rpb24gICAgPT4gJFBhcmFte1NlY3Rpb259LAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJFBhcmFte0NvbmZpZ0l0ZW19LAogICAgKTsKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFJlZmVyZW5jZWRDb25maWdJdGVtKTsKCiAgICAjIGdldCBkZWZpbml0aW9uIG9mIHJlZmVyZW5jZWQgY29uZmlnIGl0ZW0gYW5kIHBhc3MgaXQgb24gdG8gX1NlY3Rpb25SZW5kZXIKICAgIG15ICRSZWZlcmVuY2VkQ0lEZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRSZWZlcmVuY2VkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJFJlZmVyZW5jZWRDSURlZmluaXRpb24tPntEZWZpbml0aW9uSUR9OwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFByZX0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UHJlfSApICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgV2lkdGhzID0+ICcxZnIgMWZyJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIGZvciBteSAkREZFbnRyeSAoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQcmV9LT5AKiApIHsKICAgICAgICAgICAgJFNlbGYtPl9SZW5kZXJERigKICAgICAgICAgICAgICAgIFJvdyAgICAgICAgICAgICAgICAgICAgICAgPT4gJERGRW50cnksCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5fU2VjdGlvblJlbmRlcigKICAgICAgICBDb25maWdJdGVtICAgPT4gJFJlZmVyZW5jZWRDb25maWdJdGVtLAogICAgICAgIERlZmluaXRpb24gICA9PiAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbiwKICAgICAgICBTZWN0aW9uICAgICAgPT4gJFJlZmVyZW5jZWRDSURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRQYXJhbXtTZWN0aW9ufXtTZWN0aW9uTmFtZX0gfSwKICAgICAgICBMYXlvdXRPYmplY3QgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICApOwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9ICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9ICkgKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRERkVudHJ5ICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9LT5AKiApIHsKICAgICAgICAgICAgJFNlbGYtPl9SZW5kZXJERigKICAgICAgICAgICAgICAgIFJvdyAgICAgICAgICAgICAgICAgICAgICAgPT4gJERGRW50cnksCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlZmVyZW5jZWRDb25maWdJdGVtR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zCiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbX0gKTsKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtTZWN0aW9ufSApOwoKICAgICMgZmV0Y2ggY29uZmlnIG9mIHJlZmVyZW5jZWQgZmllbGQKICAgIG15ICRSZWZlcmVuY2VkRmllbGRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtTZWN0aW9ufXtSZWZlcmVuY2VGaWVsZH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFJlZmVyZW5jZWRGaWVsZENvbmZpZyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbSBkZXBlbmRpbmcgb24gZmllbGQgdHlwZQogICAgbXkgJUNvbmZpZ0l0ZW1HZXRQYXJhbXMgPSAoCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nICkgewogICAgICAgICRDb25maWdJdGVtR2V0UGFyYW1ze0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnSXRlbX17IkR5bmFtaWNGaWVsZF8kUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57TmFtZX0ifVswXTsKICAgIH0KICAgIGVsc2lmICggJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW1WZXJzaW9uJyApIHsKICAgICAgICAkQ29uZmlnSXRlbUdldFBhcmFtc3tWZXJzaW9uSUR9ID0gJFBhcmFte0NvbmZpZ0l0ZW19eyJEeW5hbWljRmllbGRfJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e05hbWV9In1bMF07CiAgICB9CgogICAgcmV0dXJuIHVubGVzcyAoICRDb25maWdJdGVtR2V0UGFyYW1ze0NvbmZpZ0l0ZW1JRH0gfHwgJENvbmZpZ0l0ZW1HZXRQYXJhbXN7VmVyc2lvbklEfSApOwoKICAgICMgcmV0dXJuIHJlZmVyZW5jZWQgY29uZmlnIGl0ZW0KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAlQ29uZmlnSXRlbUdldFBhcmFtcywKICAgICk7Cn0KCnN1YiBfUmVuZGVyREYgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtSb3d9e0RGfTsKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtSb3d9e0RGfSB9OwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfXsgJFBhcmFte1Jvd317REZ9IH07CgogICAgcmV0dXJuIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgIG15ICREaXNwbGF5VmFsdWUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17Um93fXtERn0gfSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDEsCiAgICApOwoKICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTGFiZWwgPT4gJFBhcmFte1Jvd317TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgIFR5cGUgID0+ICdMYWJlbCcsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyB8fCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnUmljaFRleHQnICkgewogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICBUeXBlID0+ICdGdWxsUm93JywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkRGlzcGxheVZhbHVlLT57TGlua30gKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0gPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKCiAgICAgICAgICAgICAgICAjIEluY2x1ZGUgdW5pcXVlIHBhcmFtZXRlciB3aXRoIGR5bmFtaWMgZmllbGQgbmFtZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3aXRoIG90aGVycy4KICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9IiA9PiAkRGlzcGxheVZhbHVlLT57VGl0bGV9LAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdWYWx1ZUxpbmsnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVSYXcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWUnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomer.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3RvbWVyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGN1c3RvbWVyIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lci0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0gfHwgJycsCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBzZWxlY3RlZCBjdXN0b21lciB1c2VyCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIGNoZWNrIHNlYXJjaCBidXR0b24KICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWFyY2gnICkgKSB7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIHNlbGVjdCBidXR0b24KICAgIGVsc2lmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWxlY3QnICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VsZWN0JyApOwogICAgfQoKICAgICMgY2hlY2sgY2xlYXIgYnV0dG9uCiAgICBlbHNpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcmVzZXQgdmFsdWUgaWYgc2VhcmNoIGZpZWxkIGlzIGVtcHR5CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICkKICAgICAgICAgICAgJiYgZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgb3B0aW9uCiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICAgICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyBJVFNNQ3VzdG9tZXJTZWFyY2gnOwogICAgbXkgJFNlYXJjaCAgID0gJyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9ICB8fCAnJzsKICAgIG15ICRJdGVtSWQgICA9ICRQYXJhbXtJdGVtSWR9ICAgfHwgJyc7CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBjcmVhdGUgY3VzdG9tZXIgc3RyaW5nCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIGRhdGEKICAgICAgICBteSAlQ3VzdG9tZXJTZWFyY2hMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclNlYXJjaCgKICAgICAgICAgICAgU2VhcmNoID0+ICRWYWx1ZSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAgICAgJFNlYXJjaCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEN1c3RvbWVyU2VhcmNoTGlzdHskVmFsdWV9IHx8ICcnLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBjcmVhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFZhbHVlCiAgICAgICAgLiAnIiBpZD0iJwogICAgICAgIC4gJEl0ZW1JZCAuICdTZWxlY3RlZCcKICAgICAgICAuICciLz4nCiAgICAgICAgLiAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNzPSInCiAgICAgICAgLiAkQ2xhc3MKICAgICAgICAuICciIGlkPSInCiAgICAgICAgLiAkSXRlbUlkCiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFNlYXJjaCAuICciLz4nOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15ICVGb3JtRGF0YTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFyYW17SXRlbX0sCiAgICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJElucHV0U3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomerCompany.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lckNvbXBhbnkgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgY3VzdG9tZXIgY29tcGFueSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkU2VsZWN0ZWRJRCA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJzsKCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAlQ29tcGFueUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JyktPkN1c3RvbWVyQ29tcGFueUxpc3QoCiAgICAgICAgTGltaXQgPT4gMCwgICAgIyBEaXNwbGF5IGFsbCBDdXN0b21lciBDb21wYW5pZXMKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUNvbXBhbnlMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGVjdGVkSUQsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDU1NDbGFzcywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZXMgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICAjIGdldCBjb21wYW55IGRhdGEKICAgIG15ICVDb21wYW55TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckNvbXBhbnknKS0+Q3VzdG9tZXJDb21wYW55TGlzdCgKICAgICAgICBMaW1pdCA9PiAwLAogICAgKTsKCiAgICAjIGdlbmVyYXRlIHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVDb21wYW55TGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGUgb2JqZWN0cy4KCj1jdXQKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMS0wMScsICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5EYXRlIHwgTG9jYWxpemUoIkRhdGUiKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnIDAwOjAwOjAwJywKICAgICAgICB9LAogICAgKTsKICAgICRQYXJhbXtWYWx1ZX0gPX4gcy8wMDowMDowMC8vOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IHx8ICcnOwp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkRGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkRheScgKTsKICAgIG15ICRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlllYXInICk7CgogICAgaWYgKCAkRGF5ICYmICRNb250aCAmJiAkWWVhciApIHsKICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkWWVhciwgJE1vbnRoLCAkRGF5OwogICAgfQoKICAgICMgc2V0IGludmFsaWQgcGFyYW0KICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIFNhbml0eSBjaGVjayBvZiB0aGUgYXNzZW1ibGVkIHRpbWVzdGFtcAogICAgaWYgKCAkRm9ybURhdGF7VmFsdWV9ICkgewoKICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRm9ybURhdGF7VmFsdWV9IC4gJyAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERhdGVUaW1lT2JqZWN0ICkgewogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAzLTI2JywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkkL2kgKSB7CiAgICAgICAgICAgICRWYWx1ZXN7ICRQYXJhbXtLZXl9IC4gJzo6WWVhcicgfSAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSA9ICQyOwogICAgICAgICAgICAkVmFsdWVzeyAkUGFyYW17S2V5fSAuICc6OkRheScgfSAgID0gJDM7CgogICAgICAgICAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJFBhcmFte0tleX0gLiAnOjonLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIE92ZXJyaWRlVGltZVpvbmUgICAgICAgICAgICAgPT4gJFBhcmFte092ZXJyaWRlVGltZVpvbmV9LAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJFVzZWQ7CiAgICBteSAkU3RhcnREYXk7CiAgICBteSAkU3RhcnRNb250aDsKICAgIG15ICRTdGFydFllYXI7CiAgICBteSAkU3RvcERheTsKICAgIG15ICRTdG9wTW9udGg7CiAgICBteSAkU3RvcFllYXI7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gfTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgfTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgfTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNb250aCcgfTsKICAgICAgICAkU3RvcFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRVc2VkICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpEYXknICk7CiAgICAgICAgJFN0YXJ0TW9udGggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TW9udGgnICk7CiAgICAgICAgJFN0YXJ0WWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgKTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6Ok1vbnRoJyApOwogICAgICAgICRTdG9wWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgKTsKICAgIH0KICAgIGlmICgKICAgICAgICAkVXNlZAogICAgICAgICYmICRTdGFydERheSAmJiAkU3RhcnRNb250aCAmJiAkU3RhcnRZZWFyCiAgICAgICAgJiYgJFN0b3BEYXkgICYmICRTdG9wTW9udGggICYmICRTdG9wWWVhcgogICAgICAgICkKICAgIHsKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkU3RhcnRZZWFyLCAkU3RhcnRNb250aCwgJFN0YXJ0RGF5OwogICAgICAgIG15ICRTdG9wRGF0ZSAgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCcsICRTdG9wWWVhciwgICRTdG9wTW9udGgsICAkU3RvcERheTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgIyBOb3RlIHRoYXQgc2VhcmNoaW5nIGlzIGJ5IGRhdGUsIHdoaWxlIGlucHV0IGlzIGJ5IHRpbWUgYXMgd2VsbAogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMTAsCiAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiAxMCwKICAgICAgICAlR2V0UGFyYW0sCiAgICApOwogICAgbXkgJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIE9wdGlvbmFsICAgICAgICAgPT4gMCwKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdG9wLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDEwLAogICAgICAgICVHZXRQYXJhbSwKICAgICk7CgogICAgbXkgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgaWYgKCAkUGFyYW17T3B0aW9uYWx9ICkgewogICAgICAgICRDaGVja2JveCA9IHFxezxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgfQoKICAgIG15ICRCZXR3ZWVuID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdCZXR3ZWVuJyk7CiAgICBteSAkQW5kICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnYW5kJyk7CgogICAgcmV0dXJuICI8ZGl2PiAkQ2hlY2tib3ggJEJldHdlZW4gJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA8L2Rpdj4iCiAgICAgICAgLiAiPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMjdweDtcIj4kQW5kPC9zcGFuPiAkVGltZVN0b3BTZWxlY3Rpb25TdHJpbmciOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDateTime.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dERhdGVUaW1lIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGV0aW1lIG9iamVjdHMuCgo9Y3V0Cgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWUtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAxLTAxIDEyOjAwJywgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgJFBhcmFte1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkRhdGUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnOjAwJywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSB8fCAnJzsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6RGF5JyApOwogICAgbXkgJE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpZZWFyJyApOwogICAgbXkgJEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6SG91cicgKSAgIHx8IDA7CiAgICBteSAkTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpNaW51dGUnICkgfHwgMDsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgWWVhciAgICAgPT4gJFllYXIsCiAgICAgICAgICAgIE1vbnRoICAgID0+ICRNb250aCwKICAgICAgICAgICAgRGF5ICAgICAgPT4gJERheSwKICAgICAgICAgICAgSG91ciAgICAgPT4gJEhvdXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1pZG5pZ2h0CiAgICAgICAgICAgIE1pbnV0ZSAgID0+ICRNaW51dGUsCiAgICAgICAgICAgIFRpbWVab25lID0+ICRQcmVmZXJlbmNlc3tVc2VyVGltZVpvbmV9IHx8ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Vc2VyRGVmYXVsdFRpbWVab25lR2V0KCksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBDb252ZXJ0IHN0YXJ0IHRpbWUgdG8gbG9jYWwgc3lzdGVtIHRpbWUgem9uZS4KICAgICREYXRlVGltZU9iamVjdC0+VG9PVE9CT1RpbWVab25lKCk7CiAgICBteSAkRGF0ZVRpbWVTZXR0aW5ncyA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0ZVRpbWVTZXR0aW5ncykgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9IHNwcmludGYgJyUwMmQtJTAyZC0lMDJkICUwMmQ6JTAyZCcsICREYXRlVGltZVNldHRpbmdzLT57WWVhcn0sICREYXRlVGltZVNldHRpbmdzLT57TW9udGh9LCAkRGF0ZVRpbWVTZXR0aW5ncy0+e0RheX0sCiAgICAgICAgICAgICREYXRlVGltZVNldHRpbmdzLT57SG91cn0sICREYXRlVGltZVNldHRpbmdzLT57TWludXRlfTsKICAgIH0KCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBTYW5pdHkgY2hlY2sgb2YgdGhlIGFzc2VtYmxlZCB0aW1lc3RhbXAKICAgIGlmICggJEZvcm1EYXRhe1ZhbHVlfSApIHsKCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZvcm1EYXRhe1ZhbHVlfSAuICc6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISREYXRlVGltZU9iamVjdCApIHsKICAgICAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMy0yNiAxMjowMCcsICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKSQvaSApIHsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpZZWFyJyB9ICAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSAgPSAkMjsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpEYXknIH0gICAgPSAkMzsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpIb3VyJyB9ICAgPSAkNDsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNaW51dGUnIH0gPSAkNTsKCiAgICAgICAgICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICAgICAgICAgJENsYXNzID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUGFyYW17S2V5fSAuICc6OicsCiAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VkOwogICAgbXkgJFN0YXJ0TWludXRlOwogICAgbXkgJFN0YXJ0SG91cjsKICAgIG15ICRTdGFydERheTsKICAgIG15ICRTdGFydE1vbnRoOwogICAgbXkgJFN0YXJ0WWVhcjsKICAgIG15ICRTdG9wTWludXRlOwogICAgbXkgJFN0b3BIb3VyOwogICAgbXkgJFN0b3BEYXk7CiAgICBteSAkU3RvcE1vbnRoOwogICAgbXkgJFN0b3BZZWFyOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IH07CiAgICAgICAgJFN0YXJ0TWludXRlID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyB9OwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkhvdXInIH07CiAgICAgICAgJFN0YXJ0RGF5ICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6RGF5JyB9OwogICAgICAgICRTdGFydE1vbnRoICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OlllYXInIH07CiAgICAgICAgJFN0b3BNaW51dGUgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNaW51dGUnIH07CiAgICAgICAgJFN0b3BIb3VyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpIb3VyJyB9OwogICAgICAgICRTdG9wRGF5ICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnIH07CiAgICAgICAgJFN0b3BZZWFyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpZZWFyJyB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFVzZWQgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnRNaW51dGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyApIHx8IDAwOwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpIb3VyJyApCiAgICAgICAgICAgIHx8IDAwOwogICAgICAgICRTdGFydERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgKTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgKTsKICAgICAgICAkU3RhcnRZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpZZWFyJyApOwogICAgICAgICRTdG9wTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TWludXRlJyApCiAgICAgICAgICAgIHx8IDU5OwogICAgICAgICRTdG9wSG91ciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkhvdXInICkKICAgICAgICAgICAgfHwgMjM7CiAgICAgICAgJFN0b3BEYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnICk7CiAgICAgICAgJFN0b3BZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OlllYXInICk7CiAgICB9CgogICAgaWYgKAogICAgICAgICRVc2VkCiAgICAgICAgJiYgJFN0YXJ0TWludXRlICYmICRTdGFydEhvdXIgJiYgJFN0YXJ0RGF5ICYmICRTdGFydE1vbnRoICYmICRTdGFydFllYXIKICAgICAgICAmJiAkU3RvcE1pbnV0ZSAgJiYgJFN0b3BIb3VyICAmJiAkU3RvcERheSAgJiYgJFN0b3BNb250aCAgJiYgJFN0b3BZZWFyCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGFkZCBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzLAogICAgICAgICMgc28gdGhhdCB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgZGF5IGlzIHNlbGVjdGVkIGFzIHdlbGwKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQgJTAyZDolMDJkOjAwJwogICAgICAgICAgICAsICRTdGFydFllYXIsICRTdGFydE1vbnRoLCAkU3RhcnREYXksICRTdGFydEhvdXIsICRTdGFydE1pbnV0ZTsKICAgICAgICBteSAkU3RvcERhdGUgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6NTknCiAgICAgICAgICAgICwgJFN0b3BZZWFyLCAkU3RvcE1vbnRoLCAkU3RvcERheSwgJFN0b3BIb3VyLCAkU3RvcE1pbnV0ZTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKICAgIG15ICRUaW1lU3RvcFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBPcHRpb25hbCAgICAgICAgID0+IDAsCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUHJlZml4U3RvcCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKCiAgICBteSAkQ2hlY2tib3ggPSBxcXs8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICBpZiAoICRQYXJhbXtPcHRpb25hbH0gKSB7CiAgICAgICAgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICB9CgogICAgbXkgJEJldHdlZW4gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0JldHdlZW4nKTsKICAgIG15ICRBbmQgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKTsKCiAgICByZXR1cm4gIjxkaXY+ICRDaGVja2JveCAkQmV0d2VlbiAkVGltZVN0YXJ0U2VsZWN0aW9uU3RyaW5nIDwvZGl2PiIKICAgICAgICAuICI8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyN3B4O1wiPiAkQW5kIDwvc3Bhbj4gJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nIjsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDummy.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREdW1teSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBkdW1teSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXktPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgpOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogMS4zZW07XCI+IjsKICAgICRTdHJpbmcKICAgICAgICAuPSAiPGlucHV0IHN0eWxlPVwiZGlzcGxheTpub25lO1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiA8L3NwYW4+JzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgcmV0dXJuIFtdOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgpOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIHJldHVybiAnJm5ic3A7JzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutGeneralCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0R2VuZXJhbENhdGFsb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRHZW5lcmFsQ2F0YWxvZyAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEdlbmVyYWxDYXRhbG9nLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRQYXJhbXtWYWx1ZX0gLy89ICcnOwoKICAgICMgdHJhbnNsYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIHRyYW5zbGF0aW9uIG9uIG9yIG9mZgogICAgbXkgJFRyYW5zbGF0aW9uID0gMDsKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRUcmFuc2xhdGlvbiA9IDE7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDbGFzc30gfHwgJycsCiAgICApOwoKICAgICMgcmV2ZXJzZSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7JENsYXNzTGlzdH07CgogICAgbXkgJFNlbGVjdGVkSUQ7CgogICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRTZWxlY3RlZElEID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICAjIGdldCB0aGUgZGVmYXVsdCBpZCBieSBkZWZhdWx0IHZhbHVlCiAgICBlbHNlIHsKICAgICAgICAkU2VsZWN0ZWRJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnIH0gfHwgJyc7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkU2VsZWN0ZWRJRCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgdHJhbnNsYXRpb24gb24gb3Igb2ZmCiAgICBteSAkVHJhbnNsYXRpb24gPSAwOwogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFRyYW5zbGF0aW9uID0gMTsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NsYXNzfSB8fCAnJywKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutInteger.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0SW50ZWdlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRJbnRlZ2VyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGludGVnZXIgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEludGVnZXItPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAnJzsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBtaW4sIG1heCBhbmQgZGVmYXVsdAogICAgbXkgJFZhbHVlTWluID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNaW59IC8vIDE7CiAgICBteSAkVmFsdWVNYXggPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZU1heH0gLy8gMTsKICAgIGlmICggJFZhbHVlTWluID4gJFZhbHVlTWF4ICkgewogICAgICAgICRWYWx1ZU1pbiA9ICRWYWx1ZU1heDsKICAgIH0KICAgIGlmICgKICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9CiAgICAgICAgJiYgKAogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IDwgJFZhbHVlTWluCiAgICAgICAgICAgIHx8ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPiAkVmFsdWVNYXgKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPSAnJzsKICAgIH0KCiAgICAjIGNyZWF0ZSBkYXRhIGFycmF5CiAgICBteSAkSW50ZWdlckxpc3QgPSBbXTsKICAgIGZvciBteSAkQ291bnRlciAoICRWYWx1ZU1pbiAuLiAkVmFsdWVNYXggKSB7CiAgICAgICAgcHVzaCBAeyRJbnRlZ2VyTGlzdH0sICRDb3VudGVyOwogICAgfQoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJEludGVnZXJMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgbWluLCBtYXgKICAgIG15ICRWYWx1ZU1pbiA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlTWlufSAvLyAxOwogICAgbXkgJFZhbHVlTWF4ID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNYXh9IC8vIDE7CiAgICBpZiAoICRWYWx1ZU1pbiA+ICRWYWx1ZU1heCApIHsKICAgICAgICAkVmFsdWVNaW4gPSAkVmFsdWVNYXg7CiAgICB9CgogICAgIyBzZXQgcHJlc2VsZWN0ZWQgdmFsdWUsIGVpdGhlciBmcm9tIHByZXZpb3VzIHNlbGVjdGlvbiBvciB0aGUgZGVmYXVsdAogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgcHJlc2VsZWN0ZWQgdmFsdWUgaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZQogICAgbXkgQEZpbHRlcmVkVmFsdWVzOwogICAgVkFMVUU6CiAgICBmb3IgbXkgJFZhbHVlICggQHskVmFsdWVzfSApIHsKICAgICAgICBuZXh0IFZBTFVFIGlmICFkZWZpbmVkICRWYWx1ZTsKICAgICAgICBuZXh0IFZBTFVFIGlmICEkVmFsdWU7CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPCAkVmFsdWVNaW47CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPiAkVmFsdWVNYXg7CgogICAgICAgIHB1c2ggQEZpbHRlcmVkVmFsdWVzLCAkVmFsdWU7CiAgICB9CgogICAgIyBjcmVhdGUgZGF0YSBhcnJheQogICAgbXkgQEludGVnZXJMaXN0ID0gKCAkVmFsdWVNaW4gLi4gJFZhbHVlTWF4ICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFxASW50ZWdlckxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgID0+IFxARmlsdGVyZWRWYWx1ZXMsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutText.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dCAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiB0ZXh0IG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiAnOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKICAgIGlmICggIWRlZmluZWQgJFZhbHVlICkgewogICAgICAgICRWYWx1ZSA9ICcnOwogICAgfQoKICAgIG15ICRTdHJpbmcgPSBxcXs8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iJFBhcmFte0tleX0iIHZhbHVlPSIkVmFsdWUiIGNsYXNzPSJXNTBwYyIgPn07CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutTextArea.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dEFyZWE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHRBcmVhIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRleHRhcmVhIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0QXJlYS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICcnOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICBteSAkTGlua0ZlYXR1cmUgICAgPSAxOwogICAgbXkgJEhUTUxSZXN1bHRNb2RlID0gMTsKCiAgICAjIGRvIG5vdCB0cmFuc2Zvcm0gbGlua3MgaW4gcHJpbnQgdmlldwogICAgaWYgKCAkUGFyYW17UHJpbnR9ICkgewogICAgICAgICRMaW5rRmVhdHVyZSAgICA9IDA7CiAgICAgICAgJEhUTUxSZXN1bHRNb2RlID0gMDsKICAgIH0KCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+ICRIVE1MUmVzdWx0TW9kZSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHMgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDb2xzfSB8fCA1ODsKICAgIG15ICRSb3dzID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Um93c30gfHwgMTA7CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRWYWx1ZSk7CiAgICB9CiAgICBteSAkU3RyaW5nID0gIjx0ZXh0YXJlYSBuYW1lPVwiJFBhcmFte0tleX1cIiBpZD1cIiRJdGVtSWRcIiBjb2xzPVwiJENvbHNcIiByb3dzPVwiJFJvd3NcIiBjbGFzcz1cIiRDbGFzc1wiPiRWYWx1ZTwvdGV4dGFyZWE+IjsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwogICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgJFZhbHVlID0gJyc7CiAgICB9CgogICAgbXkgJFN0cmluZyA9IHFxezxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSIkUGFyYW17S2V5fSIgdmFsdWU9IiRWYWx1ZSIgY2xhc3M9Ilc1MHBjIj59OwoKICAgIHJldHVybiAkU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/MenuGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpCYXNlJyk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKKTsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ3JhbnQgYWNjZXNzIGJ5IGRlZmF1bHQKICAgIG15ICRBY2Nlc3MgPSAxOwoKICAgICMgZ2V0IGFjdGlvbgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIGlmICggJEFjdGlvbiBlcSAnQWdlbnRMaW5rT2JqZWN0JyApIHsKCiAgICAgICAgIyBUaGUgTGluay1saW5rIGlzIGEgc3BlY2lhbCBjYXNlLCBhcyBpdCBpcyBub3Qgc3BlY2lmaWMgdG8gSVRTTUNvbmZpZ0l0ZW0uCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvZGUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCc7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkR3JvdXBzUm8gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXB9ICAgfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSb0dyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJ3R3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdNZW51JyApOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBkaWFsb2cgaGFzIHRvIGJlIHNob3duCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57RGlhbG9nVGl0bGV9ICkgewogICAgICAgIG15ICRDb25maWdPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAgICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICAgICAjIFJlcGxhY2UgdGhlIHRlbXBsYXRlIHRvb2xraXQgZXhwcmVzc2lvbnMgd2l0aCB0aGUgZmluYWwgdmFsdWUuCiAgICAgICAgbXkgJUpTRGF0YSA9ICgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICApOwoKICAgICAgICBkZWxldGUgJEpTRGF0YXtDb25maWd9OwogICAgICAgIGRlbGV0ZSAkSlNEYXRhe0NvbmZpZ0l0ZW19OwoKICAgICAgICAkSlNEYXRhe0VsZW1lbnRTZWxlY3Rvcn0gICAgICAgICAgICA9fiBzL1xbJVxzKkRhdGFcLk1lbnVJRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe01lbnVJRH0vaTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZ30gICA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKICAgICAgICAkSlNEYXRhe0NvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nfSA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKCiAgICAgICAgJEpTRGF0YXtEaWFsb2dUaXRsZX0gPX4gcy9cWyVccypUcmFuc2xhdGVcKCIoLiopIlwpXHMqXHxccypodG1sXHMqJVxdLyRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkNvbmZpZ1woIiguKikiXClccyolXF0vJENvbmZpZ09iamVjdC0+R2V0KCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkRhdGEuTnVtYmVyXHMqXHxccypodG1sXHMqJVxdLyRKU0RhdGF7TnVtYmVyfS9laTsKCiAgICAgICAgJEpTRGF0YXtNZW51SUR9ID0gJ01lbnUnIC4gJEpTRGF0YXtNZW51SUR9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNU2hvd0NvbmZpcm1EaWFsb2cuJyAuICRQYXJhbXtNZW51SUR9LAogICAgICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/CustomerOverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzZXQgc3RvcmVkIGZpbHRlcnMgaWYgcHJlc2VudAogICAgbXkgJFN0b3JlZEZpbHRlcnNLZXkgPSAnVXNlclN0b3JlZEZpbHRlckNvbHVtbnMtJyAuICRTZWxmLT57QWN0aW9ufSAuICctJyAuICRTZWxmLT57RmlsdGVyfTsKICAgIGlmICggJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSApIHsKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7JFN0b3JlZEZpbHRlcnNLZXl9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSA9ICRTdG9yZWRGaWx0ZXJzOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGZpbHRlcgogICAgbXkgJEZpbHRlck5hbWUgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSApID8gJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfS0+e05hbWV9IDogJ0FsbCc7CgogICAgIyBnZXQgcGVybWlzc2lvbiBjb25kaXRpb24gZm9yIGZpbHRlcgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnICA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57R3JvdXBzfSApICkgewoKICAgICAgICAgICAgICAgICMgcHJlcGFyZSBncm91cCBsb29rdXAgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gMDsKICAgICAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cE5hbWUgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgR1JPVVAgaWYgISRHcm91cExvb2t1cHskR3JvdXBOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgJEFjY2Vzc09rID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyAkQWNjZXNzT2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZpbHRlck5hbWUgZXEgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zLT57JENvbmZpZ0lkZW50aWZpZXJ9IC8vIFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zJyktPntEZWZhdWx0fSAvLyBbXTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgfQoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBvdmVyd3JpdGUgZW5hYmxlZCBjb2x1bW5zIHdpdGggcHJlZmVyZW5jZXMKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRW5hYmxlZCkgPyAkQ29sdW1uc0VuYWJsZWQgOiBbXTsKICAgIH0KCiAgICAjIGFsd2F5cyBzZXQgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCosICdOdW1iZXInOwogICAgfQogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdOdW1iZXInIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiwgJ051bWJlcic7CiAgICB9CgogICAgIyBnZXQgbmVjZXNzYXJ5IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZHMgYW5kIHNldCBhdmFpbGFibGUgYW5kIHZhbGlkIGZpbHRlciBhbmQgc29ydGFibGUgY29sdW1ucwogICAgRFlOQU1JQ0ZJRUxETkFNRToKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewoKICAgICAgICBteSAkRmllbGROYW1lOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZE5hbWUgPX4gbXsgRHluYW1pY0ZpZWxkXyg/PEZpZWxkTmFtZT5bQS1aYS16MC05XC1dKykgfXhtcyApIHsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9ICQre0ZpZWxkTmFtZX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUU7CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgaWYgKCAkQ29sdW1ucyAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1ucy0+QCogKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbicgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoJFRyYW5zbGF0ZWRXb3JkKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICApOwoKICAgIGlmICggJENvbHVtbnNEeW5hbWljRmllbGQgJiYgSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRHluYW1pY0ZpZWxkKSApIHsKCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IEB7JENvbHVtbnNEeW5hbWljRmllbGR9ICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGQ7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBTb3J0T3JkZXJCYXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIElmICRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSBpcyBub3Qgc2VudCwgd2Ugd2FudCB0byBkaXNhYmxlIGFsbCBmaWx0ZXJzCiAgICAjICAgZm9yIHRoZSBjdXJyZW50IHNjcmVlbi4gV2UgbG9jYWxpemUgdGhlIHNldHRpbmcgZm9yIHRoaXMgc3ViIGFuZCBjaGFuZ2UgaXQKICAgICMgICBhZnRlciB0aGF0LCBpZiBuZWVkZWQuIFRoZSBvcmlnaW5hbCB2YWx1ZSB3aWxsIGJlIHJlc3RvcmVkIGFmdGVyIHRoaXMgZnVuY3Rpb24uCiAgICBsb2NhbCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0gJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfTsKICAgIGlmICggISRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSApIHsKICAgICAgICAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0ge307ICAgICMgZGlzYWJsZSBhbGwgY29sdW1uIGZpbHRlcnMKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKHF3KENvbmZpZ0l0ZW1JRHMgUGFnZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskSXRlbX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRJdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgaW5jaWRlbnQgc2lnbmFscwogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgc3RvcmUgZGVwbG95bWVudCBzaWduYWxzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvbnZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJERlcGxTdGF0ZTsKCiAgICAgICAgIyBjb252ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSAoIGxjICRDb2xvciApID1+IHMvW14wLTlhLWZdLy9tc2dyOwoKICAgICAgICAjIGFkZCB0byBzdHlsZSBjbGFzc2VzIHN0cmluZwogICAgICAgICRTdHlsZUNsYXNzZXMgLj0gIgogICAgICAgICAgICAuRmxhZyBzcGFuLiREZXBsU3RhdGUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgICAgICAgICAgfQogICAgICAgICI7CiAgICB9CgogICAgIyB3cmFwIGludG8gc3R5bGUgdGFncwogICAgaWYgKCRTdHlsZUNsYXNzZXMpIHsKICAgICAgICAkU3R5bGVDbGFzc2VzID0gIjxzdHlsZT4kU3R5bGVDbGFzc2VzPC9zdHlsZT4iOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgbXkgQENvbmZpZ0l0ZW1Cb3g7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9ICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9ICYmICRDb3VudGVyIDwgKCAkUGFyYW17UGFnZVNob3dufSArICRQYXJhbXtTdGFydEhpdH0gKSApIHsKCiAgICAgICAgICAgICMgR2V0IGNvbmZpZyBpdGVtIGRhdGEuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1SZWYtPiUqOwoKICAgICAgICAgICAgIyBzZXQgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc2lnbmFscwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJEZXBsU2lnbmFsfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlfSB9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU2lnbmFsfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlVHlwZX0gfTsKCiAgICAgICAgICAgICMgZmlsbCBjb2x1bW4gbmFtZSBhdHRyaWJ1dGUgd2l0aCBjb3JyZXNwb25kaW5nIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICRDb25maWdJdGVte0NyZWF0ZWR9ICAgICA9ICRDb25maWdJdGVte0NyZWF0ZVRpbWV9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtMYXN0Q2hhbmdlZH0gPSAkQ29uZmlnSXRlbXtDaGFuZ2VUaW1lfTsKCiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1Cb3gsIFwlQ29uZmlnSXRlbTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBjb2x1bW5zZW5hYmxlZCBpcyBhIGZpbGxlZCBhcnJheSByZWZlcmVuY2UKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSApICkgewoKICAgICAgICAjIGNoZWNrIGlmIGNvbHVtbiBpcyByZWFsbHkgZmlsdGVyYWJsZQogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggQHsgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9OwogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9LAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdMaW5rUGFnZScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyICAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMSwKICAgICAgICBDdXJJbmNpU2lnbmFsID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRDb2x1bW59IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiT3ZlcnZpZXdOYXZCYXJQYWdlJENvbHVtbiIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4gICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIGh0bWwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgc29ydGFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiAhfiBte1xBIER5bmFtaWNGaWVsZF99eG1zICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3QgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgdGhlIERGcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJENvbHVtbjsKICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGFiZWw7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgc29ydGFibGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzU29ydGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAoICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSApICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Tb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE5hbWU7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVGFibGVCb2R5JyApOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0NvbmZpZ0l0ZW1Gb3VuZCcgKTsKICAgIH0KCiAgICAjIGJhY2sgbGluawogICAgaWYgKCAkUGFyYW17TGlua0JhY2t9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJzfSApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlcnMnLAogICAgICAgICk7CgogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAleyAkUGFyYW17RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0ZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlcicsCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkRmlsdGVyIChATmF2QmFyRmlsdGVycykgewogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgaWYgKCAkQ291bnQgPT0gc2NhbGFyIEBOYXZCYXJGaWx0ZXJzICkgewogICAgICAgICAgICAgICAgJEZpbHRlci0+e0NTU30gPSAnTGFzdCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggJEZpbHRlci0+e0ZpbHRlcn0gZXEgJFBhcmFte0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgICMgYXBwbHkgcmVzdHJpY3Rpb25zIGZvciBjdXN0b21lciBwZXJtaXNzaW9uIGNvbmRpdGlvbnMKICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnQ2xhc3MnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdEZXBsU3RhdGUnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMTEwLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMTExLAogICAgICAgIENsYXNzICAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICAgPT4gMTEzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gMTE0LAogICAgICAgIEN1ckRlcGxTdGF0ZSAgPT4gMTE1LAogICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gMTE2LAogICAgICAgIExhc3RDaGFuZ2VkICAgPT4gMTE3LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/OverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6T3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2V0IHN0b3JlZCBmaWx0ZXJzIGlmIHByZXNlbnQKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CiAgICBpZiAoICRQcmVmZXJlbmNlc3skU3RvcmVkRmlsdGVyc0tleX0gKSB7CiAgICAgICAgbXkgJFN0b3JlZEZpbHRlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30gPSAkU3RvcmVkRmlsdGVyczsKICAgIH0KCiAgICAjIGxvb2sgdXAgZmlsdGVyIGFzIGZpbHRlciBuYW1lcyBpbiAkU2VsZiBhcmUgcG90ZW50aWFsbHkgdHJhbnNsYXRlZAogICAgbXkgJEZpbHRlck5hbWU7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0ZpbHRlcnN9eyAkU2VsZi0+e0ZpbHRlcn0gfSApICkgewogICAgICAgIG15ICRJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICAkRmlsdGVyTmFtZSA9ICRJdGVtTGlzdC0+eyAkU2VsZi0+e0ZpbHRlcn0gfSAvLyAnJzsKICAgIH0KICAgICRGaWx0ZXJOYW1lIHx8PSAnQWxsJzsKCiAgICAjIGdhdGhlciBjb2x1bW4gY29uZmlnCiAgICAjICAgY29uZmlnIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbSBvdmVydmlldyBpcyB1c2VkIGZvciBib3RoIG92ZXJ2aWV3IGFuZCBzZWFyY2ggcmVzdWx0IHZpZXcKICAgIG15ICRPdmVydmlld0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtJyk7CgogICAgJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfSAgICAgICAgPSAkT3ZlcnZpZXdDb25maWctPntEZWZhdWx0Q29sdW1uc307CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX07CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gICA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfSAgPSAkT3ZlcnZpZXdDb25maWctPntDbGFzc0NvbHVtbnNEaXNhYmxlZH07CiAgICBteSAlQ29sdW1uQ29uZmlnID0gJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfS0+JSo7CgogICAgIyBpZiBjbGFzcyBmaWx0ZXIgaXMgc2V0LCBkaXNwbGF5IGNsYXNzIHNwZWNpZmljIGZpZWxkcwogICAgaWYgKCAkRmlsdGVyTmFtZSAmJiAkRmlsdGVyTmFtZSBuZSAnQWxsJyApIHsKCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJEF2YWlsYWJsZUNvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uQ29uZmlneyRBdmFpbGFibGVDb2x1bW59ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH17JEZpbHRlck5hbWV9ICkgKSB7CiAgICAgICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGVmYXVsdENvbHVtbn0gPSAyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEaXNhYmxlZH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGlzYWJsZWR9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJERpc2FibGVkQ29sdW1uICggJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGlzYWJsZWRDb2x1bW59ID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG1lcmdlIHNldHRpbmdzIGZyb20gY2xhc3MgY29uZmlnIGFuZCBkZWZhdWx0IGNvbmZpZwogICAgQ09MVU1OOgogICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IF9EZWZhdWx0Q29sdW1uU29ydCBrZXlzICVDb2x1bW5Db25maWcgKSB7CgogICAgICAgICMgc2tpcCBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbmV4dCBDT0xVTU4gdW5sZXNzICRDb2x1bW5Db25maWd7JENvbHVtbn07CgogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkQ29sdW1uIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCosICRDb2x1bW47CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb2x1bW5Db25maWd7JENvbHVtbn0gPT0gMiAmJiAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqLCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIHByZWZlcmVuY2Ugc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSwgb3ZlcndyaXRlIGVuYWJsZWQgY29sdW1ucyB3aXRoIHByZWZlcmVuY2VzCiAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSApIHsKCiAgICAgICAgbXkgJENvbHVtbnNFbmFibGVkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKS0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSwKICAgICAgICApOwoKICAgICAgICAjIGZpbHRlciBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbXkgQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQ7CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNFbmFibGVkKSApIHsKCiAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1uc0VuYWJsZWQtPkAqICkgewoKICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIHVubGVzcyAkQ29sdW1uQ29uZmlneyRDb2x1bW59OwoKICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQsICRDb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gXEBGaWx0ZXJlZENvbHVtbnNFbmFibGVkOwogICAgfQoKICAgICMgYWx3YXlzIHNldCBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggIWdyZXAgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiwgJ051bWJlcic7CiAgICB9CiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqLCAnTnVtYmVyJzsKICAgIH0KCiAgICAjIGdldCBuZWNlc3NhcnkgZHluYW1pYyBmaWVsZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkcyBhbmQgc2V0IGF2YWlsYWJsZSBhbmQgdmFsaWQgZmlsdGVyIGFuZCBzb3J0YWJsZSBjb2x1bW5zCiAgICBEWU5BTUlDRklFTEROQU1FOgogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CgogICAgICAgIG15ICRGaWVsZE5hbWU7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkTmFtZSA9fiBteyBEeW5hbWljRmllbGRfKD88RmllbGROYW1lPltBLVphLXowLTlcLV0rKSB9eG1zICkgewogICAgICAgICAgICAkRmllbGROYW1lID0gJCt7RmllbGROYW1lfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxETkFNRTsKICAgICAgICB9CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGZyb250ZW5kIHBlciBkZWZhdWx0IHRvIGFnZW50CiAgICAkUGFyYW17RnJvbnRlbmR9IC8vPSAnQWdlbnQnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfHwge307CiAgICBpZiAoICRDb2x1bW5zICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb2x1bW5zKSApIHsKCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7JENvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW4gdGhlIG5leHQgYmxvY2sKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXM7CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQgPSAkQ29sdW1uOwogICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCRUcmFuc2xhdGVkV29yZCksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIGR5bmFtaWMgZmllbGQgY29sdW1ucwogICAgbXkgJENvbHVtbnNEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgKTsKCiAgICBpZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgU29ydE9yZGVyQmFyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBJZiAkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gaXMgbm90IHNlbnQsIHdlIHdhbnQgdG8gZGlzYWJsZSBhbGwgZmlsdGVycwogICAgIyAgIGZvciB0aGUgY3VycmVudCBzY3JlZW4uIFdlIGxvY2FsaXplIHRoZSBzZXR0aW5nIGZvciB0aGlzIHN1YiBhbmQgY2hhbmdlIGl0CiAgICAjICAgYWZ0ZXIgdGhhdCwgaWYgbmVlZGVkLiBUaGUgb3JpZ2luYWwgdmFsdWUgd2lsbCBiZSByZXN0b3JlZCBhZnRlciB0aGlzIGZ1bmN0aW9uLgogICAgbG9jYWwgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc307CiAgICBpZiAoICEkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gKSB7CiAgICAgICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHt9OyAgICAjIGRpc2FibGUgYWxsIGNvbHVtbiBmaWx0ZXJzCiAgICB9CgogICAgZm9yIG15ICRJdGVtIChxdyhDb25maWdJdGVtSURzIFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEl0ZW19ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkSXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHN0b3JlIGRlcGxveW1lbnQgc2lnbmFscwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJUdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBzdG9yZSB0aGUgb3JpZ2luYWwgZGVwbG95bWVudCBzdGF0ZSBhcyBrZXkKICAgICAgICAjIGFuZCB0aGUgc3Mgc2FmZSBjb252ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICREZXBsU3RhdGU7CgogICAgICAgICMgY29udmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gKCBsYyAkQ29sb3IgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUnKSApIHsKICAgICAgICBteSBAR3JvdXBzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSApIHsKICAgICAgICAgICAgQEdyb3VwcyA9IEB7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwogICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cCAoQEdyb3VwcykgewogICAgICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCRIYXNQZXJtaXNzaW9uKSB7CiAgICAgICAgICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIG15IEBDb25maWdJdGVtQm94OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fSAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkgKSB7CgogICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgICAgICMgc2V0IGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgICAgICAjIGZpbGwgY29sdW1uIG5hbWUgYXR0cmlidXRlIHdpdGggY29ycmVzcG9uZGluZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVkfSAgICAgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17TGFzdENoYW5nZWR9ID0gJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX07CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFsbCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRBQ0w7CiAgICAgICAgICAgIG15ICVBY2xBY3Rpb24gPSAlUG9zc2libGVBY3Rpb25zOwoKICAgICAgICAgICAgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAlQWNsQWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcnVuIGNvbmZpZyBpdGVtIHByZSBtZW51IG1vZHVsZXMKICAgICAgICAgICAgbXkgQEFjdGlvbkl0ZW1zOwogICAgICAgICAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIG15ICVNZW51cyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlJykgfTsKICAgICAgICAgICAgICAgIE1FTlU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgICAgICAgICAjIGxvYWQgbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1lbnVzeyRNZW51fS0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICAgICBteSAkSXRlbSA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+IFwlQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgQUNMICAgICAgICA9PiBcJUFjbEFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNRU5VIGlmICEkSXRlbTsKICAgICAgICAgICAgICAgICAgICBuZXh0IE1FTlUgaWYgcmVmICRJdGVtIG5lICdIQVNIJzsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2Vzc2lvbiBpZCBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICEkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEQ29va2llfSAmJiAkSXRlbS0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSXRlbS0+e0xpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGlkCiAgICAgICAgICAgICAgICAgICAgJEl0ZW0tPntJRH0gPSAkSXRlbS0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICRJdGVtLT57SUR9ID1+IHMvKFxzfCZ8OykvL2lnOwoKICAgICAgICAgICAgICAgICAgICBteSAkT3V0cHV0OwogICAgICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntCbG9ja30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkSXRlbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAnPGxpIGlkPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRJdGVtLT57SUR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICciPjxhIGhyZWY9IiMiIHRpdGxlPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntEZXNjcmlwdGlvbn0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIj4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntOYW1lfSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICc8L2E+PC9saT4nOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCA9fiBzL1xuKy8vZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvXHMrLyAvZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvPFwhLS0uKz8tLT4vL2c7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFjdGlvbkl0ZW1zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUwgICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgID0+ICRJdGVtLT57SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJEl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgPT4gJEl0ZW0tPntUYXJnZXR9LAogICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgICA9PiAkSXRlbS0+e1BvcHVwVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ID0gXEBBY3Rpb25JdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQm94LCBcJUNvbmZpZ0l0ZW07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgY29sdW1uc2VuYWJsZWQgaXMgYSBmaWxsZWQgYXJyYXkgcmVmZXJlbmNkCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBjb2x1bW4gaXMgcmVhbGx5IGZpbHRlcmFibGUKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfTsKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnTGlua1BhZ2UnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NhdGVnb3J5RmlsdGVyfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJPdmVydmlld05hdkJhclBhZ2UkQ29sdW1uIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgaHRtbCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyB0aGUgREZzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICRUaXRsZSA9ICRMYWJlbDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSA9ICRMYWJlbDsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkTmFtZTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Ob3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdUYWJsZUJvZHknICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vQ29uZmlnSXRlbUZvdW5kJyApOwogICAgfQoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZpbHRlciBzZWxlY3Rpb24KICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVycycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIGlmICggJENvdW50ID09IHNjYWxhciBATmF2QmFyRmlsdGVycyApIHsKICAgICAgICAgICAgICAgICRGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJVNwZWNpYWxDb2x1bW5zID0gKAogICAgICAgIE51bWJlciAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxLAogICAgICAgIEN1ckluY2lTdGF0ZSA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxMTAsCiAgICAgICAgQ3VySW5jaVN0YXRlID0+IDExMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICA9PiAxMTMsCiAgICAgICAgTmFtZSAgICAgICAgID0+IDExNCwKICAgICAgICBMYXN0Q2hhbmdlZCAgPT4gMTE1LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtIC0gYWxsIENvbmZpZ0l0ZW0tcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgSVRTTSBDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQtcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBJVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm5zIGFuIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgICAgIFByaW50ID0+IDEsICAgICAgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJycgaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgZ2VuZXJhdGUgb3V0cHV0IHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtRm9ybURhdGFHZXQoKQoKcmV0dXJucyB0aGUgdmFsdWVzIGZyb20gdGhlIGh0bWwgZm9ybSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ICAgICAgICAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtICAgICAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1Gb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSBDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuIHt9IGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRGb3JtRGF0YSA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCglUGFyYW0pOwoKICAgIHJldHVybiAkRm9ybURhdGE7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKCkKCnJldHVybnMgYSBpbnB1dCBmaWVsZCBodG1sIHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGxvb2t1cCBpdGVtIHZhbHVlCiAgICBteSAkU3RyaW5nID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbVNlYXJjaEZvcm1EYXRhR2V0KCkKCnJldHVybnMgdGhlIHZhbHVlcyBmcm9tIHRoZSBzZWFyY2ggaHRtbCBmb3JtCgogICAgbXkgJEFycmF5UmVmID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFZhbHVlczsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUoKQoKcmV0dXJucyBhIHNlYXJjaCBpbnB1dCBmaWVsZCBodG1sIHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbVNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJycgaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgbG9va3VwIGl0ZW0gdmFsdWUKICAgIG15ICRTdHJpbmcgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIF9JVFNNTG9hZExheW91dEJhY2tlbmQoKQoKbG9hZCBhIGlucHV0IHR5cGUgYmFja2VuZCBtb2R1bGUKCiAgICAkQmFja2VuZE9iamVjdCA9ICRMYXlvdXRPYmplY3QtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAnR2VuZXJhbENhdGFsb2cnLAogICAgKTsKCj1jdXQKCnN1YiBfSVRTTUxvYWRMYXlvdXRCYWNrZW5kIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbG9nIG9iamVjdAogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBpZiAoICEkUGFyYW17VHlwZX0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBUeXBlIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEdlbmVyaWNNb2R1bGUgPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXQkUGFyYW17VHlwZX0iOwoKICAgICMgbG9hZCB0aGUgYmFja2VuZCBtb2R1bGUKICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJEdlbmVyaWNNb2R1bGUpICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgYmFja2VuZCBtb2R1bGUgJFBhcmFte1R5cGV9ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBuZXcgaW5zdGFuY2UKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEdlbmVyaWNNb2R1bGUtPm5ldygKICAgICAgICAleyRTZWxmfSwKICAgICAgICAlUGFyYW0sCiAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRTZWxmLAogICAgKTsKCiAgICBpZiAoICEkQmFja2VuZE9iamVjdCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgYmFja2VuZCBtb2R1bGUgJFBhcmFte1R5cGV9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRCYWNrZW5kT2JqZWN0Owp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygpCgpSZXR1cm5zIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggc29ydCBhbmQgcGFnaW5hdGlvbiBjYXBhYmlsaXRpZXMuCgpUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gTDxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXRUaWNrZXQucG0+LgoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gJENvbmZpZ0l0ZW1JRHNSZWYsICAgICAgICAgICAgICAgICAgIyB0b3RhbCBsaXN0IG9mIGNvbmZpZyBpdGVtIGlkcywgdGhhdCBjYW4gYmUgbGlzdGVkCiAgICAgICAgVG90YWwgICAgICAgICA9PiBzY2FsYXIgQHsgJENvbmZpZ0l0ZW1JRHNSZWYgfSwgICAgICAjIHRvdGFsIG51bWJlciBvZiBsaXN0IGl0ZW1zLCBjb25maWcgaXRlbXMgaW4gdGhpcyBjYXNlCiAgICAgICAgVmlldyAgICAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAnU21hbGwnCiAgICAgICAgRmlsdGVyICAgICAgICA9PiAnQWxsJywKICAgICAgICBGaWx0ZXJzICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgICAgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICAgICA9PiAnT3ZlcnZpZXc6IENvbmZpZyBJdGVtOiBDb21wdXRlcicsCiAgICAgICAgVGl0bGVWYWx1ZSAgICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRW52ICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgICAgID0+ICRMaW5rU29ydCwKICAgICAgICBGcm9udGVuZCAgICAgID0+ICdBZ2VudCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCAoQWdlbnR8Q3VzdG9tZXIpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtTGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBmcm9udGVuZCBwZXIgZGVmYXVsdCB0byBhZ2VudAogICAgJFBhcmFte0Zyb250ZW5kfSAvLz0gJ0FnZW50JzsKCiAgICAjIHRha2Ugb2JqZWN0IHJlZiB0byBsb2NhbCwgcmVtb3ZlIGl0IGZyb20gJVBhcmFtIChwcmV2ZW50IG1lbW9yeSBsZWFrKQogICAgbXkgJEVudiA9IGRlbGV0ZSAkUGFyYW17RW52fTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17Vmlld30gPSAkU2VsZi0+eyAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcyBpZiBuZWVkZWQKICAgIG15ICRLZXkgPSAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn07CiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ0N1c3RvbWVyJyApIHsKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSAmJiAoICRTZWxmLT57JEtleX0gLy8gJycgKSBuZSAkVmlldyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFZpZXcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcwogICAgICAgID0gJFBhcmFte0Zyb250ZW5kfSBlcSAnQWdlbnQnID8gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JykgOiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlCiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CgogICAgICAgICMgdHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gQ29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdmlldyBtb2RlICRWaWV3LCB0b29rICRLZXkgaW5zdGVhZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVmlldycsCiAgICAgICAgVmFsdWUgPT4gJFZpZXcsCiAgICApOwoKICAgICMgbG9hZCBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgfQogICAgbXkgJE9iamVjdCA9ICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0tPm5ldyggJXskRW52fSApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgcmV0cmlldmUgZmlsdGVyIHZhbHVlcwogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIHJldHVybiAkT2JqZWN0LT5GaWx0ZXJDb250ZW50KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJ1biBhY3Rpb24gcm93IGJhY2tlbmQgbW9kdWxlCiAgICAkUGFyYW17QWN0aW9uUm93fSA9ICRPYmplY3QtPkFjdGlvblJvdygKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ29uZmlnID0+ICRCYWNrZW5kcy0+eyRWaWV3fSwKICAgICk7CgogICAgIyBydW4gb3ZlcnZpZXcgYmFja2VuZCBtb2R1bGUKICAgICRQYXJhbXtTb3J0T3JkZXJCYXJ9ID0gJE9iamVjdC0+U29ydE9yZGVyQmFyKAogICAgICAgICVQYXJhbSwKICAgICAgICBDb25maWcgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgKTsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gdGlja2V0cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCB0aWNrZXQgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIG15ICRTdGFydEhpdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgY2FsY3VsYXRlIG1heC4gc2hvd24gcGVyIHBhZ2UKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGJ1aWxkIG5hdiBiYXIKICAgIG15ICRMaW1pdCAgID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICAgICAgSURQcmVmaXggID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biB0aWNrZXQgcGVyIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gJFBhcmFte1JlcXVlc3RlZFVSTH0gfHwgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07JFBhcmFte0xpbmtQYWdlfSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNWYWx1ZScsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgbmF2IGJhciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgb3ZlcnZpZXcKICAgICRQYXJhbXtWaWV3fSA9ICRWaWV3OwogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9ICkgewogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICBpZiAoICRDb3VudCA9PSBzY2FsYXIgQE5hdkJhckZpbHRlcnMgKSB7CiAgICAgICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskQ2F0ZWdvcnlGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICYmICRDYXRlZ29yeUZpbHRlci0+e0NhdGVnb3J5RmlsdGVyfSBlcSAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRDYXRlZ29yeUZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JENhdGVnb3J5RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHZpZXcgbW9kZQogICAgZm9yIG15ICRCYWNrZW5kICgKICAgICAgICBzb3J0IHsgJEJhY2tlbmRzLT57JGF9LT57TW9kdWxlUHJpb3JpdHl9IDw9PiAkQmFja2VuZHMtPnskYn0tPntNb2R1bGVQcmlvcml0eX0gfQogICAgICAgIGtleXMgJXskQmFja2VuZHN9CiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VOYXZCYXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFnZU5hdiwKICAgICAgICApOwoKICAgICAgICAjIGRvbid0IHNob3cgY29udGV4dCBzZXR0aW5ncyBpbiBBSkFYIGNhc2UgKGUuIGcuIGluIGN1c3RvbWVyIHRpY2tldCBoaXN0b3J5KSwKICAgICAgICAjICAgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgY29sdW1uIGZpbHRlciBwcmVmZXJlbmNlcwogICAgICAgICAgICBpZiAoICRWaWV3IGVxICdTbWFsbCcgKSB7CgogICAgICAgICAgICAgICAgIyBzZXQgcHJlZmVyZW5jZXMga2V5cwogICAgICAgICAgICAgICAgbXkgJFByZWZLZXlDb2x1bW5zID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkRW52LT57QWN0aW9ufSAuICctJyAuICRQYXJhbXtGaWx0ZXJ9OwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIGV4dHJhIG5lZWRlZCBvYmplY3RzCiAgICAgICAgICAgICAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgICAgICAgICAgICAgIyBjb25maWd1cmUgY29sdW1ucwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkID0gQHsgJE9iamVjdC0+e0NvbHVtbnNFbmFibGVkfSB9OwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNBdmFpbGFibGU7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICAgICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1uc0VuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBmaWx0ZXJlZCBjb2x1bW4gbGlzdAogICAgICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgeyAkYSBjbXAgJGIgfSBAeyAkT2JqZWN0LT57Q29sdW1uc0F2YWlsYWJsZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFncmVwIHsgJF8gZXEgJENvbHVtbk5hbWUgfSBAQ29sdW1uc0VuYWJsZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNBdmFpbGFibGUsICRDb2x1bW5OYW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAlQ29sdW1uczsKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgQENvbHVtbnNBdmFpbGFibGUgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbHVtbnN7Q29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAoIGdyZXAgeyAkQ29sdW1uTmFtZSBlcSAkXyB9IEBDb2x1bW5zRW5hYmxlZCApID8gMSA6IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckNvbHVtblNldHRpbmdzJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgICAgICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFwlQ29sdW1ucyApLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zRW5hYmxlZCAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zRW5hYmxlZCApLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zQXZhaWxhYmxlID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zQXZhaWxhYmxlICksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVQcmVmICAgICAgICAgPT4gJFByZWZLZXlDb2x1bW5zLAogICAgICAgICAgICAgICAgICAgICAgICBEZXNjICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24gQ29sdW1ucycpLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRFbnYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJBY3Rpb24gICAgID0+ICRFbnYtPntBY3Rpb259IC4gJy0nIC4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1PdmVydmlld0ZpbHRlclNldHRpbmdzJywKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAjIGVuZCBzaG93IGNvbHVtbiBmaWx0ZXJzIHByZWZlcmVuY2VzCgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgd2FzIHN0b3JlZCBmaWx0ZXJzLCBhbmQgcHJpbnQgYSBsaW5rIHRvIGRlbGV0ZSB0aGVtCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJE9iamVjdC0+e1N0b3JlZEZpbHRlcnN9ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93UmVtb3ZlQ29sdW1uRmlsdGVycycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDU1MgPT4gIkNvbnRleHRTZXR0aW5ncyBSZW1vdmVGaWx0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuYXYgYmFyIGFuZCBydW4gb3ZlcnZpZXcgYmFja2VuZCBtb2R1bGUKICAgIG15ICROYXZCYXJIVE1MID0gJyc7CiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ0N1c3RvbWVyJyApIHsKICAgICAgICAkTmF2QmFySFRNTCA9ICRTZWxmLT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsgJVBhcmFtLCB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJE5hdkJhckhUTUwsCiAgICAgICAgJE9iamVjdC0+UnVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5Q2xhc3NlcyA9PiAkRW52LT57Q2F0ZWdvcnlDbGFzc2VzfSwKICAgICAgICAgICAgQ29uZmlnICAgICAgICAgID0+ICRCYWNrZW5kcy0+eyRWaWV3fSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgID0+ICRMaW1pdCwKICAgICAgICAgICAgU3RhcnRIaXQgICAgICAgID0+ICRTdGFydEhpdCwKICAgICAgICAgICAgUGFnZVNob3duICAgICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgIEFsbEhpdHMgICAgICAgICA9PiAkUGFyYW17VG90YWx9ICB8fCAwLAogICAgICAgICAgICBPdXRwdXQgICAgICAgICAgPT4gJFBhcmFte091dHB1dH0gfHwgJycsCiAgICAgICAgKTsKfQoKPWhlYWQyIFhNTERhdGEySGFzaCgpCgpyZXR1cm5zIGEgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgcmVxdWVzdGVkIGF0dHJpYnV0ZXMgZGF0YSBmb3IgYSBjb25maWcgaXRlbQoKUmV0dXJuCgogICAgJERhdGEgPSB7CiAgICAgICAgJ0hhcmREaXNrOjoyJyA9PiB7CiAgICAgICAgICAgIFZhbHVlID0+ICdIRDInLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZCBEaXNrJywKICAgICAgICAgfSwKICAgICAgICAnQ1BVOjoxJyA9PiB7CiAgICAgICAgICAgIFZhbHVlID0+ICcnLAogICAgICAgICAgICBOYW1lICA9PiAnQ1BVJywKICAgICAgICB9LAogICAgICAgICdIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEnID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJzc4MCBHQicsCiAgICAgICAgICAgIE5hbWUgID0+ICdDYXBhY2l0eScsCiAgICAgICAgfSwKICAgIH07CgogICAgbXkgJERhdGEgPSAkTGF5b3V0T2JqZWN0LT5YTUxEYXRhMkhhc2goCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkVmVyc2lvbi0+e1hNTERlZmluaXRpb259LAogICAgICAgIFhNTERhdGEgICAgICAgPT4gJFZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICBBdHRyaWJ1dGVzICAgID0+IFsnQ1BVOjoxJywgJ0hhcmREcml2ZTo6Mjo6Q2FwYWNpdHk6OjEnLCAuLi5dLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVEYXRhSGFzaFJlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgUHJlZml4ICAgICAgICA9PiAnSGFyZERpc2s6OjEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgWE1MRGF0YTJIYXNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERhdGF9OwogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgISRQYXJhbXtBdHRyaWJ1dGVzfTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERhdGF9IG5lICdIQVNIJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtBdHRyaWJ1dGVzfSBuZSAnQVJSQVknOwoKICAgICMgdG8gc3RvcmUgdGhlIHJldHVybiBkYXRhCiAgICBteSAkRGF0YSA9ICRQYXJhbXtEYXRhfSB8fCB7fTsKCiAgICAjIGNyZWF0ZSBhIGxvb2t1cCBzdHJ1Y3R1cmUKICAgIG15ICVSZWxldmFudEF0dHJpYnV0ZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0F0dHJpYnV0ZXN9IH07CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICBteSAkQ291bnRNYXggPSAkSXRlbS0+e0NvdW50TWF4fSB8fCAxOwoKICAgICAgICBDT1VOVEVSOgogICAgICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gJENvdW50TWF4ICkgewoKICAgICAgICAgICAgIyBhZGQgcHJlZml4CiAgICAgICAgICAgIG15ICRQcmVmaXggPSAkSXRlbS0+e0tleX0gLiAnOjonIC4gJENvdW50ZXI7CiAgICAgICAgICAgIGlmICggJFBhcmFte1ByZWZpeH0gKSB7CiAgICAgICAgICAgICAgICAkUHJlZml4ID0gJFBhcmFte1ByZWZpeH0gLiAnOjonIC4gJFByZWZpeDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBza2lwIG5vdCBuZWVkZWQgZWxlbWVudHMgYW5kIHN1YiBlbGVtZW50cwogICAgICAgICAgICBuZXh0IENPVU5URVIgaWYgIWdyZXAgeyAkXyA9fiBte1xBJFByZWZpeH0gfSBAeyAkUGFyYW17QXR0cmlidXRlc30gfTsKCiAgICAgICAgICAgICMgbG9va3VwIHZhbHVlCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5YTUxWYWx1ZUxvb2t1cCgKICAgICAgICAgICAgICAgIEl0ZW0gID0+ICRJdGVtLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLT57Q29udGVudH0gLy8gJycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgaWYgdmFsdWUgaXMgZGVmaW5lZAogICAgICAgICAgICBpZiAoIGRlZmluZWQgJFZhbHVlICkgewoKICAgICAgICAgICAgICAgICMgY3JlYXRlIG91dHB1dCBzdHJpbmcKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRTZWxmLT5JVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgSXRlbSAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgUHJpbnQgPT4gJFBhcmFte1ByaW50fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFJlbGV2YW50QXR0cmlidXRlc3skUHJlZml4fSApIHsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIHRoZSBpdGVtIGluIGhhc2gKICAgICAgICAgICAgICAgICREYXRhLT57JFByZWZpeH0gPSB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJEl0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUgLy8gJycsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntTdWJ9ICkgewogICAgICAgICAgICAgICAgJERhdGEgPSAkU2VsZi0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLAogICAgICAgICAgICAgICAgICAgIFByZWZpeCAgICAgICAgPT4gJFByZWZpeCwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgICAgPT4gJFBhcmFte0F0dHJpYnV0ZXN9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJERhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtVHJlZVZpZXc7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyAtIGFsbCBDb25maWdJdGVtVHJlZVZpZXctcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgQ29uZmlnSXRlbVRyZWVWaWV3LXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgR2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgpCgpjcmVhdGVzIEhUTUwgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBkcmF3aW5nIHRoZSBncmFwaC4KCiAgICBteSAkQ2FudmFzSFRNTCA9ICRMYXlvdXRPYmplY3QtPkdlbmVyYXRlSGllcmFyY2h5R3JhcGgoCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gMiwgIyBkZXB0aCBsZXZlbAogICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDEgICMgc291cmNlIGNvbmZpZyBpdGVtIElECiAgICAgICAgVmVyc2lvbklEICAgICAgPT4gMSAgIyBzb3VyY2UgY29uZmlnIGl0ZW0gdmVyc2lvbiBJRAogICAgKTsKCj1jdXQKCnN1YiBHZW5lcmF0ZUhpZXJhcmNoeUdyYXBoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LCwKICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICApOwoKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGdldCBDb25maWdJdGVtLicKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgJFNlbGYtPntDSVRyZWVNYXhEZXB0aH0gPSAxOwoKICAgIG15IEBMaW5rT3V0cHV0RGF0YVRhcmdldHMgPSAoWwogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICBJRCA9PiAkU2VsZi0+X0dlbmVyYXRlSUQoICRDb25maWdJdGVtLT4lKiApLAogICAgICAgIH0sCiAgICBdKTsKICAgIG15IEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMgPSBATGlua091dHB1dERhdGFUYXJnZXRzOwoKICAgICMgQnVpbGQgTGV2ZWxzIERvd24gKFRhcmdldHMpCiAgICAkU2VsZi0+R2V0Q0lTdWJUcmVlRGF0YSgKICAgICAgICBMaW5rT3V0cHV0RGF0YSA9PiBcQExpbmtPdXRwdXREYXRhVGFyZ2V0cywgICAgIyB3aWxsIGJlIG1vZGlmaWVkCiAgICAgICAgSW5pdCAgICAgICAgICAgPT4gMSwKICAgICAgICBEZXB0aCAgICAgICAgICA9PiAkUGFyYW17RGVwdGh9LAogICAgICAgIERpcmVjdGlvbiAgICAgID0+ICdTb3VyY2UnCiAgICApOwoKICAgICMgQnVpbGQgTGV2ZWxzIFVwIChTb3VyY2VzKQogICAgJFNlbGYtPkdldENJU3ViVHJlZURhdGEoCiAgICAgICAgTGlua091dHB1dERhdGEgPT4gXEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMsICAgICMgd2lsbCBiZSBtb2RpZmllZAogICAgICAgIEluaXQgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gJFBhcmFte0RlcHRofSwKICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnVGFyZ2V0JwogICAgKTsKCiAgICAjIFRoZSBuZWVkZWQgZGF0YSBoYXMgYmVlbiBjb2xsZWN0ZWQuCiAgICAjIFRoZSBmb2xsb3dpbmcganVzdCBwYXNzZXMgdGhlIHR3byB0cmVlcyB0byB0aGUgd2ViIHBhZ2UuCgogICAgIyBmb3IgdGhlIHNvdXJjZXMgc3RhcnQgd2l0aCB0aGUgZGVlcGVzdCBsZXZlbAogICAgbXkgQExpbmtEYXRhU291cmNlOyAgICAjIHdpbGwgYmUgdXNlZCBpbiBKYXZhU2NyaXB0IGZvciBkcmF3aW5nIHRoZSBhcmNzCiAgICBmb3IgbXkgJExldmVsICggcmV2ZXJzZSAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVNvdXJjZXMgKSApIHsKICAgICAgICBteSAkRWxlbWVudHMgPSAkTGlua091dHB1dERhdGFTb3VyY2VzWyAkTGV2ZWwgXTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBMZXZlbCA9PiAkTGV2ZWwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkRWxlbWVudHMtPkAqICkgewogICAgICAgICAgICBteSAkSUQgPSAiJEVsZW1lbnQtPntJRH1fUyRMZXZlbCI7ICAgICMgb25seSBsaW5rIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIGxldmVsLCB0aGUgc2VwYXJhdG9yIF9TIGluZGljYXRlcyBTb3VyY2UKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkRWxlbWVudC0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkRWxlbWVudC0+e0NvbnRlbnRzfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbklEICAgID0+ICRQYXJhbXtTZXNzaW9uSUR9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG5lZWQgdG8gY29uc2lkZXIgdGhlIHNwZWNpYWwgY2FzZSB3aGVuIGxpbmtpbmcgdG8gdGhlIG9yaWdpbgogICAgICAgICAgICBteSAkTmV4dExldmVsID0gJExldmVsIC0gMTsKCiAgICAgICAgICAgIGZvciBteSAkTGluayAoIEB7ICRFbGVtZW50LT57TGlua30gLy8gW10gfSApIHsKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRUb0VsZW1lbnQgPSAkTmV4dExldmVsID8gJExpbmstPntMaW5rZWRUb30gLiAnX1MnIC4gJE5leHRMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFTb3VyY2UsIGpvaW4gJywnLCAkTGlua2VkVG9FbGVtZW50LCAkSUQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgTGV2ZWwgMAogICAgIyBHaXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb290IG5vZGUgdG8gdGhlIHdlYiBwYWdlLgogICAgIyBEeW5hbWljIGZpZWxkIGluZm8gaXMgbm90IG5lZWRlZC4KICAgIHsKICAgICAgICBteSAkQ29udGVudHMgPSAkU2VsZi0+X0dldENvbnRlbnRzKAogICAgICAgICAgICBBdHRyaWJ1dGVzID0+IFsgJ1ZlcnNpb25TdHJpbmcnLCAkU2VsZi0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMgXSwgICAgIyB0aGUgcm9vdCBoYXMgYWx3YXlzIGEgdmVyc2lvbgogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPcmlnaW5FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkQ29udGVudHMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgSUQgICAgICAgICAgID0+ICRMaW5rT3V0cHV0RGF0YVNvdXJjZXNbMF1bMF17SUR9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZvciB0aGUgdGFyZ2V0cyBzdGFydCB3aXRoIHRoZSBsb3dlc3QgbGV2ZWwKICAgIG15IEBMaW5rRGF0YVRhcmdldDsgICAgIyB3aWxsIGJlIHVzZWQgaW4gSmF2YVNjcmlwdCBmb3IgZHJhd2luZyB0aGUgYXJjcwogICAgZm9yIG15ICRMZXZlbCAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVRhcmdldHMgKSB7CiAgICAgICAgbXkgJEVsZW1lbnRzID0gJExpbmtPdXRwdXREYXRhVGFyZ2V0c1sgJExldmVsIF07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDaGlsZFRhcmdldEVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExldmVsID0+ICRMZXZlbAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJEVsZW1lbnRzLT5AKiApIHsKICAgICAgICAgICAgbXkgJElEID0gIiRFbGVtZW50LT57SUR9X1QkTGV2ZWwiOyAgICAjIG9ubHkgbGluayB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBsZXZlbCwgdGhlIHNlcGFyYXRvciBfVCBpbmRpY2F0ZXMgVGFyZ2V0CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2hpbGRUYXJnZXRFbGVtZW50cycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJEVsZW1lbnQtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50cyAgICAgPT4gJEVsZW1lbnQtPntDb250ZW50c30sCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRFbGVtZW50LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICA9PiAkUGFyYW17U2Vzc2lvbklEfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWFsIGNhc2Ugd2hlbiBsaW5raW5nIHRvIHRoZSBvcmlnaW4KICAgICAgICAgICAgbXkgJFByZXZpb3VzTGV2ZWwgPSAkTGV2ZWwgLSAxOwogICAgICAgICAgICBmb3IgbXkgJExpbmsgKCBAeyAkRWxlbWVudC0+e0xpbmt9IC8vIFtdIH0gKSB7CiAgICAgICAgICAgICAgICBteSAkTGlua2VkVG9FbGVtZW50ID0gJFByZXZpb3VzTGV2ZWwgPyAkTGluay0+e0xpbmtlZFRvfSAuICdfVCcgLiAkUHJldmlvdXNMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFUYXJnZXQsIGpvaW4gJywnLCAkSUQsICRMaW5rZWRUb0VsZW1lbnQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDb25maWdJdGVtVHJlZVZpZXcvQ29uZmlnSXRlbVRyZWVWaWV3R3JhcGgnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIE1heERlcHRoICAgICAgID0+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9LAogICAgICAgICAgICBMaW5rRGF0YVNvdXJjZSA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVNvdXJjZSApLAogICAgICAgICAgICBMaW5rRGF0YVRhcmdldCA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVRhcmdldCApLAogICAgICAgIH0KICAgICk7Cn0KCj1oZWFkMiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcygpCgpHZXQgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2hvd24gaW4gdGhlIG5vZGVzLgoKICAgIG15IEBBdHRyaWJ1dGVzID0gJExheW91dE9iamVjdC0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMoKTsKCj1jdXQKCnN1YiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcyB7CiAgICByZXR1cm4gcXcvQ2xhc3MgQ3VyRGVwbFN0YXRlIEN1ckluY2lTdGF0ZSBDdXJJbmNpU3RhdGVUeXBlLzsKfQoKIyBidWlsZCBDaGlsZHJlbiBzdHJ1Y3R1cmUKc3ViIEdldENJU3ViVHJlZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGlua091dHB1dERhdGEgPSAkUGFyYW17TGlua091dHB1dERhdGF9OyAgICAjIHdpbGwgYmUgbW9kaWZpZWQKICAgIG15ICREZXB0aCAgICAgICAgICA9ICRQYXJhbXtEZXB0aH07CiAgICBteSAkSW5pdCAgICAgICAgICAgPSAkUGFyYW17SW5pdH07CiAgICBteSAkRGlyZWN0aW9uICAgICAgPSAkUGFyYW17RGlyZWN0aW9ufTsKCiAgICBteSAkQWN0dWFsTGV2ZWwgICAgICA9IDE7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgYnVpbGQgdGhlIGl0ZW1zIGZvciB0aGUgbmV3IGxldmVscwogICAgTE9PUERFUFRIOgogICAgZm9yIG15ICRHb0RlZXAgKCAkSW5pdCAuLiAkRGVwdGggKSB7CiAgICAgICAgbmV4dCBMT09QREVQVEggaWYgZXhpc3RzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIF07CiAgICAgICAgbGFzdCBMT09QREVQVEggdW5sZXNzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIC0gMSBdOwoKICAgICAgICAjIGdldCBsaW5rZWQgb2JqZWN0cyBmb3IgdGhlIG5leHQgbGV2ZWwKICAgICAgICBteSBASXRlbXNQZXJMZXZlbDsKICAgICAgICBteSAlSXRlbU1hcDsKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkTGlua091dHB1dERhdGEtPlsgJEdvRGVlcCAtIDEgXS0+QCogKSB7CgogICAgICAgICAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRFbGVtZW50LT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRGF0YUZvckl0ZW0gPSAkU2VsZi0+R2V0TGlua091dHB1dERhdGEoCiAgICAgICAgICAgICAgICBMaW5rZWRDb25maWdJdGVtcyA9PiAkTGlua2VkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBMaW5rZWRUbyAgICAgICAgICA9PiAkRWxlbWVudC0+e0lEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBJVEVNOgogICAgICAgICAgICBmb3IgbXkgJFNpbmdsZUl0ZW0gKCBAeyAkRGF0YUZvckl0ZW0gLy8gW10gfSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXRlbSBhbHJlYWR5IGV4aXN0cyBvbiB0aGlzIGxheWVyLCBqdXN0IGFkZCBhbm90aGVyIGxpbmsgdG8gaXQKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRJdGVtc1BlckxldmVsWyAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSBde0xpbmt9IH0sICRTaW5nbGVJdGVtLT57TGlua31bMF07CgogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtc1BlckxldmVsLCAkU2luZ2xlSXRlbTsKICAgICAgICAgICAgICAgICRJdGVtTWFweyAkU2luZ2xlSXRlbS0+e0lEfSB9ID0gJCNJdGVtc1BlckxldmVsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQEl0ZW1zUGVyTGV2ZWwpIHsKICAgICAgICAgICAgJEFjdHVhbExldmVsKys7CiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YS0+WyRHb0RlZXBdID0gXEBJdGVtc1BlckxldmVsOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRBY3R1YWxMZXZlbCA+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ICYmICRBY3R1YWxMZXZlbCAhPSAwICkgewogICAgICAgICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ID0gJEFjdHVhbExldmVsOwogICAgfQoKICAgIHJldHVybjsKfQoKIyByZXR1cm4gY29udGVudHMgb2YgdGhlIG5vZGVzCnN1YiBfR2V0Q29udGVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAQXR0cmlidXRlcyA9ICRQYXJhbXtBdHRyaWJ1dGVzfS0+QCo7CiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtDb25maWdJdGVtfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZmlsbCBkYXRhIHdpdGggY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgbXkgQExpbmVzOwogICAgZm9yIG15ICRDb2x1bW4gKEBBdHRyaWJ1dGVzKSB7CgogICAgICAgIG15ICRDb2x1bW5MYWJlbCA9ICRDb2x1bW47CiAgICAgICAgaWYgKCBpbmRleCggJENvbHVtbiwgJzo6JyApID4gMCApIHsKICAgICAgICAgICAgbXkgQFZhbHMgPSBzcGxpdCAvOjovLCAkQ29sdW1uOwogICAgICAgICAgICBwb3AgQFZhbHM7CiAgICAgICAgICAgICRDb2x1bW5MYWJlbCA9IGpvaW4gJyAnLCBAVmFsczsKICAgICAgICB9CgogICAgICAgIG15ICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFNlbGYtPl9NYXBBdHRyaWJ1dGVzKCBMYWJlbCA9PiAkQ29sdW1uTGFiZWwgKSApOwogICAgICAgIG15ICRUZXh0ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJENvbmZpZ0l0ZW0tPnskQ29sdW1ufSAvLyAnJyApOwoKICAgICAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlLiBTaG93IHRoZSBncmVlbiwgeWVsbG93LCByZWQgZmxhZ3MuCiAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKCiAgICAgICAgICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDdXJJbmNpU2lnbmFsID0gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH07CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCBxcXs8c3BhbiBjbGFzcz0iRmxhZyBTbWFsbCI+IDxzcGFuIGNsYXNzPSIkQ3VySW5jaVNpZ25hbCI+IiRUZXh0Ijwvc3Bhbj48L3NwYW4+fTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCAiJExhYmVsOiAkVGV4dCI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBqb2luICI8YnI+XG4iLCBATGluZXM7Cn0KCiMgZ2VuZXJhdGUgYW4gSUQgdGhhdCBpcyB1c2VkIGZvciBkcmF3aW5nIHRoZSBhcmNzCnN1YiBfR2VuZXJhdGVJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICggZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbUlEfSA/ICJDJFBhcmFte0NvbmZpZ0l0ZW1JRH0iIDogJycgKSwKICAgICAgICAoIGRlZmluZWQgJFBhcmFte1ZlcnNpb25JRH0gICAgPyAiViRQYXJhbXtWZXJzaW9uSUR9IiAgICA6ICcnICk7Cn0KCiMgR2V0IGxpbmtzIGZvciByZWxhdGVkIENJLgojIFRoaXMgcmV0dXJuZWQgb3V0cHV0IGRhdGEgaXMgbm90IGEgdHJlZSwgYnV0IGFuIGFycmF5cmVmIG9mIGl0ZW1zIHBlciBsZXZlbC4Kc3ViIEdldExpbmtPdXRwdXREYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWd1cmVkVHlwZXMgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpUeXBlJyk7CgogICAgbXkgQE91dHB1dERhdGE7CiAgICBmb3IgbXkgJExpbmtlZENvbmZpZ0l0ZW0gKCBncmVwIHsgJF8tPntEaXJlY3Rpb259IGVxICRQYXJhbXtEaXJlY3Rpb259IH0gJFBhcmFte0xpbmtlZENvbmZpZ0l0ZW1zfS0+QCogKSB7CgogICAgICAgICMgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbmtlZCBjb25maWcgaXRlbQogICAgICAgICMgVGhlcmUgYXJlIG9ubHkgdHdvIGNhc2VzOgogICAgICAgICMgICAtIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbgogICAgICAgICMgICAtIFZlcnNpb25JRCBpcyBnaXZlbgogICAgICAgIG15ICVJbmNvbWluZ0lEcyA9IG1hcCB7ICRfID0+ICRMaW5rZWRDb25maWdJdGVtLT57JF99IH0gcXcoQ29uZmlnSXRlbUlEIFZlcnNpb25JRCk7CgogICAgICAgICMgQ29uZmlnSXRlbUdldCgpIGFsbG93cyBmb3IgYm90aCBjYXNlcwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICVJbmNvbWluZ0lEcywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgVGhpcyB3aWxsIGJlIHVzZWQgZm9yIGZpbmRpbmcgdGhlIG5leHQgbGV2ZWwgb2YgbGlua3M6CiAgICAgICAgIyAgIC0gQ29uZmlnSXRlbUlEIHdhcyBnaXZlbiA9PiBsYXRlc3QgVmVyc2lvbklEIHdpbGwgYmUgYWRkZWQKICAgICAgICAjICAgLSBWZXJzaW9uSUQgd2FzIGdpdmVuICAgID0+IENvbmZpZ0l0ZW1JRCBmb3IgdGhhdCB2ZXJzaW9uIHdpbGwgYmUgYWRkZWQKICAgICAgICBteSAlT3V0Z29pbmdJRHMgPSBtYXAgeyAkXyA9PiAkQ29uZmlnSXRlbS0+eyRffSB9IHF3KENvbmZpZ0l0ZW1JRCBWZXJzaW9uSUQpOwoKICAgICAgICAjIEZpbmQgbGFiZWwgZm9yIHRoZSBsaW5rLiBJbiBUcmVlVmlldyB0aGUgbGFiZWwgb2YgdGhlIGFyYwogICAgICAgICMgc2hvdWxkIGJlIGluIGFjY29yZGFuY2UgdG8gdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJjLiBUaGUgYXJlCiAgICAgICAgIyBpcyBhbHdheXMgZGlyZWN0ZWQgZnJvbSBTb3VyY2UgdG8gVGFyZ2V0LiBUaGVyZWZvcmUgdGhlIFNvdXJjZU5hbWUgaXMgdGhlIGFyYyBsYWJlbC4KICAgICAgICBteSAkTGlua1R5cGUgPSAkTGlua2VkQ29uZmlnSXRlbS0+e0xpbmtUeXBlfTsKICAgICAgICBteSAkQXJjTGFiZWwgPSAkQ29uZmlndXJlZFR5cGVzLT57JExpbmtUeXBlfS0+e1NvdXJjZU5hbWV9IHx8ICRMaW5rVHlwZTsKICAgICAgICBteSAkTGluayAgICAgPSBbIHsgTGlua2VkVG8gPT4gJFBhcmFte0xpbmtlZFRvfSwgIExpbmtUeXBlID0+ICRBcmNMYWJlbCB9IF07CgogICAgICAgICMgV2FzIHRoZSBsaW5rIHRvIHRoaXMgaXRlbSB2ZXJzaW9uIHNwZWNpZmljID8KICAgICAgICAjIFRoZSBWZXJzaW9uU3RyaW5nIGlzIG9ubHkgc2hvd24gaW4gdGhlIFRyZWVWaWV3IHdoZW4gYW4gZXhwbGljaXQgdmVyc2lvbiBpcyBsaW5rZWQuCiAgICAgICAgIyBUT0RPOiBpZiB3ZSB3YW50IG11bHRpcGxlIGxpbmtzIHRvIHRoZSB2ZXJzaW9uIG9uIHRoZSBzYW1lIGxheWVyLCBvbmx5IHBhcnRseSB2ZXJzaW9uIHNwZWNpZmljCiAgICAgICAgIyAgICAgICB3ZSB3b3VsZCBuZWVkIHNlcGFyYXRlIGlkcyBmb3IgYm90aC4gVGhpcyBjdXJyZW50bHkgaXMgbm90IGltcGxlbWVudGVkLgogICAgICAgIG15ICRMaW5rZWRBc1ZlcnNpb24gPSAkSW5jb21pbmdJRHN7VmVyc2lvbklEfSA/IDEgOiAwOwoKICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICBwdXNoIEBPdXRwdXREYXRhLCB7CiAgICAgICAgICAgICVPdXRnb2luZ0lEcywKICAgICAgICAgICAgSUQgICAgICAgICAgICAgID0+ICRTZWxmLT5fR2VuZXJhdGVJRCglT3V0Z29pbmdJRHMpLCAgICAjIHVzZWQgZm9yIGxpbmtpbmcgaW4gdGhlIGdyYXBoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICBMaW5rICAgICAgICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIExpbmtlZEFzVmVyc2lvbiA9PiAkTGlua2VkQXNWZXJzaW9uLAogICAgICAgICAgICBDb250ZW50cyAgICAgICAgPT4gJFNlbGYtPl9HZXRDb250ZW50cygKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICggJExpbmtlZEFzVmVyc2lvbiA/ICdWZXJzaW9uU3RyaW5nJyA6ICgpICksCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPkNJVHJlZURlZmF1bHRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICksCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gXEBPdXRwdXREYXRhOwp9CgojIGNoYW5nZSBsYWJlbHMgZm9yIHRyYW5zbGF0YWJsZSB2YWx1ZXMKc3ViIF9NYXBBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0xhYmVsfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTGFiZWwhJwogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdGF0ZSAkTWFwVHJhbnNsYXRpb25zID0gewogICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJycsCiAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnQ29uZmlnIEl0ZW0gTnVtYmVyJywKICAgICAgICBWZXJzaW9uU3RyaW5nICAgID0+ICdWZXJzaW9uIFN0cmluZycsCiAgICB9OwoKICAgIHJldHVybiAkTWFwVHJhbnNsYXRpb25zLT57ICRQYXJhbXtMYWJlbH0gfSAvLyAkUGFyYW17TGFiZWx9Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGxpbmsgb2JqZWN0IChjb25maWcgaXRlbSkKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtLT5uZXcoCiAgICAgICAgVXNlckxhbmd1YWdlID0+ICdlbicsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJMYW5ndWFnZSBVc2VySUQpKSB7CiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfSB8fCBkaWUgIkdvdCBubyAkTmVlZGVkISI7CiAgICB9CgogICAgIyBXZSBuZWVkIG91ciBvd24gTGF5b3V0T2JqZWN0IGluc3RhbmNlIHRvIGF2b2lkIGJsb2NrZGF0YSBjb2xsaXNpb25zCiAgICAjICAgd2l0aCB0aGUgbWFpbiBwYWdlLgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dC0+bmV3KCAleyRTZWxmfSApOwoKICAgICMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZXMKICAgICRTZWxmLT57T2JqZWN0RGF0YX0gPSB7CiAgICAgICAgT2JqZWN0ICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFJlYWxuYW1lICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdE5hbWUgPT4gJ1NvdXJjZU9iamVjdElEJywKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVGFibGVDcmVhdGVDb21wbGV4KCkKCnJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBibG9jayBkYXRhCgpSZXR1cm4KCiAgICBAQmxvY2tEYXRhID0gKAogICAgICAgIHsKCiAgICAgICAgICAgIE9iamVjdE5hbWUgID0+ICdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBPYmplY3RJRCAgICA9PiAnMTIzJywKCiAgICAgICAgICAgIE9iamVjdCAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJ0NvbmZpZ0l0ZW0gQ29tcHV0ZXInLAogICAgICAgICAgICBIZWFkbGluZSAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAyMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMzAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQ3VySW5jaVNpZ25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJzEyMycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTIzJywKICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0xMjMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSBOYW1lIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdJbiBSZXBhaXInLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICcyMzQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIzNCcsCiAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9MjM0JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdUaGUgTmFtZSBvZiB0aGUgQ29uZmlnIEl0ZW0gMjM0JywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA3LTExLTExIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCiAgICBAQmxvY2tEYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlQ29tcGxleCgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVDb21wbGV4IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYW5kIHJlbWVtYmVyIHRoZSBEZXBsb3ltZW50IHN0YXRlIGNvbG9ycwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJFByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBhZGQgY29sb3Igc3R5bGUgZGVmaW5pdGlvbgogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBjb3ZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgICRTZWxmLT57RGVwbFN0YXRlQ29sb3JzfS0+eyREZXBsU3RhdGV9ID0gbGMgJENvbG9yOwogICAgfQoKICAgICMgR2V0IHRoZSBjb2x1bW5zIGNvbmZpZy4KICAgIG15ICRDb2x1bW5zQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTo6U2hvd0NvbHVtbnMnKTsKCiAgICAjIEdldCB0aGUgY29sdW1ucyBieSBjbGFzcyBjb25maWcuCiAgICBteSAkQ29sdW1uc0J5Q2xhc3NDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1uc0J5Q2xhc3MnKTsKCiAgICAjIEdldCBjb25maWd1cmVkIGNvbHVtbnMgYW5kIHJlb3JnYW5pemUgdGhlbSBieSBjbGFzcyBuYW1lLgogICAgbXkgJUNvbHVtbkJ5Q2xhc3M7CiAgICBteSAlU2lnbmFsQ29sdW1uTGlzdDsKICAgIGlmICggJENvbHVtbnNCeUNsYXNzQ29uZmlnICYmIHJlZiAkQ29sdW1uc0J5Q2xhc3NDb25maWcgZXEgJ0FSUkFZJyAmJiBAeyRDb2x1bW5zQnlDbGFzc0NvbmZpZ30gKSB7CgogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggQHskQ29sdW1uc0J5Q2xhc3NDb25maWd9ICkgewogICAgICAgICAgICBteSAoICRDbGFzcywgJENvbHVtbiApID0gc3BsaXQgLzo6LywgJE5hbWUsIDI7CgogICAgICAgICAgICBuZXh0IE5BTUUgaWYgISRDb2x1bW47CgogICAgICAgICAgICAjIElmIHNpZ25hbCBjb2x1bW5zIGFyZSBjb25maWd1cmVkIGp1c3QgZm9yIGNlcnRhaW4gY2xhc3NlcywgYWRkIHRoZW0gdG8gdGhlIGJlZ2lubmluZyBvZiBJdGVtQ29sdW1ucyBhcnJheSwKICAgICAgICAgICAgIyBub3QgdG8gdGhlIGFycmF5IHdpdGggb3RoZXIgY29sdW1ucy4KICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPnskQ29sdW1ufSA9IDE7CiAgICAgICAgICAgICAgICBuZXh0IE5BTUU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSB9LCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvbnZlcnQgdGhlIGxpc3QKICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyREaXJlY3Rpb25MaXN0fSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRDbGFzcyA9ICREaXJlY3Rpb25MaXN0LT57JENvbmZpZ0l0ZW1JRH0tPntDbGFzc30gfHwgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRDbGFzczsKCiAgICAgICAgICAgICAgICAkTGlua0xpc3R7JENsYXNzfS0+eyRDb25maWdJdGVtSUR9LT57RGF0YX0gPSAkRGlyZWN0aW9uTGlzdC0+eyRDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBCbG9ja0RhdGE7CiAgICBmb3IgbXkgJENsYXNzICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJUxpbmtMaXN0ICkgewoKICAgICAgICAjIGV4dHJhY3QgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtTGlzdCA9ICRMaW5rTGlzdHskQ2xhc3N9OwoKICAgICAgICAjIHRvIHN0b3JlIHRoZSBjb2x1bW4gaGVhZGxpbmUKICAgICAgICBteSBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgICMgY3JlYXRlIHRoZSBpdGVtIGxpc3QKICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKAogICAgICAgICAgICBzb3J0IHsgJENvbmZpZ0l0ZW1MaXN0LT57JGF9LT57RGF0YX0tPntOYW1lfSBjbXAgJENvbmZpZ0l0ZW1MaXN0LT57JGJ9LT57RGF0YX0tPntOYW1lfSB9CiAgICAgICAgICAgIGtleXMgJXskQ29uZmlnSXRlbUxpc3R9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY29sdW1uIGhlYWRsaW5lIGFycmF5IGlzIGVtcHR5IGZvciBlYWNoIGxvb3AKICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKCk7CgogICAgICAgICAgICBteSBASXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICgkQ29uZmlnSXRlbS0+e0NsYXNzfSk6ICRDb25maWdJdGVtLT57TmFtZX0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGNvbHVtbnMgZnJvbSAnTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zJyBzZXR0aW5nIHRvIHRoZSBjdXJyZW50IENJIGNsYXNzCiAgICAgICAgICAgICMgaWYgaXQgZG9lcyBub3QgY29udGFpbiB0aGVtLiBTaWduYWwgY29sdW1ucyBpcyBzYXZlZCBpbiBoYXNoIGJlY2F1c2UgdGhleSB3aWxsIGJlIGFkZGVkIGxhdGVyLgogICAgICAgICAgICBDT0xVTU5DT05GSUc6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggQHskQ29sdW1uc0NvbmZpZ30gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57JENvbHVtbn0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0sICRDb2x1bW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHNpZ25hbCBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IGlmIG5lZWRlZC4KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VyRGVwbFNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0N1ckRlcGxTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VySW5jaVNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZXNlIGNvbHVtbnMgd2lsbCBiZSBhZGRlZCBpZiBubyBjbGFzcyBiYXNlZCBjb2x1bW4gY29uZmlnIGlzIGRlZmluZWQKICAgICAgICAgICAgbXkgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW0tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBleGlzdHMKICAgICAgICAgICAgIyBUT0RPOiBpbmNvcnBvcmF0ZSBkeW5hbWljIGZpZWxkIGRhdGEKICAgICAgICAgICAgaWYgKDApIHsgfQoKICAgICAgICAgICAgIyAgICAgICAgICAgIGlmICggJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICMgY29udmVydCB0aGUgWE1MIGRhdGEgaW50byBhIGhhc2gKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBteSAkRXh0ZW5kZWRWZXJzaW9uRGF0YSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERlZmluaXRpb259LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIEB7ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30gfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3Mgc29tZSBub24teG1sIGF0dHJpYnV0ZXMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmVyc2lvbi0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSB0aGUgQ0kgbmFtZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgdHJhbnNsYXRpb24gaGFuZGxpbmcKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPnskQ29sdW1ufSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBoZWFkbGluZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGNvbHVtbgogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1Db2x1bW5zLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAkVmVyc2lvbi0+eyRDb2x1bW59LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnSW5jaWRlbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDbGFzcycgKSB7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgY29sdW1uCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRWZXJzaW9uLT57JENvbHVtbn0sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDbGFzcycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWFsIGRhdGUvdGltZSBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDcmVhdGVUaW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFZlcnNpb24tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYXNjaWkgdGV4dCBpbiBjYXNlIHRoZSB2YWx1ZSBjb250YWlucyBodG1sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57VmFsdWV9LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBhbGwgd2hpdGVzcGFjZSBhbmQgbmV3bGluZXMgdG8gc2luZ2xlIHNwYWNlcwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gc3sgXHMrIH17IH1neG1zOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkVmFsdWUsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHRlbmRlZFZlcnNpb25EYXRhLT57JENvbHVtbn0tPntOYW1lfSB8fCAnJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMgICAgICAgICAgICB9CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdCwKICAgICAgICAgICAgIyBzbyB0aGUgZGVmYXVsdCBjb2x1bW5zIHdpbGwgYmUgdXNlZAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgZGVmYXVsdCBjb2x1bW5zCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnM7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIGRlZmF1bHQgY29sdW1uIGhlYWRsaW5lcwogICAgICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEl0ZW1MaXN0OwoKICAgICAgICAjIGRlZmluZSB0aGUgYmxvY2sgZGF0YQogICAgICAgIG15ICVCbG9jayA9ICgKICAgICAgICAgICAgT2JqZWN0ICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICcgKCcgLiAkQ2xhc3MgLiAnKScsCiAgICAgICAgICAgIEhlYWRsaW5lICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gXEBJdGVtTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIEFkZCAnQ3VySW5jaVNpZ25hbCcgYW5kICdDdXJEZXBsU2lnbmFsJyBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgaGVhZGxpbmUgaWYgbmVlZGVkLgogICAgICAgIGlmICggJFNpZ25hbENvbHVtbkxpc3R7JENsYXNzfS0+e0N1ckRlcGxTaWduYWx9ICkgewogICAgICAgICAgICB1bnNoaWZ0IEB7ICRCbG9ja3tIZWFkbGluZX0gfSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDIwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBpZiAoICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPntDdXJJbmNpU2lnbmFsfSApIHsKICAgICAgICAgICAgdW5zaGlmdCBAeyAkQmxvY2t7SGVhZGxpbmV9IH0sIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMjAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgY29sdW1uIGhlYWRsaW5lcwogICAgICAgIHB1c2ggQHsgJEJsb2Nre0hlYWRsaW5lfSB9LCBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgIHB1c2ggQEJsb2NrRGF0YSwgXCVCbG9jazsKICAgIH0KCiAgICByZXR1cm4gQEJsb2NrRGF0YTsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlU2ltcGxlKCkKCnJldHVybiBhIGhhc2ggd2l0aCB0aGUgbGluayBvdXRwdXQgZGF0YQoKUmV0dXJuCgogICAgJUxpbmtPdXRwdXREYXRhID0gKAogICAgICAgIE5vcm1hbDo6U291cmNlID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOjU1NTU1JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdDb25maWdJdGVtIyA1NTU1NTU6IFRoZSBjb25maWcgaXRlbSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDc3MgICAgID0+ICdzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2giJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ0k6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0NvbmZpZ0l0ZW0jIDIyMjIyOiBUaXRsZSBvZiBjb25maWcgbmFtZSAyMjIyMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUGFyZW50Q2hpbGQ6OlRhcmdldCA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDSTo3Nzc3NycsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnQ29uZmlnSXRlbSMgNzc3Nzc6IENvbmZpZ0l0ZW0gbmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZVNpbXBsZSgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVTaW1wbGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfSApIHsKCiAgICAgICAgIyBleHRyYWN0IGxpbmsgdHlwZSBMaXN0CiAgICAgICAgbXkgJExpbmtUeXBlTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX07CgogICAgICAgIGZvciBteSAkRGlyZWN0aW9uICggc29ydCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWZXJzaW9uID0gJERpcmVjdGlvbkxpc3QtPnskQ29uZmlnSXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICVJdGVtID0gKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOicgLiAkVmVyc2lvbi0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAiQ29uZmlnSXRlbSMgJFZlcnNpb24tPntOdW1iZXJ9ICgkVmVyc2lvbi0+e0NsYXNzfSk6ICRWZXJzaW9uLT57TmFtZX0iLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcJUl0ZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGl0ZW0gbGlzdCB0byBsaW5rIG91dHB1dCBkYXRhCiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YXsgJExpbmtUeXBlIC4gJzo6JyAuICREaXJlY3Rpb24gfS0+e0lUU01Db25maWdJdGVtfSA9IFxASXRlbUxpc3Q7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlTGlua091dHB1dERhdGE7Cn0KCj1oZWFkMiBDb250ZW50U3RyaW5nQ3JlYXRlKCkKCnJldHVybiBhIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+Q29udGVudFN0cmluZ0NyZWF0ZSgKICAgICAgICBDb250ZW50RGF0YSA9PiAkSGFzaFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ29udGVudFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29udGVudERhdGF9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb250ZW50RGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZXh0cmFjdCBjb250ZW50CiAgICBteSAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50RGF0YX07CgogICAgaWYgKCAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJJbmNpU2lnbmFsJyAmJiAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN0cmluZzsKICAgIGlmICggJENvbnRlbnQtPntUeXBlfSBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CgogICAgICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICAgICAgaW5jaWRlbnQgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgIG9wZXJhdGlvbmFsID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgIHVua25vd24gICAgID0+ICdncmF5bGVkJywKICAgICAgICAgICAgd2FybmluZyAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBjdXJyZW50IGluY2lkZW50IHNpZ25hbAogICAgICAgICRDb250ZW50LT57Q3VySW5jaVN0YXRlVHlwZX0gfHw9ICd1bmtub3duJzsKICAgICAgICBteSAkQ3VySW5jaVNpZ25hbCA9ICRJbmNpU2lnbmFsc3sgJENvbnRlbnQtPntDdXJJbmNpU3RhdGVUeXBlfSB9OwogICAgICAgICRDdXJJbmNpU2lnbmFsIHx8PSAkSW5jaVNpZ25hbHN7dW5rbm93bn07CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+ICcKICAgICAgICAgICAgICAgIC4gJzxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+IDwvZGl2PicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkQ3VySW5jaVNpZ25hbCwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkQ29udGVudC0+e1R5cGV9IGVxICdDdXJEZXBsU2lnbmFsJyApIHsKCiAgICAgICAgIyBjb252ZXJ0IGRlcGxveW1lbnQgc3RhdGUgdG8gYSB3ZWIgc2FmZSBDU1MgY2xhc3MKICAgICAgICBteSAkRGVwbFN0YXRlID0gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJzsKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBnZXQgdGhlIGNvbG9yIG9mIHRoZSBkZXBseW1lbnQgc3RhdGUgaWYgZGVmaW5lZAogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICggJFNlbGYtPntEZXBsU3RhdGVDb2xvcnN9LT57JERlcGxTdGF0ZX0gfHwgJycgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgbXkgJFRlbXBsYXRlID0gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+ICc7CgogICAgICAgICMgY2hlY2sgaWYgY29sb3IgaXMgZGVmaW5lZCBhbmQgc2V0IHRoZSBzdHlsZSBjbGFzcwogICAgICAgIGlmICgkRGVwbFN0YXRlQ29sb3IpIHsKICAgICAgICAgICAgJFRlbXBsYXRlIC49IDw8IkVORCI7CjxzdHlsZT4KICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgIH0KPC9zdHlsZT4KRU5ECiAgICAgICAgfQoKICAgICAgICAkVGVtcGxhdGUgLj0gIjxzcGFuIGNsYXNzPVwiRGVwbFN0YXRlICREZXBsU3RhdGVcIj48L3NwYW4+IDwvZGl2PiI7CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJFRlbXBsYXRlLAogICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VsZWN0YWJsZU9iamVjdExpc3QoKQoKcmV0dXJuIGFuIGFycmF5IGhhc2ggd2l0aCBDPHNlbGVjdGFibGU+IG9iamVjdHMKClJldHVybgoKICAgIEBTZWxlY3RhYmxlT2JqZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OjI1JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NvbmZpZ0l0ZW06OkNvbXB1dGVyJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjoyNicsCiAgICAgICAgICAgIFZhbHVlID0+ICdDb25maWdJdGVtOjpTb2Z0d2FyZScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6MjcnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ29uZmlnSXRlbTo6TmV0d29yaycsCiAgICAgICAgfSwKICAgICk7CgogICAgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlbGVjdGFibGVPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgaGVhZGxpbmUKICAgIG15IEBPYmplY3RTZWxlY3RMaXN0OwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ2xhc3NMaXN0OwogICAgcmV0dXJuIGlmIHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJzsKCiAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgbXkgJERlZmF1bHRTdWJvYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QnKSB8fCB7fTsKCiAgICBteSAkSGFzU2VsZWN0ZWRJdGVtOwoKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgbGMgJENsYXNzTGlzdC0+eyRhfSBjbXAgbGMgJENsYXNzTGlzdC0+eyRifSB9IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKCiAgICAgICAgIyBzaG93IGNsYXNzIG9ubHkgaWYgdXNlciBoYXMgYWNjZXNzIHJpZ2h0cwogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhJEhhc0FjY2VzczsKCiAgICAgICAgbXkgJENsYXNzICAgICAgPSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IHx8ICcnOwogICAgICAgIG15ICRJZGVudGlmaWVyID0gJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gLiAnOjonIC4gJENsYXNzSUQ7CgogICAgICAgICMgc2V0IHNlbGVjdGVkIGZsYWcKICAgICAgICBteSAkU2VsZWN0ZWQ7CiAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9ICkgewoKICAgICAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9IGVxICRJZGVudGlmaWVyICkgewogICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17U2VsZWN0ZWR9IGVxICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9CiAgICAgICAgICAgICAgICAmJiAkRGVmYXVsdFN1Ym9iamVjdC0+eyAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgZGVmYXVsdCBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPnsgJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gfSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGNsYXNzCiAgICAgICAgICAgICAgICBpZiAoICREZWZhdWx0Q2xhc3MgZXEgJENsYXNzICkgewogICAgICAgICAgICAgICAgICAgICRTZWxlY3RlZCA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkU2VsZWN0ZWQpIHsKICAgICAgICAgICAgJEhhc1NlbGVjdGVkSXRlbSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSByb3cKICAgICAgICBteSAlUm93ID0gKAogICAgICAgICAgICBLZXkgICAgICA9PiAkSWRlbnRpZmllciwKICAgICAgICAgICAgVmFsdWUgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICc6OicgLiAkQ2xhc3MsCiAgICAgICAgICAgIFNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBPYmplY3RTZWxlY3RMaXN0LCBcJVJvdzsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgISRIYXNTZWxlY3RlZEl0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiTm8gdmFsaWQgc2VsZWN0aW9uIGZvciBsaW5rIG9iamVjdDogJyRQYXJhbXtTZWxlY3RlZH0nISBUaGUgY29uZmlndXJlZCBkZWZhdWx0IGNsYXNzIChMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0IyMjSVRTTUNvbmZpZ0l0ZW0pIG1heSBub3QgZXhpc3QuIiwKICAgICAgICApOwogICAgfQoKICAgICMgb25seSBhZGQgaGVhZGxpbmUgaWYgdGhlcmUgYXJlIGNvbmZpZ2l0ZW0gY2xhc3NlcwogICAgIyB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoZW0KICAgIGlmIChAT2JqZWN0U2VsZWN0TGlzdCkgewoKICAgICAgICAjIGFkZCBoZWFkbGluZSBhcyBmaXJzdCBhcnJheSBlbGVtZW50CiAgICAgICAgdW5zaGlmdCBAT2JqZWN0U2VsZWN0TGlzdCwgewogICAgICAgICAgICBLZXkgICAgICA9PiAnLScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0sCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdFNlbGVjdExpc3Q7Cn0KCj1oZWFkMiBTZWFyY2hPcHRpb25MaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VhcmNoIG9wdGlvbnMKClJldHVybgoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0NvbmZpZ0l0ZW0jJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJzEyMzQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnQmxhQmxhJywKICAgICAgICB9LAogICAgKTsKCiAgICBAU2VhcmNoT3B0aW9uTGlzdCA9ICRMaW5rT2JqZWN0LT5TZWFyY2hPcHRpb25MaXN0KAogICAgICAgIFN1Yk9iamVjdCA9PiAnMjUnLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9wdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNlYXJjaCBvcHRpb24gbGlzdAogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lID0+ICdDb25maWdJdGVtIycsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOYW1lJywKICAgICAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICBOYW1lID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgb2JqZWN0IGRlcGVuZGVuY2UgYXR0cmlidXRlcwogICAgI2lmICggJFBhcmFte1N1Yk9iamVjdH0gKSB7CiAgICAjCiAgICAjICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICMgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICMgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggJENsYXNzTGlzdCAmJiAkQ2xhc3NMaXN0IGVxICdIQVNIJyApIHsKICAgICMKICAgICMgICAgICAgICMgYWRkIGhlcmUgdGhlIHNlYXJjaCBhdHRyaWJ1dGVzIG9mIHRoZSBzdWJvYmplY3QhCiAgICAjICAgIH0KICAgICN9CgogICAgIyBhZGQgZm9ybWtleQogICAgZm9yIG15ICRSb3cgKEBTZWFyY2hPcHRpb25MaXN0KSB7CiAgICAgICAgJFJvdy0+e0Zvcm1LZXl9ID0gJ1NFQVJDSDo6JyAuICRSb3ctPntLZXl9OwogICAgfQoKICAgICMgYWRkIGZvcm0gZGF0YSBhbmQgaW5wdXQgc3RyaW5nCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKCiAgICAgICAgIyBwcmVwYXJlIHRleHQgaW5wdXQgZmllbGRzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ1RleHQnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgICRSb3ctPntGb3JtRGF0YX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKCiAgICAgICAgICAgICMgcGFyc2UgdGhlIGlucHV0IHRleHQgYmxvY2sKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0lucHV0VGV4dCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFJvdy0+e0Zvcm1EYXRhfSB8fCAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgaW5wdXQgc3RyaW5nCiAgICAgICAgICAgICRSb3ctPntJbnB1dFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0xpbmtPYmplY3QnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgbGlzdCBib3hlcwogICAgICAgIGlmICggJFJvdy0+e1R5cGV9IGVxICdMaXN0JyApIHsKCiAgICAgICAgICAgICMgZ2V0IGZvcm0gZGF0YQogICAgICAgICAgICBteSBARm9ybURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9IFxARm9ybURhdGE7CgogICAgICAgICAgICAjIHByZXBhcmUgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICVMaXN0RGF0YTsKICAgICAgICAgICAgaWYgKCAkUm93LT57S2V5fSBlcSAnRGVwbFN0YXRlSURzJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICREZXBsU3RhdGVMaXN0ICYmIHJlZiAkRGVwbFN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskRGVwbFN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcHJlcGFyZSBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIGVsc2lmICggJFJvdy0+e0tleX0gZXEgJ0luY2lTdGF0ZUlEcycgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgICAgICAgICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRJbmNpU3RhdGVMaXN0ICYmIHJlZiAkSW5jaVN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskSW5jaVN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAgICAgJFJvdy0+e0lucHV0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJUxpc3REYXRhLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRSb3ctPntGb3JtRGF0YX0sCiAgICAgICAgICAgICAgICBTaXplICAgICAgID0+IDMsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBAU2VhcmNoT3B0aW9uTGlzdDsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceInvokerConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEludm9rZXIiKSx9KSAlXQogICAgICAgIFslIENBU0UgJ0NoYW5nZScgJV0KICAgICAgICAgICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgSW52b2tlciIpKSAlXQogICAgICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBFZGl0VGl0bGUuYXBwZW5kKCAnOiAnLCBEYXRhLkludm9rZXIgKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+IDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+IFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRGlhbG9nQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iV2FybmluZ0RpYWxvZyAiPiZuYnNwOzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iRGVsZXRlRGlhbG9nIiBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBpbnZva2VyPyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFsbCBjb25maWd1cmF0aW9uIGRhdGEgd2lsbCBiZSBsb3N0LiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkludm9rZXIgRGV0YWlscyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgY2xhc3M9IlZhbGlkYXRlIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLk1vZGUgfCBodG1sICVdQWN0aW9uIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IldlYnNlcnZpY2VJRCIgdmFsdWU9IlslIERhdGEuV2Vic2VydmljZUlEIHwgaHRtbCAlXSIgaWQ9IldlYnNlcnZpY2VJRCIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJbnZva2VyVHlwZSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBpbnZva2VyIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbnZva2VyIiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMgUmVnaXN0ZXJDaGFuZ2UgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnZva2VyU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ikludm9rZXIiIG5hbWU9Ikludm9rZXIiIHZhbHVlPSJbJSBEYXRhLk5ld0ludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZEludm9rZXIiIG5hbWU9Ik9sZEludm9rZXIiIHZhbHVlPSJbJSBEYXRhLkludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCBhbiBvcGVyYXRpb24gb2YgYSByZW1vdGUgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbnZva2VyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiUGxlYXNlIHByb3ZpZGUgYSB1bmlxdWUgbmFtZSBmb3IgdGhpcyB3ZWIgc2VydmljZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSW52b2tlclNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikludm9rZXJUeXBlRGlzcGxheSI+WyUgVHJhbnNsYXRlKCJJbnZva2VyIGJhY2tlbmQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgaWQ9Ikludm9rZXJUeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBPVE9CTyBpbnZva2VyIGJhY2tlbmQgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRvIHByZXBhcmUgdGhlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgcmVtb3RlIHN5c3RlbSwgYW5kIHRvIHByb2Nlc3MgaXRzIHJlc3BvbnNlIGRhdGEuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nR2VuZXJhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdHZW5lcmFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlcXVlc3QiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVxdWVzdCBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1JlcXVlc3QiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVxdWVzdCIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdPdXRib3VuZENvbmZpZ3VyZUJ1dHRvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIGRhdGEgZnJvbSB0aGUgaW52b2tlciBvZiBPVE9CTyB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIHRoZSByZW1vdGUgc3lzdGVtIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ0luYm91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ0luYm91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ3VyZUJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIGludm9rZXIgb2YgT1RPQk8gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlc3BvbnNlIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ1Jlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1Jlc29uc2UiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzcG9uc2UiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkV2ZW50IGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXZlbnRzVGFibGUiPlslIFRyYW5zbGF0ZSgiRXZlbnQgVHJpZ2dlcnMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFc1MHBjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBXNTBwYyIgaWQ9IkV2ZW50c1RhYmxlIiBzdW1tYXJ5PSJMaXN0IG9mIGFsbCBjb25maWd1cmVkIGV2ZW50cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJFdmVudCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDZW50ZXIiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJDb25kaXRpb24iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkV2ZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkFzQmxvY2siPlslIERhdGEuRXZlbnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKERhdGEuQXN5bmNocm9ub3VzKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoRGF0YS5Db25kaXRpb24pIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iUGVuY2lsIEVkaXRFdmVudCBIaWRlT25DaGFuZ2UiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRXZlbnQ7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdO0ludm9rZXI9WyUgRGF0YS5JbnZva2VyIHwgaHRtbCAlXTtFdmVudD1bJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iRGVsZXRlRXZlbnRbJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgY2xhc3M9IlRyYXNoQ2FuIERlbGV0ZUV2ZW50IEhpZGVPbkNoYW5nZSIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIHRoaXMgZXZlbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRXZlbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgaW52b2tlciB3aWxsIGJlIHRyaWdnZXJlZCBieSB0aGUgY29uZmlndXJlZCBldmVudHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRXZlbnREaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQgPSJEZWxldGVFdmVudERpYWxvZyIgY2xhc3M9IklubmVyQ29udGVudCBHZW5lcmljSW50ZXJmYWNlRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ildhcm5pbmdEaWFsb2cgIj4mbmJzcDs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+WyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZXZlbnQgdHJpZ2dlcj8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJFdmVudFR5cGUiPlslIFRyYW5zbGF0ZSgiQWRkIEV2ZW50IFRyaWdnZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkV2ZW50VHlwZVN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXZlbnRTdHJnICVdClslIFJlbmRlckJsb2NrRW5kKCJFdmVudEFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iQXN5bmNocm9ub3VzIiBjaGVja2VkIGNsYXNzPSJHZW5lcmljSW50ZXJmYWNlU3BhY2luZyIgbmFtZT0iQXN5bmNocm9ub3VzIj48bGFiZWwgZm9yPSJBc3luY2hyb25vdXMiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9IkFkZEV2ZW50IiBjbGFzcz0iQWRkIEdlbmVyaWNJbnRlcmZhY2VTcGFjaW5nIEhpZGVPbkNoYW5nZSIgbmFtZT0iQWRkRXZlbnQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkFkZCBFdmVudCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJBZGQgRXZlbnQiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVG8gYWRkIGEgbmV3IGV2ZW50IHNlbGVjdCB0aGUgZXZlbnQgb2JqZWN0IGFuZCBldmVudCBuYW1lIGFuZCBjbGljayBvbiB0aGUgXCIrXCIgYnV0dG9uIikgfCBodG1sICVdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIGV2ZW50IHRyaWdnZXJzIGFyZSBoYW5kbGVkIGJ5IHRoZSBPVE9CTyBTY2hlZHVsZXIgRGFlbW9uIGluIGJhY2tncm91bmQgKHJlY29tbWVuZGVkKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTeW5jaHJvbm91cyBldmVudCB0cmlnZ2VycyB3b3VsZCBiZSBwcm9jZXNzZWQgZGlyZWN0bHkgZHVyaW5nIHRoZSB3ZWIgcmVxdWVzdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSBhbmQgZmluaXNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceOperationConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIE9wZXJhdGlvbiIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBPcGVyYXRpb24iKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5PcGVyYXRpb24gKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iIGlkPSJEZWxldGVEaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJXYXJuaW5nRGlhbG9nICI+Jm5ic3A7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJEZWxldGVEaWFsb2ciIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIG9wZXJhdGlvbj8iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkNlbnRlciBXYXJuaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbGwgY29uZmlndXJhdGlvbiBkYXRhIHdpbGwgYmUgbG9zdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBjbGFzcz0iVmFsaWRhdGUiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlslIERhdGEuTW9kZSB8IGh0bWwgJV1BY3Rpb24iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iV2Vic2VydmljZUlEIiB2YWx1ZT0iWyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdIiBpZD0iV2Vic2VydmljZUlEIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik9wZXJhdGlvblR5cGUiIHZhbHVlPSJbJSBEYXRhLk9wZXJhdGlvblR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBvcGVyYXRpb24gZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvbiIgY2xhc3M9Ik1hbmRhdG9yeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFJlZ2lzdGVyQ2hhbmdlIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuT3BlcmF0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ik9wZXJhdGlvbiIgbmFtZT0iT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5OZXdPcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZE9wZXJhdGlvbiIgbmFtZT0iT2xkT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5PcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCB0aGlzIHdlYiBzZXJ2aWNlIG9wZXJhdGlvbiBmcm9tIGEgcmVtb3RlIHN5c3RlbS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvbkVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIlBsZWFzZSBwcm92aWRlIGEgdW5pcXVlIG5hbWUgZm9yIHRoaXMgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvblNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvblR5cGVEaXNwbGF5Ij5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBiYWNrZW5kIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiByZWFkb25seSBjbGFzcz0iVzUwcGMiIGlkPSJPcGVyYXRpb25UeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuT3BlcmF0aW9uVHlwZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIE9UT0JPIG9wZXJhdGlvbiBiYWNrZW5kIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbnRlcm5hbGx5IHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QsIGdlbmVyYXRpbmcgZGF0YSBmb3IgdGhlIHJlc3BvbnNlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ0dlbmVyYWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0xhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXR0aW5nSFRNTCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdFeHBsYW5hdGlvbikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2VydmVyRXJyb3IpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXR0aW5nR2VuZXJhbCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nUmVxdWVzdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXF1ZXN0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlcXVlc3QiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiTWFwcGluZyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nSW5ib3VuZFN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IkhpZGVPbkNoYW5nZSBDYWxsRm9yQWN0aW9uIElubGluZSIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIHJlcXVlc3QgZGF0YSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIE9UT0JPIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXNvbnNlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlc3BvbnNlIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ091dGJvdW5kU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdPdXRib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iSGlkZU9uQ2hhbmdlIENhbGxGb3JBY3Rpb24gSW5saW5lIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIHJlbW90ZSBzeXN0ZW0gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QW5kQ29udGludWUiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCB1cmkgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdDb25maWcgSXRlbSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElGIChEYXRhLkNsYXNzU2VsZWN0ZWQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5DbGFzc1NlbGVjdGVkLk5hbWUsCiAgICAgICAgICAgIExpbmsgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPUNsYXNzRGVmaW5pdGlvbkxpc3Q7Q2xhc3NJRD0nIF8gRGF0YS5DbGFzc1NlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLlJvbGVTZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiBEYXRhLlJvbGVTZWxlY3RlZC5OYW1lLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPScgXyBEYXRhLlJvbGVTZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiAnVmVyc2lvbiAnIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5WZXJzaW9uLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkKSAlXQogICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goewogICAgICAgICAgICBOYW1lID0+ICdWZXJzaW9uICcgXyBEYXRhLlJvbGVWZXJzaW9uU2VsZWN0ZWQuVmVyc2lvbiwKICAgICAgICAgICAgTGluayA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbTtTdWJhY3Rpb249Um9sZURlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLkVkaXQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gJ0VkaXQgZGVmaW5pdGlvbicsCiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NvbnRlbnQnPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJnZXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIi8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSBjbGFzcyBkZWZpbml0aW9uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9ImdldCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJSb2xlRGVmaW5pdGlvbkNoYW5nZSIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5Sb2xlT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSByb2xlIGRlZmluaXRpb24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzRXhwb3J0Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uTXVsdFN0cmcgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkV4cG9ydElERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhwb3J0SURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiBpZD0iRXhwb3J0IiB2YWx1ZT0iRXhwb3J0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0IENsYXNzZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgoKClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0IFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzSW1wb3J0Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXhhbXBsZUNsYXNzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiBuYW1lPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiB2YWx1ZT0iMSIgY2hlY2tlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIj5bJSBUcmFuc2xhdGUoIlVwZGF0ZSBleGlzdGluZyBlbnRpdGllcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nIycgaWQ9J0ltcG9ydCcgY2xhc3M9J0NhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdMaXN0IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25MaXN0O0NsYXNzSUQ9WyUgRGF0YS5DbGFzc0lEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPVslIERhdGEuUm9sZUlEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGlzdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249Q2xhc3NEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuQ2xhc3MgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLlZlcnNpb24gfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uTGlzdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVJvbGVEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuUm9sZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlQnlVc2VyIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25WaWV3IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlZpZXciKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3NEZWZpbml0aW9uVmlldyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uVmlldyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWaWV3IikgfCBodG1sICVdOiA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIFJvbGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25WaWV3IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNoYW5nZSIpIHwgaHRtbCAlXTogPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJDbGFzc0RlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2xhc3NJRCIgdmFsdWU9IlslIERhdGEuQ2xhc3NJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKWyUgSUYgRGF0YS5FcnJvciAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgV2lkZ2V0TWVzc2FnZSBUb3AgRXJyb3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+WyUgVHJhbnNsYXRlKERhdGEuRXJyb3IsIERhdGEuRXJyb3JBcmcxLCBEYXRhLkVycm9yQXJnMikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIEVORCAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2xhc3MgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc0RlZmluaXRpb25DaGFuZ2UiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UiKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iUm9sZURlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUm9sZUlEIiB2YWx1ZT0iWyUgRGF0YS5Sb2xlSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29udGludWVBZnRlclNhdmUiIGlkPSJDb250aW51ZUFmdGVyU2F2ZSIgdmFsdWU9IiIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KClslIElGIERhdGEuRXJyb3IgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFdpZGdldE1lc3NhZ2UgVG9wIEVycm9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPlslIFRyYW5zbGF0ZShEYXRhLkVycm9yLCBEYXRhLkVycm9yQXJnMSwgRGF0YS5FcnJvckFyZzIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBFTkQgJV0KCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBSb2xlIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJvbGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentDashboardITSMConfigItemGeneric.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdCjxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgIFslIERhdGEuU2l0ZU5hdkJhciAlXQo8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgojPCEtLSBUaGlzIGZvcm0gd2lsbCBub3QgYmUgc3VibWl0dGVkLCB3ZSBuZWVkIGl0IGZvciB0aGUgQUpBWCBjYWxscy4gLS0+Cjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1c3RvbWVySUQiIHZhbHVlPSJbJSBEYXRhLkN1c3RvbWVySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJJRCIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRmlsdGVyVmFsdWUgfCBodG1sICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWRkaXRpb25hbEZpbHRlclslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJBZGRpdGlvbmFsRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQWRkaXRpb25hbEZpbHRlclZhbHVlIHwgaHRtbCAlXSIgLz4KICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICA8dGhlYWQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRyPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRhc2hib2FyZEhlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdRmxhZ092ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+PC9hPgoKWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlck1ldGFFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlckNvbHVtbk5hbWUpIHwgaHRtbCAlXSI+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJNZXRhRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgQ29uZmlnSXRlbU51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJDb25maWdJdGVtTnVtYmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQ29uZmlnSXRlbU51bWJlck92ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IkNvbmZpZ0l0ZW1OdW1iZXJPdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBDb25maWcoIkNvbmZpZ0l0ZW06Okhvb2siKSAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJJREF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkRlbGV0ZUZpbHRlciBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rQ3VzdG9tZXJVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua0N1c3RvbWVyVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iRGVsZXRlRmlsdGVyIEhpZGRlbiI+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb25maWdJdGVtSGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKICAgICAgICAgICAgPC90cj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlciIpICVdCiAgICAgICAgPC90aGVhZD4KCiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdCiAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzVGFibGUgfCBodG1sICVdIEZsYWdzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YUltYWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DbGFzc1NwYW4gfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNSb3dNZXRhIikgJV0KCiMgICAgICAgICAgICA8dGQgY2xhc3M9IlcxMHBjIj4KIyAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV08L2E+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkIGNsYXNzPSJXNTBwYyI+CiMgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg3MCkgfCBodG1sICVdPC9kaXY+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkPlslIERhdGEuVGltZSB8IGh0bWwgJV08L3RkPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1OdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuU3RhdGUgfCBodG1sICVdIiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5TaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuV2hvbGVUaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbVRpdGxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5HZW5lcmljVmFsdWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UaW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5HZW5lcmljVmFsdWUgfCBodG1sICVdIiBjbGFzcz0iWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1Db2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iICB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQXV0b0NvbHNwYW4iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgibm9uZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwvZm9ybT4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemAdd.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyQ2xhc3NlcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIENsYXNzZXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyQ2xhc3NlcyIgY2xhc3M9IkZpbHRlckJveCIgbmFtZT0iRmlsdGVyQ2xhc3NlcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBDbGFzc2VzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJKdXN0IHN0YXJ0IHR5cGluZyB0byBmaWx0ZXIuLi4iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiSGludCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBpZD0iQ2xhc3NlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlcxMDBwYyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0l0ZW1MaXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPVslIERhdGEuQ2xhc3NJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3SXRlbUxpc3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemBulk.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrQWN0aW9uIikgJV0KPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9ImNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJEbyIvPgoKICAgIDxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlVzZWRDb25maWdJdGVtSUQiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiVXNlZENvbmZpZ0l0ZW1JRCIpICVdCgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEIj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jaVN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuSW5jaVN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkxpbmtUb2dldGhlciI+WyUgVHJhbnNsYXRlKCJMaW5rIHRvZ2V0aGVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUb2dldGhlclllc05vT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RvZ2V0aGVyTGlua1R5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMaW5rVG9nZXRoZXJBbm90aGVyIj5bJSBUcmFuc2xhdGUoIkxpbmsgdG8gYW5vdGhlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXJJbnZhbGlkIHwgaHRtbCAlXSBXMjVwYyIgaWQ9IkxpbmtUb2dldGhlckFub3RoZXIiIG5hbWU9IkxpbmtUb2dldGhlckFub3RoZXIiIHZhbHVlPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxpbmtUb2dldGhlckFub3RoZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgRGF0YS5EeW5hbWljRmllbGRIVE1MICVdCiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJzdWJtaXRSaWNoVGV4dCIgYWNjZXNza2V5PSJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0gKGcpIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsa0FjdGlvbiIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemDelete.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk51bWJlcikgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgoKPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyIpIHwgaHRtbCAlXQo8L3A+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydE5vcm1hbCIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5OdW1iZXIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L2gxPgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFydE5vcm1hbCIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkNsYXNzSXRlbSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiIGlkPSJDbGFzc0l0ZW0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydFNtYWxsIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuTnVtYmVyKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5DbGFzcykgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTY3JlZW5UeXBlIiB2YWx1ZT0iUG9wdXAiLz4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXJ0U21hbGwiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkR1cGxpY2F0ZUlEIiB2YWx1ZT0iWyUgRGF0YS5EdXBsaWNhdGVJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93TmFtZUludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iWyUgSUYgRGF0YS5SZWFkb25seSAlXSByZWFkb25seVslIEVORCAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyIsIERhdGEuRHVwbGljYXRlcykgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRHVwbGljYXRlcyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvclJlZ0V4IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLlJlZ0V4RXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lRXJyb3JSZWdFeCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlZlcnNpb25TdHJpbmciPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVmVyc2lvbiBOdW1iZXIiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWZXJzaW9uU3RyaW5nIiBpZD0iVmVyc2lvblN0cmluZyIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93VmVyc2lvblN0cmluZ0ludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuVmVyc2lvblN0cmluZyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblN0cmluZ1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMiLCBEYXRhLkR1cGxpY2F0ZXMpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0RlcGxTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlcGxTdGF0ZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgU3RhdGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3dJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJJbmNpU3RhdGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbmNpU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd0luY2lTdGF0ZSIpICVdCgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0Rlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlc2NyaXB0aW9uIj5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSaWNoVGV4dEZpZWxkIiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFslIERhdGEuUmljaFRleHRJbnZhbGlkIHwgaHRtbCAlXSIgbmFtZT0iRGVzY3JpcHRpb24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXNjcmlwdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJTkNMVURFICJGb3JtRWxlbWVudHMvQXR0YWNobWVudExpc3QudHQiICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QnV0dG9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkNhbmNlbEJ1dHRvbiIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmRTbWFsbCIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kU21hbGwiKSAlXQogICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRW5kTm9ybWFsIikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkVuZE5vcm1hbCIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemHistory.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIHN0YXJ0IGZvcm0gLS0+CjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJIaXN0b3J5IENvbnRlbnQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJDb25maWd1cmF0aW9uIEl0ZW0gSGlzdG9yeSIgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiWm9vbSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVzZXIiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5IaXN0b3J5VHlwZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iTGlua1pvb21WaWV3IEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEICVdIj5bJSBUcmFuc2xhdGUoIlpvb20gdmlldyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZW5kIGZvcm0gLS0+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewNavBar.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhciIpICVdCjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiBbJSBEYXRhLlZpZXcgfCBodG1sICVdIj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuVGl0bGVWYWx1ZSkgfCBodG1sICVdPC9oMT4KCiAgICBbJSBEYXRhLkRhdGFJblRoZU1pZGRsZSAlXQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUNhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV1DYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ29udGV4dEZ1bmN0aW9ucyI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIGFjdGl2ZSBmaWx0ZXJzIGZvciB0aGlzIHNjcmVlbi4iKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZXR0aW5ncyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29nIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ092ZXJ2aWV3WyUgRGF0YS5WaWV3IHwgaHRtbCAlXSIgY2xhc3M9IldpZGdldFNldHRpbmdzRm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iWyUgRGF0YS5Hcm91cCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVkaXJlY3RVUkwiIHZhbHVlPSJbJSBEYXRhLlJlcXVlc3RlZFVSTCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZpbHRlckNvbHVtblNldHRpbmdzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zRW5hYmxlZEpTT04iIHZhbHVlPSJbJSBEYXRhLkNvbHVtbnNFbmFibGVkIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zQXZhaWxhYmxlSlNPTiIgdmFsdWU9IlslIERhdGEuQ29sdW1uc0F2YWlsYWJsZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXBOYW1lIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRmlsdGVyQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5GaWx0ZXJBY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkRvbnRQcmludCIgZm9yPSJbJSBEYXRhLk5hbWVQcmVmIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuRGVzYykgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBEb250UHJpbnQgTGF5b3V0R3JpZCBBbGxvY2F0aW9uTGlzdENvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJBdmFpbGFibGUgQ29sdW1ucyIpIHwgaHRtbCAlXTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpbHRlcklucHV0Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iRmlsdGVyQXZhaWxhYmxlRmllbGRzIiBuYW1lPSJGaWx0ZXJBdmFpbGFibGVGaWVsZHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBhdmFpbGFibGUgZmllbGRzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJGaWx0ZXIgYXZhaWxhYmxlIGZpZWxkcyIpIHwgaHRtbCAlXS4uLiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIEF2YWlsYWJsZUZpZWxkcyBTZXR0aW5nc092ZXJ2aWV3IiBpZD0iQXZhaWxhYmxlRmllbGQtRGFzaGJvYXJkWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+PC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj5bJSBUcmFuc2xhdGUoIlZpc2libGUgQ29sdW1ucyAob3JkZXIgYnkgZHJhZyAmIGRyb3ApIikgfCBodG1sICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBbGxvY2F0aW9uTGlzdCBUYWJsZWxpa2UgQXNzaWduZWRGaWVsZHMgT3JkZXJOdW1iZXJzIFNldHRpbmdzT3ZlcnZpZXciIGlkPSJBc3NpZ25lZEZpZWxkcy1EYXNoYm9hcmRbJSBEYXRhLk5hbWUgfCBodG1sICVdIj48L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja0VuZCgiRmlsdGVyQ29sdW1uU2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0FjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQWN0aW9uUm93ICVdCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJPdmVydmlld1pvb20iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnk9WyUgRGF0YS5DYXRlZ29yeUZpbHRlciB8IHVyaSAlXTtWaWV3PVslIERhdGEuVmlldyB8IHVyaSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyIikgJV0K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93IikgJV0KPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRBY3Rpb25Sb3dCdWxrIikgJV0KICAgIDxsaSBpZD0iQ29uZmlnSXRlbUJ1bGtBY3Rpb24iIGNsYXNzPSJBbHdheXNQcmVzZW50IEJ1bGsgSW5hY3RpdmUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2E+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50QWN0aW9uUm93QnVsayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd0xhc3RDb2x1bW5GaWx0ZXIiKSAlXQogICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+WyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXTwvYT48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3dMYXN0Q29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93SXRlbSIpICVdCiAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPjwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd0l0ZW0iKSAlXQo8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KPGRpdiBpZD0iT3ZlcnZpZXdDb250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJzIikgJV0KICAgIDxkaXYgaWQ9Ik92ZXJ2aWV3Q29udHJvbCIgY2xhc3M9IlNpZGVCYXJGaWx0ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVyIikgJV0KICAgICAgICA8dWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNpZGVCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdIChbJSBEYXRhLkNvdW50IHwgaHRtbCAlXSk8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKTwvYT4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgLQpbJSBSZW5kZXJCbG9ja0VuZCgiU2lkZUJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbSIpICVdCiAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJzIikgJV0KCiAgICA8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBDb25maWdJdGVtTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KICAgICAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9Im1hdHJpeCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IiIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Q29sdW1uRmlsdGVyIiBpZD0iTGFzdENvbHVtbkZpbHRlciIgdmFsdWU9IlslIERhdGEuTGFzdENvbHVtbkZpbHRlciB8IGh0bWwgJV0iLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdUYWJsZSIpICVdCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIj4KICAgICAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dHI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQnVsa05hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iQ2hlY2tib3giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBhbGwiKSB8IGh0bWwgJV0iIGlkPSJTZWxlY3RBbGxDb25maWdJdGVtcyIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJCdWxrTmF2QmFyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgfCB1cmkgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVXNlckF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuQ29sdW1uTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV0gRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX05vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Ob3RTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9Ob3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfTm90U29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPC90aD4KCiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGhlYWQ+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGVja2JveCBOb25UZXh0Q29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9IkNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iQ29uZmlnSXRlbUlEIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhpcyBjb25maWcgaXRlbSIpIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iWyUgRGF0YS5DbGFzc1RhYmxlIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkNsYXNzU3BhbiB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iRmxhZ2dlZE5hbWUiPlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DdXJJbmNpU2lnbmFsIHwgaHRtbCAlXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9IkZsYWdnZWROYW1lIj5bJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3Um93IikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRkPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfTGluayIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgPC90ZD4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgICAgICA8dGQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8L3RkPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8L3RyPgoKWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8L3Rib2R5PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VGFibGUiKSAlXQogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYIikgJV0KPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij4KICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ2xhc3MiPlslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiBpZD0nRGl2Q2xhc3NJRCc+CiAgICAgICAgICAgIFslIERhdGEuQ2xhc3NPcHRpb25TdHJnICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2ZpZWxkc2V0Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9IklubmVyQ29udGVudCIgaWQ9IkFKQVhVcGRhdGUiPgoKICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNsYXNzSUQiIHZhbHVlPSJbJSBEYXRhLkNsYXNzSUQgfCBodG1sICVdIiBpZD0iU2VhcmNoQ2xhc3NJRCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgoKICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VhcmNoUHJvZmlsZSI+WyUgVHJhbnNsYXRlKCJTZWFyY2ggdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNlYXJjaFByb2ZpbGUiIG5hbWU9IlNlYXJjaFByb2ZpbGUiIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0iYnV0dG9uIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgVGVtcGxhdGUiKSB8IGh0bWwgJV0iIGlkPSJTZWFyY2hQcm9maWxlQWRkQWN0aW9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZU5ldyIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVBc0xpbmsiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgbGluayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KCiAgICA8L2Zvcm0+CjwvZGl2PgoKPGRpdiBjbGFzcz0iQ29udGVudEZvb3RlciBDZW50ZXIiPgogICAgPGJ1dHRvbiBpZD0iU2VhcmNoRm9ybVN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSBIaWRkZW4iIHZhbHVlPSJSdW4gU2VhcmNoIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+WyUgVHJhbnNsYXRlKCJSdW4gU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEFKQVgiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQUpBWENvbnRlbnQiKSAlXQo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaENsYXNzSUQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VhcmNoRGlhbG9nIiB2YWx1ZT0nMSc+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNob3duQXR0cmlidXRlcyIgdmFsdWU9IiIgaWQ9IlNob3duQXR0cmlidXRlcyI+CiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICA8bGFiZWwgZm9yPSJTZWFyY2hQcm9maWxlIj5bJSBUcmFuc2xhdGUoIlNlYXJjaCB0ZW1wbGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5Qcm9maWxlc1N0cmcgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VhcmNoUHJvZmlsZUFkZEJsb2NrIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZUFzTGluayIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJQcm9maWxlIGxpbmsiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2F2ZVByb2ZpbGUiIGlkPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICA8L2Rpdj4KICAgIDwvZmllbGRzZXQ+CgogICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgSGlkZGVuIiBpZD0nSVRTTVNlYXJjaEZpZWxkcyc+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiIGlkPSJTZWFyY2hJbnNlcnQiPgogICAgICAgICAgICA8bGVnZW5kPjxzcGFuPlslIFRyYW5zbGF0ZSgiRmlsdGVycyBpbiB1c2UiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJBZGRpdGlvbmFsIGZpbHRlcnMiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBhbm90aGVyIGF0dHJpYnV0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZXNTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWwgZm9yPSJQcmV2aW91c1ZlcnNpb25TZWFyY2giPlslIFRyYW5zbGF0ZSgiQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5QcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPdXRwdXQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgPC9maWVsZHNldD4KPC9mb3JtPgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxsYWJlbCBmb3I9Ik51bWJlciIgaWQ9IkxhYmVsTnVtYmVyIj5bJSBUcmFuc2xhdGUoIk51bWJlciIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgdmFsdWU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGxhYmVsIGZvcj0iTmFtZSIgaWQ9IkxhYmVsTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiIGlkPSJMYWJlbERlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiIGlkPSJMYWJlbEluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgWyUgRGF0YS5MYWJlbCAlXQogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXSIgaWQ9IkxhYmVsWyUgRGF0YS5LZXkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICBbJSBEYXRhLklucHV0U3RyaW5nICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICBbJSBEYXRhLkF0dHJpYnV0ZXNPcmlnU3RyZyAlXQo8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiQUpBWENvbnRlbnQiKSAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemTreeView.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIiPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0iKSB8IGh0bWwgJV06IFslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV0g4oCUIFslIERhdGEuQ29uZmlnSXRlbU5hbWUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlRyZWVWaWV3Q2xvc2VMaW5rIj5bJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgZGlhbG9nIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4gU3BhY2luZ1RvcCI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIiBpZD0iV2lkZ2V0Q29udGFpbmVyIj4KCiAgICAgICAgICAgIDxmb3JtIG5hbWU9IlRyZWVWaWV3IiBpZD0iVHJlZVZpZXciPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiAgICAgICAgaWQ9IkNvbmZpZ0l0ZW1JRCIgICAgICAgIHZhbHVlPSJbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVmVyc2lvbklEIiAgICAgICAgICAgaWQ9IlZlcnNpb25JRCIgICAgICAgICAgIHZhbHVlPSJbJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT1RPQk9BZ2VudEludGVyZmFjZSIgaWQ9Ik9UT0JPQWdlbnRJbnRlcmZhY2UiIHZhbHVlPSJbJSBEYXRhLlNlc3Npb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2hvd0xpbmtMYWJlbHMiICAgICAgaWQ9IlNob3dMaW5rTGFiZWxzIiAgICAgIHZhbHVlPSJbJSBEYXRhLlNob3dMaW5rTGFiZWxzIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Wm9vbSIgICAgICAgICAgICBpZD0iTGFzdFpvb20iICAgICAgICAgICAgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgIDwvZm9ybT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3cgQ29udGFpbmVyQmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvd1RpdGxlIj48aSBjbGFzcz0iZmEgZmEtc2l0ZW1hcCI+PC9pPiBbJSBUcmFuc2xhdGUoIlRyZWUgVmlldyIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3B0Q29udGFpbmVyIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJEZXB0aExhYmVsIj5bJSBUcmFuc2xhdGUoIkRlcHRoIExldmVsIikgfCBodG1sICVdOiA8L2xhYmVsPiAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iRGVwdGgiIGlkPSJEZXB0aCIgbWluPSIxIiBtYXg9IjEwIiB2YWx1ZT0iWyUgRGF0YS5EZXB0aCB8IGh0bWwgJV0iIGNsYXNzPSJPcHREZXB0aCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJab29tSW5PdXRMYWJlbCI+WyUgVHJhbnNsYXRlKCJab29tIEluL091dCIpIHwgaHRtbCAlXTogPC9sYWJlbD4gPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iWm9vbSIgaWQ9Ilpvb20iIG1pbj0iMjAiIG1heD0iMjAwIiBzdGVwPSIxMCIgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9IkFKQVhMb2FkZXJEZXB0aCIgY2xhc3M9IkFKQVhMb2FkZXIgSGlkZGVuIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0iVHJlZVZpZXdNZXNzYWdlcyIgY2xhc3M9IlRyZWVWaWV3TWVzc2FnZXMgQ2VudGVyIEhpZGRlbiI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iQ2VudGVyIFRyZWVWaWV3TWVzc2FnZSI+WyUgVHJhbnNsYXRlKCJNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEiKSB8IGh0bWwgICVdPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGFpbmVyQ2FudmFzIiBpZD0iQ2FudmFzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxkaXYgY2xhc3M9IkZsYWciIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgxIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyYXRpb24gSXRlbSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdICZuZGFzaDsgWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CgogICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdCgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZXRhIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIFRpZ2h0Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuTmFtZSB8IHRydW5jYXRlKDI1KSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkN1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDdXJyZW50IEluY2lkZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVCeVVzZXJGdWxsTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNoYW5nZUJ5VXNlckZ1bGxOYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0ZpbGVuYW1lPVslIERhdGEuRmlsZW5hbWUgfCB1cmkgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIERhdGEuRmlsZXNpemUgfCBMb2NhbGl6ZSgnRmlsZXNpemUnKSB8IGh0bWwgJV0pClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1ldGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMaW5rVGFibGVTaW1wbGUiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlua2VkIE9iamVjdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUYWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxpbmtUYWJsZVNpbXBsZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgogICAgICAgICAgICAgICAgPGgyPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1lbnVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiBpZD0iTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuTWVudUNsYXNzIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudSIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VsZWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLlBhZ2VOYW1lKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZU5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IHVyaSAlXTtQYWdlPVslIERhdGEuUGFnZU5hbWUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvb29TIFBhZ2VTZWxlY3Rpb25CdXR0b24gQ2FsbEZvckFjdGlvblslIElGIERhdGEuRGlzYWJsZWQgJV0gRGlzYWJsZWRbJSBFTFNJRiBEYXRhLlNlbGVjdGVkICVdIFNlbGVjdGVkWyUgRU5EICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgaWQ9IlZlcnNpb25TZWxlY3Rpb25Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvblNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iSVRTTUl0ZW1zIj4KICAgICAgICAgICAgICAgIFslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ConfigItemTreeView/ConfigItemTreeViewGraph.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJTZWN0aW9uQ29udGFpbmVyIj4KCiAgICA8ZGl2IGNsYXNzPSJDaGlsZENvbnRhaW5lciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNoaWxkU291cmNlRWxlbWVudHNMZXZlbCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iU291cmNlTGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwiKSAlXQogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2hpbGRDb250YWluZXIiIGlkPSJPcmlnaW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPcmlnaW5FbGVtZW50IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IiBpZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29uZmlnSXRlbUluZm8iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWRkaXRpb25hbEluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPcmlnaW5FbGVtZW50IikgJV0KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iVGFyZ2V0TGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KCiAgICA8L2Rpdj4KCjwvZGl2Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNYXhEZXB0aCIgICAgICAgaWQ9Ik1heERlcHRoIiAgICAgICB2YWx1ZT0iWyUgRGF0YS5NYXhEZXB0aCB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVNvdXJjZSIgaWQ9IkxpbmtEYXRhU291cmNlIiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVNvdXJjZSB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVRhcmdldCIgaWQ9IkxpbmtEYXRhVGFyZ2V0IiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVRhcmdldCB8IGh0bWwgJV0iPgoKIDxkaXYgY2xhc3M9IlNwYWNlclRyZWUiPjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiWW91ciBDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvaDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaEJveCIpICVdCiAgICAgICAgPGRpdiBpZD0ib29vU2VhcmNoQm94Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YSBpZD0nb29vSGVhZGVyQnV0dG9uJyBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDtGaWx0ZXI9MTtWaWV3PVNtYWxsO1NvcnRCeT1BZ2U7T3JkZXJCeT1VcCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBhY2Nlc3NrZXk9IlslIERhdGEuQWNjZXNzS2V5IHwgaHRtbCAlXSI+PGJ1dHRvbj48c3Bhbj4gWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+PC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoQm94IikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBpZD0nb29vTWFpbkJveCc+CiAgICAgICAgPGRpdiBpZD0nb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyJz4KWyUgSUYgRW52KCJTdWJhY3Rpb24iKSA9PSAnU2VhcmNoJyAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTIgb29vbCBTZWxlY3RlZCI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTogICJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIKICAgICAgICAgICAgPC9wPgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVySGVhZGVyIikgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuQ2xhc3NBIHwgaHRtbCAlXSBvb28xMmcgb29vbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVslIEVudigiU3ViYWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1NvcnRCeT1bJSBEYXRhLlNvcnRCeSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXVslIERhdGEuQ3VzdG9tZXJJRHMgJV07RnVsbHRleHQ9WyUgRGF0YS5GdWxsdGV4dCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKQogICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJIZWFkZXIiKSAlXQpbJSBJRiBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vMTJnIG9vb3IiPgogICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVyRGVsZXRlIikgJV0KICAgICAgICAgICAgPGRpdiBpZD0ib29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1kZWxldGVfb3V0bCI+PC9pPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlckRlbGV0ZSIpICVdCiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb2wiPlslIERhdGEuSVRTTUNvbmZpZ0l0ZW1Db3VudCB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vbCI+WyUgVHJhbnNsYXRlKCJTb3J0IikgfCBodG1sICVdPC9wPgojICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyBvb29yIj5bJSBUcmFuc2xhdGUoIkZpbHRlciIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vciI+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIFslIERhdGEuSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0Ij4KICAgIDxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0U2Nyb2xsQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQogICAgICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1RhYmxlIikgJV0KICAgICAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyI+CiAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpIHwgdXJpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VyRGVwbFNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9IlVzZXJBdXRvQ29tcGxldGUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlRhYmxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTaWduYWwiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VyRGVwbFNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDwvdGJvZHk+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUJvZHkiKSAlXQogICAgICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1RhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnSXRlbSBTZWFyY2giKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2g7RmlsdGVyPTE7Vmlldz1TbWFsbDtTb3J0Qnk9QWdlO09yZGVyQnk9VXAiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIgYWNjZXNza2V5PSJbJSBEYXRhLkFjY2Vzc0tleSB8IGh0bWwgJV0iPjxidXR0b24+PHNwYW4+IFslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEJveCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9J29vb01haW5Cb3gnPgogICAgICAgIDxkaXYgaWQ9Im9vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciI+ClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlBlcm1pc3Npb25Db25kaXRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQZXJtaXNzaW9uQ29uZGl0aW9uIj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNsYXNzSURzIj5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgVHJhbnNsYXRlKCJOdW1iZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbFN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaEFjdGlvbiIgdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hGb3JtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoUmVzdWx0IikgJV0KICAgICAgICBbJSBEYXRhLklUU01Db25maWdJdGVtTGlzdEhUTUwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgaWQ9J29vb0NvbnRlbnQnIGNsYXNzPSdBUklBUm9sZU1haW4nPgogICAgWyUgRGF0YS5TdHlsZUNsYXNzZXMgJV0KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGRpdiBjbGFzcz0nb29vV2l0aFN1Yic+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZ1bGxTdWIiKSAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXSNbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0jWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiRnVsbFN1YiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzU3ViIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc1N1YiIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nQ0lJbmZvQmFyJz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbG95bWVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuRGVwbFN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsb3ltZW50U3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpZGVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuSW5jaVN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNpZGVudFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ3JlYXRlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPjxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ3JlYXRlZFRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+PHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBpZD0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCB1cmkgJV07UGFnZT1bJSBEYXRhLlBhZ2VOYW1lIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ib29vUyBQYWdlU2VsZWN0aW9uQnV0dG9uWyUgSUYgRGF0YS5TZWxlY3RlZCAlXSBTZWxlY3RlZFslIEVORCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VMaW5rIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQXR0YWNobWVudHMiIGhyZWY9IiMiPjxpIGNsYXNzPSdvb29mbyBvb29mby1hdHRhY2htZW50Jz48L2k+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Qm94IiBjbGFzcz0iSGlkZGVuIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7RmlsZW5hbWU9WyUgRGF0YS5GaWxlbmFtZSB8IHVyaSAlXTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAoWyUgRGF0YS5GaWxlc2l6ZSB8IExvY2FsaXplKCdGaWxlc2l6ZScpIHwgaHRtbCAlXSk8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVmVyc2lvbnMiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZlcnNpb25TZWxlY3Rpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWZXJzaW9uU2VsZWN0aW9uIj5bJSBUcmFuc2xhdGUoIlZlcnNpb24iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWZXJzaW9ucyIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DynamicField/Agent/ITSMConfigItemLens.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iWyUgRGF0YS5GaWVsZE5hbWUgJV0iIG5hbWU9IlslIERhdGEuRmllbGROYW1lICVdIiB2YWx1ZT0iWyUgRGF0YS5WYWx1ZUVzY2FwZWQgJV0iIC8+CjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iWyUgRGF0YS5GaWVsZENsYXNzICVdIiBpZD0iQXV0b2NvbXBsZXRlX1slIERhdGEuRmllbGROYW1lICVdIiBuYW1lPSJBdXRvY29tcGxldGVfWyUgRGF0YS5GaWVsZE5hbWUgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5GaWVsZExhYmVsRXNjYXBlZCkgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5WaXNpYmxlVmFsdWUgJV0iIC8+ClslIElGIERhdGEuTWFuZGF0b3J5ICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURNYW5kYXRvcnkgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgIDxwPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkZpZWxkUmVxdWlyZWRNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQpbJSBJRiBEYXRhLlNlcnZlckVycm9yICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURTZXJ2ZXJFcnJvciAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgPHA+CiAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ITSMConfigItemDetails.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6U2NyaXB0VXNhZ2UpCjxkaXYgY2xhc3M9Im9vb0NvbnRlbnRHcmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRDZWxsIikgJV0KICAgIDxkaXYgY2xhc3M9Im9vb0NvbnRlbnRDZWxsIFslIERhdGEuVHlwZSB8IGh0bWwgJV1fQ2VsbCIgc3R5bGU9IlslIERhdGEuR3JpZEFyZWEgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyUm93IikgJV0KICAgICAgICA8aDIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlcikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJSb3ciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkNlbGxDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmllbGREaXNwbGF5Um93IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGREaXNwbGF5Um93IiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZpZWxkRGlzcGxheUNlbGwiKSAlXQpbJSBJRiBEYXRhLlR5cGUgPT0gJ0xhYmVsJyAlXQogICAgICAgICAgICAgICAgPGxhYmVsIFslIElGIERhdGEuQ1NTQ2xhc3MgJV1jbGFzcz0iWyUgRGF0YS5DU1NDbGFzcyB8IGh0bWwgJV0iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdIiBzdHlsZT0iWyUgRGF0YS5HcmlkQ29sdW1tIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvbGFiZWw+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWUnICVdCiAgICAgICAgICAgICAgICA8cCB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSIgc3R5bGU9IlslIERhdGEuR3JpZENvbHVtbiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVMaW5rJyAlXQogICAgICAgICAgICAgICAgPHAgdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iIHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj48YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSJbJSBJRiBEYXRhLkxpbmtQcmV2aWV3ICVdIGRhdGEtdHJpZ2dlcj0iZmxvYXRlciIgZGF0YS1mbG9hdGVyLXVybD0iWyUgRGF0YS5MaW5rUHJldmlldyB8IEludGVycG9sYXRlICVdIlslIEVORCAlXSBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVSYXcnICVdCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9kaXY+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnRnVsbFJvdycgJV0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+WyUgRGF0YS5WYWx1ZSAlXTwvZGl2PgpbJSBFTFNJRiBEYXRhLlR5cGUgPT0gJ0lmcmFtZScgJV0KICAgICAgICAgICAgICAgIDxkaXY+CiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIENvcmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBDb3JlLkFnZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20gPT09ICdvYmplY3QnKSB7CiAgICAgICAgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjJyArIElGcmFtZUlEKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKTsKICAgICAgICB9LCA1MDApOwogICAgfQp9Cjwvc2NyaXB0PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIG1zLWFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3giIHdpZHRoPSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgaWQ9IklmcmFtZVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0nKTsgfSwgNTAwKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuRnJvbnRlbmQgfCBodG1sICVdSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1IVE1MVmlldztDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV07WyUgRW52KCJTZXNzaW9uTmFtZSIpIHwgaHRtbCAlXT1bJSBFbnYoIlNlc3Npb25JRCIpIHwgaHRtbCAlXSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlDZWxsIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlSb3ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgWyUgRGF0YS5IVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRDZWxsIikgJV0KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/JavaScript/Templates/Standard/Agent/ITSMConfigurationManagement/ClassImportConfirm.html.tmpl" Permission="660" Encode="Base64">PHA+e3sgIlRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkIiB8IFRyYW5zbGF0ZSB9fTo8L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRTbWFsbCBOYXJyb3ciPgoKeyUgZm9yIENsYXNzIGluIENsYXNzZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IENsYXNzIH19PC9wPgoKeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgaWYgUm9sZXMgJX0KCjxwPnt7ICJUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQiIHwgVHJhbnNsYXRlIH19OjwvcD4KPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZFNtYWxsIE5hcnJvdyI+CgogICAgeyUgZm9yIFJvbGUgaW4gUm9sZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IFJvbGUgfX08L3A+CgogICAgeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgZW5kaWYgJX0KCjxwIGNsYXNzPSJFcnJvciIgc3R5bGU9Im1heC13aWR0aDogNDUwcHg7Ij57eyAiTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLiIgfCBUcmFuc2xhdGUgfX08L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij57eyAiRG8geW91IHdhbnQgdG8gcHJvY2VlZD8iIHwgVHJhbnNsYXRlfX08L3A+Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ClassExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NFeHBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkNsYXNzRXhwb3J0IC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0V4cG9ydD4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnRXhwb3J0IGR5bmFtaWMgZmllbGQgY2xhc3NlcyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBkeW5hbWljIGZpZWxkcy4nCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgZXhwb3J0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICAgICAiVGhlIG91dHB1dCBZQU1MIGZpbGUgY29udGFpbmluZyB0aGUgZXhwb3J0ZWQgY2xhc3MgZGVmaW5pdGlvbiBhbmQgaXRzIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gYSBsb2NhbCBmaWxlIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGNsYXNzIGluIHRoZSBsaXN0LiIsCiAgICAgICAgUmVxdWlyZWQgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ID0+IHFyLy4vLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIG91dHB1dCBZQU1MIGZpbGUgYWxyZWFkeSBleGlzdHMsIG92ZXJ3cml0ZSBpdCB3aXRob3V0IGFza2luZy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2xhc3NOYW1lTGlzdCAgPSAkU2VsZi0+R2V0T3B0aW9uKCdjbGFzcycpOwogICAgbXkgJEZpbGVOYW1lICAgICAgID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpIHx8ICIkQ2xhc3NOYW1lTGlzdC0+WzBdLnltbCI7ICAgICMgYnkgZGVmYXVsdCBmaWxlIGhhcyB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgY2xhc3MKICAgIG15ICRGb3JjZU92ZXJ3cml0ZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2ZvcmNlJyk7CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGxpc3RzIG9mIGV4aXN0aW5nIGNsYXNzZXMgYW5kIHJvbGVzCiAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApIC8vIHt9CiAgICB9OwogICAgbXkgJVJvbGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICkgLy8ge30KICAgIH07CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwogICAgICAgICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9OwoKICAgIG15IEBDbGFzc0lETGlzdDsKICAgIGZvciBteSAkQ2xhc3NOYW1lICggQHskQ2xhc3NOYW1lTGlzdH0gKSB7CgogICAgICAgIGlmICggJENsYXNzTG9va3VweyRDbGFzc05hbWV9ICkgewogICAgICAgICAgICBwdXNoIEBDbGFzc0lETGlzdCwgJENsYXNzTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5jbGFzczwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUm9sZUxvb2t1cHskQ2xhc3NOYW1lfSApIHsKICAgICAgICAgICAgcHVzaCBAQ2xhc3NJRExpc3QsICRSb2xlTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5yb2xlPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRFcnJvci0+KCAnQ2xhc3Mgb3IgUm9sZSAnIC4gJENsYXNzTmFtZSAuICcgZG9lcyBub3QgZXhpc3QuJyApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIC1lICRGaWxlTmFtZSAmJiAhJEZvcmNlT3ZlcndyaXRlICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5GaWxlICckRmlsZU5hbWUnIGFscmVhZHkgZXhpc3RzLiBPdmVyd3JpdGUgaXQ/PC95ZWxsb3c+XG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz5cblx0Iik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICBteSAkWUFNTENvbnRlbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NFeHBvcnQoIEl0ZW1JRExpc3QgPT4gXEBDbGFzc0lETGlzdCApOwoKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgIExvY2F0aW9uID0+ICRGaWxlTmFtZSwKICAgICAgICBDb250ZW50ICA9PiBcJFlBTUxDb250ZW50LAogICAgKTsKICAgIHJldHVybiAkRXJyb3ItPigiQ291bGQgbm90IHdyaXRlIGZpbGUuIikgdW5sZXNzICRTdWNjZXNzOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgd2l0aCBhbGw8L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ClassImport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0ltcG9ydCAtIHN1cHBvcnQgZm9yIHVwZ3JhZGluZyB0aGUgQ01EQgoKPWhlYWQxIERFU0NSSVBUSU9OCgpNb2R1bGUgZm9yIHRoZSBjb25zb2xlIGNvbW1hbmQgQzxBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ+LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1jdXQKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0ltcG9ydCBkeW5hbWljIGZpZWxkIGNsYXNzZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZHluYW1pYyBmaWVsZHMuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZpbGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFuZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gYXMgWUFNTC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndXBkYXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIGNsYXNzIGFscmVhZHkgZXhpc3RzLCB1cGRhdGUgaXQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDAsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+SW1wb3J0aW5nIG5ldyBjb25maWdpdGVtIGNsYXNzPC9ncmVlbj5cbiIpOwoKICAgIG15ICRGaWxlID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwoKICAgICAgICAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfTsKCiAgICBteSAkRGVmaW5pdGlvbllBTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SYXcgPSAkWUFNTE9iamVjdC0+TG9hZCgKICAgICAgICBEYXRhID0+ICR7JERlZmluaXRpb25ZQU1MfSwKICAgICk7CgogICAgaWYgKCByZWYgJERlZmluaXRpb25SYXcgZXEgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9uUmF3ID0gWyREZWZpbml0aW9uUmF3XTsKICAgIH0KCiAgICByZXR1cm4gJEVycm9yLT4oJ0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLicpIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJERlZmluaXRpb25SYXcpOwoKICAgIG15ICRDbGFzc0V4aXN0cyA9ICRTZWxmLT5HZXRPcHRpb24oJ3VwZGF0ZScpID8gJ1VQREFURScgOiAnRVJST1InOwogICAgbXkgJFJlc3VsdCAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICREZWZpbml0aW9uUmF3LAogICAgICAgIENsYXNzRXhpc3RzID0+ICRDbGFzc0V4aXN0cywKICAgICk7CgogICAgcmV0dXJuICRFcnJvci0+KCAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAiQ291bGQgbm90IGltcG9ydCBkZWZpbml0aW9ucyBmcm9tIGZpbGUuIiApIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSB3aXRoIGFsbDwvZ3JlZW4+XG4iKTsKCiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ConvertLegacyRefDFs.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q29udmVydExlZ2FjeVJlZkRGczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6SW50ZXJmYWNlQ29uc29sZTsgICAgIyMgbm8gcGVybGltcG9ydHMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0NvbnZlcnQgbGVnYWN5IE90b2JvUGFyIERGcyBvZiB0eXBlIElUU01Db25maWdJdGVtUmVmZXJlbmNlIHRvIHN0YW5kYXJkIENvbmZpZ0l0ZW0gZmllbGRzLicKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRmlsZSBuYW1lIGZvciB0aGUgY29uc3RyaWN0aW9ucyByZXBvcnQsIGJ5IGRlZmF1bHQgcHJpbnRzIHRoZSByZXBvcnQgdG8gdGhlIGRpc3BsYXkuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmb3JjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIklmIHRoZSByZXBvcnQgZmlsZSBhbHJlYWR5IGV4aXN0cywgb3ZlcndyaXRlIHdpdGhvdXQgcHJvbXB0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmlsZU5hbWUgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdmaWxlJyk7CiAgICBteSAkRm9yY2VPdmVyd3JpdGUgPSAkU2VsZi0+R2V0T3B0aW9uKCdmb3JjZScpOwoKICAgIGlmICggLWUgJEZpbGVOYW1lICYmICEkRm9yY2VPdmVyd3JpdGUgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNvbnN0cmljdGlvbnMgcmVwb3J0IGZpbGUgJyRGaWxlTmFtZScgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZSBpdD88L3llbGxvdz4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz46ICIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJERCT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKTsKICAgIG15ICRQYWNrYWdlT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJyk7CgogICAgIyBzdXBwb3J0IGNvbnNvbGUgY29tbWFuZAogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgICREQk9iamVjdC0+Q29ubmVjdCgpOwogICAgfQogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgIGRpZSgidW5hYmxlIHRvIGNvbm5lY3QgdG8gRGF0YWJhc2UuIik7CiAgICB9CgogICAgJERCT2JqZWN0LT5CZWdpbldvcmsoKTsKICAgIG15IEBJRHMgPSAkU2VsZi0+X0dldERGVHlwZUlEcygKICAgICAgICBEQk9iamVjdCA9PiAkREJPYmplY3QsCiAgICAgICAgREZUeXBlICAgPT4gJ0lUU01Db25maWdJdGVtUmVmZXJlbmNlJywKICAgICk7CgogICAgbXkgJENvdW50RmllbGRVcGRhdGVzID0gMDsKICAgIG15ICRDb3VudFZhbHVlVXBkYXRlcyA9IDA7CiAgICBteSBAQ29uc3RyaWN0aW9uc0xpc3Q7CgogICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICRTZWxmLT5fVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnKAogICAgICAgICAgICBJRCAgICAgICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICBEeW5hbWljRmllbGRPYmplY3QgPT4gJER5bmFtaWNGaWVsZE9iamVjdCwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uc0xpc3QgID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRGaWVsZFVwZGF0ZXMrKzsKICAgICAgICAkQ291bnRWYWx1ZVVwZGF0ZXMgKz0gJFNlbGYtPl9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMoCiAgICAgICAgICAgIElEICAgICAgICAgICAgICAgICAgICAgID0+ICRJRCwKICAgICAgICAgICAgREJPYmplY3QgICAgICAgICAgICAgICAgPT4gJERCT2JqZWN0LAogICAgICAgICAgICBEeW5hbWljRmllbGRWYWx1ZU9iamVjdCA9PiAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAkREJPYmplY3QtPntkYmh9LT5jb21taXQoKTsKCiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudEZpZWxkVXBkYXRlcyBmaWVsZHMgdXBkYXRlZFxuIik7CiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudFZhbHVlVXBkYXRlcyBmaWVsZCB2YWx1ZXMgdXBkYXRlZFxuIik7CgogICAgJFNlbGYtPl9SZXBvcnRDb25zdHJpY3Rpb25zKAogICAgICAgIENvbnN0cmljdGlvbnNMaXN0ID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgRmlsZU5hbWUgICAgICAgICAgPT4gJEZpbGVOYW1lLAogICAgKTsKCiAgICAjIHJlbW92ZSBEeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbSBwYWNrYWdlCiAgICBteSAkUGFja2FnZU5hbWUgPSAnRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuaW5zdGFsbGluZyAkUGFja2FnZU5hbWUgcGFja2FnZS4uLjwveWVsbG93PlxuIik7CiAgICBteSBAUmVwb3MgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgUmVzdWx0ID0+ICdTaG9ydCcKICAgICk7CiAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgaWYgKCAhQFBhY2thZ2VFbnRyeSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGZpbmQgJFBhY2thZ2VOYW1lIHBhY2thZ2UhPC9yZWQ+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRQYWNrYWdlVmVyc2lvbiA9ICRQYWNrYWdlRW50cnlbMF17VmVyc2lvbn07CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRQYWNrYWdlTmFtZSBWZXJzaW9uICRQYWNrYWdlVmVyc2lvbjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFBhY2thZ2UgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUdldCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkUGFja2FnZU5hbWUsCiAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICk7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkUGFja2FnZU9iamVjdC0+UGFja2FnZVVuaW5zdGFsbCgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICk7CiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmU8L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRDb25maWcgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElEICAgICAgICAgICAgICAgICA9ICRQYXJhbXsnSUQnfTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZE9iamVjdCd9OwogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ICA9ICRQYXJhbXsnQ29uc3RyaWN0aW9uc0xpc3QnfTsKCiAgICBteSAkREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwoKICAgIG15ICROZXdDb25maWcgPSB7CiAgICAgICAgJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScgPT4gJycsCiAgICAgICAgJ011bHRpc2VsZWN0JyAgICAgICAgICAgPT4gKCAkREYtPntDb25maWd9e01heEFycmF5U2l6ZX0gPiAxID8gMSA6IDAgKSwKICAgICAgICAnUmVmZXJlbmNlRmlsdGVyTGlzdCcgICA9PiBbXSwKICAgICAgICAnU2VhcmNoQXR0cmlidXRlJyAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICAgICA9PiAnMScsCiAgICAgICAgJ0VkaXRGaWVsZE1vZGUnICAgICAgICAgPT4gJ0F1dG9Db21wbGV0ZScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgICAgPT4gMCwKICAgICAgICAnTGlua1R5cGUnICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnTGlua0RpcmVjdGlvbicgICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgJ0Rpc3BsYXlUeXBlJyAgICAgICAgICAgPT4gJFNlbGYtPl9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuKCBQYXR0ZXJuID0+ICRERi0+e0NvbmZpZ317RGlzcGxheVBhdHRlcm59ICksCiAgICAgICAgJ0NsYXNzSURzJyAgICAgICAgICAgICAgPT4gJERGLT57Q29uZmlnfXtJVFNNQ29uZmlnSXRlbUNsYXNzZXN9LAogICAgICAgICdEZXBsU3RhdGVJRHMnICAgICAgICAgID0+ICRERi0+e0NvbmZpZ317RGVwbG95bWVudFN0YXRlc30sCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ1JlZmVyZW5jZWRPYmplY3RUeXBlJyAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIH07CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkSUQsCiAgICAgICAgTmFtZSAgICAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICBMYWJlbCAgICAgID0+ICRERi0+e0xhYmVsfSwKICAgICAgICBGaWVsZE9yZGVyID0+ICRERi0+e0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJERGLT57T2JqZWN0VHlwZX0sCiAgICAgICAgVmFsaWRJRCAgICA9PiAkREYtPntWYWxpZElEfSwKICAgICAgICBDb25maWcgICAgID0+ICROZXdDb25maWcsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPlVuYWJsZSB0byBzZXQgREYgQ29uZmlnIGZvciAiIC4gJERGLT57TmFtZX0gLiAiICgkSUQpIHdpdGg6XG4gJE5ld0NvbmZpZzwvcmVkPlxuIiApOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgIG15IEBMb2NhbENvbnN0cmljdGlvbnMgPSBzcGxpdCggL1xyXG4vLCAkREYtPntDb25maWd9e0NvbnN0cmljdGlvbnN9ICk7CiAgICBmb3IgbXkgJENvbnN0cmljdGlvbiAoQExvY2FsQ29uc3RyaWN0aW9ucykgewogICAgICAgIHB1c2ggQHskQ29uc3RyaWN0aW9uc0xpc3R9LCB7CiAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpZWxkTmFtZSAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uID0+ICRDb25zdHJpY3Rpb24sCiAgICAgICAgfTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIF9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhdHRlcm4gPSAkUGFyYW17J1BhdHRlcm4nfTsKCiAgICBpZiAoICRQYXR0ZXJuID1+IC88Q0lfQ2xhc3M+LyAmJiAkUGF0dGVybiA9fiAvPENJX05hbWU+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzaWYgKCAkUGF0dGVybiA9fiAvPENJX0NsYXNzPi8gJiYgJFBhdHRlcm4gPX4gLzxDSV9OdW1iZXI+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU51bWJlcic7CiAgICB9CiAgICBlbHNpZiAoICRQYXR0ZXJuID1+IC88Q0lfTmFtZT4vICkgewogICAgICAgIHJldHVybiAnQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICdDb25maWdJdGVtTnVtYmVyJzsKICAgIH0KfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRJRCAgICAgICAgICAgICAgICAgPSAkUGFyYW17J0lEJ307CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgICAgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZFZhbHVlT2JqZWN0J307CgogICAgbXkgQE9iamVjdElEczsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICdTRUxFQ1QgRElTVElOQ1Qgb2JqZWN0X2lkIEZST00gZHluYW1pY19maWVsZF92YWx1ZSBXSEVSRSBmaWVsZF9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJEZpZWxkSUQgXSwKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBPYmplY3RJRHMsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50VmFsdWVVcGRhdGVzID0gMDsKICAgIGZvciBteSAkT2JqZWN0SUQgKEBPYmplY3RJRHMpIHsKCiAgICAgICAgbXkgJEV4aXN0aW5nVmFsdWVzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRmllbGRJRCAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgIE9iamVjdElEID0+ICRPYmplY3RJRAogICAgICAgICk7CgogICAgICAgIG15IEBOZXdWYWx1ZXM7CiAgICAgICAgbXkgJEluZGV4VmFsdWUgPSAwOwogICAgICAgIGZvciBteSAkRXhpc3RpbmdWYWx1ZSAoICRFeGlzdGluZ1ZhbHVlcy0+QCogKSB7CiAgICAgICAgICAgIG15ICROZXdWYWx1ZSA9IHsKICAgICAgICAgICAgICAgIFZhbHVlVGV4dCA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIFZhbHVlSW50ICA9PiAkRXhpc3RpbmdWYWx1ZS0+e1ZhbHVlVGV4dH0sCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICggc2NhbGFyICRFeGlzdGluZ1ZhbHVlcy0+QCogPiAxICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlLT57SW5kZXhWYWx1ZX0gPSAkSW5kZXhWYWx1ZTsKICAgICAgICAgICAgICAgICRJbmRleFZhbHVlKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBATmV3VmFsdWVzLCAkTmV3VmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRWYWx1ZU9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIEZpZWxkSUQgID0+ICRGaWVsZElELAogICAgICAgICAgICBPYmplY3RJRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIFZhbHVlICAgID0+IFxATmV3VmFsdWVzLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+VW5hYmxlIHRvIHNldCBERiBWYWx1ZSBmb3Igb2JqZWN0ICRPYmplY3RJRCBmaWVsZCAkRmllbGRJRC48L3JlZD5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRDb3VudFZhbHVlVXBkYXRlcyArPSBzY2FsYXIgJEV4aXN0aW5nVmFsdWVzLT5AKjsKICAgIH0KCiAgICByZXR1cm4gJENvdW50VmFsdWVVcGRhdGVzOwp9CgpzdWIgX0dldERGVHlwZUlEcyB7CgogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkREJPYmplY3QgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkREZUeXBlICAgPSAkUGFyYW17J0RGVHlwZSd9OwoKICAgIG15IEBSZXN1bHQ7CiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGlkIEZST00gZHluYW1pY19maWVsZCBXSEVSRSBmaWVsZF90eXBlID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkREZUeXBlIF0sCiAgICApOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFJlc3VsdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKc3ViIF9SZXBvcnRDb25zdHJpY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ID0gJFBhcmFteydDb25zdHJpY3Rpb25zTGlzdCd9OwogICAgbXkgJEZpbGVOYW1lICAgICAgICAgID0gJFBhcmFteydGaWxlTmFtZSd9OwoKICAgIGlmICggQHskQ29uc3RyaWN0aW9uc0xpc3R9ICkgewogICAgICAgIG15ICRDb25zdHJpY3Rpb25zU3RyID0gImZpZWxkXHRjb25zdHJpY3Rpb25cbiI7CiAgICAgICAgZm9yIG15ICRDb25zdHJpY3Rpb24gKCBAeyRDb25zdHJpY3Rpb25zTGlzdH0gKSB7CiAgICAgICAgICAgICRDb25zdHJpY3Rpb25zU3RyIC49ICRDb25zdHJpY3Rpb24tPntGaWVsZE5hbWV9IC4gIlx0IiAuICRDb25zdHJpY3Rpb24tPntDb25zdHJpY3Rpb259IC4gIlxuIjsKICAgICAgICB9CiAgICAgICAgbXkgJENvdW50ID0gc2NhbGFyIEB7JENvbnN0cmljdGlvbnNMaXN0fTsKICAgICAgICBpZiAoJEZpbGVOYW1lKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgTG9jYXRpb24gPT4gJEZpbGVOYW1lLAogICAgICAgICAgICAgICAgQ29udGVudCAgPT4gXCRDb25zdHJpY3Rpb25zU3RyLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgd3JpdGUgZmlsZS48L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Gb3VuZCAkQ291bnQgY29uc3RyaWN0aW9ucywgdGhleSByZXF1aXJlIG1hbnVhbCBjb25maWd1cmF0aW9uLiBQbGVhc2UgY2hlY2sgdGhlIHJlcG9ydCBmaWxlICckRmlsZU5hbWUnLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwcmludCAkQ29uc3RyaWN0aW9uc1N0cjsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRDb3VudCBjb25zdHJpY3Rpb25zLCB0aGV5IHJlcXVpcmUgbWFudWFsIGNvbmZpZ3VyYXRpb24uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIk5vIGNvbnN0cmljdGlvbnMgd2VyZSBmb3VuZC5cbiIpOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/Delete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6RGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEZWxldGUgY29uZmlnIGl0ZW1zIChhbGwsIGJ5IGNsYXNzIChhbmQgZGVwbG95bWVudCBzdGF0ZSkgb3IgYnkgbnVtYmVyKS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBhbGwgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnYWNjZXB0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWNjZXB0IGRlbGV0ZSBhbGwgb3IgY2FuY2VsLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8oeXxuKS9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtcyBvZiB0aGlzIGNsYXNzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdkZXBsb3ltZW50LXN0YXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbXMgd2l0aCB0aGlzIGRlcGxveW1lbnQgc3RhdGUgKE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdjb25maWdpdGVtLW51bWJlcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL1xkKy9zbXgsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtb2xkLXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBleGNlcHQgdGhlIG5ld2VzdCB2ZXJzaW9uLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBidXQga2VlcCB0aGUgbGFzdCBYWCB2ZXJzaW9ucy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtIHZlcnNpb25zIG9sZGVyIHRoYW4gWFggZGF5cy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgaWYgKAogICAgICAgICEkQWxsCiAgICAgICAgJiYgISRDbGFzcwogICAgICAgICYmICFAQ29uZmlnSXRlbU51bWJlcnMKICAgICAgICAmJiAhJERlcGxveW1lbnRTdGF0ZQogICAgICAgICYmICEkQWxsT2xkVmVyc2lvbnMKICAgICAgICAmJiAhJEFsbEJ1dEtlZXBMYXN0CiAgICAgICAgJiYgISRBbGxPbGRlclRoYW5EYXlzCiAgICAgICAgKQogICAgewogICAgICAgIGRpZQogICAgICAgICAgICAiUGxlYXNlIHByb3ZpZGUgb3B0aW9uIC0tYWxsLCAtLWNsYXNzLCAtLWNvbmZpZ2l0ZW0tbnVtYmVyLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgb3IgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zLiIKICAgICAgICAgICAgLiAiIEZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KCiAgICBteSAkQWxsT3B0aW9uVHlwZUNvdW50ID0gMDsKICAgIGZvciBteSAkVmFsdWUgKCAkQWxsLCAkQWxsT2xkVmVyc2lvbnMsICRBbGxCdXRLZWVwTGFzdCwgJEFsbE9sZGVyVGhhbkRheXMgKSB7CiAgICAgICAgaWYgKCRWYWx1ZSkgewogICAgICAgICAgICAkQWxsT3B0aW9uVHlwZUNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkQWxsT3B0aW9uVHlwZUNvdW50ID4gMSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb25zIC0tYWxsLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgYW5kIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBjYW4gbm90IGJlIG1peGVkLiBcbkZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KICAgIGlmICggJEFsbE9wdGlvblR5cGVDb3VudCAmJiAoICRDbGFzcyB8fCBAQ29uZmlnSXRlbU51bWJlcnMgfHwgJERlcGxveW1lbnRTdGF0ZSApICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiVGhlIG9wdGlvbnMgLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyBhbmQgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIGNhbiBub3QgdXNlZCB0b2dldGhlciB3aXRoIGFueSBvdGhlciBvcHRpb24uIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggJERlcGxveW1lbnRTdGF0ZSAmJiAhJENsYXNzICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiRGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIHRoaXMgZGVwbG95bWVudCBzdGF0ZSBpcyBwb3NpYmxlIE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIuIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggQENvbmZpZ0l0ZW1OdW1iZXJzICYmICggJENsYXNzIHx8ICREZXBsb3ltZW50U3RhdGUgKSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb24gLS1jb25maWdpdGVtLW51bWJlciBjYW4gbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgLS1jbGFzcyBvciB0aGUgLS1kZXBsb3ltZW50LXN0YXRlIHBhcmFtZXRlci4gXG5Gb3IgbW9yZSBkZXRhaWxzIHVzZSAtLWhlbHBcbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgIyBkZWxldGUgYWxsIGNvbmZpZyBpdGVtcwogICAgaWYgKCRBbGwpIHsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCBSZXN1bHQgPT4gJ0FSUkFZJyApOwoKICAgICAgICAjIGdldCBudW1iZXIgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBDSSB0byBkZWxldGUKICAgICAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5BcmUgeW91IHN1cmUgdGhhdCB5b3Ugd2FudCB0byBkZWxldGUgQUxMICRDSUNvdW50IGNvbmZpZyBpdGVtcz88L3llbGxvdz5cbiIpOwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhpcyBpcyBpcnJldm9jYWJsZS4gW3kvbl0gPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgbXkgJENvbmZpcm1hdGlvbiA9ICRTZWxmLT5HZXRBcmd1bWVudCgnYWNjZXB0Jyk7CiAgICAgICAgICAgIGNob21wKCAkQ29uZmlybWF0aW9uID0gbGMgPFNURElOPiApIGlmICFkZWZpbmVkICRDb25maXJtYXRpb247CgogICAgICAgICAgICAjIGlmIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBkZWxldGlvbgogICAgICAgICAgICBpZiAoICRDb25maXJtYXRpb24gZXEgJ3knICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcy4uLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtcyggQ29uZmlnSXRlbUlEcyA9PiBcQENvbmZpZ0l0ZW1JRHMgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Db21tYW5kIGRlbGV0ZSB3YXMgY2FuY2VsZWQ8L3llbGxvdz5cbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5UaGVyZSBhcmUgTk8gY29uZmlnIGl0ZW1zIHRvIGRlbGV0ZS48L3llbGxvdz5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zCiAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBDb25maWdJdGVtTnVtYmVycyApICkgewoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuYWJsZSB0byBmaW5kIGNvbmZpZyBpdGVtICRDb25maWdJdGVtTnVtYmVyLjwveWVsbG93PlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcyAoaWYgYW55IHZhbGlkIG51bWJlciB3YXMgZ2l2ZW4pCiAgICAgICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBzcGVjaWZpZWQgY29uZmlnIGl0ZW1zLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzCiAgICBlbHNpZiAoJENsYXNzKSB7CgogICAgICAgIG15IEBDb25maWdJdGVtSURzOwoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGludmVydCB0aGUgaGFzaCB0byBoYXZlIHRoZSBjbGFzc2VzIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwoKICAgICAgICBpZiAoICRDbGFzc05hbWUySUR7JENsYXNzfSApIHsKICAgICAgICAgICAgbXkgJElEID0gJENsYXNzTmFtZTJJRHskQ2xhc3N9OwoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBwYXJhbSBmb3IgdGhlIGNsYXNzIHNlYXJjaAogICAgICAgICAgICBteSAlU2VhcmNoUGFyYW0gPSAoCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyRJRF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFsc28gYSBkZXBsb3ltZW50IHN0YXRlIGlzIGdpdmVuCiAgICAgICAgICAgIGlmICgkRGVwbG95bWVudFN0YXRlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBpbnZlcnQgdGhlIGhhc2ggdG8gaGF2ZSB0aGUgZGVwbG95bWVudCBzdGF0ZSBuYW1lcyBhcyBrZXlzCiAgICAgICAgICAgICAgICBteSAlRGVwbG95bWVudFN0YXRlMklEID0gcmV2ZXJzZSAleyREZXBsb3ltZW50U3RhdGVMaXN0fTsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlzIHZhbGlkCiAgICAgICAgICAgICAgICBpZiAoICREZXBsb3ltZW50U3RhdGUySUR7JERlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgICAgICAgICAgbXkgJElEID0gJERlcGxveW1lbnRTdGF0ZTJJRHskRGVwbG95bWVudFN0YXRlfTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtEZXBsU3RhdGVJRHN9ID0gWyRJRF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgZGVwbG95bWVudCBzdGF0ZSAkRGVwbG95bWVudFN0YXRlLiIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcyAoYW5kIG1heWJlIGRlcGxveW1lbnQgc3RhdGUpIGNvbmZpZyBpdGVtcwogICAgICAgICAgICBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCVTZWFyY2hQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgY2xhc3MgbmFtZSAkQ2xhc3MuIik7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY29uZmlnIGl0ZW1zIChpZiBhbnkgdmFsaWQgbnVtYmVyIHdhcyBnaXZlbikKICAgICAgICBpZiAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcyB0aGF0IGJlbG9uZyB0byB0aGUgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBubyBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzICRDbGFzcy4uLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHZlcnNpb25zIG9sZGVyIHRoYW4geHggZGF5cyBmcm9tIGFsbCBjb25maWcgaXRlbXMKICAgIGVsc2lmICgkQWxsT2xkZXJUaGFuRGF5cykgewoKICAgICAgICBteSAkT2xkZXJEYXRlRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAkT2xkZXJEYXRlRFRPYmplY3QtPlN1YnRyYWN0KAogICAgICAgICAgICBEYXlzID0+ICRBbGxPbGRlclRoYW5EYXlzLAogICAgICAgICk7CgogICAgICAgIG15ICRWZXJzaW9uc09sZGVyRGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICAgICAgT2xkZXJEYXRlID0+ICRPbGRlckRhdGVEVE9iamVjdC0+VG9TdHJpbmcoKSwKICAgICAgICApOwoKICAgICAgICAjIFdlIG5lZWQgdG8gZ2V0IGFsbCB2ZXJzaW9ucyB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgdmVyc2lvbiByZW1haW5zCiAgICAgICAgIyAtPiBpZiBvbmUgdmVyc2lvbiBvZiBhIGNvbmZpZ2l0ZW0gaXMgeW91bmdlciB0aGFuIHRoZSBhbW91bnQgb2YgZGF5cywKICAgICAgICAjICAgIHdlIGNhbiBkZWxldGUgYWxsIFZlcnNpb25zIHJlY2VpdmVkIGJ5IHRoZSAiT2xkZXJEYXRlIiBxdWVyeQogICAgICAgICMgLT4gaWYgbm8gdmVyc2lvbiBpcyB5b3VuZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiBkYXlzCiAgICAgICAgIyAgICB3ZSBoYXZlIHRvIGtlZXAgb25lIHZlcnNpb24gb2YgdGhlICJPbGRlckRhdGUiIHF1ZXJ5IHJlc3VsdAogICAgICAgIG15ICRWZXJzaW9uc0FsbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgpOwoKICAgICAgICBteSBAVmVyc2lvbnNUb0RlbGV0ZTsKCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zT2xkZXJEYXRlfSApIHsKCiAgICAgICAgICAgICMgbnVtYmVyIG9mIGZvdW5kIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgQ0kKICAgICAgICAgICAgbXkgJE51bWJlck9mT2xkZXJWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG51bWJlciBvZiBhbGwgdmVyc2lvbnMgb2YgdGhpcyBDSQogICAgICAgICAgICBteSAkTnVtYmVyT2ZBbGxWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG5leHQgaWYgdGhlcmUgYXJlIG5vIG9sZGVyIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTnVtYmVyT2ZPbGRlclZlcnNpb25zOwoKICAgICAgICAgICAgIyBuZXh0IGlmIHRoZXJlIGlzIG9ubHkgb25lIG9yIHplcm8gb2YgYWxsIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICROdW1iZXJPZkFsbFZlcnNpb25zIDw9IDE7CgogICAgICAgICAgICAjIGlmIHRoZSBhbW91bnQgb2YgVmVyc2lvbnMgd2UgaGF2ZSB0byBkZWxldGUKICAgICAgICAgICAgIyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBhbW91bnQgb2YgQWxsVmVyc2lvbnMKICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGtlZXAgdGhlIGxhc3Qgb25lCiAgICAgICAgICAgICMgaW4gb3JkZXIgdG8ga2VlcCB0aGUgc3lzdGVtIHdvcmtpbmcKICAgICAgICAgICAgIwogICAgICAgICAgICAjIC0+IHNvIGxldCdzIHN0YXJ0IGNvdW50aW5nIGF0ICIxIiBpbnN0ZWFkIG9mICIwIgogICAgICAgICAgICAjIGluIG9yZGVyIHRvIHN0b3AgZGVsZXRpbmcgYmVmb3JlIHdlIHJlYWNoIHRoZSBuZXdlc3QgdmVyc2lvbgogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoICROdW1iZXJPZk9sZGVyVmVyc2lvbnMgPT0gJE51bWJlck9mQWxsVmVyc2lvbnMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgbnVtZXJpY2FsbHkgc29ydGVkCiAgICAgICAgICAgIGZvciBteSAkVmVyc2lvbiAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ291bnQgPCAkTnVtYmVyT2ZPbGRlclZlcnNpb25zICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsICRWZXJzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgZXhjZXB0IHRoZSBuZXdlc3QgdmVyc2lvbgogICAgZWxzaWYgKCRBbGxPbGRWZXJzaW9ucykgewoKICAgICAgICBteSAkVmVyc2lvbnNBbGwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkxpc3RBbGwoKTsKCiAgICAgICAgbXkgQFZlcnNpb25zVG9EZWxldGU7CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkVmVyc2lvbnNBbGwpICkgewoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyRWZXJzaW9uc0FsbH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZlcnNpb25zIGFyZSBudW1lcmljYWxseSBzb3J0ZWQKICAgICAgICAgICAgICAgIG15IEBSZWR1Y2VkVmVyc2lvbnMgPSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBsYXN0IChuZXdlc3QpIHZlcnNpb24KICAgICAgICAgICAgICAgIHBvcCBAUmVkdWNlZFZlcnNpb25zOwoKICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsIEBSZWR1Y2VkVmVyc2lvbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgWFggdmVyc2lvbnMKICAgIGVsc2lmICgkQWxsQnV0S2VlcExhc3QpIHsKCiAgICAgICAgbXkgJFZlcnNpb25zQWxsID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKCk7CgogICAgICAgIG15IEBWZXJzaW9uc1RvRGVsZXRlOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uc0FsbCkgKSB7CgogICAgICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zQWxsfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9ICk7CgogICAgICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgdmVyc2lvbnMgYXJlIG51bWVyaWNhbGx5IHJldmVyc2Ugc29ydGVkCiAgICAgICAgICAgICAgICBteSBAUmVkdWNlZFZlcnNpb25zID0gcmV2ZXJzZSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgICAgICAgICBAUmVkdWNlZFZlcnNpb25zID0gZ3JlcCB7ICRDb3VudCsrOyAkQ291bnQgPiAkQWxsQnV0S2VlcExhc3QgfSBAUmVkdWNlZFZlcnNpb25zOwogICAgICAgICAgICAgICAgcHVzaCBAVmVyc2lvbnNUb0RlbGV0ZSwgQFJlZHVjZWRWZXJzaW9uczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1WZXJzaW9ucygKICAgICAgICAgICAgVmVyc2lvbklEcyA9PiBcQFZlcnNpb25zVG9EZWxldGUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIk5vIGNvbmZpZyBpdGVtIGZvciBkZWxldGUuIik7CiAgICB9CgogICAgIyBzaG93IHN1Y2Nlc3NmdWxsIG91dHB1dAogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1zIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWxldGVkQ0k7CgogICAgIyBkZWxldGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtcwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICBteSAkVHJ1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVHJ1ZSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlVuYWJsZSB0byBkZWxldGUgY29uZmlnIGl0ZW0gd2l0aCBpZCAkQ29uZmlnSXRlbUlELiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJERlbGV0ZWRDSSsrOwogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5EZWxldGVkICREZWxldGVkQ0kgY29uZmlnIGl0ZW0ocykuPC9ncmVlbj5cblxuIik7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBEZWxldGVDb25maWdJdGVtVmVyc2lvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRlbGV0aW5nIGNvbmZpZyBpdGVtIHZlcnNpb25zLjwvZ3JlZW4+XG5cbiIpOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIFZlcnNpb25JRHMgPT4gJFBhcmFte1ZlcnNpb25JRHN9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/DumpGraph.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkR1bXBHcmFwaDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkRCCiAgICBLZXJuZWw6OlN5c3RlbTo6TWFpbgopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignRHVtcCB0aGUgZ3JhcGggb2YgY29uZmlnIGl0ZW1zIGFzIFNWRyB0byB0aGUgZmlsZSBPVE9CT19JVFNNX0NvbmZpZ19JdGVtcy5zdmcuJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayB3aGV0aGVyIHRoZSBvcHRpb25hbCBtb2R1bGUgR3JhcGhWaXoyIGlzIGluc3RhbGxlZAogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgaWYgKCAhJE1haW5PYmplY3QtPlJlcXVpcmUoJ0dyYXBoVml6MicpICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCJUaGUgb3B0aW9uYWwgUGVybCBtb2R1bGUgJ0dyYXBoVml6MicgaXMgbm90IGluc3RhbGxlZCIpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3I7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkUm93cyAgICAgPSAkREJPYmplY3QtPlNlbGVjdEFsbCgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQsbGlua190eXBlX2lkCiAgRlJPTSBjb25maWdpdGVtX2xpbmsKRU5EX1NRTAogICAgKTsKCiAgICBteSAkR3JhcGggPSBHcmFwaFZpejItPm5ldygKICAgICAgICBlZGdlICAgPT4geyBjb2xvciAgICA9PiAnZ3JleScgfSwKICAgICAgICBnbG9iYWwgPT4geyBkaXJlY3RlZCA9PiAxIH0sCiAgICAgICAgZ3JhcGggID0+IHsKICAgICAgICAgICAgbGFiZWwgICA9PiAnT1RPQk8gSVRTTSBDb25maWcgSXRlbXMnLAogICAgICAgICAgICByYW5rZGlyID0+ICdUQicKICAgICAgICB9LAogICAgICAgIG5vZGUgPT4gewogICAgICAgICAgICBzaGFwZSA9PiAnb3ZhbCcsCiAgICAgICAgICAgIGNvbG9yID0+ICdibHVlJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGxvb2sgb3ZlciB0aGUgZWRnZXMsIGFkZCBub2RlcywgYWRkIHRoZSBlZGdlcwogICAgbXkgJU5vZGVTZWVuOwogICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgbXkgKCAkU291cmNlQ29uZmlnSXRlbUlELCAkU291cmNlVmVyc2lvbklELCAkVGFyZ2V0Q29uZmlnSXRlbUlELCAkVGFyZ2V0VmVyc2lvbklELCAkTGlua1R5cGVJRCApID0gJFJvdy0+QCo7CgogICAgICAgIG15ICRTb3VyY2VOYW1lID0gJFNvdXJjZUNvbmZpZ0l0ZW1JRCA/ICJDSSAkU291cmNlQ29uZmlnSXRlbUlEIiA6ICJWZXJzaW9uICRTb3VyY2VWZXJzaW9uSUQiOwogICAgICAgIGlmICggISROb2RlU2VlbnskU291cmNlTmFtZX0rKyApIHsKICAgICAgICAgICAgbXkgJFNoYXBlID0gJFNvdXJjZUNvbmZpZ0l0ZW1JRCA/ICdjaXJjbGUnIDogJ2RpYW1vbmQnOwogICAgICAgICAgICAkR3JhcGgtPmFkZF9ub2RlKAogICAgICAgICAgICAgICAgbmFtZSAgPT4gJFNvdXJjZU5hbWUsCiAgICAgICAgICAgICAgICBzaGFwZSA9PiAkU2hhcGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVGFyZ2V0TmFtZSA9ICRUYXJnZXRDb25maWdJdGVtSUQgPyAiQ0kgJFRhcmdldENvbmZpZ0l0ZW1JRCIgOiAiVmVyc2lvbiAkVGFyZ2V0VmVyc2lvbklEIjsKICAgICAgICBpZiAoICEkTm9kZVNlZW57JFRhcmdldE5hbWV9KysgKSB7CiAgICAgICAgICAgIG15ICRTaGFwZSA9ICRUYXJnZXRDb25maWdJdGVtSUQgPyAnY2lyY2xlJyA6ICdkaWFtb25kJzsKICAgICAgICAgICAgJEdyYXBoLT5hZGRfbm9kZSgKICAgICAgICAgICAgICAgIG5hbWUgID0+ICRUYXJnZXROYW1lLAogICAgICAgICAgICAgICAgc2hhcGUgPT4gJFNoYXBlCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkR3JhcGgtPmFkZF9lZGdlKAogICAgICAgICAgICBmcm9tICA9PiAkU291cmNlTmFtZSwKICAgICAgICAgICAgdG8gICAgPT4gJFRhcmdldE5hbWUsCiAgICAgICAgICAgIGxhYmVsID0+ICJMaW5rIFR5cGUgJExpbmtUeXBlSUQiLAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogY2x1c3RlciBhbmQgb3JkZXIgdGhlIHZlcnNpb25zIG9mIGEgQ0kKICAgICAgICAjJEdyYXBoLT5wdXNoX3N1YmdyYXBoKAogICAgICAgICMgICAgbmFtZSAgPT4gJ2NsdXN0ZXJfMScsCiAgICAgICAgIyAgICBncmFwaCA9PiB7bGFiZWwgPT4gJ0NoaWxkJ30sCiAgICAgICAgIyAgICBub2RlICA9PiB7Y29sb3IgPT4gJ21hZ2VudGEnLCBzaGFwZSA9PiAnZGlhbW9uZCd9LAogICAgICAgICMpOwogICAgICAgICMgJEdyYXBoLT5hZGRfZWRnZShmcm9tID0+ICdDaGFkc3RvbmUnLCB0byA9PiAnV2F2ZXJsZXknKTsKICAgICAgICAjICRHcmFwaC0+cG9wX3N1YmdyYXBoOwogICAgfQoKICAgIG15ICRPdXRwdXRGaWxlID0gJ09UT0JPX0lUU01fQ29uZmlnX0l0ZW1zLnN2Zyc7CiAgICAkR3JhcGgtPnJ1biggb3V0cHV0X2ZpbGUgPT4gJE91dHB1dEZpbGUgKTsKCiAgICAkU2VsZi0+UHJpbnQoIkR1bXAgZ3JhcGggaW4gJE91dHB1dEZpbGVcbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPazsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0xpc3QgQ29uZmlnSXRlbXMgd2hpY2ggaGF2ZSBhIG5vbi11bmlxdWUgbmFtZS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NsYXNzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQ2hlY2sgb25seSBjb25maWcgaXRlbXMgb2YgdGhpcyBjbGFzcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnc2NvcGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWZpbmUgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayAoZ2xvYmFsfGNsYXNzKSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLyhnbG9iYWx8Y2xhc3MpL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtc3RhdGVzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWxzbyBjaGVjayBjb25maWcgaXRlbXMgaW4gbm9uLXByb2R1Y3RpdmUgc3RhdGVzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBhcmd1bWVudAogICAgbXkgJENsYXNzID0gJFNlbGYtPkdldE9wdGlvbignY2xhc3MnKSAvLyAnJzsKCiAgICBpZiAoJENsYXNzKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgaW52ZXJ0IHRoZSBoYXNoIHRvIGhhdmUgdGhlIGNsYXNzZXMnIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGlzIGNsYXNzIGV4aXN0cwogICAgICAgIGlmICggJENsYXNzTmFtZTJJRHskQ2xhc3N9ICkgewogICAgICAgICAgICBteSAkSUQgPSAkQ2xhc3NOYW1lMklEeyRDbGFzc307CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcycgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57Q2xhc3NJRHN9ID0gWyRJRF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkaWUgIkNsYXNzICRDbGFzcyBkb2VzIG5vdCBleGlzdC4uLlxuIjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pkxpc3RpbmcgZHVwbGljYXRlcyBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgaWYgKCAhJFNlbGYtPkdldE9wdGlvbignYWxsLXN0YXRlcycpICkgewoKICAgICAgICAjIExpbWl0IHRoZSBjaGVja2VkIGNvbmZpZyBpdGVtcyBieSBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57RGVwbFN0YXRlSURzfSA9IFsga2V5cyAkU3RhdGVMaXN0LT4lKiBdOwogICAgfQoKICAgICMgZ2V0IElUU01Db25maWdJdGVtIG9iamVjdAogICAgbXkgJElUU01Db25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgIG15IEBDb25maWdJdGVtSURzID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT4lKiwKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICk7CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgIyBnZXQgY2xhc3MgYXJndW1lbnQKICAgIG15ICRDbGFzcyA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CgogICAgIyBpZiB0aGVyZSBhcmUgYW55IENJIHRvIGNoZWNrCiAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgIyBpZiB0aGUgc2NvcGUgd2FzIGV4cGxpY2l0ZWx5IGRlZmluZWQsIHNldCBpdCwgb3RoZXJ3aXNlIHRoaXMgc2NyaXB0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZQogICAgICAgICMgdmFsdWUgc2V0IGluIFN5c0NvbmZpZwogICAgICAgIG15ICRTY29wZSA9ICRTZWxmLT5HZXRPcHRpb24oJ3Njb3BlJyk7CiAgICAgICAgaWYgKCRTY29wZSkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5TZXQoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU2NvcGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENsYXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBjb25maWcgaXRlbXMgb2YgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBhbGwgY29uZmlnIGl0ZW1zLi4uXG48L3llbGxvdz5cbiIpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICc9JyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKCiAgICAgICAgbXkgJER1cGxpY2F0ZXNGb3VuZCA9IDA7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW1zCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBjb25maWcgaXRlbQogICAgICAgICAgICBteSAkVmVyc2lvbiA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRWZXJzaW9uOwoKICAgICAgICAgICAgaWYgKCAhJFZlcnNpb24tPntOYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Ta2lwcGluZyBDb25maWdJdGVtICRDb25maWdJdGVtSUQgYXMgaXQgZG9lc24ndCBoYXZlIGEgbmFtZS5cbjwvcmVkPlxuIik7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb24tPntOYW1lfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJER1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICREdXBsaWNhdGVzRm91bmQgPSAxOwoKICAgICAgICAgICAgICAgIG15IEBEdXBsaWNhdGVEYXRhID0KICAgICAgICAgICAgICAgICAgICBtYXAgeyAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoIENvbmZpZ0l0ZW1JRCA9PiAkXyApIH0KICAgICAgICAgICAgICAgICAgICAkRHVwbGljYXRlcy0+QCo7CgogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICI8eWVsbG93PkNvbmZpZ0l0ZW0gJFZlcnNpb24tPntOdW1iZXJ9IChOYW1lOiAkVmVyc2lvbi0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiJFZlcnNpb24tPntDb25maWdJdGVtSUR9KSBoYXMgdGhlIGZvbGxvd2luZyBkdXBsaWNhdGVzOjwveWVsbG93PlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGxpc3QgYWxsIHRoZSBkZXRhaWxzIG9mIHRoZSBkdXBsaWNhdGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJER1cGxpY2F0ZVZlcnNpb24gKEBEdXBsaWNhdGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICAgICAiXG48Z3JlZW4+XHQgKiAkRHVwbGljYXRlVmVyc2lvbi0+e051bWJlcn0gKENvbmZpZ0l0ZW1JRDogJER1cGxpY2F0ZVZlcnNpb24tPntDb25maWdJdGVtSUR9KTwvZ3JlZW4+XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJER1cGxpY2F0ZXNGb3VuZCkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5GaW5pc2hlZCBjaGVja2luZyBmb3IgZHVwbGljYXRlIG5hbWVzLlxuPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pk5vIGR1cGxpY2F0ZSBuYW1lcyBmb3VuZC5cbjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBOTyBjb25maWcgaXRlbXMgdG8gY2hlY2suXG48L3llbGxvdz5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTE7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBQYXRoOjpDbGFzcyBxdyhkaXIpOwp1c2UgTGlzdDo6VXRpbCAgcXcoYW55IHVuaXEpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpGb3JlYWNoVG9Gb3IpCgojIEluZm9ybSB0aGUgb2JqZWN0IG1hbmFnZXIgYWJvdXQgdGhlIGhhcmQgZGVwZW5kZW5jaWVzLgojIFRoaXMgbW9kdWxlIG11c3QgYmUgZGlzY2FyZGVkIHdoZW4gb25lIG9mIHRoZSBoYXJkIGRlcGVuZGVuY2llcyBoYXMgYmVlbiBkaXNjYXJkZWQuCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpYTUwnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OlVwZ3JhZGVUbzExIC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMT4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnVXBncmFkZSB0aGUgY29tcGxldGUgQ01EQiBmcm9tIE9UT0JPIDEwIHRvIE9UT0JPIDExLiBBbGwgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgd2lsbCBiZSBjaGFuZ2VkLCBmb3IgZWFjaCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgYSBkeW5hbWljIGZpZWxkIHdpbGwgYmUgcHJlcGFyZWQgYW5kIHRoZSBkYXRhIHdpbGwgYmUgbWlncmF0ZWQuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIk1ha2UgdGhlIHNjcmlwdCBub24gaW50ZXJhY3RpdmUuIEFsd2F5cyB1c2UgZGVmYXVsdCBzdWdnZXN0aW9ucyBhbmQgZG8gbm90IGdpdmUgdGhlIGNoYW5jZSB0byBjdXN0b21pemUgdGhlIHNjaGVtYXRhLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3N0YXJ0LWF0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3RhcnQgYXQgYSBjZXJ0YWluIHN0ZXAuIFZhbGlkIHZhbHVlcyBhcmU6IDAgLSBSZXN0YXJ0IGNvbXBsZXRlbHk7IDEgLSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL15bMC00XSQvLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3RtcGRpcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlByb3ZpZGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIG1hcHBpbmdzIGFuZCBzY2hlbWF0YS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICduby1uYW1lc3BhY2UnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJQcm92aWRlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlcyB3aGljaCBhcmUgdG8gYmUgZ2VuZXJhdGVkIHdpdGhvdXQgbmFtZXNwYWNlLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgRGVjbGFyYXRpb24gb2YgcHJvY2Vzc2luZyBzdGVwcy4KICAgICMgVGhpcyBhbGxvd3MgcGlja2luZyB1cCBwcm9jZXNzaW5nIGF0IGEgc3BlY2lmaWMgc3RlcC4gT24gdGhlIGNvbW1hbmQgbGluZQogICAgIyB0aGUgc3RlcHMgYXJlIG51bWJlcmVkLCBzdGFydGluZyBhdCAxLgogICAgbXkgQFN0ZXBEZWNsYXJhdGlvbnMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdQcmVwYXJlIEF0dHJpYnV0ZSBNYXBwaW5nJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9QcmVwYXJlQXR0cmlidXRlTWFwcGluZywKICAgICAgICB9LAoKICAgICAgICAjICdQcmVwYXJlIER5bmFtaWNGaWVsZHMnLCAgIyBuZWNlc3Nhcnk/IHdoYXQgZG8gd2Ugd2FudCB0byBtYWtlIGNvbmZpZ3VyYWJsZSBiZXNpZGVzIHRoZSBuYW1lPyAoc3RlcCAwKQogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICA9PiAnUHJlcGFyZSBEZWZpbml0aW9ucycsCiAgICAgICAgICAgIEhhbmRsZXIgPT4gXCZfUHJlcGFyZURlZmluaXRpb25zLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdNaWdyYXRlIERlZmluaXRpb25zJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9NaWdyYXRlRGVmaW5pdGlvbnMsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgPT4gJ01pZ3JhdGUgQXR0cmlidXRlIERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX01pZ3JhdGVBdHRyaWJ1dGVEYXRhLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdEZWxldGUgTGVnYWN5IERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX0RlbGV0ZUxlZ2FjeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFRlbXBEaXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RlbXBEaXInKTsKCiAgICAkU2VsZi0+e1dvcmtpbmdEaXJ9ICA9ICRTZWxmLT5HZXRPcHRpb24oJ3RtcGRpcicpIHx8ICIkVGVtcERpci9DTURCVXBncmFkZVRvMTFTY2hlbWF0YSI7CiAgICAkU2VsZi0+e1VzZURlZmF1bHRzfSA9ICRTZWxmLT5HZXRPcHRpb24oJ3VzZS1kZWZhdWx0cycpOwogICAgJFNlbGYtPntOb05hbWVzcGFjZX0gPSAkU2VsZi0+R2V0T3B0aW9uKCduby1uYW1lc3BhY2UnKTsKICAgIG15ICRTdGFydEF0ID0gJFNlbGYtPkdldE9wdGlvbignc3RhcnQtYXQnKSAvLyAkU2VsZi0+X0dldEN1cnJlbnRTdGVwKCk7CgogICAgaWYgKCRTdGFydEF0KSB7CiAgICAgICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPk5lZWQgZXhpc3Rpbmcgd29ya2luZyBkaXJlY3RvcnkgJyRTZWxmLT57V29ya2luZ0Rpcn0nLjwvcmVkPlxuIik7CgogICAgICAgICAgICBkaWU7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Q29udGludWUgQ01EQiB1cGdyYWRlIGF0OiAnJFN0ZXBEZWNsYXJhdGlvbnNbICRTdGFydEF0IF0tPntOYW1lfSchPC95ZWxsb3c+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5TdGFydGluZyBDTURCIHVwZ3JhZGUhPC95ZWxsb3c+XG4iKTsKICAgIH0KCiAgICAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICRTZWxmLT57WUFNTE9iamVjdH0gICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICAjIGxpc3Qgb2YgQ29uZmlnSXRlbSBjbGFzc2VzLCBlaXRoZXIgaW4gT1RPQk8gMTAgb3IgT1RPQk8gMTEgZm9ybWF0CiAgICAkU2VsZi0+e0NsYXNzTGlzdH0gPSAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBnZXQgY29tcGxldGUgaGlzdG9yeSBvZiB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBjb25maWdpdGVtIGNsYXNzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewogICAgICAgICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkRlZmluaXRpb25MaXN0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFN1Y2Nlc3M7CiAgICBTVEVQOgogICAgZm9yIG15ICRDdXJyZW50U3RlcCAoICRTdGFydEF0IC4uICQjU3RlcERlY2xhcmF0aW9ucyApIHsKICAgICAgICBteSAkU3RlcERlY2xhcmF0aW9uID0gJFN0ZXBEZWNsYXJhdGlvbnNbJEN1cnJlbnRTdGVwXTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPn5+IFN0ZXAgJEN1cnJlbnRTdGVwIH5+XG5TdGFydCB3b3JraW5nIG9uICRTdGVwRGVjbGFyYXRpb24tPntOYW1lfTwvZ3JlZW4+XG4iKTsKICAgICAgICAkU3VjY2VzcyA9ICRTdGVwRGVjbGFyYXRpb24tPntIYW5kbGVyfS0+KAogICAgICAgICAgICAkU2VsZiwKICAgICAgICAgICAgQ3VycmVudFN0ZXAgPT4gJEN1cnJlbnRTdGVwLAogICAgICAgICk7CgogICAgICAgIGxhc3QgU1RFUCB1bmxlc3MgJFN1Y2Nlc3M7CiAgICAgICAgbGFzdCBTVEVQIHVubGVzcyAkU3VjY2VzcyBlcSAnTmV4dCc7CiAgICB9CgogICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSE8L2dyZWVuPlxuIik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPazsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5BbiBlcnJvciBvY2N1cnJlZCE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3I7CiAgICB9Cn0KCj1oZWFkMSBQUklWQVRFIE1FVEhPRFMKCj1oZWFkMiAgX0dldEN1cnJlbnRTdGVwKCkKClRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCgo9Y3V0CgpzdWIgX0dldEN1cnJlbnRTdGVwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDA7Cn0KCj1oZWFkMiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcoKQoKQ29sbGVjdCB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIGFueSB2ZXJzaW9uIG9mIGFueSBvZiB0aGUgbGVnYWN5IGNvbmZpZyBpdGVtIGNsYXNzZXMuCgpPbmUgbWFwcGluZyBpcyBkdW1wZWQgcGVyIGNvbmZpZyBpdGVtIGNsYXNzLiBUaGlzIG1hcHBpbmcgbWFwcyB0aGUga2V5IG9mIHRoZSBsZWdhY3kgYXR0cmlidXRlCnRvIHRoZSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjb25maWcgaXRlbSBpbiBPVE9CTyAxMS4KCj1jdXQKCnN1YiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIFRPRE86IGNyZWF0ZSBkaXJlY3RvcnkgaW4gYW4gaW5pdGlhbGl6YXRpb24gc3Vicm91dGluZQogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICBkaXIoICRTZWxmLT57V29ya2luZ0Rpcn0gKS0+bWtwYXRoKCAwLCBvY3QoJzc3MCcpICk7ICAgICMgMCB0dXJucyBvZmYgdmVyYm9zaXR5CiAgICB9CgogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGNyZWF0ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkgJzwvcmVkPiRTZWxmLT57V29ya2luZ0Rpcn08cmVkPicuPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Xcml0aW5nIGF0dHJpYnV0ZSBtYXBzIGludG88L3llbGxvdz4gJFNlbGYtPntXb3JraW5nRGlyfVxuIik7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICVOb05hbWVzcGFjZTsKICAgIGlmICggJFNlbGYtPntOb05hbWVzcGFjZX0gKSB7CiAgICAgICAgJU5vTmFtZXNwYWNlID0gbWFwIHsgJF8gPT4gMSB9IHNwbGl0KCAvXHMqLFxzKi8sICRTZWxmLT57Tm9OYW1lc3BhY2V9ICk7CiAgICB9CgogICAgQ0xBU1NfSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewoKICAgICAgICAjIExvb3Agb3ZlciBhbGwgdmVyc2lvbnMgb2YgZGVmaW5pdGlvbnMgZm9yIHRoYXQgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSBAQXR0cmlidXRlS2V5czsKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCAkU2VsZi0+e0RlZmluaXRpb25MaXN0fXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBteSBAQXR0cmlidXRlc0ZvclZlcnNpb24gPSAkU2VsZi0+X0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCgKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIFJlY3VTdWJzICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgbm90IGNhcmluZyBhYm91dCBkdXBsaWNhdGVzIGhlcmUKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlS2V5cywgbWFwIHsgJF8tPntLZXl9IH0gQEF0dHJpYnV0ZXNGb3JWZXJzaW9uOwogICAgICAgIH0KCiAgICAgICAgIyBkbyBub3Qgd3JpdGUgYW4gYXR0cmlidXRlIG1hcCBmb3IgT1RPQk8gMTEgY29uZmlnIGl0ZW1zCiAgICAgICAgIyBUT0RPOiBtYXliZSBjaGVjayBmb3IgYSBtaXggb2YgT1RPQk8gMTAgYW5kIE9UT0JPIDExIGZvcm1hdHMKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBAQXR0cmlidXRlS2V5czsKCiAgICAgICAgbXkgJE5hbWVzcGFjZSA9ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gPX4gcy9bXlx3XGRdLy9ncjsKCiAgICAgICAgIyBUT0RPOiB3aGF0IGlzIHNwZWNpYWwgYWJvdXQgVW1sYXV0cyBhbmQgw58KICAgICAgICBteSAlU3Vic3RpdGlvbnMgPSAoCiAgICAgICAgICAgICfDpCcgPT4gJ2FlJywKICAgICAgICAgICAgJ8O2JyA9PiAnb2UnLAogICAgICAgICAgICAnw7wnID0+ICd1ZScsCiAgICAgICAgICAgICfDnycgPT4gJ3NzJywKICAgICAgICAgICAgJ18nICA9PiAnJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFN1YiAoIHNvcnQga2V5cyAlU3Vic3RpdGlvbnMgKSB7CiAgICAgICAgICAgICROYW1lc3BhY2UgPX4gcy8kU3ViLyRTdWJzdGl0aW9uc3skU3VifS87CiAgICAgICAgfQoKICAgICAgICBteSAlQXR0cmlidXRlTWFwOwogICAgICAgIGZvciBteSAkS2V5ICggdW5pcSBAQXR0cmlidXRlS2V5cyApIHsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRLZXkgPX4gcy9bXlx3XGRdLy9ncjsKICAgICAgICAgICAgZm9yIG15ICRTdWIgKCBzb3J0IGtleXMgJVN1YnN0aXRpb25zICkgewogICAgICAgICAgICAgICAgJEZpZWxkTmFtZSA9fiBzLyRTdWIvJFN1YnN0aXRpb25zeyRTdWJ9LzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEF0dHJpYnV0ZU1hcHskS2V5fSA9ICROb05hbWVzcGFjZXskS2V5fSA/ICRGaWVsZE5hbWUgOiAkTmFtZXNwYWNlIC4gJy0nIC4gJEZpZWxkTmFtZTsKICAgICAgICB9CgogICAgICAgIG15ICRNYXBZQU1MID0gJFNlbGYtPntZQU1MT2JqZWN0fS0+RHVtcCgKICAgICAgICAgICAgRGF0YSA9PiBcJUF0dHJpYnV0ZU1hcCwKICAgICAgICApOwoKICAgICAgICAkTWFpbk9iamVjdC0+RmlsZVdyaXRlKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICdBdHRyaWJ1dGVNYXBfJyAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnLnltbCcsCiAgICAgICAgICAgIENvbnRlbnQgICA9PiBcJE1hcFlBTUwsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9Db250aW51ZU9yTm90KCBDdXJyZW50U3RlcCA9PiAkUGFyYW17Q3VycmVudFN0ZXB9ICk7Cn0KCnN1YiBfUHJlcGFyZURlZmluaXRpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PldyaXRpbmcgY2xhc3MgZGVmaW5pdGlvbnMuPC95ZWxsb3c+XG4iKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgIyB3aGVuIGNoZWNraW5nIGZvciB0aGUgbmVjZXNzYXJ5IHBhY2thZ2VzIHRvIGluc3RhbGwgd2l0aG91dCAtLXVzZS1kZWZhdWx0cwogICAgIyBpZiBleGlzdHMgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9yIG1vcmUgdGhhbiBvbmUgdmVyc2lvbiBvZiBhbiBlbGVtZW50IHRoYXQgcmVxdWlyZXMgYSBwYWNrYWdlCiAgICAjIHRoZSBzYW1lIG1lc3NhZ2UgaXMgaXNzdWVkIHJlcGVhdGVkbHkgcmVmZXJyaW5nIHRvIHRoZSBzYW1lIHBhY2thZ2UKICAgICMgdGhpcyBoYXNoIGlzIHVzZWQgdG8gcHJldmVudCBtZXNzYWdlIHJlcGV0aXRpb24KICAgIG15ICVDaGVja2VkUGFja2FnZXM7CgogICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9ID0gMDsKCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICRTZWxmLT57Q2xhc3NMaXN0fS0+JSogKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBteSAkTWFwUmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZUNsZWFuLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICAjIFRoaXMgaGFwcGVucyB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIG9yIHdoZW4gdGhlIGNsYXNzIGFscmVhZHkgd2FzIGluIE9UT0JPIDExIGZvcm1hdC4KICAgICAgICAjIFRPRE86IGhlcmUgaXQgaXMgYW4gZXJyb3Igbm93LCB3ZSBkb24ndCBldmVuIHRyeSBpZiB0aGUgZmlsZSBpcyByZW1vdmVkCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgZGVmaW5lZCAkTWFwUmVmOwoKICAgICAgICBteSAkQXR0cmlidXRlTWFwID0gJFNlbGYtPntZQU1MT2JqZWN0fS0+TG9hZCgKICAgICAgICAgICAgRGF0YSA9PiAkeyRNYXBSZWZ9LAogICAgICAgICk7CgogICAgICAgICMgYSBzYW5pdHkgY2hlY2sKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyByZWYgJEF0dHJpYnV0ZU1hcCBlcSAnSEFTSCc7CgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbiAoICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgIG15IEBBdHRyaWJ1dGVzID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVzRnJvbUxlZ2FjeVlBTUwoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0dlbmVyYXRlRGVmaW5pdGlvbllBTUwoCiAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwICAgID0+ICRBdHRyaWJ1dGVNYXAsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICAgICBDaGVja2VkUGFja2FnZXMgPT4gXCVDaGVja2VkUGFja2FnZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRmlsZUxvY2F0aW9uID0gJE1haW5PYmplY3QtPkZpbGVXcml0ZSgKICAgICAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0NJRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gJy55bWwnLAogICAgICAgICAgICAgICAgQ29udGVudCAgID0+IFwkRGVmaW5pdGlvbllBTUwtPntDb25maWdJdGVtfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRGaWxlTG9jYXRpb24gPSAkTWFpbk9iamVjdC0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgRGlyZWN0b3J5ID0+ICRTZWxmLT57V29ya2luZ0Rpcn0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfREZEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAnLnltbCcsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gXCREZWZpbml0aW9uWUFNTC0+e0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9ICkgewogICAgICAgICRTZWxmLT5QcmludCgiXG48cmVkPkltcG9ydCBmYWlsZWQuIFRoZXJlIGFyZSAkU2VsZi0+e01pc3NpbmdQYWNrYWdlc30gbmVjZXNzYXJ5IHBhY2thZ2UocykgbWlzc2luZyBpbnN0YWxsYXRpb24uPC9yZWQ+XG4iKTsKICAgICAgICByZXR1cm4gJ0V4aXQnOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0NvbnRpbnVlT3JOb3QoIEN1cnJlbnRTdGVwID0+ICRQYXJhbXtDdXJyZW50U3RlcH0gKTsKfQoKc3ViIF9NaWdyYXRlRGVmaW5pdGlvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+SW1wb3J0IGRlZmluaXRpb25zLjwveWVsbG93PlxuIik7CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkWE1MT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpOwoKICAgICMga2VlcCB0aGUgbGVnYWN5IGRlZmluaXRpb24gZm9yIG5vdwogICAgbXkgJENvbHVtbkFkZFhNTCA9IDw8J0VORF9YTUwnOwo8VGFibGVBbHRlciBOYW1lPSJjb25maWdpdGVtX2RlZmluaXRpb24iPgogIDxDb2x1bW5BZGQgTmFtZT0iY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSIgUmVxdWlyZWQ9ImZhbHNlIiBUeXBlPSJMT05HQkxPQiIgLz4KPC9UYWJsZUFsdGVyPgpFTkRfWE1MCgogICAgIyBDcmVhdGUgZGF0YWJhc2Ugc3BlY2lmaWMgU1FMIGFuZCBQb3N0U1FMIGNvbW1hbmRzIG91dCBvZiBYTUwuCiAgICBteSBAQWRkWE1MQVJSQVkgPSAkWE1MT2JqZWN0LT5YTUxQYXJzZSggU3RyaW5nID0+ICRDb2x1bW5BZGRYTUwgKTsKCiAgICAjIENyZWF0ZSBkYXRhYmFzZSBzcGVjaWZpYyBTUUwuCiAgICBteSBAQ29sdW1uQWRkU1FMID0gJERCT2JqZWN0LT5TUUxQcm9jZXNzb3IoCiAgICAgICAgRGF0YWJhc2UgPT4gXEBBZGRYTUxBUlJBWSwKICAgICk7CgogICAgIyBDcmVhdGUgZGF0YWJhc2Ugc3BlY2lmaWMgUG9zdFNRTC4KICAgIG15IEBDb2x1bW5BZGRTUUxQb3N0ID0gJERCT2JqZWN0LT5TUUxQcm9jZXNzb3JQb3N0KCk7CgogICAgIyBFeGVjdXRlIFNRTC4KICAgIGZvciBteSAkU1FMICggQENvbHVtbkFkZFNRTCwgQENvbHVtbkFkZFNRTFBvc3QgKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKCBTUUwgPT4gJFNRTCApOwogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHllbGxvdz5Db3VsZCBub3QgY2xvbmUgdGhlIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBjb2x1bW4gREIgdGFibGUuIElmIHlvdSBhdHRlbXB0ZWQgdGhpcyBzdGVwIGVhcmxpZXIsIHBsZWFzZSB3cml0ZSAnY29uJyB0byBjb250aW51ZS48L3llbGxvdz5cblx0IgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIGlmIDxTVERJTj4gIX4gbS9eY29uKHRpbnVlKT8kLzsKICAgICAgICB9CiAgICB9CgogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX2RlZmluaXRpb24gU0VUIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9sZWdhY3kgPSBjb25maWdpdGVtX2RlZmluaXRpb24nLAogICAgKTsKCiAgICBteSAlRHluYW1pY0ZpZWxkczsKICAgIG15ICVEZWZpbml0aW9uczsKICAgIG15ICVOYW1lc3BhY2VzOwoKICAgICMgY29sbGVjdCBkYXRhCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICRTZWxmLT57Q2xhc3NMaXN0fS0+JSogKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBERUZJTklUSU9OOgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbiAoICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfS0+QCogKSB7CgogICAgICAgICAgICBteSAkRmlsZW5hbWVDbGVhbiA9ICRNYWluT2JqZWN0LT5GaWxlbmFtZUNsZWFuVXAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJ19DSURlZmluaXRpb25fJyAuICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSAuICcueW1sJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2tpcCBkZWZpbml0aW9ucyBpZiBmaWxlcyBhcmUgbm90IHByb3ZpZGVkOyBUT0RPOiBvbmx5IHNraXAgd2l0aG91dCBlcnJvciBpZiB0aGlzIGlzIGZvciB0aGUgd2hvbGUgY2xhc3MKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVlBTUwgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWVDbGVhbiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkeyRDb25maWdJdGVtWUFNTH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFRPRE86IEFkZCBhbmQgdXNlIGEgRGVmaW5pdGlvbkNoZWNrIG9mIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RGVmaW5pdGlvbgoKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1EZWZpbml0aW9uICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCAiPHJlZD5Db3VsZCBub3QgaW50ZXJwcmV0IiAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0NJRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gIi55bWwhPC9yZWQ+XG4iICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsZW5hbWVDbGVhbiA9ICRNYWluT2JqZWN0LT5GaWxlbmFtZUNsZWFuVXAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJ19ERkRlZmluaXRpb25fJyAuICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSAuICcueW1sJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRZQU1MID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICAgICAgRGlyZWN0b3J5ID0+ICRTZWxmLT57V29ya2luZ0Rpcn0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lQ2xlYW4sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkeyREeW5hbWljRmllbGRZQU1MfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGREZWZpbml0aW9uICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCAiPHJlZD5Db3VsZCBub3QgaW50ZXJwcmV0IiAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0RGRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gIi55bWwhPC9yZWQ+XG4iICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRGVmaW5pdGlvbnN7JENsYXNzSUR9eyAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gfSA9IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1ZQU1MID0+ICR7JENvbmZpZ0l0ZW1ZQU1MfSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICREeW5hbWljRmllbGREZWZpbml0aW9uLT4lKiApIHsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRzeyROYW1lfSA9ICREeW5hbWljRmllbGREZWZpbml0aW9uLT57JE5hbWV9OwoKICAgICAgICAgICAgICAgIGlmICggJE5hbWUgPX4gL14oW14tXSspLS8gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5hbWVzcGFjZXN7JDF9ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGREZWZpbml0aW9uLT57JE5hbWV9e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbmNsdWRlZCAoICREeW5hbWljRmllbGREZWZpbml0aW9uLT57JE5hbWV9e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmNsdWRlZC0+e0RGfSA9fiAvXihbXi1dKyktLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROYW1lc3BhY2VzeyQxfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRzeyAkSW5jbHVkZWQtPntERn0gfSA9ICRJbmNsdWRlZC0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBuYW1lc3BhY2Ugc2V0dGluZyBpZiBlbXB0eQogICAgbXkgJE5hbWVzcGFjZXNTZXR0aW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnKTsKICAgIGlmICggJU5hbWVzcGFjZXMgJiYgKCAhJE5hbWVzcGFjZXNTZXR0aW5nIHx8ICEkTmFtZXNwYWNlc1NldHRpbmctPkAqICkgKSB7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgIExvY2tBbGwgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcycsCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlICAgID0+IFsgc29ydCBrZXlzICVOYW1lc3BhY2VzIF0sCiAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBBZGQgZHluYW1pYyBmaWVsZCBuYW1lc3BhY2VzLiIsCiAgICAgICAgICAgIEFsbFNldHRpbmdzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICglTmFtZXNwYWNlcykgewogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgIlxuPHllbGxvdz5Zb3UgYWxyZWFkeSBoYXZlIGR5bmFtaWMgZmllbGQgbmFtZXNwYWNlcyBkZXBsb3llZCwgdGh1cyB0aGUgbmV3IG9uZXMgd2lsbCBub3QgYXV0b21hdGljYWxseSBiZSBzZXQuIFBsZWFzZSBhZGQgdGhlbSBtYW51YWxseTo8L3llbGxvdz5cbiIKICAgICAgICApOwogICAgICAgIGZvciBteSAkTmFtZXNwYWNlICggc29ydCBrZXlzICVOYW1lc3BhY2VzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIlx0JE5hbWVzcGFjZVxuIik7CiAgICAgICAgfQogICAgICAgICRTZWxmLT5QcmludCgiXG4iKTsKICAgIH0KCiAgICAjIGdldCBjdXJyZW50IGZpZWxkIG9yZGVyCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CiAgICBteSAkT3JkZXIgPSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CgogICAgIyBjcmVhdGUgZHluYW1pYyBmaWVsZHMKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZHMgKSB7CiAgICAgICAgbXkgJVNldENvbmZpZzsKICAgICAgICBpZiAoICREeW5hbWljRmllbGRzeyRGaWVsZH17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgbXkgQEluY2x1ZGVkID0gbWFwIHsgeyBERiA9PiAkXy0+e0RGfSB9IH0gJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtDb25maWd9e0luY2x1ZGV9LT5AKjsKICAgICAgICAgICAgJVNldENvbmZpZyA9ICgKICAgICAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtDb25maWd9LT4lKiwKICAgICAgICAgICAgICAgICAgICBJbmNsdWRlID0+IFxASW5jbHVkZWQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtJRH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgICAgICREeW5hbWljRmllbGRzeyRGaWVsZH0tPiUqLAogICAgICAgICAgICAlU2V0Q29uZmlnLAogICAgICAgICAgICBGaWVsZE9yZGVyID0+ICsrJE9yZGVyLAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFJlb3JkZXIgICAgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtJRH0gKSB7CgogICAgICAgICAgICAjIFRPRE86IGFsdGVybmF0aXZlbHkgdHJ5IHRvIGdldCB0aGUgREYsIGFuZCBjaGVjayB3aGV0aGVyIGl0cyBkZWZpbml0aW9uIGZpdHMuIE1heWJlIHN0aWxsIGFzawogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY3JlYXRlIGR5bmFtaWMgZmllbGQgJEZpZWxkISBGaXggaXRzIGRlZmluaXRpb25zIGFuZCBkZWxldGUgYWxsIG90aGVyIGR5bmFtaWMgZmllbGRzIGNyZWF0ZWQgYnkgdGhpcyBwcm9jZXNzIGJlZm9yZSByZXRyeWluZy48L3JlZD5cbiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEFsbFN1Y2Nlc3MgPSAxOwoKICAgICMgc2V0IG5ldyBkZWZpbml0aW9ucwogICAgQ0xBU1NfSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlRGVmaW5pdGlvbnMgKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBERUZJTklUSU9OOgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbklEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJERlZmluaXRpb25zeyRDbGFzc0lEfS0+JSogKSB7CgogICAgICAgICAgICAjIGFkZCB0aGUgSUQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgZHluYW1pYyBmaWVsZHMgdG8gdGhlaXIgZGVmaW5pdGlvbiBzcGVjaWZpYyBjb25maWdzCiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggdmFsdWVzICREZWZpbml0aW9uc3skQ2xhc3NJRH17JERlZmluaXRpb25JRH17RHluYW1pY0ZpZWxkfS0+JSogKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57SUR9ID0gJER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGQtPntOYW1lfSB9e0lEfTsKCiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZWQgKCAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0lEfSA9ICREeW5hbWljRmllbGRzeyAkSW5jbHVkZWQtPntERn0gfXtJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkWUFNTCA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvbnN7JENsYXNzSUR9eyREZWZpbml0aW9uSUR9e0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICdVUERBVEUgY29uZmlnaXRlbV9kZWZpbml0aW9uIFNFVCBjb25maWdpdGVtX2RlZmluaXRpb24gPSA/LCBkeW5hbWljZmllbGRfZGVmaW5pdGlvbiA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJERlZmluaXRpb25zeyRDbGFzc0lEfXskRGVmaW5pdGlvbklEfXtDb25maWdJdGVtWUFNTH0sIFwkRHluYW1pY0ZpZWxkWUFNTCwgXCREZWZpbml0aW9uSUQgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgVE9ETzogSWYgYW4gZXJyb3Igb2NjdXJzLCBhc2ssIHdoZXRoZXIgd2Ugc2hvdWxkIGNvbnRpbnVlIG9yIG5vdCBwcm9iYWJseS4gSGVyZSBpdCB3b3VsZCBzdGFydCB0byBnZXQgbWVzc3kuLi4KICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IHVwZGF0ZSBEQiBlbnRyeSBvZiBkZWZpbml0aW9uIGlkICckRGVmaW5pdGlvbklEJyE8L3JlZD5cbiIpOwogICAgICAgICAgICAgICAgJEFsbFN1Y2Nlc3MgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkUGVybWlzc2lvbkdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgICk7CgogICAgICAgICMgdXBkYXRlIGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzRGVmYXVsdHMgPSAoCiAgICAgICAgICAgIFBlcm1pc3Npb24gICAgICAgICAgPT4gWyRQZXJtaXNzaW9uR3JvdXBJRF0sCiAgICAgICAgICAgIE51bWJlck1vZHVsZSAgICAgICAgPT4gWydBdXRvSW5jcmVtZW50J10sCiAgICAgICAgICAgIFZlcnNpb25TdHJpbmdNb2R1bGUgPT4gWydJbmNyZW1lbnRhbCddLAogICAgICAgICAgICBDYXRlZ29yaWVzICAgICAgICAgID0+IFsnQWxsJ10sCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBrZXlzICVQcmVmZXJlbmNlc0RlZmF1bHRzICkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT57R2VuZXJhbENhdGFsb2dPYmplY3R9LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlLAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRQcmVmZXJlbmNlc0RlZmF1bHRzeyRQcmVmZXJlbmNlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBzZXQgcHJlZmVyZW5jZSAnJFByZWZlcmVuY2UnIGZvciBjbGFzcyAnJENsYXNzSUQnITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHVubGVzcyAkQWxsU3VjY2VzczsKICAgIHJldHVybiAnTmV4dCc7Cn0KCnN1YiBfTWlncmF0ZUF0dHJpYnV0ZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Q29weSBhdHRyaWJ1dGUgZGF0YS48L3llbGxvdz5cbiIpOwoKICAgIG15ICRNYWluT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24gU0VUIGNoYW5nZV90aW1lPWNyZWF0ZV90aW1lLCBjaGFuZ2VfYnk9Y3JlYXRlX2J5IFdIRVJFIGNoYW5nZV9ieSBJUyBOVUxMOycsCiAgICApOwoKICAgIG15ICVCYXNlQXJyYXlGaWVsZHMgPSBtYXAgeyAkXyA9PiAxIH0gcXcvR2VuZXJhbENhdGFsb2cgQ3VzdG9tZXJDb21wYW55IEN1c3RvbWVyVXNlciBUaWNrZXQgQ29uZmlnSXRlbSBBZ2VudCBTZXJ2aWNlIFF1ZXVlIFNMQSBUeXBlLzsKICAgIG15ICREaXNhYmxlZEhpc3Rvcnk7CiAgICBteSAkSGlzdG9yeVNldHRpbmcgPSBxe0lUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMxMDAtSGlzdG9yeX07CgogICAgZGVsZXRlICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH17Q2FjaGV9e0RlZmluaXRpb25HZXR9OwogICAgbG9jYWwgJHwgPSAxOwoKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJFNlbGYtPntDbGFzc0xpc3R9LT4lKiApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lQ2xlYW4gPSAkTWFpbk9iamVjdC0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQXR0cmlidXRlTWFwXycgLiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJy55bWwnLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgIG15ICRNYXBSZWYgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lQ2xlYW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBTa2lwIHRoZSBjbGFzcyB3aGVuIHRoZXJlIGlzIG5vIGF0dHJpYnV0ZSBtYXBwaW5nLgogICAgICAgICMgVGhpcyBoYXBwZW5zIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgb3Igd2hlbiB0aGUgY2xhc3MgYWxyZWFkeSB3YXMgaW4gT1RPQk8gMTEgZm9ybWF0LgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIGRlZmluZWQgJE1hcFJlZjsKCiAgICAgICAgbXkgJEF0dHJpYnV0ZU1hcCA9ICRTZWxmLT57WUFNTE9iamVjdH0tPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJHskTWFwUmVmfSwKICAgICAgICApOwoKICAgICAgICAjIGEgc2FuaXR5IGNoZWNrCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgcmVmICRBdHRyaWJ1dGVNYXAgZXEgJ0hBU0gnOwoKICAgICAgICAjIGZvciBzZXRzCiAgICAgICAgbXkgJEF0dHJpYnV0ZUxvb2t1cCA9IHsgcmV2ZXJzZSAkQXR0cmlidXRlTWFwLT4lKiB9OwoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb25JRCAoIG1hcCB7ICRfLT57RGVmaW5pdGlvbklEfSB9ICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgICREZWZpbml0aW9ueyREZWZpbml0aW9uSUR9ID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIHZlcnNpb25zIG9mIGEgY2xhc3MgaW4gb25lIGdvCiAgICAgICAgIyBUT0RPOiBEbyB3ZSBuZWVkIGJhdGNoZXMgZm9yIHJlYWxseSBsYXJnZSBDTURCcz8KICAgICAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIHYuaWQsIHYuZGVmaW5pdGlvbl9pZCwgdi5jb25maWdpdGVtX2lkCiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gdgogIElOTkVSIEpPSU4gY29uZmlnaXRlbSBjaSBPTiB2LmNvbmZpZ2l0ZW1faWQgPSBjaS5pZAogIFdIRVJFIGNpLmNsYXNzX2lkID0gPwogIE9SREVSIEJZIHYuaWQKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsgXCRDbGFzc0lEIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBkaXNhYmxlIGhpc3RvcnkgYmVmb3JlIHRoZSBsb29wIG92ZXIgdGhlIGNsYXNzZXMKICAgICAgICBpZiAoICEkRGlzYWJsZWRIaXN0b3J5ICYmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgkSGlzdG9yeVNldHRpbmcpICkgewoKICAgICAgICAgICAgIyBkbyBub3Qgd3JpdGUgYSBoaXN0b3J5CiAgICAgICAgICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgICAgICAgICAgTG9ja0FsbCA9PiAxLAogICAgICAgICAgICAgICAgRm9yY2UgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICRIaXN0b3J5U2V0dGluZywKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgICAgIFVubG9ja0FsbCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyAnUmVidWlsZCcgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICMgVE9ETzogd2h5IG11c3QgdGhpcyBzZXR0aW5nIGJlIGRlcGxveWVkPyBJdCBzaG91bGQgc3VmZmljZSB0byBjaGFuZ2UgaXMgdGVtcG9yYXJpbHkKICAgICAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlndXJhdGlvbkRlcGxveSgKICAgICAgICAgICAgICAgIENvbW1lbnRzICAgID0+ICJDTURCIFVwZ3JhZGU6IFRlbXBvcmFyaWx5IGRpc2FibGUgQ01EQiBoaXN0b3J5IGZvciB0aGUgZGF0YSB0cmFuc2Zlci4iLAogICAgICAgICAgICAgICAgQWxsU2V0dGluZ3MgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRGlzYWJsZWRIaXN0b3J5ID0gMTsKICAgICAgICB9CgogICAgICAgIG15IEBTa2lwcGVkOwogICAgICAgIG15ICVDSVZlcnNpb25TdHJpbmdDb3VudGVyOwogICAgICAgIG15ICRDb3VudCA9IHNjYWxhciAkUm93cy0+QCo7CiAgICAgICAgbXkgJEZyYWMgID0gaW50KCAkQ291bnQgLyAxMCApOwogICAgICAgIG15ICRjICAgICA9IDA7CgogICAgICAgICRTZWxmLT5QcmludCgiXHRXb3JraW5nIG9uIDx5ZWxsb3c+JFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfTwveWVsbG93PiAoJENvdW50IFZlcnNpb25zKSIpOwoKICAgICAgICBST1c6CiAgICAgICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgICAgIG15ICggJFZlcnNpb25JRCwgJERlZmluaXRpb25JRCwgJENvbmZpZ0l0ZW1JRCApID0gJFJvdy0+QCo7CgogICAgICAgICAgICAjIHNldCBjb25maWdpdGVtIHZlcnNpb24gc3RyaW5nCiAgICAgICAgICAgICRDSVZlcnNpb25TdHJpbmdDb3VudGVyeyRDb25maWdJdGVtSUR9IC8vPSAxOwogICAgICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClVQREFURSBjb25maWdpdGVtX3ZlcnNpb24KICBTRVQgdmVyc2lvbl9zdHJpbmcgPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgV0hFUkUgaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgICAgIFwkQ0lWZXJzaW9uU3RyaW5nQ291bnRlcnskQ29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBcMSwKICAgICAgICAgICAgICAgICAgICBcJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBzZXQgVmVyc2lvblN0cmluZyBmb3IgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlELCBWZXJzaW9uICRWZXJzaW9uSUQhPC9yZWQ+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkQ0lWZXJzaW9uU3RyaW5nQ291bnRlcnskQ29uZmlnSXRlbUlEfSsrOwoKICAgICAgICAgICAgaWYgKCArKyRjID09ICRGcmFjICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCIuIik7CiAgICAgICAgICAgICAgICAkYyA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggISREZWZpbml0aW9ueyREZWZpbml0aW9uSUR9e0R5bmFtaWNGaWVsZFJlZn0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTa2lwcGVkLCAkVmVyc2lvbklEOwoKICAgICAgICAgICAgICAgIG5leHQgUk9XOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB2ZXJzaW9uCiAgICAgICAgICAgIG15IEBYTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyktPlhNTEhhc2hHZXQoCiAgICAgICAgICAgICAgICBUeXBlID0+ICJJVFNNOjpDb25maWdJdGVtOjokQ2xhc3NJRCIsCiAgICAgICAgICAgICAgICBLZXkgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHRyeSBhcmNoaXZlCiAgICAgICAgICAgIGlmICggIUBYTUwgKSB7CiAgICAgICAgICAgICAgICBAWE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpLT5YTUxIYXNoR2V0KAogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OkFyY2hpdjo6JENsYXNzSUQiLAogICAgICAgICAgICAgICAgICAgIEtleSAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEFUVFJJQlVURToKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJFhNTFsxXXtWZXJzaW9ufVsxXS0+JSogKSB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSB1bmxlc3MgJEF0dHJpYnV0ZU1hcC0+eyRBdHRyaWJ1dGV9OwoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbnskRGVmaW5pdGlvbklEfXtEeW5hbWljRmllbGRSZWZ9eyAkQXR0cmlidXRlTWFwLT57JEF0dHJpYnV0ZX0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSB1bmxlc3MgJER5bmFtaWNGaWVsZDsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWU7CiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkU2V0ICggQHsgJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfSB9WyAxIC4uICRYTUxbMV17VmVyc2lvbn1bMV17JEF0dHJpYnV0ZX0tPiQjKiBdICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlU2V0VmFsdWU7CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlTG9va3VwLT57ICRJbmNsdWRlZC0+e0RGfSB9IGVxICRBdHRyaWJ1dGUgLiAnOjo8U3ViUHJpbWFyeUF0dHJpYnV0ZT4nICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldC0+e0NvbnRlbnR9IC49ICc6MDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVleyAkSW5jbHVkZWQtPntERn0gfSA9ICRCYXNlQXJyYXlGaWVsZHN7ICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gfSA/IFsgJFNldC0+e0NvbnRlbnR9IF0gOiAkU2V0LT57Q29udGVudH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTmFtZSAgICA9ICRBdHRyaWJ1dGVMb29rdXAtPnsgJEluY2x1ZGVkLT57REZ9IH0gPX4gcy9eLis/OjovL3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN1YkF0dHIgPSAkU2V0LT57JE5hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdWJBdHRyVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQmFzZUFycmF5RmllbGRzeyAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtGaWVsZFR5cGV9IH0gfHwgJEluY2x1ZGVkLT57RGVmaW5pdGlvbn17Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1YkF0dHJWYWx1ZSA9IFsgbWFwIHsgJF8tPntDb250ZW50fSB9IEB7JFN1YkF0dHJ9WyAxIC4uICRTdWJBdHRyLT4kIyogXSBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1YkF0dHJWYWx1ZSA9ICRTdWJBdHRyLT5bMV17Q29udGVudH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICVWYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbmNsdWRlZC0+e0RGfSA9PiAkU3ViQXR0clZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVkLT57RGVmaW5pdGlvbn17RmllbGRUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlVmFsdWVzID0gbWFwIHsgKCAkXyA9PiAkVmFsdWVzeyRffSAuICc6MDAnICkgfSBrZXlzICVWYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWUgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVTZXRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBwdXNoICRWYWx1ZS0+QCosIFwlU2V0VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICBteSBAVmFsdWVzID0gbWFwIHsgJF8tPntDb250ZW50fSB9IEB7ICRYTUxbMV17VmVyc2lvbn1bMV17JEF0dHJpYnV0ZX0gfVsgMSAuLiAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9LT4kIyogXTsKCiAgICAgICAgICAgICAgICAgICAgSU5ERVg6CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKEBWYWx1ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkVmFsdWVzWy0xXSB8fCAkVmFsdWVzWy0xXSBlcSAnJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcCBAVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBJTkRFWDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgIUBWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgQFZhbHVlcyA9IG1hcCB7ICRfIC4gJzowMCcgfSBAVmFsdWVzOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gXEBWYWx1ZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPSAkQmFzZUFycmF5RmllbGRzeyAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSB9ID8gWyAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9WzFde0NvbnRlbnR9IF0gOiAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9WzFde0NvbnRlbnR9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAnOjAwJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnQXR0YWNobWVudCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50QmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZScpOwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudCAgICAgICAgICAgICAgPSAkQXR0YWNobWVudEJhY2tlbmRPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50LT57Q29udGVudFJlZn0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e1ByZWZlcmVuY2VzfXtEYXRhVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVNpemUgICAgPT4gJEF0dGFjaG1lbnQtPntQcmVmZXJlbmNlc317RmlsZVNpemVCeXRlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhKCByZWYgJFZhbHVlICkgfHwgKCByZWYgJFZhbHVlIG5lICdBUlJBWScgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gWyRWYWx1ZV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1IYW5kbGVkICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkU2VsZi0+UHJpbnQoIlxuIik7CiAgICB9CgogICAgaWYgKCREaXNhYmxlZEhpc3RvcnkpIHsKCiAgICAgICAgIyByZWFjdGl2YXRlIHdyaW50aW5nIGhpc3RvcnkKICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgTG9ja0FsbCA9PiAxLAogICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkSGlzdG9yeVNldHRpbmcsCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBSZWVuYWJsZSBDTURCIGhpc3RvcnkuIiwKICAgICAgICAgICAgQWxsU2V0dGluZ3MgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcKICAgICk7CgogICAgcmV0dXJuICdOZXh0JzsKfQoKc3ViIF9EZWxldGVMZWdhY3lEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KAogICAgICAgICI8eWVsbG93Pk9wdGlvbmFsbHkgYWxsIGxlZ2FjeSBkYXRhIGNhbiBiZSBkZWxldGVkLiBUaGlzIHN0ZXAgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIG1pZ3JhdGVkIENNREIgdG8gd29yayBhbmQgY2FuIGJlIGRvbmUgYXQgYW55IGxhdGVyIHRpbWUuPC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+RG8geW91IHJlYWxseSB3YW50IHRvIHBlcm1hbmVudGx5IGRlbGV0ZSBhbGwgYmFja3VwIGxlZ2FjeSBkYXRhIGZyb20gdGhlIHN5c3RlbT8gKHR5cGUgJ3llcycpPC9yZWQ+XG4iKTsKCiAgICBpZiAoIDxTVERJTj4gPX4gbS9eeWVzJC9pICkgeyAgICAjIyBubyBjcml0aWMgcXcoSW5wdXRPdXRwdXQ6OlByb2hpYml0RXhwbGljaXRTdGRpbik7CgogICAgICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICAgICAgbXkgJE1haW5PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgICAgICBteSAkUGFja2FnZU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnKTsKCiAgICAgICAgIyAxLiBkZWxldGUgZmlsZXMgZnJvbSB0ZW1wb3JhcnkgZGlyZWN0b3J5CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIHByZXZpb3VzbHkgY3JlYXRlZCB0ZW1wb3JhcnkgZmlsZXMgZnJvbSBkaXNrLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICBteSBARmlsZXNJbkRpcmVjdG9yeSA9ICRNYWluT2JqZWN0LT5EaXJlY3RvcnlSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsdGVyICAgID0+ICcqJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkRmlsZSAoIHNvcnQgQEZpbGVzSW5EaXJlY3RvcnkgKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJE1haW5PYmplY3QtPkZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGRlbGV0ZSBmaWxlICRGaWxlITwvcmVkPiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgZGVsZXRpbmcgdGVtcG9yYXJ5IGZpbGVzLjwvZ3JlZW4+XG4iKTsKCiAgICAgICAgIyAyLiBkZWxldGUgY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSBkYXRhYmFzZSBjb2x1bW4KICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+RGVsZXRpbmcgZGF0YWJhc2UgY29sdW1uIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9sZWdhY3kgZnJvbSB0YWJsZSBjb25maWdpdGVtX2RlZmluaXRpb24uLi48L3llbGxvdz5cbiIpOwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMID0+ICdBTFRFUiBUQUJMRSBjb25maWdpdGVtX2RlZmluaXRpb24gRFJPUCBDT0xVTU4gY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lIGRlbGV0aW5nIHRoZSBkYXRhYmFzZSBjb2x1bW4uPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIDMuIGNsZWFuIHVwIHhtbCBzdG9yYWdlCiAgICAgICAgIyBnZXQgYWxsIHZlcnNpb25zIGFuZCBjb3JyZXNwb25kaW5nIGNsYXNzIGlkcyBpbiBvbmUgZ28KICAgICAgICAjIFRPRE86IERvIHdlIG5lZWQgYmF0Y2hlcyBmb3IgcmVhbGx5IGxhcmdlIENNREJzPwogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBjb25maWdpdGVtIGRhdGEgZnJvbSB4bWwgc3RvcmFnZS4uLjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCB2LmlkLCBjaS5jbGFzc19pZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIHYKICBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW0gY2kgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBPUkRFUiBCWSB2LmlkCkVORF9TUUwKICAgICAgICApOwoKICAgICAgICAjIFRPRE86IGRpc2FibGUgaGlzdG9yeSBiZWZvcmUgdGhlIGxvb3Agb3ZlciB0aGUgY2xhc3NlcwogICAgICAgIG15ICREaXNhYmxlZEhpc3Rvcnk7CiAgICAgICAgbXkgJEhpc3RvcnlTZXR0aW5nID0gcXtJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3Rvcnl9OwogICAgICAgIGlmICggISREaXNhYmxlZEhpc3RvcnkgJiYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCRIaXN0b3J5U2V0dGluZykgKSB7CgogICAgICAgICAgICAjIGRvIG5vdCB3cml0ZSBhIGhpc3RvcnkKICAgICAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgICAgICBMb2NrQWxsID0+IDEsCiAgICAgICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJEhpc3RvcnlTZXR0aW5nLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICAgICAgVW5sb2NrQWxsID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgIyBUT0RPOiB3aHkgbXVzdCB0aGlzIHNldHRpbmcgYmUgZGVwbG95ZWQ/IEl0IHNob3VsZCBzdWZmaWNlIHRvIGNoYW5nZSBpcyB0ZW1wb3JhcmlseQogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICAgICAgQ29tbWVudHMgICAgPT4gIkNNREIgVXBncmFkZTogVGVtcG9yYXJpbHkgZGlzYWJsZSBDTURCIGhpc3RvcnkgZm9yIHRoZSBkYXRhIHRyYW5zZmVyLiIsCiAgICAgICAgICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREaXNhYmxlZEhpc3RvcnkgPSAxOwogICAgICAgIH0KCiAgICAgICAgUk9XOgogICAgICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgICAgICBteSAoICRWZXJzaW9uSUQsICRDbGFzc0lEICkgPSAkUm93LT5AKjsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaERlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OiRDbGFzc0lEIiwKICAgICAgICAgICAgICAgIEtleSAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSBkZWxldGluZyBjb25maWcgaXRlbSBkYXRhIGZyb20geG1sIHN0b3JhZ2UuPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIHJlbW92ZSBDSUF0dHJpYnV0ZUNvbGxlY3Rpb24gcGFja2FnZSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFBhY2thZ2VOYW1lID0gJ0lUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uJzsKICAgICAgICBteSBAUmVwb3MgICAgICAgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgICAgIFJlc3VsdCA9PiAnU2hvcnQnCiAgICAgICAgKTsKICAgICAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgICAgIGlmIChAUGFja2FnZUVudHJ5KSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Vbmluc3RhbGxpbmcgJFBhY2thZ2VOYW1lIHBhY2thZ2UuLi48L3llbGxvdz5cbiIpOwogICAgICAgICAgICBteSAkUGFja2FnZVZlcnNpb24gPSAkUGFja2FnZUVudHJ5WzBde1ZlcnNpb259OwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Rm91bmQgJFBhY2thZ2VOYW1lIFZlcnNpb24gJFBhY2thZ2VWZXJzaW9uPC95ZWxsb3c+XG4iKTsKCiAgICAgICAgICAgICMgcmVzZXQgc2V0dGluZ3MgdGhhdCB0aGlzIGxlZ2FjeSBwYWNrYWdlIHVuc3VjY2Vzc2Z1bGx5IGF0dGVtcHRzIHRvIHJlc2V0IHVwb24gdW5pbnN0YWxsYXRpb24gKGxvY2sgaXMgbWlzc2luZykKICAgICAgICAgICAgJFNlbGYtPl9SZXNldFNldHRpbmdzKAogICAgICAgICAgICAgICAgU2V0dGluZ05hbWUgPT4gJ0xvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjMTAwLUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRQYWNrYWdlID0gJFBhY2thZ2VPYmplY3QtPlJlcG9zaXRvcnlHZXQoCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRQYWNrYWdlTmFtZSwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRQYWNrYWdlT2JqZWN0LT5QYWNrYWdlVW5pbnN0YWxsKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICI8Z3JlZW4+Q29udGludWluZyB3aXRob3V0IGRlbGV0aW5nIGxlZ2FjeSBkYXRhLjwvZ3JlZW4+XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJ05leHQnOwp9CgpzdWIgX0dlbmVyYXRlRGVmaW5pdGlvbllBTUwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEV4cGxpY2l0bHkgZ2VuZXJhdGUgYSBZQU1MIHN0cmluZyBpbiBvcmRlciB0byBoYXZlIGJldHRlciBjb250cm9sCiAgICAjIG9mIHRoZSBsYXlvdXQuCiAgICBteSAkQ0lZQU1MID0gPDwnRU5EX1lBTUwnOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIENvbnRlbnQ6CkVORF9ZQU1MCgogICAgbXkgJUR5bmFtaWNGaWVsZHM7CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUGFyYW17QXR0cmlidXRlc30tPkAqICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfTsKCiAgICAgICAgbXkgJFlBTUxMaW5lID0gIiAgICAgIC0gREY6ICRQYXJhbXtBdHRyaWJ1dGVNYXB9eyAkQXR0cmlidXRlLT57S2V5fSB9XG4iOwoKICAgICAgICBpZiAoICRBdHRyaWJ1dGUtPntJbnB1dH17UmVxdWlyZWR9ICkgewogICAgICAgICAgICAkWUFNTExpbmUgLj0gIiAgICAgICAgTWFuZGF0b3J5OiAxXG4iOwogICAgICAgIH0KCiAgICAgICAgbXkgJURGQmFzaWMgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0sCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIENJQ2xhc3MgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICApOwoKICAgICAgICBteSAlREZTcGVjaWZpYyA9ICRTZWxmLT5fREZDb25maWdGcm9tTGVnYWN5KAogICAgICAgICAgICBBdHRyaWJ1dGUgICAgPT4gJEF0dHJpYnV0ZSwKICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVERlNwZWNpZmljICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCAnJEF0dHJpYnV0ZS0+e05hbWV9JyB0byBEeW5hbWljRmllbGQgKENsYXNzOiAnJFBhcmFte0NsYXNzfSc7IERlZmluaXRpb25JRDogJyRQYXJhbXtEZWZpbml0aW9uSUR9JykgLSBza2lwcGluZyBhdHRyaWJ1dGUhPC9yZWQ+XG4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDSVlBTUwgLj0gJFlBTUxMaW5lOwoKICAgICAgICAkRHluYW1pY0ZpZWxkc3sgJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0gfSA9IHsgJURGQmFzaWMsICVERlNwZWNpZmljIH07CiAgICB9CgogICAgbXkgJERGWUFNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoCiAgICAgICAgRGF0YSA9PiBcJUR5bmFtaWNGaWVsZHMsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDSVlBTUwsCiAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRERllBTUwsCiAgICB9Owp9CgpzdWIgX0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJFBhcmFte0RlZmluaXRpb25SZWZ9IC8vICRTZWxmLT57WUFNTE9iamVjdH0tPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgU2tpcCBkZWZpbml0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDExCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBlcSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuIGlmICREZWZpbml0aW9uUmVmLT57UGFnZXN9OwogICAgICAgIHJldHVybiBpZiAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfTsKICAgIH0KCiAgICAjIGEgc2FuaXR5IHRlc3Qgd2hldGhlciB0aGlzIGlzIHBvc3NpYmx5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDEwCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBuZSAnQVJSQVknICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5OZWVkIGEgdmFsaWQgbGVnYWN5IGRlZmluaXRpb24hPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgIG15IEBBdHRyaWJ1dGVzOwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkRGVmaW5pdGlvblJlZi0+QCogKSB7CiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJEF0dHJpYnV0ZTsKCiAgICAgICAgaWYgKCAkQXR0cmlidXRlLT57U3VifSAmJiAkUGFyYW17UmVjdVN1YnN9ICkgewogICAgICAgICAgICBteSAkUHJpbWFyeVN1YiA9IHsgS2V5ID0+ICRBdHRyaWJ1dGUtPntLZXl9IC4gJzo6PFN1YlByaW1hcnlBdHRyaWJ1dGU+JyB9OwoKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFByaW1hcnlTdWI7CiAgICAgICAgICAgIG15IEBTdWJBdHRyaWJ1dGVzID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVzRnJvbUxlZ2FjeVlBTUwoIERlZmluaXRpb25SZWYgPT4gJEF0dHJpYnV0ZS0+e1N1Yn0gKTsKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgbWFwIHsgeyBLZXkgPT4gJEF0dHJpYnV0ZS0+e0tleX0gLiAnOjonIC4gJF8tPntLZXl9IH0gfSBAU3ViQXR0cmlidXRlczsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBBdHRyaWJ1dGVzOwp9CgpzdWIgX0RGQ29uZmlnRnJvbUxlZ2FjeSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+QXR0cmlidXRlIHdpdGhvdXQgSW5wdXQgVHlwZSE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkVHlwZSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfTsKICAgIG15ICVERjsKCiAgICBpZiAoIGFueSB7IGRlZmluZWQgJFBhcmFte0F0dHJpYnV0ZX17JF99IH0gcXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LyApIHsKICAgICAgICB1bmxlc3MgKCAhJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9IHx8ICggJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9ICYmICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSA8PSAxICkgKSB7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3MpCiAgICAgICAgICAgICRERntDb25maWd9e011bHRpVmFsdWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtTdWJ9ICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1NldCc7CgogICAgICAgIGlmICggJFBhcmFte0luU3VifSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPlN1YnMgb2Ygc3VicyBhcmUgbm90IHN1cHBvcnRlZCE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1YiAgICAgPSBkZWxldGUgJFBhcmFte0F0dHJpYnV0ZX17U3VifTsKICAgICAgICBteSAkUHJpbWFyeSA9IHsKICAgICAgICAgICAgJFBhcmFte0F0dHJpYnV0ZX0tPiUqLAogICAgICAgICAgICBLZXkgID0+ICc8U3ViUHJpbWFyeUF0dHJpYnV0ZT4nLAogICAgICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICB9OwoKICAgICAgICAjIHByaW1hcnkgYXR0cmlidXRlIGNhbm5vdCBiZSBtdWx0aXZhbHVlIGluIFhNTCBzY2hlbWEKICAgICAgICBmb3IgbXkgJERlbGV0ZSAocXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LykgewogICAgICAgICAgICBkZWxldGUgJFByaW1hcnktPnskRGVsZXRlfTsKICAgICAgICB9CgogICAgICAgIG15IEBJbmNsdWRlOwoKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUHJpbWFyeSwgJFN1Yi0+QCogKSB7CiAgICAgICAgICAgICRBdHRyaWJ1dGUtPntLZXl9ID0gJFBhcmFte0F0dHJpYnV0ZX17S2V5fSAuICc6OicgLiAkQXR0cmlidXRlLT57S2V5fTsKCiAgICAgICAgICAgIG15ICVERkJhc2ljID0gKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgQ0lDbGFzcyAgICA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJURGU3BlY2lmaWMgPSAkU2VsZi0+X0RGQ29uZmlnRnJvbUxlZ2FjeSgKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSAgICA9PiAkQXR0cmlidXRlLAogICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICElREZTcGVjaWZpYyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCBzdWIgYXR0cmlidXRlICckQXR0cmlidXRlLT57TmFtZX0nICgkUGFyYW17QXR0cmlidXRlfXtLZXl9OjokQXR0cmlidXRlLT57S2V5fSkgdG8gRHluYW1pY0ZpZWxkIChDbGFzczogJyRQYXJhbXtDbGFzc30nOyAgRGVmaW5pdGlvbklEOiAnJFBhcmFte0RlZmluaXRpb25JRH0nKSAtIHNraXBwZWQgYXR0cmlidXRlITwvcmVkPlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBASW5jbHVkZSwgewogICAgICAgICAgICAgICAgREYgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4geyAlREZCYXNpYywgJURGU3BlY2lmaWMgfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0luY2x1ZGV9ID0gXEBJbmNsdWRlOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dCcgfHwgJFR5cGUgZXEgJ1RleHRBcmVhJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwogICAgICAgICRERntDb25maWd9e1JlZ0V4TGlzdH0gPSBbXTsKCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtSZWdFeExpc3R9ID0gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9LAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXhFcnJvck1lc3NhZ2V9IC8vICdGb3JtYXQgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317RGVmYXVsdFZhbHVlfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwoKICAgICAgICBpZiAoICEkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17Q2xhc3N9ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+R2VuZXJhbENhdGFsb2cgYXR0cmlidXRlIHdpdGhvdXQgY2xhc3MhPC9yZWQ+XG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0NsYXNzfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtDbGFzc307CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVOb25lfSAgPSAxOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0Ryb3Bkb3duJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdDdXN0b21lclVzZXInOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gPSAnQXV0b0NvbXBsZXRlJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0RhdGUnIHx8ICRUeXBlIGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317WWVhcnNJbkZ1dHVyZX0gPSA1OwogICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSAgID0gNTsKICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDA7CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5GdXR1cmV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH0gKSB7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzUGVyaW9kfSA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnSW50ZWdlcicgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnRHJvcGRvd24nOwoKICAgICAgICAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IHx8PSAwOwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gfHw9IDMwOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZVZhbHVlc30gPSB7IG1hcCB7ICRfID0+ICRfIH0gKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IC4uICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gKSB9OwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtEZWZhdWx0VmFsdWV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1ZhbHVlRGVmYXVsdH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUaWNrZXRSZWZlcmVuY2UnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ICAgICAgICAgICAgICAgICAgICA9ICdUaWNrZXQnOwogICAgICAgICRERntDb25maWd9e1Bvc3NpYmxlTm9uZX0gICAgICAgICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gICAgICAgID0gJ0F1dG9Db21wbGV0ZSc7CiAgICAgICAgJERGe0NvbmZpZ317UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ1RpY2tldCc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdDSUNsYXNzUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgID0gJ0NvbmZpZ0l0ZW0nOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ICAgPSAnQXV0b0NvbXBsZXRlJzsKICAgICAgICAkREZ7Q29uZmlnfXtTZWFyY2hBdHRyaWJ1dGV9ID0gJ05hbWUnOwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICBteSAkUmVmZXJlbmNlZENJQ2xhc3NOYW1lID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1JlZmVyZW5jZWRDSUNsYXNzTmFtZX07CiAgICAgICAgICAgIG15ICVDbGFzc05hbWUySUQgICAgICAgICAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkgLy8ge30KICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICAgICAgJERGe0NvbmZpZ317Q2xhc3NJRHN9ID0gWyAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkQXR0cktleSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0tleX07CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhlIFJlZmVyZW5jZWRDSUNsYXNzTmFtZSAnJFJlZmVyZW5jZWRDSUNsYXNzTmFtZScgaW4gYXR0cmlidXRlICckQXR0cktleScgaGFzIG5vIG1hdGNoPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ1VzZXInICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0FnZW50JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBQ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ3VzdG9tZXJVc2VyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBdHRhY2htZW50JyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkQXR0YWNobWVudCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0F0dGFjaG1lbnQnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdTZXJ2aWNlUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTZXJ2aWNlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnUXVldWVSZWZlcmVuY2UnICkgewogICAgICAgIG15ICRDaGVja1BhY2thZ2UgPSAkU2VsZi0+X0NoZWNrSW5zdGFsbGVkUGFja2FnZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBQYWNrYWdlID0+ICdEeW5hbWljRmllbGRUaWNrZXRzQXR0cmlidXRlcycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1F1ZXVlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnU0xBUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTTEEnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUeXBlUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdUeXBlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dExpbmsnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1RleHQnOwogICAgICAgICRERntDb25maWd9e0xpbmt9ID0gJ1slIERhdGEuVmFsdWUgfCB1cmwgJV0nOwogICAgfQoKICAgICMgTGVnYWN5IERGIHR5cGUgJ0R5bmFtaWNGaWVsZCcgZnJvbSB0aGUgcGFja2FnZSBDSUF0dHJpYnV0ZXNDb2xsZWN0aW9uCiAgICAjIFRoaXMgdHlwZSByZWZlcmVuY2VzIGEgZ2VuZXJpYyBERiB3aG9zZSB0eXBlIG11c3QgYmUgc3BlY2lmaWVkIGJ5IHRoZSBsZWdhY3kgYXR0cmlidXRlIE5hbWUKICAgIGVsc2lmICggJFR5cGUgZXEgJ0R5bmFtaWNGaWVsZCcgKSB7CiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17TmFtZX0gKSB7CiAgICAgICAgICAgIG15ICRMZWdhY3lGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e05hbWV9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgPSAnRHJvcGRvd24nOwogICAgICAgICAgICAkREZ7Q29uZmlnfXtNdWx0aVZhbHVlfSAgICAgPSAoICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSAmJiAkUGFyYW17QXR0cmlidXRlfXtDb3VudE1heH0gPiAxICkgPyAxIDogMDsKICAgICAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVWYWx1ZXN9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZWdhY3lGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5GaWVsZCB0eXBlICdEeW5hbWljRmllbGQnIHJlcXVpcmVzIE5hbWUgc3BlY2lmaWNhdGlvbiE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Vbmtub3duIGlucHV0IHR5cGUgJyRUeXBlJyE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICVERjsKfQoKc3ViIF9Db250aW51ZU9yTm90IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdOZXh0JyBpZiAkU2VsZi0+e1VzZURlZmF1bHRzfTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+RG9uZS5cblxuWW91IGNhbiBwYXVzZSBoZXJlIHRvIHJldmlldyBhbmQgcG9zc2libHkgYWx0ZXIgdGhlIHN1Z2dlc3Rpb25zIGJ5IGluc3BlY3RpbmcgYW5kIGNoYW5naW5nIHRoZSBmaWxlcy4gQ2FsbGluZyB0aGUgc2NyaXB0IGFnYWluIGxhdGVyIHNob3VsZCBhdXRvbWF0aWNhbGx5IHJlc3VtZSBhdCB0aGUgcmlnaHQgc3RlcCwgeW91IGNhbiBtYW51YWxseSBlbmZvcmNlIHRoaXMgYnkgY2FsbGluZyB2aWE6PC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCAiXHRiaW4vb3RvYm8uQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEgLS1zdGFydC1hdCAiIC4gKCAkUGFyYW17Q3VycmVudFN0ZXB9ICsgMSApIC4gIlxuIiApOwogICAgJFNlbGYtPlByaW50KAogICAgICAgICJcbjx5ZWxsb3c+VG8gZmluaXNoIHRoZSBzY3JpcHQgbm93LCBqdXN0IHByZXNzIGVudGVyLiBUbyBkaXJlY3RseSBjb250aW51ZSB3aXRoIHRoZSBkZWZhdWx0IHN1Z2dlc3Rpb25zIHdpdGhvdXQgcmV2aWV3IHdyaXRlICdkZWYnLjwveWVsbG93PlxuXHQiCiAgICApOwoKICAgIHJldHVybiAnTmV4dCcgaWYgPFNURElOPiA9fiBtL15kZWYoYXVsdCk/JC87CgogICAgcmV0dXJuICdFeGl0JzsKfQoKc3ViIF9DaGVja0luc3RhbGxlZFBhY2thZ2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFzcyA9IDE7CgogICAgcmV0dXJuICRQYXNzIGlmICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH07CgogICAgJFBhc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UGFja2FnZScpLT5QYWNrYWdlSXNJbnN0YWxsZWQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17UGFja2FnZX0sCiAgICApOwogICAgaWYgKCAhJFBhc3MgKSB7CiAgICAgICAgbXkgJENsYXNzICAgICAgICA9ICRQYXJhbXtDbGFzc307CiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbXtEZWZpbml0aW9uSUR9OwogICAgICAgIG15ICRGaWVsZFR5cGUgICAgPSAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VHlwZX07CiAgICAgICAgbXkgJEZpZWxkTmFtZSAgICA9ICRQYXJhbXtBdHRyaWJ1dGV9e05hbWV9OwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5cbkVycm9yIGNvbnZlcnRpbmcgREYgKENsYXNzOiAkQ2xhc3MsIERlZmluaXRpb25JRDogJERlZmluaXRpb25JRCwgRmllbGQgVHlwZTogJEZpZWxkVHlwZSwgRmllbGQgTmFtZTogJEZpZWxkTmFtZSkuIDwvcmVkPiIpOwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5UaGUgJFBhcmFte1BhY2thZ2V9IHBhY2thZ2UgaXMgcmVxdWlyZWQuPC9yZWQ+XG4iKTsKICAgIH0KICAgICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH0gPSAxOwoKICAgIHJldHVybiAkUGFzczsKfQoKc3ViIF9SZXNldFNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJFNldHRpbmdOYW1lICAgICAgID0gJFBhcmFte1NldHRpbmdOYW1lfTsKICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIEZvcmNlICA9PiAxLAogICAgICAgIE5hbWUgICA9PiAkU2V0dGluZ05hbWUsCiAgICApOwogICAgaWYgKCAhJEV4Y2x1c2l2ZUxvY2tHVUlEICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgbG9jayAnJFNldHRpbmdOYW1lJyBmb3IgcmVzZXQ8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdSZXNldCgKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCByZXNldCAnJFNldHRpbmdOYW1lJzwvcmVkPlxuIik7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBOYW1lICAgPT4gJFNldHRpbmdOYW1lLAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5sb2NrICckU2V0dGluZ05hbWUnPC9yZWQ+XG4iKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJURlcGxveW1lbnRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgIENvbW1lbnRzID0+ICJSZXNldCAkU2V0dGluZ05hbWUuIiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIEZvcmNlICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBkZXBsb3kgcmVzZXQgb2YgJyRTZXR0aW5nTmFtZSc8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5TdWNjZXNzZnVsbHkgcmVzZXQgJyRTZXR0aW5nTmFtZScuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Export.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpFeHBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgZXhwb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZGVzdGluYXRpb24nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTcGVjaWZ5IHRoZSBwYXRoIHRvIGEgZmlsZSB3aGVyZSBjb25maWcgaXRlbSBkYXRhIHNob3VsZCBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkV4cG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgICMgZXhwb3J0IGRhdGEKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPkV4cG9ydCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdCApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3Igb2NjdXJyZWQuIEV4cG9ydCBpbXBvc3NpYmxlISBTZWUgU3lzbG9nIGZvciBkZXRhaWxzLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICctJyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPlN1Y2Nlc3M6ICRSZXN1bHQtPntTdWNjZXNzfSBzdWNjZWVkZWQ8L2dyZWVuPlxuIik7CiAgICBpZiAoICRSZXN1bHQtPntGYWlsZWR9ICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCIkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuXG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkVycm9yOiAkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuPC9ncmVlbj5cbiIpOwogICAgfQoKICAgIG15ICREZXN0aW5hdGlvbkZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ2Rlc3RpbmF0aW9uJyk7CgogICAgaWYgKCREZXN0aW5hdGlvbkZpbGUpIHsKCiAgICAgICAgbXkgJEZpbGVDb250ZW50ID0gam9pbiAiXG4iLCBAeyAkUmVzdWx0LT57RGVzdGluYXRpb25Db250ZW50fSB9OwoKICAgICAgICAjIHNhdmUgZGVzdGluYXRpb24gY29udGVudCB0byBmaWxlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlV3JpdGUoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICREZXN0aW5hdGlvbkZpbGUsCiAgICAgICAgICAgIENvbnRlbnQgID0+IFwkRmlsZUNvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJDYW4ndCB3cml0ZSBmaWxlICREZXN0aW5hdGlvbkZpbGUuXG5FeHBvcnQgYWJvcnRlZC5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkZpbGUgJERlc3RpbmF0aW9uRmlsZSBzYXZlZC48L2dyZWVuPlxuIik7CgogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkV4cG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Import.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpJbXBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgaW1wb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBpbXBvZXJ0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvXGQrL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvdXJjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIGZpbGUgd2hpY2ggY29udGFpbmluZyB0aGUgY29uZmlnIGl0ZW0gZGF0YSBmb3IgaW1wb3J0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTb3VyY2VQYXRoID0gJFNlbGYtPkdldEFyZ3VtZW50KCdzb3VyY2UnKTsKICAgIGlmICggJFNvdXJjZVBhdGggJiYgIS1yICRTb3VyY2VQYXRoICkgewogICAgICAgIGRpZSAiRmlsZSAkU291cmNlUGF0aCBkb2VzIG5vdCBleGlzdCwgY2FuIG5vdCBiZSByZWFkLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkltcG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgIG15ICRTb3VyY2VDb250ZW50OwogICAgbXkgJFNvdXJjZUZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ3NvdXJjZScpOwoKICAgIGlmICgkU291cmNlRmlsZSkgewoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UmVhZCBGaWxlICRTb3VyY2VGaWxlLjwveWVsbG93PlxuIik7CgogICAgICAgICMgcmVhZCBzb3VyY2UgZmlsZQogICAgICAgICRTb3VyY2VDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICRTb3VyY2VGaWxlLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnU0NBTEFSJywKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTb3VyY2VDb250ZW50ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ2FuJ3QgcmVhZCBmaWxlICRTb3VyY2VGaWxlLlxuSW1wb3J0IGFib3J0ZWQuXG4iKSBpZiAhJFNvdXJjZUNvbnRlbnQ7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICB9CgogICAgIyBpbXBvcnQgZGF0YQogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+SW1wb3J0KAogICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgU291cmNlQ29udGVudCA9PiAkU291cmNlQ29udGVudCwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggISRSZXN1bHQgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlxuRXJyb3Igb2NjdXJyZWQuIEltcG9ydCBpbXBvc3NpYmxlISBTZWUgdGhlIE9UT0JPIGxvZyBmb3IgZGV0YWlscy5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICMgcHJpbnQgcmVzdWx0CiAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3Jkczo8L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+U3VjY2VzczogJFJlc3VsdC0+e1N1Y2Nlc3N9IHN1Y2NlZWRlZDwvZ3JlZW4+XG4iKTsKICAgIGlmICggJFJlc3VsdC0+e0ZhaWxlZH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIiRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC5cbiIpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXJyb3I6ICRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC48L2dyZWVuPlxuIik7CiAgICB9CgogICAgZm9yIG15ICRSZXRDb2RlICggc29ydCBrZXlzICV7ICRSZXN1bHQtPntSZXRDb2RlfSB9ICkgewogICAgICAgIG15ICRDb3VudCA9ICRSZXN1bHQtPntSZXRDb2RlfS0+eyRSZXRDb2RlfSB8fCAwOwogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3JkczogJENvdW50ICRSZXRDb2RlPC9ncmVlbj5cbiIpOwogICAgfQogICAgaWYgKCAkUmVzdWx0LT57RmFpbGVkfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5MYXN0IHByb2Nlc3NlZCBsaW5lIG51bWJlciBvZiBpbXBvcnQgZmlsZTogJFJlc3VsdC0+e0NvdW50ZXJ9PC9ncmVlbj5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/IncidentState/Recalculate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ1JlY2FsY3VsYXRlcyB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW1zLicpOwoKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NvbmZpZ2l0ZW0tbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiUmVjYWxjdWxhdGUgbGlzdGVkIGNvbmZpZyBpdGVtcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWNhbGN1bGF0aW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgQENvbmZpZ0l0ZW1JRHM7ICAgICMgZWl0aGVyIGV4cGxpY2l0IGxpc3Qgb3IgYWxsIHZhbGlkIGNsYXNzZXMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzID0gQHsgJFNlbGYtPkdldE9wdGlvbignY29uZmlnaXRlbS1udW1iZXInKSAvLyBbXSB9OwogICAgaWYgKEBDb25maWdJdGVtTnVtYmVycykgewoKICAgICAgICBDT05GSUdfSVRFTV9OVU1CRVI6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fTlVNQkVSOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VW5hYmxlIHRvIGZpbmQgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1OdW1iZXIuPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGNsYXNzIGlkcwogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKICAgICAgICBteSBAVmFsaWRDbGFzc0lEcyA9IHNvcnQga2V5cyAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMgZm9ybSBhbGwgdmFsaWQgY2xhc3NlcwogICAgICAgIG15ICVDb25maWdJdGVtc0lEc1JlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQFZhbGlkQ2xhc3NJRHMsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdIQVNIJwogICAgICAgICk7CgogICAgICAgIEBDb25maWdJdGVtSURzID0ga2V5cyAlQ29uZmlnSXRlbXNJRHNSZWY7CiAgICB9CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlJlY2FsY3VsYXRpbmcgaW5jaWRlbnQgc3RhdGUgZm9yICRDSUNvdW50IGNvbmZpZyBpdGVtcy48L3llbGxvdz5cbiIpOwoKICAgICMgUmVtZW1iZXIgY29uZmlnIGl0ZW0gcmVzdWx0cyB0aHJvdWdoIG11bHRpcGxlIHJ1bnMgb2YgQ3VySW5jaVN0YXRlUmVjYWxjKCkuCiAgICBteSAlTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGU7CiAgICBteSAlU2Nhbm5lZENvbmZpZ0l0ZW1JRHM7CgogICAgbXkgJENvdW50ID0gMDsKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSA9PiBcJU5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLAogICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Li4uIGNvdWxkIG5vdCByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBmb3IgY29uZmlnIGl0ZW0gaWQgJyRDb25maWdJdGVtSUQnITwvcmVkPlxuIik7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU07CiAgICAgICAgfQoKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgaWYgKCAkQ291bnQgJSAxMDAgPT0gMCApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+Li4uICRDb3VudCBjb25maWcgaXRlbXMgcmVjYWxjdWxhdGVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbjxncmVlbj5SZWFkeS4gUmVjYWxjdWxhdGVkICRDb3VudCBjb25maWcgaXRlbXMuPC9ncmVlbj5cblxuIik7CgogICAgIyBnZXQgc2VydmljZSBvYmplY3QKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKCiAgICAjIGdldCBsaXN0IG9mIGFsbCBzZXJ2aWNlcyAodmFsaWQgYW5kIGludmFsaWQpCiAgICBteSAlU2VydmljZUxpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIG15ICROdW1iZXJPZlNlcnZpY2VzID0gc2NhbGFyIGtleXMgJVNlcnZpY2VMaXN0OwoKICAgICRTZWxmLT5QcmludCgKICAgICAgICAiPGdyZWVuPlJlc2V0dGluZyBTZXJ2aWNlUHJlZmVyZW5jZXMgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJyBmb3IgJE51bWJlck9mU2VydmljZXMgc2VydmljZXMuLi48L2dyZWVuPlxuIgogICAgKTsKCiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhbiBlbXB0eSB2YWx1ZQogICAgICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgdG8gZm9yY2UgYSByZWNhbGN1bGF0aW9uIG9uIGEgU2VydmljZUdldCgpCiAgICAgICAgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+UmVhZHkuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/CreateConditionalTickets.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OkNyZWF0ZUNvbmRpdGlvbmFsVGlja2V0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignQ2hlY2tzIHRoZSBjb25maWd1cmVkIGNvbmZpZyBpdGVtcyBhbmQgY3JlYXRlcyB0aWNrZXRzIGFzIG5vdGlmaWNhdGlvbiBpZiB0aGUgcmVxdWlyZW1lbnRzIGFyZSBmdWxmaWxsZWQuJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE5vdGlmaWNhdGlvbkNvbmZpZ3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0NNREJOb3RpZmljYXRpb25zOjpSdWxlcycpOwoKICAgIGlmICggISROb3RpZmljYXRpb25Db25maWdzICkgewogICAgICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+Tm8gbm90aWZpY2F0aW9ucyBjb25maWd1cmVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMaW5rT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICVDbGFzc0xpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApCiAgICB9OwogICAgbXkgJURlcGxTdGF0ZUxpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKQogICAgfTsKCiAgICAjIGdvIHRocm91Z2ggYWxsIGNvbmZpZ3VyZWQgbm90aWZpY2F0aW9uIHNldHVwcwogICAgQ09ORklHOgogICAgZm9yIG15ICRDb25maWcgKCB2YWx1ZXMgJXskTm90aWZpY2F0aW9uQ29uZmlnc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGFuZCBkZXBsb3ltZW50IHN0YXRlIGlkcwogICAgICAgIG15ICRDbGFzc0lEICAgICAgPSAkQ2xhc3NMaXN0eyAkQ29uZmlnLT57Q2xhc3N9IH07CiAgICAgICAgbXkgJERlcGxTdGF0ZUlEcyA9IFsgbWFwIHsgJERlcGxTdGF0ZUxpc3R7JF99IH0gQHsgJENvbmZpZy0+e0FjdGl2ZURlcGxveW1lbnRTdGF0ZXN9IH0gXTsKCiAgICAgICAgaWYgKCAhJENsYXNzSUQgfHwgIUlzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbFN0YXRlSURzKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIGNsYXNzICckQ29uZmlnLT57Q2xhc3N9Jywgb3IgdmFsaWQgZGVwbG95bWVudCBzdGF0ZXMgY29uZmlndXJlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJRzsKICAgICAgICB9CgogICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnbyB0aHJvdWdoIGFsbCBjb25maWcgaXRlbXMKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRHluYW1pYyBmaWVsZCAkQ29uZmlnLT57VGltZUNJS2V5fSBvZiBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBlbXB0eSBvciBkb2VzIG5vdCBleGlzdCAtIHNraXAhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHRyaWdnZXIgZGF0ZTsKICAgICAgICAgICAgbXkgJFRyaWdnZXJEYXRlT2JqZWN0OwoKICAgICAgICAgICAgIyBkYXRlIGZpZWxkIGZvcm1hdAogICAgICAgICAgICBpZiAoICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGltZUNJS2V5fSB9ID1+IC9eKFxkKyktKFxkKyktKFxkKykvICkgewogICAgICAgICAgICAgICAgJFRyaWdnZXJEYXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBZZWFyICAgPT4gJDEsCiAgICAgICAgICAgICAgICAgICAgICAgIE1vbnRoICA9PiAkMiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF5ICAgID0+ICQzLAogICAgICAgICAgICAgICAgICAgICAgICBIb3VyICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWludXRlID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZCA9PiAwLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljIGZpZWxkICRDb25maWctPntUaW1lQ0lLZXl9IG9mIENvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGhhcyBhbiBpbnZhbGlkIGZvcm1hdCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHByZXBhcmUgdGhlIG1vZGlmaWVyCiAgICAgICAgICAgIG15ICggJFNpZ24sICRTdW1tYW5kLCAkVW5pdCApID0gKCAkQ29uZmlnLT57VGltZU1vZGlmaWVyfSA9fiAvXlxzKihbKy1dPylccyooXGQrKVxzKihbZGhtXT8pLyApOwogICAgICAgICAgICAkU3VtbWFuZCAqPSAoICRTaWduICYmICRTaWduIGVxICctJyApICA/IC0xIDogMTsKICAgICAgICAgICAgJFN1bW1hbmQgKj0gKCAhJFVuaXQgfHwgJFVuaXQgZXEgJ2QnICkgPyA4NjQwMCA6CiAgICAgICAgICAgICAgICAoICRVbml0IGVxICdoJyApID8gMzYwMCA6IDYwOwoKICAgICAgICAgICAgIyBnZXQgbm93CiAgICAgICAgICAgIG15ICROb3dPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSBwcm9jZWVkLCBpZiBub3cgaXMgbGF0ZXIgdGhhbiB0aGVuIG1vZGlmaWVkIHRyaWdnZXIgZGF0ZQogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAoICROb3dPYmplY3QtPlRvRXBvY2goKSA8ICRUcmlnZ2VyRGF0ZU9iamVjdC0+VG9FcG9jaCgpICsgJFN1bW1hbmQgKTsKCiAgICAgICAgICAgICMgY2hlY2sgd2hldGhlciBhIHRpY2tldCB3YXMgZ2VuZXJhdGVkIHByZXZpb3VzbHkgYW5kIGlzIG5vdCBjbG9zZWQKICAgICAgICAgICAgbXkgJUxpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFN0YXRlICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICgga2V5cyAlTGlua0xpc3QgKSB7CiAgICAgICAgICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU2lsZW50ICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNraXAgY29uZmlnIGl0ZW0sIGlmIGFuIG9wZW4gdGlja2V0IHdhcyBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgICAgICAmJiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0gPT0gMQogICAgICAgICAgICAgICAgICAgICYmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAiY2xvc2VkIgogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcmVwYXJlIHN1YnN0aXR1dGlvbnMKICAgICAgICAgICAgbXkgJVN1YnN0aXR1dGlvbnMgPSAoCiAgICAgICAgICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTlVNQkVSPicgPT4gJExhc3RWZXJzaW9uLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OQU1FPicgICA9PiAkTGFzdFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9EQVRFPicgICA9PiAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFNVQktFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCAoICRDb25maWctPntUaWNrZXR9e1RpdGxlfSAuICRDb25maWctPntUaWNrZXR9e1RleHR9ICkgPX4gLzxPVE9CT19DT05GSUdJVEVNXyhbXj5dKyk+L2cgKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiBleGlzdHMgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In07CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiAhJExhc3RWZXJzaW9uLT57JEtleX07CgogICAgICAgICAgICAgICAgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In0gPSAkTGFzdFZlcnNpb24tPnskS2V5fSAvLyAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFRpY2tldFRpdGxlICAgICAgPSAkQ29uZmlnLT57VGlja2V0fXtUaXRsZX07CiAgICAgICAgICAgIG15ICROb3RpZmljYXRpb25UZXh0ID0gJENvbmZpZy0+e1RpY2tldH17VGV4dH07CiAgICAgICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlU3Vic3RpdHV0aW9ucyApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRUaXRsZSAgICAgID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICAgICAgICAgICAgICAkTm90aWZpY2F0aW9uVGV4dCA9fiBzLyRLZXkvJFN1YnN0aXR1dGlvbnN7ICRLZXkgfS9nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFsbCBjaGVja3MgZmluaXNoZWQgLT4gY3JlYXRlIGEgdGlja2V0IGFzIG5vdGlmaWNhdGlvbgogICAgICAgICAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCksCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1F1ZXVlfSwKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtMb2NrfSAgICAgICAgIHx8ICd1bmxvY2snLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICRDb25maWctPntUaWNrZXR9e1ByaW9yaXR5fSAgICAgfHwgJzMgbm9ybWFsJywKICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTdGF0ZX0gICAgICAgIHx8ICduZXcnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1R5cGV9ICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBTZXJ2aWNlICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VydmljZX0gICAgICB8fCAnJywKICAgICAgICAgICAgICAgIFNMQSAgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTTEF9ICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICRDb25maWctPntUaWNrZXR9e0N1c3RvbWVySUR9ICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJENvbmZpZy0+e1RpY2tldH17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtPd25lcklEfSAgICAgIHx8ICcxJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVGlja2V0SUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIGEgdGlja2V0IGZvciBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkbyBhcnRpY2xlIGRiIGluc2VydAogICAgICAgICAgICBteSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQ2hhbm5lbCggQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJyApOwogICAgICAgICAgICBteSAkQXJ0aWNsZUlEICAgICAgICAgICAgICAgICAgICA9ICRJbnRlcm5hbEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VuZGVyVHlwZX0gfHwgJ3N5c3RlbScsCiAgICAgICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLAogICAgICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJE5vdGlmaWNhdGlvblRleHQsCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAiXCVcJUNNREJOb3RpZmljYXRpb24iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjbG9zZSB0aWNrZXQgaWYgYXJ0aWNsZSBjcmVhdGUgZmFpbGVkIQogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IHByb2Nlc3MgdGlja2V0ISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbGluayB0aWNrZXQgYW5kIGNvbmZpZyBpdGVtCiAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgIHRvIDEsIHRvIG1hcmsgdGhlIHRpY2tldCBhcyBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJENvbmZpZy0+e1RpY2tldH17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/RebuildLinkTable.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OlJlYnVpbGRMaW5rVGFibGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKDw8J0VORF9UWFQnKTsKUmVidWlsZCB0aGUgZGF0YWJhc2UgdGFibGUgY29uZmlnaXRlbV9saW5rIGZyb20gdGhlIGR5bmFtaWMgZmllbGRzIG9mIHRoZSB0eXBlIFJlZmVyZW5jZS4gT25seSB0aGUgZmllbGRzIGxpbmtpbmcgY29uZmlnIGl0ZW1zIGFyZQpjb25zaWRlcmVkIGluIHRoaXMgcHJvY2Vzcy4KRU5EX1RYVAoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWJ1aWxkaW5nIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRSZXN1bHQgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgogICAgJFNlbGYtPlByaW50KCI8JFJlc3VsdC0+e0NvbG9yfT4kUmVzdWx0LT57TWVzc2FnZX08LyRSZXN1bHQtPntDb2xvcn0+XG5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvciB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/WebService/TriggerConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGFlbW9uOjpTY2hlZHVsZXJEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoLicpOwogICAgJFNlbGYtPkFkZEFyZ3VtZW50KAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWJTZXJ2aWNlTmFtZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNlbGVjdCBuYW1lIG9mIHdlYiBzZXJ2aWNlIHRvIGJlIHRyaWdnZXJlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTZWxlY3QgSW52b2tlciB0byBiZSB0cmlnZ2VyZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJbnZva2VyICAgICAgICA9ICRTZWxmLT5HZXRBcmd1bWVudCgnSW52b2tlcicpOwogICAgbXkgJFdlYnNlcnZpY2VOYW1lID0gJFNlbGYtPkdldEFyZ3VtZW50KCdXZWJTZXJ2aWNlTmFtZScpOwoKICAgICMgQ2hlY2sgaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgbWV0ICh3ZWIgc2VydmljZSBleGlzdHMgYW5kIGhhcyBuZWVkZWQgbWV0aG9kKS4KICAgIG15ICRXZWJzZXJ2aWNlCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KCBOYW1lID0+ICRXZWJzZXJ2aWNlTmFtZSApOwogICAgZGllICJSZXF1aXJlZCB3ZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBleGlzdCFcbiIgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlKTsKICAgIGRpZSAiUmVxdWlyZWQgd2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgaXMgaW52YWxpZCFcbiIgICAgIGlmICRXZWJzZXJ2aWNlLT57VmFsaWRJRH0gbmUgMTsKCiAgICBteSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nCiAgICAgICAgPSAkV2Vic2VydmljZS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9OwogICAgZGllICJXZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBjb250YWluIHJlcXVpcmVkIFJFU1QgY29udHJvbGxlciBtYXBwaW5nIVxuIgogICAgICAgIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nKTsKICAgIGRpZSAiV2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgZG9lcyBub3QgY29udGFpbiB0aGUgSW52b2tlciAnJEludm9rZXInISIKICAgICAgICBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmctPnskSW52b2tlcn0gKTsKCiAgICAjIFJlbWVtYmVyIGRhdGEgZm9yIHRhc2suCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1GZXRjaFRhc2tEYXRhfSA9IHsKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2UtPntJRH0sCiAgICAgICAgSW52b2tlciAgICAgID0+ICRJbnZva2VyLAogICAgICAgIERhdGEgICAgICAgICA9PiB7IER1bW15ID0+IDEgfSwKICAgIH07CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEludm9rZXIgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ0ludm9rZXInKTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+VHJpZ2dlcmluZyAkSW52b2tlciBmb3IgaW1tZWRpYXRlIChhc3luY2hyb25vdXMpIGV4ZWN1dGlvbi48L3llbGxvdz5cbiIKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyktPlJ1biggJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0tPiUqICk7CgogICAgIyBUT0RPOiBUaGluayBhYm91dCBqdXN0IGFkZGluZyBhIHRhc2sKICAgICMgICAgbXkgJFRhc2tJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEYWVtb246OlNjaGVkdWxlckRCJyktPlRhc2tBZGQoCiAgICAjICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ0dlbmVyaWNJbnRlcmZhY2UnLAogICAgIyAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtRmV0Y2hfJyAuICRJbnZva2VyLAogICAgIyAgICAgICAgTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzID0+IDEsCiAgICAjICAgICAgICBEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0sCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggIUlzSW50ZWdlcigkVGFza0lEKSApIHsKICAgICMgICAgICAgICRTZWxmLT5QcmludEVycm9yKCdDb3VsZCBub3QgdHJpZ2dlciBpbnZva2VyJyk7CiAgICAjICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICMgICAgfQogICAgIwogICAgIyAgICBpZiAoICRUYXNrSUQgPT0gLTEgKSB7CiAgICAjICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+QW5vdGhlciAkSW52b2tlciBjb250cm9sbGVyIGlzIGFscmVhZHkgcnVubmluZy4gUGxlYXNlIHRyeSBhZ2FpbiE8L3llbGxvdz5cbiIpOwogICAgIyAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICAjICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVJlZmVyZW5jZSk7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCAgIHF3KGFueSBmaXJzdCk7CnVzZSBTY2FsYXI6OlV0aWwgcXcocmVmdHlwZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtIGJhY2tlbmQgZm9yIHRoZSBSZWZlcmVuY2UgZHluYW1pYyBmaWVsZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCml0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IGNyZWF0ZSBpbnN0YW5jZXMgb2YgZHluYW1pYyBmaWVsZCBkcml2ZXJzLgpJbnN0YW5jZXMgb2YgdGhlIGRyaXZlcnMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQpkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0IEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3Mge30sICRUeXBlOwoKICAgICMgU29tZSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgdGFibGUgYXR0cmlidXRlIGR5bmFtaWNfZmllbGRfdmFsdWUudmFsdWVfaW50LgogICAgJFNlbGYtPntWYWx1ZVR5cGV9ICAgICAgPSAnSW50ZWdlcic7CiAgICAkU2VsZi0+e1ZhbHVlS2V5fSAgICAgICA9ICdWYWx1ZUludCc7CiAgICAkU2VsZi0+e1RhYmxlQXR0cmlidXRlfSA9ICd2YWx1ZV9pbnQnOwoKICAgICMgVXNlZCBmb3IgZGVjbGFyaW5nIENTUyBjbGFzc2VzCiAgICAkU2VsZi0+e0ZpZWxkQ1NTQ2xhc3N9ID0gJ0R5bmFtaWNGaWVsZFJlZmVyZW5jZSc7CgogICAgIyBzZXQgZmllbGQgYmVoYXZpb3JzCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDAsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDEsCiAgICAgICAgJ0lzSGlkZGVuSW5UaWNrZXRJbmZvcm1hdGlvbicgID0+IDAsCiAgICAgICAgJ0lzUmVmZXJlbmNlRmllbGQnICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU2V0Q2FwYWJsZScgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ1NldHNEeW5hbWljQ29udGVudCcgICAgICAgICAgID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ0lUU01Db25maWdJdGVtJzsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUdldCgpCgpUaGlzIG1ldGhvZCBjb250YWlucyBzcGVjaWFsIHN1cHBvcnQgZm9yIHRoZSBjYXNlIG9mIExlbnNlcy4gQSBMZW5zIG9wZXJhdGVzIGRpcmVjdGx5IG9uIGR5bmFtaWMgZmllbGQgb2YgYW4gc3BlY2lmaWMgb2JqZWN0LgpUaGUgc3BlY2lmaWMgb2JqZWN0IGlzIHVzdWFsbHkgaWRlbnRpZmllZCBieSB0aGUgdmFsdWUgb2YgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkLiBCdXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHNwZWNpYWwgY2FzZS4KV2hlbiB0aGUgcmVmZXJlbmNlIGlzIHRvIGFuIEM8SVRTTUNvbmZpZ0l0ZW0+IHRoZW4gdGhlIHJlbGV2YW50IElEIGlzIHRoZSBJRCBvZiB0aGUgbGFzdCB2ZXJzaW9uLiBUaGlzIGNhc2UgaXMgaGFuZGxlZAp3aGVuIHRoZSBwYXJhbWV0ZXIgQzxGb3JMZW5zPiBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyZW50IGNsYXNzCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U1VQRVI6OlZhbHVlR2V0KCVQYXJhbSk7CgogICAgIyBzcGVjaWFsIGhhbmRsaW5nIG9ubHkgZm9yIExlbnMKICAgIHJldHVybiAkVmFsdWUgdW5sZXNzICRQYXJhbXtGb3JMZW5zfTsKCiAgICAjIGZvciB1c2FnZSBpbiBsZW5zZXMgd2UgbWlnaHQgaGF2ZSB0byBpbnRlcnByZXQgdGhlIHZhbHVlcyB0byBiZSB1c2FibGUgZm9yIHRoZWlyIFZhbHVlR2V0KCkKICAgIHJldHVybiAkU2VsZi0+VmFsdWVGb3JMZW5zKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWx1ZSA9PiAkVmFsdWUKICAgICk7Cn0KCj1oZWFkMiBWYWx1ZVNldCgpCgpUaGlzIG1ldGhvZCBoYW5kbGVzIENvbmZpZ0l0ZW0tTGluayBzeW5jIGZvciBDPElUU01Db25maWdJdGVtPnMgd2hlbiBEeW5hbWljIEZpZWxkIFJlZmVyZW5jZXMgYmV0d2VlbiAyCkNvbmZpZ0l0ZW0oVmVyc2lvbikgYXJlIHVwZGF0ZWQuCgo9Y3V0CgpzdWIgVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPlNVUEVSOjpWYWx1ZVNldCglUGFyYW0pOwoKICAgIGlmICgkUmVzdWx0KSB7CgogICAgICAgICMgb3B0aW9uYWwgY29uZmlnIGl0ZW0gbGlua3MKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgICAgIG15ICRPYmplY3RUeXBlID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9OwogICAgICAgIG15ICRGaWVsZFR5cGUgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX07CgogICAgICAgICMgb25seSBwcm9jZWVkIGlmIHRoaXMgaXMgYSBDSSA8LT4gQ0kgcmVsYXRpb25zaGlwCiAgICAgICAgcmV0dXJuICRSZXN1bHQgdW5sZXNzICRPYmplY3RUeXBlID1+IC9eSVRTTUNvbmZpZ0l0ZW0vOwogICAgICAgIHJldHVybiAkUmVzdWx0IHVubGVzcyAkRmllbGRUeXBlICA9fiAvXkNvbmZpZ0l0ZW0vOwoKICAgICAgICBteSAkVmFsdWVUeXBlID0gcmVmKCAkUGFyYW17VmFsdWV9ICk7CiAgICAgICAgbXkgQFZhbHVlcyAgICA9ICRWYWx1ZVR5cGUgJiYgJFZhbHVlVHlwZSBlcSAnQVJSQVknCiAgICAgICAgICAgID8gJFBhcmFte1ZhbHVlfS0+QCoKICAgICAgICAgICAgOiAkUGFyYW17VmFsdWV9ID8gKCAkUGFyYW17VmFsdWV9ICkgOiAoKTsKCiAgICAgICAgaWYgKCAkUGFyYW17U2V0fSApIHsKCiAgICAgICAgICAgICMgaW4gc2V0cyB3ZSBleHBlY3QgZWl0aGVyIGFycmF5IHJlZmVyZW5jZXMgb3IgdW5kZWYgZm9yIHRoZSBzaW5nbGUgc2V0IGluZGljZXMKICAgICAgICAgICAgIyBmcm9tIFsgW1ZhbDExLCBWYWwxMl0sIHVuZGVmLCBbVmFsMzFdIF0KICAgICAgICAgICAgIyB2aWEgICggW1ZhbDExLCBWYWwxMl0sIHVuZGVmLCBbVmFsMzFdICkKICAgICAgICAgICAgIyB0byAgICggVmFsMTEsIFZhbDEyLCBWYWwzMSApCiAgICAgICAgICAgIEBWYWx1ZXMgPSBtYXAgeyAkXyA/ICRfLT5AKiA6ICgpIH0gQFZhbHVlczsKICAgICAgICB9CgogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgY29uZmlnaXRlbV9saW5rCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPlN5bmNMaW5rVGFibGUoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUxhc3RWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVZlcnNpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICA9PiBcQFZhbHVlcywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9CgojIE92ZXJyaWRlIGZyb20gQmFzZVJlZmVyZW5jZSB0byBwcmV2ZW50IExpbmtPYmplY3QtQXV0by1MaW5raW5nIGZvciBDSSA8LT4gQ0kgcmVsYXRpb25zCgpzdWIgX0NyZWF0ZUF1dG9MaW5rT2JqZWN0TGluayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKICAgIG15ICRPYmplY3RUeXBlICAgPSAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX07CiAgICBteSAkRmllbGRUeXBlICAgID0gJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX07CgogICAgJEZpZWxkVHlwZSAgPX4gcy9eQ29uZmlnSXRlbS9JVFNNQ29uZmlnSXRlbS87CiAgICAkRmllbGRUeXBlICA9fiBzL15JVFNNQ29uZmlnSXRlbVZlcnNpb24vSVRTTUNvbmZpZ0l0ZW0vOwogICAgJE9iamVjdFR5cGUgPX4gcy9eSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uL0lUU01Db25maWdJdGVtLzsKCiAgICBpZiAoICRGaWVsZFR5cGUgZXEgJE9iamVjdFR5cGUgJiYgJEZpZWxkVHlwZSA9fiAvXklUU01Db25maWdJdGVtLyApIHsKCiAgICAgICAgIyBza2lwIGR5bmFtaWMgbGlua2luZyBmb3IgQ29uZmlnSXRlbSA8LT4gQ29uZmlnSXRlbSBsaW5rcwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPlNVUEVSOjpfQ3JlYXRlQXV0b0xpbmtPYmplY3RMaW5rKCVQYXJhbSk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHBhcmVudCBjbGFzcwogICAgbXkgJFZhbHVlID0gJFNlbGYtPlNVUEVSOjpFZGl0RmllbGRWYWx1ZUdldCglUGFyYW0pOwoKICAgICMgZm9yIHRoaXMgZmllbGQgdGhlIG5vcm1hbCByZXR1cm4gYW4gdGhlIFJldHVyblZhbHVlU3RydWN0dXJlIGFyZSB0aGUgc2FtZQogICAgcmV0dXJuICRWYWx1ZSB1bmxlc3MgJFBhcmFte0ZvckxlbnN9OwoKICAgICMgZm9yIHVzYWdlIGluIGxlbnNlcyB3ZSBtaWdodCBoYXZlIHRvIGludGVycHJldCB0aGUgdmFsdWVzIHRvIGJlIHVzYWJsZSBmb3IgdGhlaXIgVmFsdWVHZXQoKQogICAgcmV0dXJuICRTZWxmLT5WYWx1ZUZvckxlbnMoIFZhbHVlID0+ICRWYWx1ZSApOwp9Cgo9aGVhZDIgR2V0RmllbGRUeXBlU2V0dGluZ3MoKQoKR2V0IHRoZSBmaWVsZCB0eXBlIHNldHRpbmdzIGZvciB0aGUgcmVmZXJlbmNlZCBvYmplY3QgdHlwZSBDPElUU01Db25maWdJdGVtPi4KVGhlIGdlbmVyaWMgc2V0dGluZ3MgZm9yIGFsbCByZWZlcmVuY2VkIG9iamVjdCB0eXBlcyBhcmUgaW5jbHVkZWQgYXMgd2VsbC4KCj1jdXQKCnN1YiBHZXRGaWVsZFR5cGVTZXR0aW5ncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZWZlcmVuY2luZ09iamVjdFR5cGUgPSAkUGFyYW17T2JqZWN0VHlwZX07CgogICAgIyBGaXJzdCBmZXRjaCB0aGUgZ2VuZXJpYyBzZXR0aW5ncy4KICAgIG15IEBGaWVsZFR5cGVTZXR0aW5ncyA9ICRTZWxmLT5TVVBFUjo6R2V0RmllbGRUeXBlU2V0dGluZ3MoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIEFkZCB0aGUgc2VsZWN0aW9uIG9mIHRoZSBjb25maWcgaXRlbSBjbGFzcy4KICAgIHsKICAgICAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0NsYXNzSURzJywKICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJyksCiAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcycpLAogICAgICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSAgID0+ICRDbGFzc0lEMk5hbWUsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGNsYXNzIGlzIHJlcXVpcmVkCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIEFkZCB0aGUgc2VsZWN0aW9uIG9mIHRoZSBjb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlLgogICAgewogICAgICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJyksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gJERlcGxveW1lbnRTdGF0ZXNMaXN0LAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lICAgID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIFNlbGVjdCB0aGUgbGluayByZWZlcmVuY2luZyB0eXBlCiAgICBpZiAoICRSZWZlcmVuY2luZ09iamVjdFR5cGUgPX4gbS9eSVRTTUNvbmZpZ0l0ZW0vICkgewogICAgICAgIG15IEBTZWxlY3Rpb25EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRHluYW1pYycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0R5bmFtaWMgKENvbmZpZ0l0ZW0pJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdTdGF0aWMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdTdGF0aWMgKFZlcnNpb24pJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnTGlua1JlZmVyZW5jaW5nVHlwZScsCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMaW5rIFJlZmVyZW5jaW5nIFR5cGUnKSwKICAgICAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLicKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSA9PiBcQFNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBEZWZhdWx0S2V5ICAgID0+ICdEeW5hbWljJywKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIFN1cHBvcnQgY29uZmlndXJhYmxlIHNlYXJjaCBrZXkKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdTZWFyY2hBdHRyaWJ1dGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBvbiBhdXRvY29tcGxldGUnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ051bWJlcicgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAnTmFtZScgICA9PiAnTmFtZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICApOwogICAgbXkgJURGU2VsZWN0aW9uRGF0YSA9IG1hcCB7ICggIkR5bmFtaWNGaWVsZF8kXyIgPT4gIkR5bmFtaWNGaWVsZF8kXyIgKSB9IHZhbHVlcyAkRHluYW1pY0ZpZWxkc0xpc3QtPiUqOwoKICAgICMgU3VwcG9ydCBjb25maWd1cmFibGUgaW1wb3J0IHNlYXJjaCBhdHRyaWJ1dGUKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdJbXBvcnRTZWFyY2hBdHRyaWJ1dGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFeHRlcm5hbC1zb3VyY2Uga2V5JyksCiAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoJ1doZW4gc2V0IHZpYSBhbiBleHRlcm5hbCBzb3VyY2UgKGUuZy4gd2ViIHNlcnZpY2Ugb3IgaW1wb3J0IC8gZXhwb3J0KSwgdGhlIHZhbHVlIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgdGhpcyBhdHRyaWJ1dGUuJyksCiAgICAgICAgICAgIElucHV0VHlwZSAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSAgID0+IHsKICAgICAgICAgICAgICAgICdOYW1lJyAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICdOdW1iZXInID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgJURGU2VsZWN0aW9uRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgIyBTdXBwb3J0IHZhcmlvdXMgZGlzcGxheSBvcHRpb25zCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnRGlzcGxheVR5cGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgd2hpY2ggaXMgZGlzcGxheWVkIGZvciB2YWx1ZXMnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1OdW1iZXInICAgICAgPT4gJzxDb25maWcgSXRlbSBOdW1iZXI+JywKICAgICAgICAgICAgICAgICdDb25maWdJdGVtTmFtZScgICAgICAgID0+ICc8Q29uZmlnIEl0ZW0gTmFtZT4nLAogICAgICAgICAgICAgICAgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgPT4gJzxDbGFzcyBOYW1lPjogPENvbmZpZyBJdGVtIE51bWJlcj4nLAogICAgICAgICAgICAgICAgJ0NsYXNzQ29uZmlnSXRlbU5hbWUnICAgPT4gJzxDbGFzcyBOYW1lPjogPENvbmZpZyBJdGVtIE5hbWU+JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgIyBTdXBwb3J0IHJlZmVyZW5jZSBmaWx0ZXJzCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnUmVmZXJlbmNlRmlsdGVyTGlzdCcsCiAgICAgICAgfTsKCiAgICByZXR1cm4gQEZpZWxkVHlwZVNldHRpbmdzOwp9Cgo9aGVhZDIgT2JqZWN0UGVybWlzc2lvbigpCgpjaGVja3MgcmVhZCBwZXJtaXNzaW9uIGZvciBhIGdpdmVuIG9iamVjdCBhbmQgVXNlcklELgoKICAgICRQZXJtaXNzaW9uID0gJEJhY2tlbmRPYmplY3QtPk9iamVjdFBlcm1pc3Npb24oCiAgICAgICAgS2V5ICAgICA9PiAxMjMsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgKTsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucy4KCiAgICBteSAlRGVzY3JpcHRpb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm4KCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJDSSMgMTIzNDQ1NSIsCiAgICAgICAgTG9uZyAgID0+ICJDSSMgMTIzNDQ1NTogTmVlZCBhIHNhbXBsZSBjb25maWcgaXRlbSB0aXRsZSIsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBTaWxlbnQgICAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgTm9ybWFsID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgICAgIExvbmcgICA9PiAiJFBhcmFte09iamVjdElEfSAoZGVsZXRlZCkiLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRyYW5zbGF0aW9uIG9mIGNsYXNzIG5hbWUgaWYgcG9zc2libGUKICAgIG15ICRDbGFzc05hbWVTdHJnID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9ICkgewogICAgICAgICRDbGFzc05hbWVTdHJnID0gJFBhcmFte0xheW91dE9iamVjdH17TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZVN0cmcpOwogICAgfQoKICAgIG15ICVEZXNjcmlwdGlvbnM7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICYmICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317RGlzcGxheVR5cGV9ICkgewoKICAgICAgICAjIHByZXBhcmUgc3RyaW5nIGFzIGNvbmZpZ3VyZWQKICAgICAgICBteSAkRGlzcGxheVR5cGUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0Rpc3BsYXlUeXBlfTsKICAgICAgICBpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU5hbWUnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAiJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGlzcGxheVR5cGUgZXEgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ2xhc3NDb25maWdJdGVtTmFtZScgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICB9CgogICAgbXkgJExpbms7CiAgICBpZiAoICRQYXJhbXtMaW5rfSAmJiAkUGFyYW17TGF5b3V0T2JqZWN0fXtTZXNzaW9uU291cmNlfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9IGVxICdBZ2VudEludGVyZmFjZScgKSB7CgogICAgICAgICAgICAjIFRPRE86IG9ubHkgc2hvdyB0aGUgbGluayBpZiB0aGUgdXNlciAkUGFyYW17VXNlcklEfSBoYXMgcGVybWlzc2lvbnMKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kUGFyYW17T2JqZWN0SUR9IjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgZGVzY3JpcHRpb24KICAgIHJldHVybiAoCiAgICAgICAgJURlc2NyaXB0aW9ucywKICAgICAgICBMaW5rID0+ICRMaW5rLAogICAgKTsKfQoKPWhlYWQyIFNlYXJjaE9iamVjdHMoKQoKVGhpcyBpcyB1c2VkIGluIGF1dG8gY29tcGxldGlvbiB3aGVuIHNlYXJjaGluZyBmb3IgcG9zc2libGUgb2JqZWN0IElEcy4KCiAgICBteSBAT2JqZWN0SURzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaE9iamVjdHMoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRPYmplY3RJRCwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGlmIGdpdmVuLCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgVGVybQogICAgICAgIFRlcm0gICAgICAgICAgICAgICA9PiAkVGVybSwgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0cyB0byB3aWxkY2FyZCBzZWFyY2ggd2l0aCBlbXB0eSBzdHJpbmcKICAgICAgICBNYXhSZXN1bHRzICAgICAgICAgPT4gJE1heFJlc3VsdHMsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17VGVybX0gLy89ICcnOwoKICAgIG15ICRERkRldGFpbHMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9IC8vIHt9OwoKICAgIG15ICVTZWFyY2hQYXJhbXM7CgogICAgaWYgKCAkUGFyYW17T2JqZWN0SUR9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbUlEfSA9ICRQYXJhbXtPYmplY3RJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gKSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntJbXBvcnRTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIkUGFyYW17VGVybX0iOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIqJFBhcmFte1Rlcm19KiI7CiAgICB9CgogICAgIyBwcmVwYXJlIG1hcHBpbmcgb2YgZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgbXkgJUF0dHJpYnV0ZU5hbWVNYXBwaW5nID0gKAogICAgICAgIEN1c3RvbWVyVXNlcklEID0+IFsKICAgICAgICAgICAgJ1NlbGVjdGVkQ3VzdG9tZXJVc2VyJywKICAgICAgICBdLAogICAgICAgIFJlc3BvbnNpYmxlSUQgPT4gWwogICAgICAgICAgICAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgXSwKICAgICAgICBPd25lcklEID0+IFsKICAgICAgICAgICAgJ05ld093bmVySUQnLAogICAgICAgICAgICAnTmV3VXNlcklEJywKICAgICAgICBdLAogICAgICAgIFF1ZXVlSUQgPT4gWwogICAgICAgICAgICAnRGVzdCcsCiAgICAgICAgICAgICdOZXdRdWV1ZUlEJywKICAgICAgICBdLAogICAgICAgIFN0YXRlSUQgPT4gWwogICAgICAgICAgICAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgICdOZXh0U3RhdGVJRCcsCiAgICAgICAgXSwKICAgICAgICBQcmlvcml0eUlEID0+IFsKICAgICAgICAgICAgJ05ld1ByaW9yaXR5SUQnLAogICAgICAgIF0sCiAgICApOwoKICAgICMgaW5jb3Jwb3JhdGUgcmVmZXJlbmNlZmlsdGVybGlzdCBpbnRvIHNlYXJjaCBwYXJhbXMKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKCiAgICAgICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAgICAgRklMVEVSSVRFTToKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0tPkAqICkgewoKICAgICAgICAgICAgIyBjaGVjayBmaWx0ZXIgY29uZmlnCiAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9OwogICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IHx8ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSApOwoKICAgICAgICAgICAgIyBtYXAgSUQgdG8gSURzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBteSAkQXR0cmlidXRlTmFtZSA9ICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfTsKICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQXR0cmlidXRlTmFtZSB9IHF3KFF1ZXVlSUQgVHlwZUlEIFN0YXRlSUQgUHJpb3JpdHlJRCBTZXJ2aWNlSUQgU0xBSUQgT3duZXJJRCBSZXNwb25zaWJsZUlEICkgKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSAuPSAncyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcGVyZm9ybSBzZWFyY2ggaWYgb2JqZWN0IGF0dHJpYnV0ZSB0byBzZWFyY2ggZm9yIGlzIGVtcHR5CiAgICAgICAgICAgICAgICBteSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte09iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte09iamVjdH17RHluYW1pY0ZpZWxkfXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gLy8gJFBhcmFte09iamVjdH17ICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSB9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICYmICEkRXF1YWxzT2JqZWN0QXR0cmlidXRlICYmICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17Q3VzdG9tZXJVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgJiYgISRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJhbU9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gPX4gL15EeW5hbWljRmllbGRfKD88REZOYW1lPlxTKykvICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkREZOYW1lICAgICAgICAgICAgID0gJCt7REZOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEZpbHRlckl0ZW1ERkNvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkREZOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRmlsdGVySXRlbURGQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbXtQYXJhbU9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpbHRlckl0ZW1ERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybURhdGVzICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICYmICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17Q3VzdG9tZXJVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBzdGFuZGFyZCB0aWNrZXQgYXR0cmlidXRlIG5hbWVzIHdpdGggZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICBteSBAUGFyYW1OYW1lcyA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtTmFtZXMoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYXR0cmlidXRlIG5hbWUgaXRzZWxmIGlzIGluIHBhcmFtcwogICAgICAgICAgICAgICAgICAgICAgICAjIE5PVEUgdHJ5aW5nIGF0dHJpYnV0ZSBpdHNlbGYgaXMgY3J1Y2lhbGx5IGltcG9ydGFudCBpbiBjYXNlIG9mIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGJlY2F1c2UgQWdlbnRUaWNrZXRQaG9uZSBkb2VzIG5vdCBwcm92aWRlIFF1ZXVlSUQsIGJ1dCBwdXRzIHRoZSBpZCBpbgogICAgICAgICAgICAgICAgICAgICAgICAjICAgRGVzdCwgYW5kIEFnZW50VGlja2V0RW1haWwgbGVhdmVzIERlc3QgYXMgYSBzdHJpbmcgYnV0IHB1dHMgdGhlIGlkIGluIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFBhcmFtTmFtZSA9IGZpcnN0IHsgJF8gZXEgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gQFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCwgdHJ5IHRvIGZpbmQgYSBtYXBwZWQgYXR0cmlidXRlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFBhcmFtTmFtZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZXMgZXhpc3QgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWFwcGVkQXR0cmlidXRlcyA9ICRBdHRyaWJ1dGVOYW1lTWFwcGluZ3sgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkTWFwcGVkQXR0cmlidXRlcyBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBQRURBVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRNYXBwZWRBdHRyaWJ1dGUgKCAkTWFwcGVkQXR0cmlidXRlcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbU5hbWUgPSBmaXJzdCB7ICRfIGVxICRNYXBwZWRBdHRyaWJ1dGUgfSBAUGFyYW1OYW1lczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgTUFQUEVEQVRUUklCVVRFIGlmICRQYXJhbU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJFBhcmFtTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGVuIGNhbGxlZCBieSBBZ2VudFJlZmVyZW5jZVNlYXJjaCwgRGVzdCBpcyBhIHN0cmluZyBhbmQgd2UgbmVlZCB0byBleHRyYWN0IHRoZSBRdWV1ZUlECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ0Rlc3QnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRRdWV1ZUlEID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID1+IC9eKFxkezEsMTAwfSlcfFx8Lis/JC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRdWV1ZUlEID0gJDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUXVldWVJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0cnkgaWYgQ3VzdG9tZXJVc2VyIGlzIG9uIHRoZSBtYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VySUQgPSAkUGFyYW17UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlbGVjdGVkQ3VzdG9tZXJVc2VyJyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRDdXN0b21lclVzZXJJRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICVDdXN0b21lclVzZXJEYXRhID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWl0aGVyIGF0dHJpYnV0ZSBub3IgbWFwcGVkIGFsdGVybmF0aXZlcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBhdHRyaWJ1dGUgJyRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfScgYW5kIGl0cyBhc3NvY2lhdGVkIGFsdGVybmF0aXZlcyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZSBtYXNrISIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGVuc3VyZSB0aGF0IGZvciBFcXVhbHNPYmplY3RBdHRyaWJ1dGUgVXNlcklEIGFsd2F5cyAkU2VsZi0+e1VzZXJJRH0gaXMgdXNlZCBpbiB0aGUgZW5kCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnVXNlcklEJyApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte1VzZXJJRH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICgpIHVubGVzcyAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgcmV0dXJuICgpIGlmICggcmVmICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgZXEgJ0FSUkFZJyAmJiAhJEVxdWFsc09iamVjdEF0dHJpYnV0ZS0+QCogKTsKCiAgICAgICAgICAgICAgICAjIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZHluYW1pYyBmaWVsZCBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9ID1+IG17XkR5bn1pICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJEVxdWFsc09iamVjdEF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDdXN0b21lclVzZXJMb2dpbn0gPSBbJEVxdWFsc09iamVjdEF0dHJpYnV0ZV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhcnJheSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gWyRFcXVhbHNPYmplY3RBdHRyaWJ1dGVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9ICkgewoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICAjIFRPRE8gY2hlY2sgaWYgdGhpcyBoYXMgdG8gYmUgYWRhcHRlZCBmb3IgdGlja2V0IHNlYXJjaAogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7Q3VzdG9tZXJVc2VyTG9naW59ID0gWyAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBjbGFzcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntDbGFzc0lEc30gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NJRHM7CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzSUQgfSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoKSB1bmxlc3MgQENsYXNzSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIFN1cHBvcnQgcmVzdHJpY3Rpb24gYnkgZGVwbG95bWVudCBzdGF0ZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgaWYgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gKSB7CiAgICAgICAgICAgIG15IEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbG95bWVudFN0YXRlSUQgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbG95bWVudFN0YXRlSUQgfSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVwbG95bWVudFN0YXRlSURzLCAkRGVwbG95bWVudFN0YXRlSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoKSB1bmxlc3MgQERlcGxveW1lbnRTdGF0ZUlEczsKCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbG95bWVudFN0YXRlSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc307CiAgICAgICAgfQogICAgfQoKICAgICMgcmV0dXJuIGEgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICBMaW1pdCAgID0+ICRQYXJhbXtNYXhSZXN1bHRzfSwKICAgICAgICBSZXN1bHQgID0+ICdBUlJBWScsCiAgICAgICAgU29ydEJ5ICA9PiAnTnVtYmVyJywKICAgICAgICBPcmRlckJ5ID0+ICdEb3duJywKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgKTsKfQoKPWhlYWQyIFZhbHVlRm9yTGVucygpCgpyZXR1cm4gdGhlIGN1cnJlbnQgbGFzdCB2ZXJzaW9uIGlkcyB1c2VkIGluIGR5bmFtaWNfZmllbGRfdmFsdWUuClRoZSBwYXNzZWQgaW4gdmFsdWUgaXMgYSBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcy4gVGhlc2UgSURzIGFyZQp0cmFuc2Zvcm1lZCBpbnRvIHRoZSByZXNwZWN0aXZlIGxhc3QgdmVyc2lvbiBJRHMuCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlRm9yTGVucygKICAgICAgICBWYWx1ZSA9PiBbMTcsMTcsMTksMjBdLAogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUZvckxlbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtWYWx1ZX07CgogICAgaWYgKCByZWYgJFBhcmFte1ZhbHVlfSBuZSAnQVJSQVknICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSBbICRQYXJhbXtWYWx1ZX0gXTsKICAgIH0KCiAgICBteSBATGFzdFZlcnNpb25JRHM7CgogICAgdW5sZXNzICggJFBhcmFte1NldH0gKSB7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3MpCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkUGFyYW17VmFsdWV9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgU2lsZW50ICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgdmFsaWQgSURzCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgICAgICBuZXh0IENPTkZJR19JVEVNX0lEIHVubGVzcyAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwoKICAgICAgICAgICAgcHVzaCBATGFzdFZlcnNpb25JRHMsICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXEBMYXN0VmVyc2lvbklEczsKICAgIH0KCiAgICAjIGZvciBzZXRzIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGZvciBldmVyeSBzZXQgdmFsdWUKICAgIGZvciBteSAkU2V0VmFsdWUgKCAkUGFyYW17VmFsdWV9LT5AKiApIHsKICAgICAgICBpZiAoIHJlZiAkU2V0VmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNldFZhbHVlID0gWyRTZXRWYWx1ZV07CiAgICAgICAgfQoKICAgICAgICBteSBAU2V0VmVyc2lvbklEczsKCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkU2V0VmFsdWUtPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgdmFsaWQgSURzCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgICAgICBuZXh0IENPTkZJR19JVEVNX0lEIHVubGVzcyAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwoKICAgICAgICAgICAgcHVzaCBAU2V0VmVyc2lvbklEcywgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQExhc3RWZXJzaW9uSURzLCBcQFNldFZlcnNpb25JRHM7CiAgICB9CgogICAgcmV0dXJuIFxATGFzdFZlcnNpb25JRHM7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItemVersion.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbVZlcnNpb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW1WZXJzaW9uIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtVmVyc2lvbiBiYWNrZW5kIGZvciB0aGUgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgppdCBpcyB1c3VhbGx5IG5vdCBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjcmVhdGUgaW5zdGFuY2VzIG9mIGR5bmFtaWMgZmllbGQgZHJpdmVycy4KSW5zdGFuY2VzIG9mIHRoZSBkcml2ZXJzIGFyZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUKZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdCBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIFNvbWUgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHRhYmxlIGF0dHJpYnV0ZSBkeW5hbWljX2ZpZWxkX3ZhbHVlLnZhbHVlX2ludC4KICAgICRTZWxmLT57VmFsdWVUeXBlfSAgICAgID0gJ0ludGVnZXInOwogICAgJFNlbGYtPntWYWx1ZUtleX0gICAgICAgPSAnVmFsdWVJbnQnOwogICAgJFNlbGYtPntUYWJsZUF0dHJpYnV0ZX0gPSAndmFsdWVfaW50JzsKCiAgICAjIFVzZWQgZm9yIGRlY2xhcmluZyBDU1MgY2xhc3NlcwogICAgJFNlbGYtPntGaWVsZENTU0NsYXNzfSA9ICdEeW5hbWljRmllbGRSZWZlcmVuY2UnOwoKICAgICMgc2V0IGZpZWxkIGJlaGF2aW9ycwogICAgJFNlbGYtPntCZWhhdmlvcnN9ID0gewogICAgICAgICdJc0FDTFJlZHVjaWJsZScgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc05vdGlmaWNhdGlvbkV2ZW50Q29uZGl0aW9uJyA9PiAwLAogICAgICAgICdJc1NvcnRhYmxlJyAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0ZpbHRyYWJsZScgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc1N0YXRzQ29uZGl0aW9uJyAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScgICA9PiAxLAogICAgICAgICdJc0hpZGRlbkluVGlja2V0SW5mb3JtYXRpb24nICA9PiAwLAogICAgICAgICdJc1JlZmVyZW5jZUZpZWxkJyAgICAgICAgICAgICA9PiAxLAogICAgfTsKCiAgICAkU2VsZi0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9ICdJVFNNQ29uZmlnSXRlbVZlcnNpb24nOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucy4KCiAgICBteSAlRGVzY3JpcHRpb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm4KCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJDSSMgMTIzNDQ1NSIsCiAgICAgICAgTG9uZyAgID0+ICJDSSMgMTIzNDQ1NTogTmVlZCBhIHNhbXBsZSBjb25maWcgaXRlbSB0aXRsZSIsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBTaWxlbnQgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgTm9ybWFsID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgICAgIExvbmcgICA9PiAiJFBhcmFte09iamVjdElEfSAoZGVsZXRlZCkiLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRyYW5zbGF0aW9uIG9mIGNsYXNzIG5hbWUgaWYgcG9zc2libGUKICAgIG15ICRDbGFzc05hbWVTdHJnID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9ICkgewogICAgICAgICRDbGFzc05hbWVTdHJnID0gJFBhcmFte0xheW91dE9iamVjdH17TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZVN0cmcpOwogICAgfQoKICAgIG15ICVEZXNjcmlwdGlvbnM7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICYmICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317RGlzcGxheVR5cGV9ICkgewoKICAgICAgICAjIHByZXBhcmUgc3RyaW5nIGFzIGNvbmZpZ3VyZWQKICAgICAgICBteSAkRGlzcGxheVR5cGUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0Rpc3BsYXlUeXBlfTsKICAgICAgICBpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU5hbWUnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAiJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGlzcGxheVR5cGUgZXEgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ2xhc3NDb25maWdJdGVtTmFtZScgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICB9CgogICAgbXkgJExpbms7CiAgICBpZiAoICRQYXJhbXtMaW5rfSAmJiAkUGFyYW17TGF5b3V0T2JqZWN0fXtTZXNzaW9uU291cmNlfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9IGVxICdBZ2VudEludGVyZmFjZScgKSB7CgogICAgICAgICAgICAjIFRPRE86IG9ubHkgc2hvdyB0aGUgbGluayBpZiB0aGUgdXNlciAkUGFyYW17VXNlcklEfSBoYXMgcGVybWlzc2lvbnMKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRQYXJhbXtPYmplY3RJRH0iOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgcmV0dXJuICgKICAgICAgICAlRGVzY3JpcHRpb25zLAogICAgICAgIExpbmsgPT4gJExpbmssCiAgICApOwp9Cgo9aGVhZDIgU2VhcmNoT2JqZWN0cygpCgpUaGlzIGlzIHVzZWQgaW4gYXV0byBjb21wbGV0aW9uIHdoZW4gc2VhcmNoaW5nIGZvciBwb3NzaWJsZSBvYmplY3QgSURzLgoKICAgIG15IEBPYmplY3RJRHMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoT2JqZWN0cygKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkgaWYgZ2l2ZW4sIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBUZXJtCiAgICAgICAgVGVybSAgICAgICAgICAgICAgID0+ICRUZXJtLCAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHRzIHRvIHdpbGRjYXJkIHNlYXJjaCB3aXRoIGVtcHR5IHN0cmluZwogICAgICAgIE1heFJlc3VsdHMgICAgICAgICA9PiAkTWF4UmVzdWx0cywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17VGVybX0gLy89ICcnOwoKICAgICMgZ2V0IGEgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgICMgVE9ETzogdGhpcyBvbmx5IHNlYXJjaGVzIHRoZSBsYXRlc3QgdmVyc2lvbnMKICAgIG15IEBDb25maWdJdGVtSURzID0gJFNlbGYtPlNVUEVSOjpTZWFyY2hPYmplY3RzKAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgIyBhY3R1YWxseSBzdG9yZSBsYXRlc3QgdmVyc2lvbiBJRAogICAgbXkgQFZlcnNpb25JRHM7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAVmVyc2lvbklEcywgJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9OwogICAgfQoKICAgIHJldHVybiBAVmVyc2lvbklEczsKfQoKPWhlYWQyIFZhbHVlRm9yTGVucygpCgp0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBwYXNzZWQgdmFsdWUgdW5jaGFuZ2VkLiBJdCBpcyBvbmx5IGltcGxlbWVudGVkIHNvIHRoYXQKdGhlIGltcGxlbWVudGF0aW9uIGZyb20gdGhlIHBhcmVudCBjbGFzcyBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6SVRTTUNvbmZpZ0l0ZW1SZWZlcmVuY2U+IGlzIG5vdCB1c2VkLgoKPWN1dAoKc3ViIFZhbHVlRm9yTGVucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Event/ITSMConfigItemDefinitionSync.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbURlZmluaXRpb25TeW5jOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEYXRhIEV2ZW50IENvbmZpZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte0RhdGF9e05ld0RhdGF9e09iamVjdFR5cGV9IG5lICdJVFNNQ29uZmlnSXRlbSc7CiAgICByZXR1cm4gICBpZiAkUGFyYW17RXZlbnR9IG5lICdEeW5hbWljRmllbGRVcGRhdGUnOwoKICAgICMgVE9ETzogRHluYW1pY0ZpZWxkRGVsZXRlCgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGQ7CgogICAgIyBpZiB0aGUgX29sZF8gZHluYW1pYyBmaWVsZCB3YXMgcGFydCBvZiBhIHNldCwgYW55IGNoYW5nZSB0byBpdCB3aWxsIGFmZmVjdCB0aGUgZXhpc3Rpbmcgc2V0CiAgICAjIGFuZCB0aHVzIHRoZSBDSQogICAgaWYgKCAkUGFyYW17RGF0YX17T2xkRGF0YX17Q29uZmlnfXtQYXJ0T2ZTZXR9ICkgewogICAgICAgICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0RhdGF9e09sZERhdGF9e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICApOwogICAgfQoKICAgICMgZm9yIHRoZSBzdGFuZGFyZCBjYXNlLCB0aGUgZmllbGQgaXMgZGlyZWN0bHkgaW50ZWdyYXRlZCwgd2UgdGFrZSB0aGUgX25ld18gZGF0YQogICAgIyAtPiBpbiBjYXNlIG9mIGEgbmFtZSBjaGFuZ2Ugd2UgZG8gbm90IHNldCBjbGFzc2VzIG91dCBvZiBzeW5jLCBhcyB3ZSB3aWxsIG5vdAogICAgIyBhdXRvbWF0aWNhbGx5IHVwZGF0ZSBkZWZpbml0aW9uIHN0cmluZ3MKICAgICMgYSBuZXcgZmllbGQgbmFtZSBoYXMgdG8gYmUgdXBkYXRlZCBtYW51YWxseSBpbiB0aGUgZGVmaW5pdGlvbgogICAgZWxzZSB7CiAgICAgICAgJER5bmFtaWNGaWVsZCA9ICRQYXJhbXtEYXRhfXtOZXdEYXRhfTsKICAgIH0KCiAgICBteSAlT3V0T2ZTeW5jRGVmaW5pdGlvbnM7CgogICAgIyBMb29wIG92ZXIgYWxsIGNsYXNzZXMgYW5kIGNoZWNrIHdoZXRoZXIgdGhleSBpbmNsdWRlIHRoZSBjaGFuZ2VkIGR5bmFtaWMgZmllbGQKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJENsYXNzTGlzdC0+JSogKSB7CiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICAjIHVzZSBPbGREYXRhIHRvIGFjY291bnQgZm9yIG5hbWUgY2hhbmdlcwogICAgICAgIGlmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkUGFyYW17RGF0YX17T2xkRGF0YX17TmFtZX0gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkT3V0T2ZTeW5jRGVmaW5pdGlvbnN7JENsYXNzSUR9IH0sICREeW5hbWljRmllbGQtPntJRH07CiAgICAgICAgfQoKICAgICAgICAjIHNldC1pbm5lciBmaWVsZHMgYXJlIG5vdCBzdG9yZWQgaW4gZGVmaW5pdGlvbiBkeW5hbWljIGZpZWxkIHJlZgogICAgICAgIGVsc2lmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkT3V0T2ZTeW5jRGVmaW5pdGlvbnN7JENsYXNzSUR9IH0sICREeW5hbWljRmllbGQtPntJRH07CiAgICAgICAgfQogICAgfQoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gXCVPdXRPZlN5bmNEZWZpbml0aW9ucywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/DynamicField/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6T2JqZWN0VHlwZTo6SVRTTUNvbmZpZ0l0ZW0gLSBzdXBwb3J0IGZvciBJVFNNQ29uZmlnSXRlbSBhcyBhbiBvYmplY3QgdHlwZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBdHRhY2ggZHluYW1pYyBmaWVsZHMgdG8gYW4gSVRTTUNvbmZpZ0l0ZW0uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpVc3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbS0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUHJlVmFsdWVTZXQoKQoKUGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVmb3JlIHRoZSB2YWx1ZSBpcyBzZXQgZm9yIGEgZHluYW1pYyBmaWVsZCBmb3IgdGhpcyBvYmplY3QgdHlwZS4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUhhbmRsZXJPYmplY3QtPlByZVZhbHVlU2V0KAogICAgICAgIFBhcmFtICAgICAgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKClRoaXMgaGFuZGxlciBjYW4gYmUgc2tpcHBlZCBieSBwYXNzaW5nIHRoZSBhdHRyaWJ1dGUgQzxDb25maWdJdGVtSGFuZGxlZD4gaW4gQzxQYXJhbT4uCgo9Y3V0CgpzdWIgUHJlVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbCBuZWVkZWQgcGFyYW1zIGFyZSBjaGVja2VkIGJ5IHRoZSBiYWNrZW5kIGJlZm9yZQogICAgaWYgKCAhJFBhcmFte1BhcmFtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgUGFyYW0gb2YgYmFja2VuZCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlmIHdlIGFyZSBjb21pbmcgZnJvbSBWZXJzaW9uLnBtIG5vdGhpbmcgaGFzIHRvIGJlIGNoYW5nZWQKICAgIHJldHVybiAxIGlmICRQYXJhbXtQYXJhbX17Q29uZmlnSXRlbUhhbmRsZWR9OwoKICAgICMgdXBncmFkZSB2ZXJzaW9uIG9mIHN1YnNlcXVlbnQgZHluYW1pYyBmaWVsZCBjaGFuZ2VzIGlmIGEgdmVyc2lvbiB3YXMgYWRkZWQgaW4gdGhpcyByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9ICYmICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9eyAkUGFyYW17UGFyYW19e09iamVjdElEfSB9ICkgewogICAgICAgICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9ID0gJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH07CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxIGlmICEkUGFyYW17UGFyYW19e0R5bmFtaWNGaWVsZENvbmZpZ317Q0lDbGFzc307CgogICAgIyBjaGVjayB3aGV0aGVyIHRoZSBjaGFuZ2VkIGZpZWxkIHRyaWdnZXJzIGEgbmV3IGNvbmZpZ2l0ZW0gdmVyc2lvbiBhbmQgaWYgc28sIGFkZCBhIG5ldyBvbmUKICAgIG15ICRDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17UGFyYW19e0R5bmFtaWNGaWVsZENvbmZpZ317Q0lDbGFzc30sCiAgICApOwogICAgbXkgJVZlcnNpb25UcmlnZ2VyID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRDbGFzc1ByZWZlcmVuY2VzLT57VmVyc2lvblRyaWdnZXJ9IC8vIFtdIH07CgogICAgaWYgKCAkVmVyc2lvblRyaWdnZXJ7ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtQYXJhbX17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSB9ICkgewogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgICAgIG15ICROZXdWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTGFzdFZlcnNpb25JRCA9PiAkUGFyYW17UGFyYW19e09iamVjdElEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17UGFyYW19e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJE5ld1ZlcnNpb25JRCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBjcmVhdGUgbmV3IHZlcnNpb24gZm9yIExhc3RWZXJzaW9uSUQgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgc2V0IG9sZCBhbmQgbmV3IHZlcnNpb24gdG8gbmV3IG9uZSB0byBtYWtlIHN1cmUsIHRoYXQgbGVuc2VzIGNhbiB3b3JrIHdpdGggZWl0aGVyCiAgICAgICAgJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH0gPSAkTmV3VmVyc2lvbklEOwogICAgICAgICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9eyROZXdWZXJzaW9uSUR9ICAgICAgICAgICAgID0gJE5ld1ZlcnNpb25JRDsKICAgICAgICAkUGFyYW17UGFyYW19e09iamVjdElEfSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICROZXdWZXJzaW9uSUQ7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBQb3N0VmFsdWVTZXQoKQoKUGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYWZ0ZXIgdGhlIHZhbHVlIGhhcyBiZWVuIHNldCBmb3IgYSBkeW5hbWljIGZpZWxkIGZvciB0aGlzIG9iamVjdCB0eXBlLgoKICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+UG9zdFZhbHVlU2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIElEIG9mIHRoZSBjdXJyZW50IG9iamVjdCB0aGF0IHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbXVzdCBiZSBsaW5rZWQgdG8sIGUuIGcuIElUU01Db25maWdJdGVtSUQKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLCAgICAgICAgICAgICAgICAgICAjIFZhbHVlIHRvIHN0b3JlLCBkZXBlbmRzIG9uIGJhY2tlbmQgdHlwZQogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgc2tpcHMgdGhpcyBpZiBoYW5kbGVkIGVsc2V3aGVyZQogICAgKTsKClRoaXMgaGFuZGxlciBjYW4gYmUgc2tpcHBlZCBieSBwYXNzaW5nIHRoZSBhdHRyaWJ1dGUgQzxDb25maWdJdGVtSGFuZGxlZD4gaW4gQzxQYXJhbT4uCgo9Y3V0CgpzdWIgUG9zdFZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB3ZSBhcmUgY29taW5nIGZyb20gVmVyc2lvbi5wbSBub3RoaW5nIGhhcyB0byBiZSBjaGFuZ2VkCiAgICByZXR1cm4gMSBpZiAkUGFyYW17Q29uZmlnSXRlbUhhbmRsZWR9OwoKICAgICMgYWxsIG5lZWRlZCBwYXJhbXMgYXJlIGNoZWNrZWQgYnkgdGhlIGJhY2tlbmQgYmVmb3JlCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENhY2hlT2JqZWN0ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCggVmVyc2lvbklEID0+ICRQYXJhbXtPYmplY3RJRH0gKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAnQ29uZmlnSXRlbUdldDo6VmVyc2lvbklEOjonIC4gJFBhcmFte09iamVjdElEfSAuICc6OkRGRGF0YTo6MScsCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAnQ29uZmlnSXRlbUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJENvbmZpZ0l0ZW1JRCAuICc6OkRGRGF0YTo6MScsCiAgICApOwoKICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5LAogICAgIyB0aGUgcmVzdWx0IGlzIGEgaGFzaHJlZiB3aXRoIHRoZSBrZXlzIFZhbHVlIGFuZCBMYWJlbAogICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0KICAgICk7CiAgICBteSAkUmVhZGFibGVPbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte09sZFZhbHVlfSwKICAgICk7CgogICAgIyB0cmlnZ2VyIGV2ZW50CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIEZpZWxkTmFtZSAgICAgICAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317TmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICAgICAgT2xkVmFsdWUgICAgICAgICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgICAgICAgICBSZWFkYWJsZVZhbHVlICAgID0+ICRSZWFkYWJsZVZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICBSZWFkYWJsZU9sZFZhbHVlID0+ICRSZWFkYWJsZU9sZFZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgT2JqZWN0RGF0YUdldCgpCgpyZXRyaWV2ZXMgdGhlIGRhdGEgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LgoKICAgIG15ICVPYmplY3REYXRhID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywgICAgICAjIGNvbXBsZXRlIGNvbmZpZyBvZiB0aGUgRHluYW1pY0ZpZWxkCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEyMywKICAgICk7CgpyZXR1cm5zOgoKICAgICVPYmplY3REYXRhID0gKAogICAgICAgIE9iamVjdElEID0+IDEyMywKICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICcyMDEwMTAyNzAwMDAwMScsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gMTcsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KER5bmFtaWNGaWVsZENvbmZpZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBEeW5hbWljRmllbGRDb25maWcgKGdlbmVyYWwpLgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZmllbGQgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIENoZWNrIER5bmFtaWNGaWVsZENvbmZpZyAoaW50ZXJuYWxseSkuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgRmllbGRUeXBlIE9iamVjdFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEeW5hbWljRmllbGRDb25maWchIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIFRPRE86IHdoeSBkb2VzIHRoaXMgbWV0aG9kIGRlcGVuZCBvbiB0aGUgcGFyYW0gb2JqZWN0PwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oCiAgICAgICAgUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENvbmZpZ0l0ZW1JRDsKCiAgICBteSAlQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICByZXR1cm4gKAogICAgICAgIE9iamVjdElEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgRGF0YSAgICAgPT4gXCVDb25maWdJdGVtLAogICAgKTsKfQoKPWhlYWQyIEdldEVudGl0eUlEZm9yTGlua2luZygpCgpyZXRyaWV2ZXMgQ29uZmlnSXRlbUlEIGZvciBnaXZlbiBWZXJzaW9uSUQKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+R2V0RW50aXR5SURmb3JMaW5raW5nKAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICAgICAgTGlua0tleSA9PiAnU291cmNlJywgICAgICAjIG9yICdUYXJnZXQnCiAgICAgICAgVHlwZU5hbWUgPT4gJ0NvbmZpZ0l0ZW0nLCAjIG9yICdDb25maWdJdGVtVmVyc2lvbicKICAgICk7Cgo9Y3V0CgpzdWIgR2V0RW50aXR5SURmb3JMaW5raW5nIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJRCAgICAgICA9ICRQYXJhbXtJRH07CiAgICBteSAkTGlua0tleSAgPSAkUGFyYW17TGlua0tleX07CiAgICBteSAkVHlwZU5hbWUgPSAkUGFyYW17VHlwZU5hbWV9OwoKICAgICMgaWYgdGhlIGtleSBpcyBhICdUYXJnZXQnIGtleSAuLi4KICAgIGlmICggJExpbmtLZXkgZXEgJ1RhcmdldCcgKSB7CgogICAgICAgICMgLi4udGhlbiBvbmx5IENvbmZpZ0l0ZW1WZXJzaW9uIGl0ZW1zIHdpbGwgbmVlZCBWZXJzaW9uSUQgcmVzb2x1dGlvbgogICAgICAgIGlmICggJFR5cGVOYW1lIGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAgICAgcmV0dXJuICRJRDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJElELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICk7CgogICAgcmV0dXJuICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIKICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24KICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeQogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcgogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb24KKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBTdG9yYWJsZSAgICAgICBxdyhkY2xvbmUpOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QgdHJ1ZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlhNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtIC0gbGlicmFyeSBmb3IgSVRTTSBjb25maWcgaXRlbXMuCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBmdW5jdGlvbnMuIE5vdGUgdGhhdCBhZGRpdGlvbmFsIHBhcmVudCBtb2R1bGVzIGFyZSBsb2FkZWQKd2hpY2ggZWZmZWN0aXZlbHkgYWRkIG1vcmUgbWV0aG9kcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgICMgaW5pdCBvZiBldmVudCBoYW5kbGVyCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVySW5pdCgKICAgICAgICBDb25maWcgPT4gJ0lUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QnLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb25maWdJdGVtQ291bnQoKQoKY291bnQgYWxsIHByb2R1Y3RpdmUgY29uZmlnIGl0ZW1zIG9mIGEgY29uZmlnIGl0ZW0gY2xhc3MKCiAgICBteSAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNvdW50KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxpc3Qgb2YgcHJvZHVjdGl2ZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAwIGlmICEleyRTdGF0ZUxpc3R9OwoKICAgICMgY3JlYXRlIHN0YXRlIHN0cmluZwogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgbXkgKCRDb3VudCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICJTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbSBXSEVSRSBjbGFzc19pZCA9ID8gQU5EICIKICAgICAgICAgICAgLiAiY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtUmVzdWx0TGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFycmF5IGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJENvbmZpZ0l0ZW1MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1SZXN1bHRMaXN0KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgICAgIFN0YXJ0ICAgPT4gMTAwLAogICAgICAgIExpbWl0ICAgPT4gNTAsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1SZXN1bHRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN0YXRlIGxpc3QKICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ3ByZXByb2R1Y3RpdmUnLCAncHJvZHVjdGl2ZScgXSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBzdGF0ZSBzdHJpbmcKICAgIG15ICREZXBsU3RhdGVTdHJpbmcgPSBqb2luIHF7LCB9LCBrZXlzICV7JFN0YXRlTGlzdH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSAiCiAgICAgICAgICAgIC4gIldIRVJFIGNsYXNzX2lkID0gPyBBTkQgY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkgIgogICAgICAgICAgICAuICJPUkRFUiBCWSBjaGFuZ2VfdGltZSBERVNDIiwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICAgICBTdGFydCA9PiAkUGFyYW17U3RhcnR9LAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRExpc3QsICRSb3dbMF07CiAgICB9CgogICAgIyBnZXQgbGFzdCB2ZXJzaW9ucyBkYXRhCiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRExpc3QpIHsKCiAgICAgICAgIyBnZXQgdmVyc2lvbiBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUxpc3QsICRDb25maWdJdGVtOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgQ29uZmlnSXRlbUdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBhcyBhIGhhc2ggcmVmZXJlbmNlLiBUaGUgbGF0ZXN0IHZlcnNpb24gaXMgcmV0cmlldmVkIHdoZW4gQzxDb25maWdJdGVtSUQ+IGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXIuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQgd2hlbiB0aGUgQzxWZXJzaW9uSUQ+IGlzIHBhc3NlZC4KCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gMjQzLAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCldoZW4gYm90aCBDPENvbmZpZ0l0ZW1JRD4gYW5kIEM8VmVyc2lvbklEPiBhcmUgcGFzc2VkLCB0aGVuIGEgY29uc2lzdGVuY3kgY2hlY2sgaXMgcGVyZm9ybWVkCmFuZCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQuCgpFcnJvciBtZXNzYWdlcyBhcmUgc3VwcHJlc3NlZCBpZiB0aGUgcGFyYW1ldGVyIEM8U2lsZW50PiBpcyBwYXNzZWQuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+IDI0MywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIGhhc2hyZWYgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgaXMgcmV0dXJuZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBDb25maWdJdGVtSUQKCj1pdGVtIE51bWJlcgoKPWl0ZW0gQ2xhc3NJRAoKPWl0ZW0gQ2xhc3MKCj1pdGVtIExhc3RWZXJzaW9uSUQKCj1pdGVtIEN1ckRlcGxTdGF0ZUlECgo9aXRlbSBDdXJEZXBsU3RhdGUKCj1pdGVtIEN1ckRlcGxTdGF0ZVR5cGUKCj1pdGVtIEN1ckluY2lTdGF0ZUlECgo9aXRlbSBDdXJJbmNpU3RhdGUKCj1pdGVtIEN1ckluY2lTdGF0ZVR5cGUKCj1pdGVtIFZlcnNpb25JRAoKPWl0ZW0gTmFtZQoKPWl0ZW0gVmVyc2lvblN0cmluZwoKPWl0ZW0gRGVzY3JpcHRpb24KCj1pdGVtIERlZmluaXRpb25JRAoKPWl0ZW0gRGVwbFN0YXRlSUQKCj1pdGVtIERlcGxTdGF0ZQoKPWl0ZW0gRGVwbFN0YXRlVHlwZQoKPWl0ZW0gSW5jaVN0YXRlSUQKCj1pdGVtIEluY2lTdGF0ZQoKPWl0ZW0gSW5jaVN0YXRlVHlwZQoKPWl0ZW0gQ3JlYXRlVGltZQoKPWl0ZW0gQ3JlYXRlQnkKCj1pdGVtIENoYW5nZVRpbWUKCj1pdGVtIENoYW5nZUJ5Cgo9YmFjawoKQ2FjaGluZyBjYW4ndCBiZSB0dXJuZWQgb2ZmLgoKV2hlbiB0aGUgcGFyYW1ldGVyIEM8RHluYW1pY0ZpZWxkcz4gaXMgcGFzc2VkIHRoZW4gdGhlIGR5bmFtaWMgZmllbGRzIGFyZSByZXR1cm5lZCBhZGRpdGlvbmFsbHkuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgd2hldGhlciB0byBzdXBwcmVzcyBlcnJvciBtZXNzYWdlcwogICAgbXkgJFNpbGVudCA9ICRQYXJhbXtTaWxlbnR9ID8gMSA6IDA7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICYmICEkUGFyYW17VmVyc2lvbklEfSApIHsKICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZ25vcmUgRHluYW1pY0ZpZWxkcyBwZXIgZGVmYXVsdCwKICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZhcmlhYmxlIGlzIGVpdGhlciAwIG9yIDEsIGFzIGl0IGlzIHVzZWQgZm9yIHRoZSBjYWNoZSBrZXkKICAgIG15ICRERkRhdGEgPSAkUGFyYW17RHluYW1pY0ZpZWxkc30gPyAxIDogMDsKCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZCwgY29uc2lkZXJpbmcgdGhlIER5bmFtaWNGaWVsZHMgcGFyYW1ldGVyCiAgICBteSAkQ2FjaGVLZXkgPSAkUGFyYW17VmVyc2lvbklEfQogICAgICAgID8KICAgICAgICBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkUGFyYW17VmVyc2lvbklEfSwKICAgICAgICAgICAgREZEYXRhICAgID0+ICRERkRhdGEKICAgICAgICApCiAgICAgICAgOgogICAgICAgIGpvaW4oCiAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICk7CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICBteSAkQ2FjaGUgICAgICAgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgaWYgKCRDYWNoZSkgewogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb25JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJENhY2hlLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNpbGVudCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZlcnNpb25JRCAkUGFyYW17VmVyc2lvbklEfSBpcyBub3QgYSB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRjbG9uZSgkQ2FjaGUpIGlmICRDYWNoZTsKICAgIH0KCiAgICAjIGdldCBzcGVjaWZpYyBDb25maWdJdGVtVmVyc2lvbgogICAgIyBUaGUgcGFyYW1ldGVyIFZlcnNpb25JRCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgQ29uZmlnSXRlbUlECiAgICBteSBAUm93OwogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RSb3dBcnJheSgKICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgY2kuaWQsIGNpLmNvbmZpZ2l0ZW1fbnVtYmVyLCBjaS5jbGFzc19pZCwgY2kubGFzdF92ZXJzaW9uX2lkLAogICAgY2kuY3VyX2RlcGxfc3RhdGVfaWQsIGNpLmN1cl9pbmNpX3N0YXRlX2lkLAogICAgdi5pZCwgdi5uYW1lLCB2LnZlcnNpb25fc3RyaW5nLCB2LmRlZmluaXRpb25faWQsIHYuZGVwbF9zdGF0ZV9pZCwgdi5pbmNpX3N0YXRlX2lkLCB2LmRlc2NyaXB0aW9uLAogICAgdi5jcmVhdGVfdGltZSwgdi5jcmVhdGVfYnksIHYuY2hhbmdlX3RpbWUsIHYuY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gdgogIElOTkVSIEpPSU4gY29uZmlnaXRlbSBjaQogICAgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBXSEVSRSB2LmlkID0gPwpFTkRfU1FMCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWZXJzaW9uSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBsYXRlc3QgQ29uZmlnSXRlbVZlcnNpb24KICAgIGVsc2UgewoKICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBjaS5pZCwgY2kuY29uZmlnaXRlbV9udW1iZXIsIGNpLmNsYXNzX2lkLCBjaS5sYXN0X3ZlcnNpb25faWQsCiAgICBjaS5jdXJfZGVwbF9zdGF0ZV9pZCwgY2kuY3VyX2luY2lfc3RhdGVfaWQsCiAgICB2LmlkLCB2Lm5hbWUsIHYudmVyc2lvbl9zdHJpbmcsIHYuZGVmaW5pdGlvbl9pZCwgdi5kZXBsX3N0YXRlX2lkLCB2LmluY2lfc3RhdGVfaWQsIHYuZGVzY3JpcHRpb24sCiAgICBjaS5jcmVhdGVfdGltZSwgY2kuY3JlYXRlX2J5LCBjaS5jaGFuZ2VfdGltZSwgY2kuY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtIGNpCiAgTEVGVCBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2CiAgICBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkCiAgV0hFUkUgY2kuaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJUNvbmZpZ0l0ZW07CiAgICAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICAgPSAkUm93WzBdOwogICAgJENvbmZpZ0l0ZW17TnVtYmVyfSAgICAgICAgID0gJFJvd1sxXTsKICAgICRDb25maWdJdGVte0NsYXNzSUR9ICAgICAgICA9ICRSb3dbMl07CiAgICAkQ29uZmlnSXRlbXtMYXN0VmVyc2lvbklEfSAgPSAkUm93WzNdOwogICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlSUR9ID0gJFJvd1s0XTsKICAgICRDb25maWdJdGVte0N1ckluY2lTdGF0ZUlEfSA9ICRSb3dbNV07CiAgICAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9ICAgICAgPSAkUm93WzZdOwogICAgJENvbmZpZ0l0ZW17TmFtZX0gICAgICAgICAgID0gJFJvd1s3XTsKICAgICRDb25maWdJdGVte1ZlcnNpb25TdHJpbmd9ICA9ICRSb3dbOF07CiAgICAkQ29uZmlnSXRlbXtEZWZpbml0aW9uSUR9ICAgPSAkUm93WzldOwogICAgJENvbmZpZ0l0ZW17RGVwbFN0YXRlSUR9ICAgID0gJFJvd1sxMF07CiAgICAkQ29uZmlnSXRlbXtJbmNpU3RhdGVJRH0gICAgPSAkUm93WzExXTsKICAgICRDb25maWdJdGVte0Rlc2NyaXB0aW9ufSAgICA9ICRSb3dbMTJdOwogICAgJENvbmZpZ0l0ZW17Q3JlYXRlVGltZX0gICAgID0gJFJvd1sxM107CiAgICAkQ29uZmlnSXRlbXtDcmVhdGVCeX0gICAgICAgPSAkUm93WzE0XTsKICAgICRDb25maWdJdGVte0NoYW5nZVRpbWV9ICAgICA9ICRSb3dbMTVdOwogICAgJENvbmZpZ0l0ZW17Q2hhbmdlQnl9ICAgICAgID0gJFJvd1sxNl07CgogICAgIyBjaGVjayBjb25maWcgaXRlbQogICAgaWYgKCAhJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBDb25maWdJdGVtSUQgKCRQYXJhbXtDb25maWdJdGVtSUR9KSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBuZSAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIGlmICggISRTaWxlbnQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJWZXJzaW9uSUQgJFBhcmFte1ZlcnNpb25JRH0gaXMgbm90IGEgdmVyc2lvbiBvZiBDb25maWdJdGVtSUQgJFBhcmFte0NvbmZpZ0l0ZW1JRH0hIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIG5lZWQgdG8gcmV0dXJuIER5bmFtaWNGaWVsZHMKICAgIGlmICggJERGRGF0YSAmJiAkQ29uZmlnSXRlbXtEZWZpbml0aW9uSUR9ICkgewoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVte0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICAjIHZhbGlkYXRlIGVhY2ggZHluYW1pYyBmaWVsZAogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIGVhY2ggZHluYW1pYyBmaWVsZAogICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgbmFtZSBhbmQgdmFsdWUgaW50byB0aGUgdGlja2V0IGhhc2gKICAgICAgICAgICAgJENvbmZpZ0l0ZW17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGFkZCB0aGUgQ2xhc3MsIGJhc2VkIG9uIHRoZSBDbGFzc0lECiAgICB7CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgJENvbmZpZ0l0ZW17Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbXtDbGFzc0lEfSB9OwogICAgfQoKICAgICMgQWRkIG1vcmUgcmVhZGFibGUgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHN0YXRlcy4KICAgICMgQWRkIHRoZSBzdGF0ZSB0eXBlcy4KICAgIFNUQVRFOgogICAgZm9yIG15ICRTdGF0ZSAocXcvRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlLykgewogICAgICAgIG5leHQgU1RBVEUgdW5sZXNzICRDb25maWdJdGVteyAkU3RhdGUgLiAnSUQnIH07CgogICAgICAgIG15ICRJdGVtID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW17ICRTdGF0ZSAuICdJRCcgfSwKICAgICAgICApOwoKICAgICAgICAkQ29uZmlnSXRlbXskU3RhdGV9ID0gJEl0ZW0tPntOYW1lfTsKICAgICAgICAkQ29uZmlnSXRlbXsgJFN0YXRlIC4gJ1R5cGUnIH0gPSAkSXRlbS0+e0Z1bmN0aW9uYWxpdHl9WzBdIC8vICcnOwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBkY2xvbmUoIFwlQ29uZmlnSXRlbSApLAogICAgKTsKCiAgICByZXR1cm4gXCVDb25maWdJdGVtOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUFkZCgpCgphZGQgYSBuZXcgY29uZmlnIGl0ZW0uIFRoaXMgaW1wbGllcyB0aGF0IGFuIGluaXRpYWwgdmVyc2lvbiBpcyBjcmVhdGVkIGFzIHdlbGwuCgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIENsYXNzSUQgICAgICAgID0+IDEyMywKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmFtZScsICAgICMgb3B0aW9uYWwgd2hlbiBhIG5hbWUgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjbGFzcwogICAgICAgIFZlcnNpb25TdHJpbmcgID0+ICdWZXJzaW9uJywgIyBvcHRpb25hbCB3aGVuIGEgdmVyc2lvbiBudW1iZXIgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjbGFzcwogICAgICAgIERlcGxTdGF0ZUlEICAgID0+IDMsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gMiwKICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnQUJDRCcsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICBOdW1iZXIgICAgICAgICA9PiAnMTExJywgICAgIyBvcHRpb25hbCwgYSBudW1iZXIgd2lsbCBnZW5lcmF0ZWQgd2hlbiBubyBudW1iZXIgaXMgcGFzc2VkCiAgICAgICAgRHluYW1pY0ZpZWxkX1ggPT4gJFZhbHVlLCAgICMgb3B0aW9uYWwKICAgICk7CgpObyBjb25maWcgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgd2hlbiBhbiBhbHJlYWR5IGV4aXN0aW5nIE51bWJlciBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIFVzZXJJRCBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENsYXNzTGlzdDsKICAgIHJldHVybiB1bmxlc3MgcmVmICRDbGFzc0xpc3QgZXEgJ0hBU0gnOwoKICAgICMgY2hlY2sgdGhlIGNsYXNzIGlkCiAgICBpZiAoICEkQ2xhc3NMaXN0LT57ICRQYXJhbXtDbGFzc0lEfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgY2xhc3MgaWQgZ2l2ZW4hJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJERlcGxTdGF0ZUxpc3Q7CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkRGVwbFN0YXRlTGlzdCBlcSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgZGVwbG95bWVudCBzdGF0ZSBpZAogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QtPnsgJFBhcmFte0RlcGxTdGF0ZUlEfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRJbmNpU3RhdGVMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJEluY2lTdGF0ZUxpc3QgZXEgJ0hBU0gnOwoKICAgICMgY2hlY2sgdGhlIGluY2lkZW50IHN0YXRlIGlkCiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdC0+eyAkUGFyYW17SW5jaVN0YXRlSUR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyB2YWxpZCBpbmNpZGVudCBzdGF0ZSBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte051bWJlcn0gKSB7CgogICAgICAgICMgZmluZCBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgICAgICBteSAkRXhpc3RzID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFBhcmFte051bWJlcn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvbmZpZyBpdGVtIG51bWJlciBhbHJlYWR5IGV4aXN0cyEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSAkTnVtYmVyTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7TnVtYmVyTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze051bWJlck1vZHVsZX1bMF0gOiAnQXV0b0luY3JlbWVudCc7CgogICAgICAgICMgY3JlYXRlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjokTnVtYmVyTW9kdWxlIiwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbmFtZSAkUGFyYW17TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYgSUkKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgTmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluc2VydCBuZXcgY29uZmlnIGl0ZW0KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW0gKCcKICAgICAgICAgICAgLiAnY29uZmlnaXRlbV9udW1iZXIsIGN1cl9kZXBsX3N0YXRlX2lkLCBjdXJfaW5jaV9zdGF0ZV9pZCcKICAgICAgICAgICAgLiAnLCBjbGFzc19pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieScKICAgICAgICAgICAgLiAnKSBWQUxVRVMgKD8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte051bWJlcn0sIFwkUGFyYW17RGVwbFN0YXRlSUR9LCBcJFBhcmFte0luY2lTdGF0ZUlEfSwgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0gXSwKICAgICk7CgogICAgIyBmaW5kIGlkIG9mIG5ldyBpdGVtCiAgICAjIFRPRE86IHdoYXQgYWJvdXQgY29uY3VycmVudCBJTlNFUlRzID8/PwogICAgbXkgKCRDb25maWdJdGVtSUQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIGlkCiAgRlJPTSBjb25maWdpdGVtCiAgV0hFUkUgY29uZmlnaXRlbV9udW1iZXIgPSA/CiAgICBBTkQgY2xhc3NfaWQgPSA/CiAgT1JERVIgQlkgaWQgREVTQwpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TnVtYmVyfSwgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbUNyZWF0ZQogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb25maWdJdGVtSUQgLiAnJSUnIC4gJFBhcmFte051bWJlcn0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgYWRkIHRoZSBmaXJzdCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbklEID0gJFNlbGYtPlZlcnNpb25BZGQoCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAnTkVXJywKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICEkVmVyc2lvbklEICkgewoKICAgICAgICAjIGRlbGV0ZSBoaXN0b3J5IGVudHJpZXMKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBjb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtIGlmIG5vIHZlcnNpb24gY291bGQgYmUgY3JlYXRlZAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbSBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIHZlcnNpb24hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRDb25maWdJdGVtSUQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtRGVsZXRlKCkKCmRlbGV0ZSBhbiBleGlzdGluZyBjb25maWcgaXRlbQoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBkYXRhIGJlZm9yZSBkZWxldGUKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgbGlua3MgdG8gdGhpcyBjb25maWcgaXRlbSBiZWZvcmUgZGVsZXRpbmcgdGhlIHZlcnNpb25zLgogICAgIyBMaW5rRGVsZXRlQWxsKCkgY2FsbHMgTGlua0RlbGV0ZSgpIGludGVybmFsbHkuIFRoaXMgbWVhbnMgdGhhdAogICAgIyB0aGUgZXZlbnQgaGFuZGxlcnMgYXJlIGhvbm9yZWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rCiAgICAjIGlzIGFsc28gcHVyZ2VkLgogICAgcmV0dXJuIHVubGVzcyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rRGVsZXRlQWxsKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGR5bmFtaWMgbGluayB0YWJsZSBlbnRyaWVzLCBpZiBhbnkKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHNvdXJjZV9jb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHRhcmdldF9jb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGlmIHRoZXJlIGFyZSBzdGF0aWMgKHZlcnNpb25lZCkgbGlua3MsIGRlbGV0ZSBhbGwgb2YgdGhlbQogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJFNlbGYtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgZm9yIG15ICRWZXJzaW9uSUQgKEAkVmVyc2lvbkxpc3RSZWYpIHsKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluayBXSEVSRSB0YXJnZXRfY29uZmlnaXRlbV92ZXJzaW9uX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZlcnNpb25JRCBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxldGUgZXhpc3RpbmcgdmVyc2lvbnMKICAgICRTZWxmLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgYXR0YWNobWVudHMKICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlbGYtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGFsbCBhdHRhY2htZW50cyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBGSUxFTkFNRToKICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZGVsZXRlIHRoZSBhdHRhY2htZW50CiAgICAgICAgbXkgJERlbGV0aW9uU3VjY2VzcyA9ICRTZWxmLT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlbGV0aW9uU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gIgogICAgICAgICAgICAgICAgICAgIC4gIiRQYXJhbXtDb25maWdJdGVtSUR9LiBQbGVhc2UgY2hlY2sgdGhlIFZpcnR1YWxGUyBiYWNrZW5kIGZvciBzdGFsZSAiCiAgICAgICAgICAgICAgICAgICAgLiAiZmlsZXMhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EYXRhLT57Q2xhc3NJRH0sCiAgICApOwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGEgYmFja2VuZCBvYmplY3QKICAgICAgICAgICAgbXkgJE5hbWVNb2R1bGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCROYW1lTW9kdWxlKTsKCiAgICAgICAgICAgIGlmICggJE5hbWVNb2R1bGVPYmplY3QtPmNhbignQ29uZmlnSXRlbU5hbWVEZWxldGUnKSApIHsKICAgICAgICAgICAgICAgICROYW1lTW9kdWxlT2JqZWN0LT5Db25maWdJdGVtTmFtZURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRDb25maWdJdGVtRGF0YS0+e05hbWV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtRGF0YS0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbURlbGV0ZSBldmVudAogICAgIyB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbmZpZyBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLAogICAgIyBiZWNhdXNlIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpbiB0aGUgY29uZmlnaXRlbV9oaXN0b3J5IHRhYmxlCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57TnVtYmVyfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDb25maWdJdGVtRGF0YS0+e0NsYXNzfSwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDb25maWdJdGVtRGF0YSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgY29uZmlnIGl0ZW0KICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgY2FjaGUKICAgIGZvciBteSAkREZEYXRhICggMCwgMSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgREZEYXRhICAgICAgID0+ICRERkRhdGEKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU3VjY2VzczsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1VcGRhdGUoKQoKdXBkYXRlIGEgY29uZmlnIGl0ZW0uIEEgbmV3IHZlcnNpb24gd2lsbCBiZSBjcmVhdGVkIG9ubHkgd2hlbiBhIHZlcnNpb24gdHJpZ2dlciBhcHBsaWVzLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gMjcsCiAgICAgICAgTnVtYmVyICAgICAgICAgPT4gJzExMScsICAgICMgSUQgb3IgTnVtYmVyIGlzIHJlcXVpcmVkCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmFtZScsICAgIyBvcHRpb25hbAogICAgICAgIERlZmluaXRpb25JRCAgID0+IDEyMywgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gMywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAyLCAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdBQkNEJywgICAjIG9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkX1ggPT4gJFZhbHVlLCAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbG9va3VwCiAgICAkUGFyYW17Q29uZmlnSXRlbUlEfSAvLz0gJFNlbGYtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17TnVtYmVyfSwKICAgICk7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1ldGVycwogICAgZm9yIG15ICRLZXkgKHF3L0NvbmZpZ0l0ZW1JRCBVc2VySUQvKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAiIC4gKCAkS2V5IGVxICdDb25maWdJdGVtSUQnID8gJ0NvbmZpZ0l0ZW1JRCBvciBOdW1iZXInIDogJEtleSApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdhdGhlciBkeW5hbWljIGZpZWxkIGtleXMKICAgIG15IEBEeW5hbWljRmllbGROYW1lcyA9IG1hcAogICAgICAgIHttL15EeW5hbWljRmllbGRfKC4rKS99CiAgICAgICAgc29ydCBrZXlzICVQYXJhbTsKCiAgICAjIGdldCBjdXJyZW50IGNvbmZpZyBpdGVtLCBpbmNsdWRpbmcgaW5mbyBmcm9tIHRoZSBsYXN0IHZlcnNpb24KICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAkQ2xhc3MgPSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtLT57Q2xhc3NJRH0gfTsKCiAgICBpZiAoICEkQ2xhc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyB2YWxpZCBjbGFzcyBmb3VuZCBmb3IgaWQgJyRDb25maWdJdGVtLT57Q2xhc3NJRH0nIChDb25maWdJdGVtIyRDb25maWdJdGVtLT57TnVtYmVyfSkhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZ25vcmUgdGhlIHBhc3NlZCBpbiBuYW1lIHdoZW4gYSBuYW1lIG1vZHVsZSBpcyBhY3RpdmUKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgZXhlY3V0ZSBuYW1lIGNoZWNrIG9ubHkgaWYgbmFtZSBoYXMgY2hhbmdlZAogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCROYW1lTW9kdWxlKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGRlbGV0ZSAkUGFyYW17TmFtZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtOYW1lfSAmJiAkUGFyYW17TmFtZX0gbmUgJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbmFtZSAkUGFyYW17TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJVZlcnNpb25UcmlnZ2VyID0gbWFwCiAgICAgICAgeyAkXyA9PiAxIH0KICAgICAgICAoICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25UcmlnZ2VyfSAvLyBbXSApLT5AKjsKCiAgICBteSAlQ2hhbmdlZDsgICAgICAgICAgICAgICMgdHJhY2sgY2hhbmdlZCB2YWx1ZXMgZm9yIHRoZSBFdmVudCBoYW5kbGVyLCBlLmcuIGZvciB3cml0aW5nIGhpc3RvcnkKICAgIG15ICRBZGRWZXJzaW9uICAgID0gMDsgICAgIyBmbGFnIGZvciBkZWNpZGluZyB3aGV0aGVyIGEgbmV3IHZlcnNpb24gaXMgY3JlYXRlZAogICAgbXkgJFVwZGF0ZVZlcnNpb24gPSAwOyAgICAjIGZsYWcgZm9yIGRlY2lkaW5nIHdoZXRoZXIgdGhlIGN1cnJlbnQgdmVyc2lvbiBuZWVkcyBhbiB1cGRhdGUKCiAgICAjIGNoZWNrIG5hbWUsIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlLCBhcyB3ZWxsIGFzIERlc2NyaXB0aW9uCiAgICBBVFRSOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3L05hbWUgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgRGVzY3JpcHRpb24vKSB7CiAgICAgICAgbmV4dCBBVFRSIHVubGVzcyBkZWZpbmVkICRQYXJhbXskQXR0cmlidXRlfTsKICAgICAgICBuZXh0IEFUVFIgaWYgJFBhcmFteyRBdHRyaWJ1dGV9IGVxICRDb25maWdJdGVtLT57JEF0dHJpYnV0ZX07CgogICAgICAgICRDaGFuZ2VkeyRBdHRyaWJ1dGV9ID0gewogICAgICAgICAgICBPbGQgPT4gJENvbmZpZ0l0ZW0tPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgTmV3ID0+ICRQYXJhbXskQXR0cmlidXRlfSwKICAgICAgICB9OwoKICAgICAgICAkVXBkYXRlVmVyc2lvbiA9IDE7CgogICAgICAgIGlmICggJFZlcnNpb25UcmlnZ2VyeyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkQWRkVmVyc2lvbiA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxhdGVzdCBkZWZpbml0aW9uIGZvciB0aGUgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAlU2tpcEZvclVwZGF0ZURGczsKCiAgICAjIGNoZWNrIGZvciBjaGFuZ2VkIGR5bmFtaWMgZmllbGRzIHRvIHRyaWdnZXIgdmVyc2lvbnMgYW5kIGZpbHRlciBoaXN0b3J5IGVudHJpZXMKICAgIGlmIChARHluYW1pY0ZpZWxkTmFtZXMpIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lIChARHluYW1pY0ZpZWxkTmFtZXMpIHsKICAgICAgICAgICAgbmV4dCBOQU1FIHVubGVzcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9OwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJE5hbWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUxICAgICAgICAgICAgID0+ICRQYXJhbXsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUyICAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTmFtZSJ9LAogICAgICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwYXNzIHVuY2hhbmdlZCBkeW5hbWljIGZpZWxkcyB0byBWZXJzaW9uVXBkYXRlKCkKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlbSBmb3IgVmVyc2lvbkFkZCgpIGJlY2F1c2Ugb2YgcG90ZW50aWFsIGRpZmZlcmVuY2UgZnJvbSBFeHRlcm5hbFNvdXJjZQogICAgICAgICAgICAgICAgJFNraXBGb3JVcGRhdGVERnN7IkR5bmFtaWNGaWVsZF8kTmFtZSJ9ID0gZGVsZXRlICRQYXJhbXsiRHluYW1pY0ZpZWxkXyROYW1lIn07CgogICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVXBkYXRlVmVyc2lvbiA9IDE7CgogICAgICAgICAgICBpZiAoICRWZXJzaW9uVHJpZ2dlcnsiRHluYW1pY0ZpZWxkXyROYW1lIn0gKSB7CiAgICAgICAgICAgICAgICAkQWRkVmVyc2lvbiA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRBZGRWZXJzaW9uKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn0gLy8gJycsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJVNraXBGb3JVcGRhdGVERnMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgIH0KICAgIGVsc2lmICgkVXBkYXRlVmVyc2lvbikgewogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPlZlcnNpb25VcGRhdGUoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVmVyc2lvbiA9PiAkQ29uZmlnSXRlbSwKICAgICAgICApOwogICAgICAgIHJldHVybiB1bmxlc3MgJFN1Y2Nlc3M7CiAgICB9CgogICAgbXkgJUV2ZW50cyA9ICgKICAgICAgICBOYW1lICAgICAgICA9PiAnTmFtZVVwZGF0ZScsCiAgICAgICAgRGVwbFN0YXRlSUQgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJ0luY2lkZW50U3RhdGVVcGRhdGUnLAogICAgKTsKCiAgICBDSEFOR0U6CiAgICBmb3IgbXkgJEtleSAoIGtleXMgJUNoYW5nZWQgKSB7CiAgICAgICAgbmV4dCBDSEFOR0UgaWYgISRFdmVudHN7JEtleX07CgogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICRFdmVudHN7JEtleX0sCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJENoYW5nZWR7JEtleX17TmV3fSAuICclJScgLiAkQ2hhbmdlZHskS2V5fXtPbGR9LAogICAgICAgICAgICAgICAgT2xkICAgICAgICAgID0+ICRDaGFuZ2VkeyRLZXl9e09sZH0sCiAgICAgICAgICAgICAgICBOZXcgICAgICAgICAgPT4gJENoYW5nZWR7JEtleX17TmV3fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyB0cmlnZ2VyIENvbmZpZ0l0ZW1VcGRhdGUgYnV0IG9ubHkgaWYgdGhlcmUgd2VyZSB1cGRhdGVzCiAgICBpZiAoICRBZGRWZXJzaW9uIHx8ICRVcGRhdGVWZXJzaW9uIHx8ICVDaGFuZ2VkICkgewogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gLiAnJSUnIC4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgT2xkRGVwbFN0YXRlID0+ICRDaGFuZ2Vke0RlcGxTdGF0ZUlEfXtPbGR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKCkKCmFkZHMgYW4gYXR0YWNobWVudCB0byBhIGNvbmZpZyBpdGVtCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+IDEsCiAgICAgICAgRmlsZW5hbWUgICAgICAgID0+ICdmaWxlbmFtZScsCiAgICAgICAgQ29udGVudCAgICAgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHdyaXRlIHRvIHZpcnR1YWwgZnMKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5Xcml0ZSgKICAgICAgICBGaWxlbmFtZSAgICA9PiAiQ29uZmlnSXRlbS8kUGFyYW17Q29uZmlnSXRlbUlEfS8kUGFyYW17RmlsZW5hbWV9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAnYmluYXJ5JywKICAgICAgICBDb250ZW50ICAgICA9PiBcJFBhcmFte0NvbnRlbnR9LAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29udGVudElEICAgID0+ICRQYXJhbXtDb250ZW50SUR9LAogICAgICAgICAgICBDb250ZW50VHlwZSAgPT4gJFBhcmFte0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgZXJyb3IKICAgIGlmICgkU3VjY2VzcykgewoKICAgICAgICAjIHRyaWdnZXIgQXR0YWNobWVudEFkZC1FdmVudAogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdBdHRhY2htZW50QWRkUG9zdCcsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdBdHRhY2htZW50QWRkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCBhZGQgYXR0YWNobWVudCBmb3IgY29uZmlnIGl0ZW0gJFBhcmFte0NvbmZpZ0l0ZW1JRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywgICAgICAgICAgICAgICAjIHVzZWQgaW4gZXZlbnQgaGFuZGxpbmcsIGUuZy4gZm9yIGxvZ2dpbmcgdGhlIGhpc3RvcnkKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ1Byb2plY3RwbGFuLnBkZicsICMgaWRlbnRpZmllcyB0aGUgYXR0YWNobWVudCAodG9nZXRoZXIgd2l0aCB0aGUgQ29uZmlnSXRlbUlEKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbS8nIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gLiAnLycgLiAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgZGVsZXRlIGZpbGUKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5EZWxldGUoCiAgICAgICAgRmlsZW5hbWUgPT4gJEZpbGVuYW1lLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICMgdHJpZ2dlciBBdHRhY2htZW50RGVsZXRlUG9zdC1FdmVudAogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdBdHRhY2htZW50RGVsZXRlUG9zdCcsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdBdHRhY2htZW50RGVsZXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCBkZWxldGUgYXR0YWNobWVudCAkRmlsZW5hbWUhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoKQoKVGhpcyBtZXRob2QgcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBvbmUgc3BlY2lmaWMgYXR0YWNobWVudC4KCiAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gNCwKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ3Rlc3QudHh0JywKICAgICk7CgpyZXR1cm5zCgogICAgewogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQWxsUHJlZmVyZW5jZXMgPT4gJ3Rlc3QnLAogICAgICAgIH0sCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3Rlc3QudHh0JywKICAgICAgICBDb250ZW50ICAgICA9PiAnY29udGVudCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIEZpbGVzaXplICAgID0+IDEyMzQ4NDA5LAogICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgIH0KCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHByZWZpeAogICAgbXkgJEZpbGVuYW1lID0gJ0NvbmZpZ0l0ZW0vJyAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgaWYgKCAhQEF0dGFjaG1lbnRzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5SZWFkKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBNb2RlICAgICA9PiAnYmluYXJ5JywKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJbmZvID0gewogICAgICAgICVBdHRhY2htZW50RGF0YSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc317Q29udGVudFR5cGV9LAogICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgICAgICBGaWxlc2l6ZSAgICA9PiAkQXR0YWNobWVudERhdGF7UHJlZmVyZW5jZXN9e0ZpbGVzaXplUmF3fSwKICAgIH07CgogICAgcmV0dXJuICRBdHRhY2htZW50SW5mbzsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgpCgpSZXR1cm5zIGFuIGFycmF5IHdpdGggYWxsIGF0dGFjaG1lbnRzIG9mIHRoZSBnaXZlbiBjb25maWcgaXRlbS4KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgIEBBdHRhY2htZW50cyA9ICgKICAgICAgICAnZmlsZW5hbWUudHh0JywKICAgICAgICAnb3RoZXJfZmlsZS5wZGYnLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyByZW1vdmUgZXh0cmEgaW5mb3JtYXRpb24gZnJvbSBmaWxlbmFtZQogICAgICAgICRGaWxlbmFtZSA9fiBzeyBcQSBDb25maWdJdGVtIC8gXGQrIC8gfXt9eG1zOwogICAgfQoKICAgIHJldHVybiBAQXR0YWNobWVudHM7Cn0KCj1oZWFkMiBDb25maWdJdGVtQXR0YWNobWVudEV4aXN0cygpCgpDaGVja3MgaWYgYSBmaWxlIHdpdGggYSBnaXZlbiBmaWxlbmFtZSBleGlzdHMuCgogICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICBGaWxlbmFtZSA9PiAndGVzdC50eHQnLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEZpbGVuYW1lIENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIEZpbGVuYW1lID0+ICdDb25maWdJdGVtLycgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICcvJyAuICRQYXJhbXtGaWxlbmFtZX0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIGlkIGlzIGdpdmVuLAppdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIG51bWJlciBpcyBnaXZlbiwKdGhlIGFwcHJvcHJpYXRlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzNCwKICAgICk7CgpvcgoKICAgIG15ICRJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gMTAwMDAwMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICgkS2V5KSA9IGZpcnN0IHsgJFBhcmFteyRffSB9IHF3KENvbmZpZ0l0ZW1JRCBDb25maWdJdGVtTnVtYmVyKTsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRLZXkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCBvciBDb25maWdJdGVtTnVtYmVyIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfXtDb25maWdJdGVtTG9va3VwfXskS2V5fXsgJFBhcmFteyRLZXl9IH0KICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfXtDb25maWdJdGVtTG9va3VwfXskS2V5fXsgJFBhcmFteyRLZXl9IH07CgogICAgIyBzZXQgdGhlIGFwcHJvcHJpYXRlIFNRTCBzdGF0ZW1lbnQKICAgIG15ICRTUUwgPSAkS2V5IGVxICdDb25maWdJdGVtTnVtYmVyJwogICAgICAgID8KICAgICAgICAnU0VMRUNUIGlkICAgICAgICAgICAgICAgIEZST00gY29uZmlnaXRlbSBXSEVSRSBjb25maWdpdGVtX251bWJlciA9ID8nCiAgICAgICAgOgogICAgICAgICdTRUxFQ1QgY29uZmlnaXRlbV9udW1iZXIgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPyc7CgogICAgIyBmZXRjaCB0aGUgcmVxdWVzdGVkIHZhbHVlCiAgICByZXR1cm4gdW5sZXNzICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFteyRLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJFZhbHVlOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmFsdWUgPSAkUm93WzBdOwogICAgfQoKICAgICRTZWxmLT57Q2FjaGV9e0NvbmZpZ0l0ZW1Mb29rdXB9eyRLZXl9eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgVW5pcXVlTmFtZUNoZWNrKCkKClRoaXMgbWV0aG9kIGNoZWNrcyBhbGwgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMsIHdoZXRoZXIgdGhlIGdpdmVuIG5hbWUgZG9lcyBhbHJlYWR5IGV4aXN0CndpdGhpbiB0aGUgc2FtZSBjb25maWcgaXRlbSBjbGFzcyBvciBhbW9uZyBhbGwgY2xhc3NlcywgZGVwZW5kaW5nIG9uIHRoZSBTeXNDb25maWcgdmFsdWUgb2YKVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSAoQ2xhc3Mgb3IgR2xvYmFsKS4KClRoaXMgbWV0aG9kIHJlcXVpcmVzIDMgcGFyYW1ldGVyczogQ29uZmlnSXRlbUlELCBOYW1lIGFuZCBDbGFzcwoiQ29uZmlnSXRlbUlEIiAgaXMgdGhlIElEIG9mIHRoZSBDb25maWdJdGVtLCB3aGljaCBpcyB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJOYW1lIiAgICAgICAgICBpcyB0aGUgY29uZmlnIGl0ZW0gbmFtZSB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJDbGFzc0lEIiAgICAgICBpcyB0aGUgSUQgb2YgdGhlIGNvbmZpZyBpdGVtJ3MgY2xhc3MKCkFsbCBwYXJhbWV0ZXJzIGFyZSBtYW5kYXRvcnkuCgogICAgbXkgJER1cGxpY2F0ZU5hbWVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJzczJwogICAgICAgIE5hbWUgICAgICAgICA9PiAnUEMjMDA1JywKICAgICAgICBDbGFzc0lEICAgICAgPT4gJzMyJywKICAgICk7CgpUaGUgZ2l2ZW4gbmFtZSBpcyBub3QgdW5pcXVlCgogICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gWyA1LCAzNSwgNDgsIF07ICAgICMgSURzIG9mIENvbmZpZ0l0ZW1zIHdpdGggdGhlIHNhbWUgbmFtZQoKVGhlIGdpdmVuIG5hbWUgaXMgdW5pcXVlCgogICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gW107Cgo9Y3V0CgpzdWIgVW5pcXVlTmFtZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIE5hbWUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nIHBhcmFtZXRlciAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQgcGFyYW0gZm9yIHZhbGlkIGZvcm1hdAogICAgaWYgKAogICAgICAgICFJc0ludGVnZXIoICRQYXJhbXtDb25maWdJdGVtSUR9ICkKICAgICAgICAmJiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBDb25maWdJdGVtSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIgb3IgJ05FVyciLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgTmFtZSBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17TmFtZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBOYW1lIHBhcmFtZXRlciBuZWVkcyB0byBiZSBhIHN0cmluZyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ2xhc3NJRCBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc0ludGVnZXIoICRQYXJhbXtDbGFzc0lEfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIENsYXNzSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBsaXN0IGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJENsYXNzTGlzdCkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmFibGUgdG8gcmV0cmlldmUgYSB2YWxpZCBjbGFzcyBsaXN0ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGhlIGNsYXNzIG5hbWUgZnJvbSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzID0gJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfTsKCiAgICAjIGNoZWNrIGNsYXNzIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkQ2xhc3MpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5hYmxlIHRvIGRldGVybWluZSBhIGNvbmZpZyBpdGVtIGNsYXNzIHVzaW5nIHRoZSBnaXZlbiBDbGFzc0lEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBlbHNpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUmVzb2x2ZWQgQ2xhc3NJRCAkUGFyYW17Q2xhc3NJRH0gdG8gY2xhc3MgJENsYXNzIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHRoZSB1bmlxdWVuZXNzIHNjb3BlIGZyb20gU3lzQ29uZmlnCiAgICBteSAkU2NvcGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnKTsKCiAgICAjIGNoZWNrIHNjb3BlIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkU2NvcGUpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGNvbmZpZ3VyYXRpb24gb2YgVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFNjb3BlIG5lICdnbG9iYWwnICYmICRTY29wZSBuZSAnY2xhc3MnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSBpcyAkU2NvcGUsIGJ1dCBtdXN0IGJlIGVpdGhlciAiCiAgICAgICAgICAgICAgICAuICInZ2xvYmFsJyBvciAnY2xhc3MnISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgc2NvcGUgZm9yIGNoZWNraW5nIHRoZSB1bmlxdWVuZXNzIGlzICRTY29wZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlU2VhcmNoQ3JpdGVyaWE7CgogICAgIyBhZGQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzIHRvIHRoZSBzZWFyY2ggY3JpdGVyaWEgaWYgdGhlIHVuaXF1ZW5lc3Mgc2NvcGUgaXMgbm90IGdsb2JhbAogICAgaWYgKCAkU2NvcGUgbmUgJ2dsb2JhbCcgKSB7CiAgICAgICAgJFNlYXJjaENyaXRlcmlhe0NsYXNzSURzfSA9IFsgJFBhcmFte0NsYXNzSUR9IF07CiAgICB9CgogICAgJFNlYXJjaENyaXRlcmlhe05hbWV9ID0gJFBhcmFte05hbWV9OwoKICAgICMgc2VhcmNoIGZvciBhIGNvbmZpZyBpdGVtIG1hdGNoaW5nIHRoZSBnaXZlbiBuYW1lCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRTZWxmLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICVTZWFyY2hDcml0ZXJpYSwKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgKTsKCiAgICAjIHJlbW92ZSB0aGUgcHJvdmlkZWQgQ29uZmlnSXRlbUlEIGZyb20gdGhlIHJlc3VsdHMsIG90aGVyd2lzZSB0aGUgZHVwbGljYXRlIGNoZWNrIHdvdWxkIGZhaWwKICAgICMgYmVjYXVzZSB0aGUgQ29uZmlnSXRlbSBpdHNlbGYgaXMgZm91bmQgYXMgZHVwbGljYXRlCiAgICBteSBARHVwbGljYXRlcyA9IGdyZXAgeyAkXyBuZSAkUGFyYW17Q29uZmlnSXRlbUlEfSB9IEBDb25maWdJdGVtSURzOwoKICAgICMgaWYgYSBjb25maWcgaXRlbSB3YXMgZm91bmQsIHRoZSBnaXZlbiBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICMgaWYgbm8gY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCB0aGUgZ2l2ZW4gbmFtZSBpcyB1bmlxdWUKCiAgICAjIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZm9yIGR1cGxpY2F0ZXMKICAgIHJldHVybiBcQER1cGxpY2F0ZXM7Cn0KCj1oZWFkMiBDdXJJbmNpU3RhdGVSZWNhbGMoKQoKcmVjYWxjdWxhdGVzIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0gYW5kIG9mIGNvbmZpZyBpdGVtcwp0aGF0IGFyZSBsaW5rZWQgdG8gaXQuIE9ubHkgbGlua3MgYmV0d2VlbiBjb25maWcgaXRlbXMgYXJlIGNvbnNpZGVyZWQgaGVyZS4gTGlua3MgdG8Kb3IgZnJvbSBjb25maWcgaXRlbSB2ZXJzaW9ucyBhcmUgaWdub3JlZC4KClRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIGRlcGVuZHMgb24gdGhlIGluY2lkZW50IHN0YXRlcyB0aGF0IHRoaXMgY29uZmlnIGl0ZW0gZGVwZW5kcyBvbi4KQSBjaGFuZ2Ugb2YgdGhlIGluY2lkZW50IHN0YXRlIG1pZ2h0IGhhdmUgcmVwZXJjdXNzaW9ucyBvbiB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZQpvZiB0aGUgY29uZmlnIGl0ZW1zIHRoYXQgZGVwZW5kIG9uIHRoaXMgY29uZmlnIGl0ZW0uCgpJdCBpcyBhIGNvbW1vbiB1c2UgY2FzZSB0aGF0IEM8Q3VySW5jaVN0YXRlUmVjYWxjKCk+IGlzIGNhbGxlZCBpbiBhIGxvb3Agb3ZlciBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zLgpFeGFtcGxlcyBhcmUgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZT4gb3Igd2hlbiB0aGUgbGlua2luZwpvZiB0aGUgY29uZmlnIGl0ZW1zIGhhcyBjaGFuZ2VkLiBGb3Igb3B0aW1pemluZyB0aGF0IGNhc2UgdGhlcmUgYXJlIHRoZSBwYXJhbWV0ZXJzCkM8TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGU+IGFuZCBDPFNjYW5uZWRDb25maWdJdGVtSURzPiB3aGljaCBjYXJyeSBzdGF0ZSBiZXR3ZWVuCmludm9jYXRpb25zIG9mIHRoaXMgbWV0aG9kLiBUaGV5IHByb3ZpZGUgY2FjaGluZyBhbmQgcHJldmVudCBpbmZpbml0ZSBsb29wcy4KCkNoYW5naW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMgaGFzIHJlcGVyY3Vzc2lvbnMgb24gc2VydmljZXMuIFRoZXNlIGVmZmVjdHMKYXJlIGhhbmRsZWQgaW4gdGhpcyBtZXRob2QgYXMgd2VsbC4KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgPT4gMTIzLAogICAgICAgIE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0+ICROZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwgICMgb3B0aW9uYWwsIGluY2lkZW50IHN0YXRlcyBvZiBhbHJlYWR5IGNoZWNrZWQgQ0lzCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgICAgICAgPT4gJFNjYW5uZWRDb25maWdJdGVtSURzLCAgICAgICAgIyBvcHRpb25hbCwgSURzIGFuZCBpbmNpZGVudCBzdGF0ZXMgb2YgYWxyZWFkeSBjaGVja2VkIENJcwogICAgKTsKCkZvciBhc3luY2hyb25vdXMgZXhlY3V0aW9uIGl0IGlzIGNvbnZlbmllbnQgdG8gcGFzcyBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zIHRvIEM8Q3VySW5jaVN0YXRlUmVjYWxjKCk+LgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgICAgICA9PiBbIDEyMywgMTI0LCAxMjUgXSwKICAgICk7CgpJbiB0aGF0IGNhc2UgdGhlIGxvb3AgaXMgZGlzY29udGludWVkIHdoZW4gYW4gaXRlcmF0aW9uIHJlcG9ydGVkIGEgZmFpbHVyZS4KCj1jdXQKCnN1YiBDdXJJbmNpU3RhdGVSZWNhbGMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHVzZWZ1bCBmb3IgYXN5bmMgZXhlY3V0aW9uCiAgICAjIGFsbCBvdGhlciBwYXJhbWV0ZXJzIHdpbGwgYmUgaWdub3JlZAogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSB7CgogICAgICAgICMgdGhlc2UgaGFzaGVzIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBjYWxscyB0byBDdXJJbmNpU3RhdGVSZWNhbGMKICAgICAgICBteSAoICVOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwgJVNjYW5uZWRDb25maWdJdGVtSURzICk7CgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggJFBhcmFte0NvbmZpZ0l0ZW1JRHN9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0+IFwlTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUsCiAgICAgICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgICAgICB9CgogICAgICAgICMgYWxsIGZpbmUKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICggcmVmICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVGhlIHBhcmFtZXRlciBDb25maWdJdGVtSUQgbXVzdCBiZSBhIHBsYWluIHNjYWxhciEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBsaW5rIHR5cGVzIGFuZCBkaXJlY3Rpb25zIGZyb20gY29uZmlnLiBFLmcuCiAgICAjIHsgRGVwZW5kc09uID0+ICdCb3RoJywgTG9jYXRpb25PZiA9PiAnU291cmNlJyB9CiAgICBteSAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSVRTTTo6Q29yZTo6SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbicpOwoKICAgICMgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSBob2xkcyB0aGUgZGV0ZXJtaW5lZCBpbmNpZGVudCBzdGF0ZXMgb2YgdGhlIGNvbnNpZGVyZWQgY29uZmlnIGl0ZW1zLgogICAgIyBJdCBtYXkgY29udGFpbiBjb250YWluIGNvbnRlbnQgZnJvbSBwcmV2aW91cyBjYWxscyBvZiBDdXJJbmNpU3RhdGVSZWNhbGMoKSBzbyB0aGF0IHVubmVjZXNzYXJ5IHdvcmsKICAgICMgY2FuIGJlIHNraXBwZWQuCiAgICAjIE5ldyBpbmNpZGVudCBzdGF0ZXMgYXJlIGNhbGN1bGF0ZWQgZnJvbSBhbGwgaW5jaWRlbnQgbGluayB0eXBlcy4KICAgICMgVGhlIG5ld2x5IGRldGVybWluZWQgaW5jaWRlbnQgc3RhdGVzIGFyZSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgY2FsbGVyLCBzbyB0aGF0IHRoZSBjYWxsZXIKICAgICMgY2FuIHBhc3MgaXQgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgogICAgIyBJbmNvcnBvcmF0ZSBkYXRhIGZyb20gcHJldmlvdXMgcnVuKHMpIGFuZCByZW1lbWJlciBrbm93biBkYXRhLgogICAgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSAvLz0ge307CiAgICBteSAkS25vd25OZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSA9IGRjbG9uZSggJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSApOwoKICAgICMgUmVtZW1iZXIgdGhlIHNjYW5uZWQgY29uZmlnIGl0ZW1zCiAgICAjIEluY29ycG9yYXRlIGRhdGEgZnJvbSBwcmV2aW91cyBydW4ocykgYW5kIHJlbWVtYmVyIGtub3duIGRhdGEuCiAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IC8vPSB7fTsKICAgIG15ICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzID0gZGNsb25lKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9ICk7CgogICAgIyBGaW5kIGRlZXBseSBjb25uZWN0ZWQgY29uZmlnIGl0ZW1zIHdpdGggYW4gaW5jaWRlbnQgc3RhdGUuCiAgICAjIFRoZSBkaXJlY3Rpb24gaW4gJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gaXMgaWdub3JlZCBoZXJlIGJlY2F1c2UgZGVwZW5kZWQgb24gaXRlbXMgY291bGQgY2hhbmdlCiAgICAjIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGUgY3VycmVudCBjb25maWcgaXRlbS4gT3IgY2hhbmdlcyBpbgogICAgIyB0aGUgY3VycmVudCBjb25maWcgaXRlbSBjb3VsZCBjaGFuZ2UgZG93bnN0cmVhbSBjb25maWcgaXRlbXMuCiAgICAkU2VsZi0+X0ZpbmRJbmNpQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gWyBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiBdLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHJlbGF0aW9uIGJldHdlZW4gc2VydmljZXMgYW5kIGxpbmtlZCBDSXMKICAgICMgVGhlIGluZm8gd2lsbCBiZSB1c2VkIGZvciB1cGRhdGluZyB0aGUgc2VydmljZXMuCiAgICBteSAlU2VydmljZUNJUmVsYXRpb247CgogICAgIyBjYWxjdWxhdGUgdGhlIG5ldyBDSSBpbmNpZGVudCBzdGF0ZSBmb3IgZWFjaCBjb25maWd1cmVkIGxpbmt0eXBlCiAgICBMSU5LVFlQRToKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqICkgewoKICAgICAgICAjIGdldCB0aGUgZGlyZWN0aW9uCiAgICAgICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbi0+eyRMaW5rVHlwZX07CgogICAgICAgICMgaW52ZXN0aWdhdGUgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIGEgd2FybmluZyBzdGF0ZQogICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IH0gKSB7CgogICAgICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9ICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9IGVxICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaW52ZXN0aWdhdGUgb25seSBjb25maWcgaXRlbXMgd2l0aCBhbiBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCB1bmxlc3MgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgIyBhbm5vdGF0ZSBsaW5rZWQgY29uZmlnIGl0ZW1zIHdpdGggYSB3YXJuaW5nCiAgICAgICAgICAgICRTZWxmLT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICAgICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+IHNjYWxhciBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiwKICAgICAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSB9ICkgewoKICAgICAgICAgICAgIyBTa2lwIGNvbmZpZyBpdGVtcyBrbm93biBmcm9tIHByZXZpb3VzIGV4ZWN1dGlvbihzKS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMtPnskQ29uZmlnSXRlbUlEfXtUeXBlfSApCiAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMtPnskQ29uZmlnSXRlbUlEfXtUeXBlfSBlcSAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4dHJhY3QgaW5jaWRlbnQgc3RhdGUgdHlwZQogICAgICAgICAgICBteSAkSW5jaVN0YXRlVHlwZSA9ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX07CgogICAgICAgICAgICAjIEZpbmQgYWxsIGxpbmtlZCBzZXJ2aWNlcyBvZiB0aGlzIGNvbmZpZyBpdGVtLgogICAgICAgICAgICAjIFRoZXNlIGtpbmQgb2YgbGlua3MgYXJlIG5vdCBhdmFpbGFibGUgZnJvbSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rCiAgICAgICAgICAgIG15ICVMaW5rZWRTZXJ2aWNlSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgICAgICAgICBPYmplY3QxICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIEtleTEgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgT2JqZWN0MiAgID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgU0VSVklDRUlEOgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlTGlua2VkU2VydmljZUlEcyApIHsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoZSBDSXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhpcyBzZXJ2aWNlCiAgICAgICAgICAgICAgICAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0tPkAqLCAkQ29uZmlnSXRlbUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkSW5jaVN0YXRlVHlwZSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfXskQ29uZmlnSXRlbUlEfSA9ICRJbmNpU3RhdGVUeXBlOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgaW5jaWRlbnQgc3RhdGUgbGlzdCBvZiB3YXJuaW5ncwogICAgbXkgJFdhcm5TdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiAnd2FybmluZycsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAhZGVmaW5lZCAkV2FyblN0YXRlTGlzdCApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklUU006OkNvcmU6OkluY2lkZW50U3RhdGUgV2FybmluZyBjYW5ub3QgYmUgaW52YWxpZC4iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJVJldmVyc2VXYXJuU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyRXYXJuU3RhdGVMaXN0fTsKICAgIG15IEBTb3J0ZWRXYXJuTGlzdCAgICAgICA9IHNvcnQga2V5cyAlUmV2ZXJzZVdhcm5TdGF0ZUxpc3Q7CiAgICBteSAkV2FybmluZ1N0YXRlSUQgICAgICAgPSAkUmV2ZXJzZVdhcm5TdGF0ZUxpc3R7V2FybmluZ30gfHwgJFJldmVyc2VXYXJuU3RhdGVMaXN0eyAkU29ydGVkV2Fybkxpc3RbMF0gfTsKICAgIG15ICRDYWNoZU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgc2V0IHRoZSBuZXcgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBmb3IgQ0lzCiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9LT4lKiApIHsKCiAgICAgICAgIyBTa2lwIGNvbmZpZyBpdGVtcyBrbm93biBmcm9tIHByZXZpb3VzIGV4ZWN1dGlvbihzKS4KICAgICAgICBpZiAoCiAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLT57JENvbmZpZ0l0ZW1JRH0gKQogICAgICAgICAgICAmJiAkS25vd25OZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZS0+eyRDb25maWdJdGVtSUR9IGVxICRQYXJhbXtOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZX17JENvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBuZXcgaW5jaWRlbnQgc3RhdGUgdHlwZSAoY2FuIG9ubHkgYmUgJ29wZXJhdGlvbmFsJyBvciAnd2FybmluZycpCiAgICAgICAgbXkgJEluY2lTdGF0ZVR5cGUgPSAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9eyRDb25maWdJdGVtSUR9OwoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgICAgICBteSAkTGFzdFZlcnNpb24gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEN1ckluY2lTdGF0ZUlEOwogICAgICAgIGlmICggJEluY2lTdGF0ZVR5cGUgZXEgJ3dhcm5pbmcnICkgewoKICAgICAgICAgICAgIyBjaGVjayB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGlzIGluICdpbmNpZGVudCcKICAgICAgICAgICAgIyB0aGVuIHdlIGRvIG5vdCB3YW50IHRvIGNoYW5nZSBpdCB0byB3YXJuaW5nCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRMYXN0VmVyc2lvbi0+e0luY2lTdGF0ZVR5cGV9IGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAkQ3VySW5jaVN0YXRlSUQgPSAkV2FybmluZ1N0YXRlSUQ7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEluY2lTdGF0ZVR5cGUgZXEgJ29wZXJhdGlvbmFsJyApIHsKICAgICAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJExhc3RWZXJzaW9uLT57SW5jaVN0YXRlSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBObyB1cGRhdGUgbmVjZXNzYXJ5IGlmIGluY2lkZW50IHN0YXRlIGlkIG9mIHZlcnNpb24gYW5kIGNvbmZpZyBpdGVtIG1hdGNoLgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRMYXN0VmVyc2lvbi0+e0N1ckluY2lTdGF0ZUlEfSBlcSAkQ3VySW5jaVN0YXRlSUQ7CgogICAgICAgICMgdXBkYXRlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ1VQREFURSBjb25maWdpdGVtIFNFVCBjdXJfaW5jaV9zdGF0ZV9pZCA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ3VySW5jaVN0YXRlSUQsIFwkQ29uZmlnSXRlbUlEIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBBbHNvIHRoZSBWZXJzaW9uSUQtY2FjaGVzIGhhdmUgdG8gYmUgY29uc2lkZXJlZCwgdGhleSBhbHNvIGNvbnRhaW4gQ3VySW5jaVN0YXRlCiAgICAgICAgIyBkZWxldGUgdGhlIGNhY2hlCiAgICAgICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmb3IgZWFjaCBzZXJ2aWNlIChpbmZsdWVuY2VkIGJ5IGxpbmtlZCBDSXMpCiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUNJUmVsYXRpb24gKSB7CgogICAgICAgICMgc2V0IGRlZmF1bHQgaW5jaWRlbnQgc3RhdGUgdHlwZQogICAgICAgIG15ICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcyA9ICdvcGVyYXRpb25hbCc7CgogICAgICAgICMgZ2V0IHRoZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzIHdoaWNoIGFyZSBkaXJlY3RseSBsaW5rZWQgdG8gdGhpcyBzZXJ2aWNlCiAgICAgICAgbXkgJVVuaXF1ZUNvbmZpZ0l0ZW1JRHMgPSBtYXAgeyAkXyA9PiAxIH0gJFNlcnZpY2VDSVJlbGF0aW9ueyRTZXJ2aWNlSUR9LT5AKjsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBlYWNoIGNvbmZpZyBpdGVtCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICVVbmlxdWVDb25maWdJdGVtSURzICkgewoKICAgICAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2FjaGUgICAgICAgID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkQ29uZmlnSXRlbURhdGEtPntDdXJEZXBsU3RhdGVUeXBlfSBuZSAncHJvZHVjdGl2ZSc7CiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICdvcGVyYXRpb25hbCc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ3dhcm5pbmcnCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ3dhcm5pbmcnICkgewogICAgICAgICAgICAgICAgJEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzID0gJ3dhcm5pbmcnOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ2luY2lkZW50JwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICdpbmNpZGVudCcgKSB7CiAgICAgICAgICAgICAgICAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMgPSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgICAgIGxhc3QgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGZyb20gQ0lzIG9mIHRoZSBzZXJ2aWNlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZVByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCnJldHVybnMgdGhlIGF0dHJpYnV0ZXMgYSBjb25maWcgaXRlbSBjYW4gaGF2ZSBvbiB0aGUgc3lzdGVtLgoKICAgIG15ICVBdHRyaWJ1dGVzID0gJFRpY2tldE9iamVjdC0+T2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBEeW5hbWljRmllbGRzID0+ICgwfDEpLCAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBkeW5hbWljIGZpZWxkIG5hbWVzIGFyZSBpbmNsdWRlZCwgZGVmYXVsdCAwCiAgICAgICAgVmVyc2lvbiAgICAgICA9PiAoMHwxKSwgICAgICAgICAjIChvcHRpb25hbCkgaWYgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCwgZGVmYXVsdCAxCiAgICAgICAgRWRpdE1hc2sgICAgICA9PiAoMHwxKSwgICAgICAgICAjIChvcHRpb25hbCkgaWYgZWRpdCBtYXNrIGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkIGluc3RlYWQgb2YgYmFja2VuZCBhdHRyaWJ1dGVzLCBkZWZhdWx0IDAKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0QXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtWZXJzaW9ufSAvLz0gMTsKCiAgICBteSAlQ29uZmlnSXRlbUF0dHJpYnV0ZXM7CgogICAgaWYgKCAkUGFyYW17RWRpdE1hc2t9ICkgewogICAgICAgICVDb25maWdJdGVtQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAlQ29uZmlnSXRlbUF0dHJpYnV0ZXMgPSAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDEsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzZXMgICAgICAgID0+IDEsCiAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIEN1ckRlcGxTdGF0ZXMgID0+IDEsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZXMgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiByZXF1ZXN0ZWQsIHNldCB2ZXJzaW9uIGF0dHJpYnV0ZXMKICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9ufSApIHsKICAgICAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzID0gKAogICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICA9PiAxLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGR5bmFtaWMgZmllbGRzIG5lZWQgdG8gYmUgYWRkZWQKICAgIGlmICggJFBhcmFte0R5bmFtaWNGaWVsZHN9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCB2YWx1ZXMgJER5bmFtaWNGaWVsZHMtPiUqICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUF0dHJpYnV0ZXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX0ZpbmRJbmNpQ29uZmlnSXRlbXMoKQoKZmluZCBjb25uZWN0ZWQgY29uZmlnIGl0ZW1zIHdpdGggYW4gaW5jaWRlbnQgc3RhdGUuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPl9GaW5kSW5jaUNvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gWyBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiBdLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+IFwlU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsCiAgICApOwoKVGhlIHNjYW5uZWQgY29uZmlnIGl0ZW1zIHdpbGwgYmUgZW50ZXJlZCBpbiB0aGUgQzxTY2FubmVkQ29uZmlnSXRlbUlEcz4gaGFzaHJlZi4gRWFjaCBjb25maWcgaXRlbSB3aWxsIGJlIHNjYW5uZWQgb25seSBvbmNlLgpUaGUgYXR0cmlidXRlIEM8VHlwZT4gd2lsbCBiZSBlaXRoZXIgJ29wZXJhdGlvbmFsJyBvciAnaW5jaWRlbnQnLgoKVGhlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIHdpdGggaW5jaWRlbnRzIHJlY3Vyc2VzIGludG8gdGhlIGdyYXBoIG9mIGxpbmtlZCBjb25maWcgaXRlbXMuIFRoZSBkaXJlY3RseQpsaW5rZWQgaXRlbXMgd2lsbCBhbHdheXMgYmUgY2hlY2tlZC4gUmVjdXJzaW9uIHN0b3BzIG9uY2UgYW4gaW5jaWRlbnQgaGFzIGJlZW4gZm91bmQuCgpUaGlzIG1ldGhvZCBvbmx5IGNvbGxlY3RzIGRhdGEsIG5vIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGVzIHdpbGwgYmUgYWx0ZXJlZC4KCj1jdXQKCnN1YiBfRmluZEluY2lDb25maWdJdGVtcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgaWdub3JlIGFscmVhZHkgc2Nhbm5lZCBpZHMgKGluZmluaXRlIGxvb3AgcHJvdGVjdGlvbikKICAgIHJldHVybiBpZiBkZWZpbmVkICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgIyBzZXQgYSBkZWZhdWx0IHNvIHRoZSBDb25maWdJdGVtIHdvbid0IGJlIHNjYW5uZWQgYWdhaW4KICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0gPSB7fTsKICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0tPntUeXBlfSA9ICdvcGVyYXRpb25hbCc7CgogICAgIyBhZGQgb3duIGNvbmZpZyBpdGVtIGlkIHRvIGxpc3Qgb2YgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkUGFyYW17Q29uZmlnSXRlbUlEfTsKCiAgICAjIGZpbmQgdGhlIGRpcmVjdGx5IGxpbmtlZCBjb25maWcgaXRlbXMKICAgIHsKICAgICAgICAjIERpcmVjdGlvbiBtdXN0IEFMV0FZUyBiZSAnQm90aCcgaGVyZSBhcyB3ZSBuZWVkIHRvIGluY2x1ZGUKICAgICAgICAjIGFsbCBsaW5rZWQgQ0lzIHRoYXQgY291bGQgaW5mbHVlbmNlIHRoaXMgb25lIQogICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRTZWxmLT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBUeXBlcyAgICAgICAgPT4gJFBhcmFte0luY2lkZW50TGlua1R5cGVzfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdCb3RoJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1lbWJlciBvbmx5IHRoZSBsaW5rZWQgY29uZmlnIGl0ZW0gaWRzLCBpZ25vcmUgdGhlIGNvbmZpZyBpdGVtIHZlcnNpb25zCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgZ3JlcCB7ZGVmaW5lZH0KICAgICAgICAgICAgbWFwICB7ICRfLT57Q29uZmlnSXRlbUlEfSB9CiAgICAgICAgICAgICRMaW5rZWRDb25maWdJdGVtcy0+QCo7CiAgICB9CgogICAgIyBMb29wIG92ZXIgdGhlIHJlcXVlc3RlZCBjb25maWcgaXRlbSBhbmQgdGhlIGRpcmVjdGx5IGxpbmtlZCBjb25maWcgaXRlbXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBAQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDYWNoZSAgICAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIFdoZW4gYW4gaW5jaWRlbnQgd2FzIGZvdW5kLCBtYXJrIHRoZSBjb25maWcgaXRlbSBhbmQgc3RvcCByZWN1cnNpbmcKICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JyApIHsKICAgICAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSA9ICdpbmNpZGVudCc7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICB9CgogICAgICAgICMgbm8gaW5jaWRlbnQgd2FzIGVuY291bnRlcmVkLCBjb250aW51ZSB3aXRoIHJlY3Vyc2lvbgogICAgICAgICMgX0ZpbmRJbmNpQ29uZmlnSXRlbXMoKSBtaWdodCBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCAkUGFyYW17Q29uZmlnSXRlbUlEfS4KICAgICAgICAjIEJ1dCB0aGF0IGNhbGwgd2lsbCBkbyBub3RoaW5nLgogICAgICAgICRTZWxmLT5fRmluZEluY2lDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gJFBhcmFte0luY2lkZW50TGlua1R5cGVzfSwKICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybjsKfQoKPWhlYWQyIF9GaW5kV2FybkNvbmZpZ0l0ZW1zKCkKClRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmb3IgY29uZmlnIGl0ZW0gdGhhdCBhcmUgaW4gYSBpbmNpZGVudCBvciB3YXJuaW5nIHN0YXRlLgpGaW5kIGNvbm5lY3RlZCBjb25maWcgaXRlbXMgYW5kIGFubm90YXRlIHRoZW0gd2l0aCBhIHdhcm5pbmcgaW4gQzxTY2FubmVkQ29uZmlnSXRlbUlEcz4uIFByb3BhZ2F0ZSB0aGUgd2FybmluZy4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X0ZpbmRXYXJuQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgRGlyZWN0aW9uICAgICAgICAgICAgPT4gJExpbmtEaXJlY3Rpb24sCiAgICAgICAgTnVtYmVyT2ZMaW5rVHlwZXMgICAgPT4gMiwgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgZm9yIGluZmluaXRlIGxvb3AgcHJvdGVjdGlvbgogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRTY2FubmVkQ29uZmlnSXRlbUlEcywKICAgICk7Cgo9Y3V0CgpzdWIgX0ZpbmRXYXJuQ29uZmlnSXRlbXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17Q29uZmlnSXRlbUlEfTsKCiAgICAjIEluZmluaXRlIGxvb3AgcHJvdGVjdGlvbi4KICAgICMgSWdub3JlIGFscmVhZHkgc2Nhbm5lZCBpZHMuCiAgICAjIEl0IGlzIG9rIHRoYXQgYSBjb25maWcgaXRlbSBpcyBpbnZlc3RpZ2F0ZWQgYXMgbWFueSB0aW1lcyBhcyB0aGVyZSBhcmUgY29uZmlndXJlZCBsaW5rIHR5cGVzICogbnVtYmVyIG9mIGluY2lkZW50IGNvbmZpZyBpdGVlbXMKICAgIG15ICRJbmNpZGVudENvdW50ID0gdHJ1ZSB7ICggJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskX317VHlwZX0gfHwgJycgKSBlcSAnaW5jaWRlbnQnIH0KICAgIGtleXMgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfS0+JSo7CiAgICBpZiAoCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufQogICAgICAgICYmCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufSA+PSAoICRQYXJhbXtOdW1iZXJPZkxpbmtUeXBlc30gKiAkSW5jaWRlbnRDb3VudCApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluY3JlYXNlIHRoZSB2aXNpdCBjb3VudGVyCiAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57RmluZFdhcm59Kys7CgogICAgIyBmaW5kIGNvbmZpZyBpdGVtcyB0byB3aGljaCB0aGUgaW5jaWRlbnQgb3Igd2FybmluZyBtdXN0IGJlIHByb3BhZ2F0ZWQKICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRTZWxmLT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgVHlwZXMgICAgICAgID0+IFsgJFBhcmFte0xpbmtUeXBlfSBdLAogICAgICAgIERpcmVjdGlvbiAgICA9PiAkUGFyYW17RGlyZWN0aW9ufSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBteSBATGlua2VkQ29uZmlnSXRlbUlEcyA9IG1hcCB7ICRfLT57Q29uZmlnSXRlbUlEfSB9ICRMaW5rZWRDb25maWdJdGVtcy0+QCo7CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBMaW5rZWRDb25maWdJdGVtSURzICkgewoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgICRTZWxmLT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgICAgICAgPT4gJFBhcmFte0RpcmVjdGlvbn0sCiAgICAgICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+ICRQYXJhbXtOdW1iZXJPZkxpbmtUeXBlc30sCiAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9IHx8ICcnICkgZXEgJ2luY2lkZW50JzsKCiAgICAgICAgIyBzZXQgd2FybmluZyBzdGF0ZQogICAgICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0gPSAnd2FybmluZyc7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfUHJlcGFyZUxpa2VTdHJpbmcoKQoKaW50ZXJuYWwgZnVuY3Rpb24gdG8gcHJlcGFyZSBsaWtlIHN0cmluZ3MKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X1ByZXBhcmVMaWtlU3RyaW5nKCAkU3RyaW5nUmVmICk7Cgo9Y3V0CgpzdWIgX1ByZXBhcmVMaWtlU3RyaW5nIHsKICAgIG15ICggJFNlbGYsICRWYWx1ZSApID0gQF87CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CiAgICByZXR1cm4gaWYgcmVmICRWYWx1ZSBuZSAnU0NBTEFSJzsKCiAgICAjIFF1b3RlCiAgICAkeyRWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICR7JFZhbHVlfSwgJ0xpa2UnICk7CgogICAgIyByZXBsYWNlICogd2l0aCAlCiAgICAkeyRWYWx1ZX0gPX4gc3sgXCorIH17JX14bXNnOwoKICAgIHJldHVybjsKfQoKPWhlYWQxIElUU00gQ29uZmlnIEl0ZW0gZXZlbnRzOgoKQ29uZmlnSXRlbUNyZWF0ZSwgQ29uZmlnSXRlbVVwZGF0ZSwgVmVyc2lvbkNyZWF0ZSwgVmVyc2lvblVwZGF0ZSwgRGVwbG95bWVudFN0YXRlVXBkYXRlLCBJbmNpZGVudFN0YXRlVXBkYXRlLApDb25maWdJdGVtRGVsZXRlLCBMaW5rQWRkLCBMaW5rRGVsZXRlLCBEZWZpbml0aW9uVXBkYXRlLCBOYW1lVXBkYXRlLCBEZWZpbml0aW9uQ3JlYXRlLCBWZXJzaW9uRGVsZXRlCgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ColumnFilter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSBJc1N0cmluZ1dpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyIC0gQ29sdW1uIEZpbHRlciBsaWJyYXJ5Cgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMgZm9yIENvbHVtbiBGaWx0ZXJzLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJElUU01Db25maWdJdGVtQ29sdW1uRmlsdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ2xhc3NGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgY29uZmlnIGl0ZW0gY2xhc3NlcwoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5DbGFzc0ZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDIyID0+ICdDb21wdXRlcicsCiAgICAgICAgMjMgPT4gJ0hhcmR3YXJlJywKICAgICAgICAyNCA9PiAnTG9jYXRpb24nLAogICAgICAgIDI1ID0+ICdOZXR3b3JrJywKICAgICAgICAyNiA9PiAnU29mdHdhcmUnLAogICAgfTsKCj1jdXQKCnN1YiBDbGFzc0ZpbHRlclZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIERlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5EZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICAyNyA9PiAiRXhwaXJlZCIsCiAgICAgICAgMjggPT4gIkluYWN0aXZlIiwKICAgICAgICAyOSA9PiAiTWFpbnRlbmFuY2UiLAogICAgICAgIDMwID0+ICJQaWxvdCIsCiAgICAgICAgMzEgPT4gIlBsYW5uZWQiLAogICAgICAgIDMyID0+ICJQcm9kdWN0aW9uIiwKICAgICAgICAzMyA9PiAiUmVwYWlyIiwKICAgICAgICAzNCA9PiAiUmV0aXJlZCIsCiAgICAgICAgMzUgPT4gIlJldmlldyIsCiAgICAgICAgMzYgPT4gIlRlc3QvUUEiLAogICAgfTsKCj1jdXQKCnN1YiBEZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwp9Cgo9aGVhZDIgQ3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCkKCmdldCBhIGxpc3Qgb2YgYWxsIGN1cnJlbnQgZGVwbG95bWVudCBzdGF0ZXMgLSB3cmFwcyBmb3IgRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCkKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+Q3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMjcgPT4gIkV4cGlyZWQiLAogICAgICAgIDI4ID0+ICJJbmFjdGl2ZSIsCiAgICAgICAgMjkgPT4gIk1haW50ZW5hbmNlIiwKICAgICAgICAzMCA9PiAiUGlsb3QiLAogICAgICAgIDMxID0+ICJQbGFubmVkIiwKICAgICAgICAzMiA9PiAiUHJvZHVjdGlvbiIsCiAgICAgICAgMzMgPT4gIlJlcGFpciIsCiAgICAgICAgMzQgPT4gIlJldGlyZWQiLAogICAgICAgIDM1ID0+ICJSZXZpZXciLAogICAgICAgIDM2ID0+ICJUZXN0L1FBIiwKICAgIH07Cgo9Y3V0CgpzdWIgQ3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5EZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoJVBhcmFtKTsKfQoKPWhlYWQyIEluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBpbmNpZGVudCBzdGF0ZXMKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+SW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMSA9PiAiT3BlcmF0aW9uYWwiLAogICAgICAgIDIgPT4gIldhcm5pbmciLAogICAgICAgIDMgPT4gIkluY2lkZW50IgogICAgfTsKCj1jdXQKCnN1YiBJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIEN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBjdXJyZW50IGluY2lkZW50IHN0YXRlcyAtIHdyYXBzIEluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgogICAgbXkgJFZhbHVlcyA9ICRDb2x1bW5GaWx0ZXJPYmplY3QtPkN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDEgPT4gIk9wZXJhdGlvbmFsIiwKICAgICAgICAyID0+ICJXYXJuaW5nIiwKICAgICAgICAzID0+ICJJbmNpZGVudCIKICAgIH07Cgo9Y3V0CgpzdWIgQ3VySW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5JbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoJVBhcmFtKTsKfQoKPWhlYWQyIER5bmFtaWNGaWVsZEZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGEgc3BlY2lmaWMgY29uZmlnIGl0ZW0gZHluYW1pYyBmaWVsZCB2YWx1ZXMgd2l0aGluIHRoZSBnaXZlbiBjb25maWcgaXRlbXMgbGlzdAoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5EeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQoCiAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgPT4gWzIzLCAxLCA1NiwgNzRdLCAgICAjIGFycmF5IHJlZiBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcwogICAgICAgIFZhbHVlVHlwZSA9PiAnVGV4dCcsICAgICAgICAgICAgICMgVGV4dCB8IEludGVnZXIgfCBEYXRlCiAgICAgICAgRmllbGRJRCAgID0+ICRGaWVsZElELCAgICAgICAgICAgIyBJRCBvZiB0aGUgZHluYW1pYyBmaWVsZAogICAgKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICBWYWx1ZUEgPT4gJ1ZhbHVlQScsCiAgICAgICAgVmFsdWVCID0+ICdWYWx1ZUInLAogICAgICAgIFZhbHVlQyA9PiAnVmFsdWVDJwogICAgfTsKCj1jdXQKCnN1YiBEeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KElUU01Db25maWdJdGVtSURzIFZhbHVlVHlwZSBGaWVsZElEKSkgewoKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1JRFN0cmluZyA9ICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1JRFN0cmluZ0dldCgKICAgICAgICBJVFNNQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17SVRTTUNvbmZpZ0l0ZW1JRHN9LAogICAgICAgIENvbHVtbk5hbWUgICAgICAgID0+ICdvYmplY3RfaWQnLAogICAgKTsKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtJVFNNQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0lUU01Db25maWdJdGVtSURzIG11c3QgYmUgYW4gYXJyYXkgcmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlVHlwZSA9ICd2YWx1ZV90ZXh0JzsKICAgIGlmICggJFBhcmFte1ZhbHVlVHlwZX0gJiYgJFBhcmFte1ZhbHVlVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAkVmFsdWVUeXBlID0gJ3ZhbHVlX2RhdGUnOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VmFsdWVUeXBlfSAmJiAkUGFyYW17VmFsdWVUeXBlfSBlcSAnSW50ZWdlcicgKSB7CiAgICAgICAgJFZhbHVlVHlwZSA9ICd2YWx1ZV9pbnQnOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+CiAgICAgICAgICAgICJTRUxFQ1QgRElTVElOQ1QoJFZhbHVlVHlwZSkiCiAgICAgICAgICAgIC4gJyBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUnCiAgICAgICAgICAgIC4gJyBXSEVSRSBmaWVsZF9pZCA9ID8nCiAgICAgICAgICAgIC4gJElUU01Db25maWdJdGVtSURTdHJpbmcKICAgICAgICAgICAgLiAiIE9SREVSIEJZICRWYWx1ZVR5cGUgREVTQyIsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RmllbGRJRH0gXSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBzdG9yZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFJvd1swXQogICAgICAgICAgICAmJiAkUm93WzBdIG5lICcnCiAgICAgICAgICAgICYmICEkRGF0YXsgJFJvd1swXSB9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBpZiAoICRWYWx1ZVR5cGUgZXEgJ0RhdGUnICkgewoKICAgICAgICAgICAgICAgICMgY2xlYW51cCB0aW1lIHN0YW1wcyAoc29tZSBkYXRhYmFzZXMgYXJlIHVzaW5nIGUuIGcuIDIwMDgtMDItMjUgMjI6MDM6MDAuMDAwMDAwCiAgICAgICAgICAgICAgICAjIGFuZCAwMDAwLTAwLTAwIDAwOjAwOjAwIHRpbWUgc3RhbXBzKQogICAgICAgICAgICAgICAgaWYgKCAkUm93WzBdIGVxICcwMDAwLTAwLTAwIDAwOjAwOjAwJyApIHsKICAgICAgICAgICAgICAgICAgICAkUm93WzBdID0gdW5kZWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUm93WzBdID1+IHMvXihcZFxkXGRcZC1cZFxkLVxkXGRcc1xkXGQ6XGRcZDpcZFxkKVwuLis/JC8kMS87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RvcmUgdGhlIHJlc3VsdHMKICAgICAgICAgICAgJERhdGF7ICRSb3dbMF0gfSA9ICRSb3dbMF07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTCAtIGNvbmZpZyBpdGVtIEFDTCBsaWIKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGNvbmZpZyBpdGVtIEFDTCBmdW5jdGlvbnMuCgo9aGVhZDIgQ29uZmlnSXRlbUFjbCgpCgpSZXN0cmljdHMgdGhlIERhdGEgcGFyYW1ldGVyIHNlbnQgdG8gYSBzdWJzZXQgb2YgaXQsIGRlcGVuZGluZyBvbiBhIGdyb3VwIG9mIHVzZXIgZGVmaWVkIHJ1bGVzCmNhbGxlZCBBQ0xzLiBUaGUgcmVkdWNlZCBzdWJzZXQgY2FuIGJlIGFjY2VzcyBmcm9tIENvbmZpZ0l0ZW1BQ0xEYXRhKCkgaWYgUmV0dXJuVHlwZSBwYXJhbWV0ZXIgaXMgc2V0CnRvOiBDb25maWdJdGVtLCBvciBpbiBDb25maWdJdGVtQUNMQWN0aW9uRGF0YSgpLCBpZiBSZXR1cm5UeXBlIEFjdGlvbiBpcyB1c2VkLgoKRWFjaCBBQ0wgY2FuIGNvbnRhaW4gZGlmZmVyZW50IHJlc3RyaWN0aW9ucyBmb3IgZGlmZmVyZW50IG9iamVjdHMgdGhlIFJldHVyblR5cGUgcGFyYW1ldGVyIGRlZmluZXMKd2hpY2ggb2JqZWN0IGlzIGNvbnNpZGVyZWQgZm9yIHRoaXMgcmVzdHJpY3Rpb25zLCBpbiB0aGUgY2FzZSBvZiB0aGUgQ29uZmlnIEl0ZW0gb2JqZWN0IGEgc2Vjb25kCnBhcmFtZXRlciBjYWxsZWQgUmV0dXJuU3VidHlwZSBpcyBuZWVkZWQsIHRvIHNwZWNpZnkgdGhlIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSB0byBiZSByZXN0cmljdGVkLCBsaWtlOgpDPCJUQkQiPiwgZXRjLiBXaGlsZSBmb3IgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdHMgYSAiLSIgdmFsdWUgbXVzdCBiZSBzZXQuIFRoZSBSZXR1cm5UeXBlCmFuZCBSZXR1cm5TdWJUeXBlIG11c3QgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgRGF0YSBwYXJhbWV0ZXIgc2VudC4KClRoZSByZXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGRlZmluZSB0aGUgbWF0Y2hpbmcgb3B0aW9ucyBmb3IgdGhlIEFDTCBydWxlcy4KCkV4YW1wbGUgdG8gcmVzdHJpY3QgY29uZmlnIGl0ZW0gYWN0aW9uczoKCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgIERhdGEgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFZhbHVlcyB0byByZXN0cmljdAogICAgICAgICAgICAxID0+IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0sCgogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywgICAjIE9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGQgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgICAgICBEeW5hbWljRmllbGRfTmFtZVggPT4gMTIzLAogICAgICAgICAgICBEeW5hbWljRmllbGRfTmFtZVogPT4gJ3NvbWUgdmFsdWUnLAogICAgICAgIH0sCgogICAgICAgIFJldHVyblR5cGUgICAgID0+ICdBY3Rpb24nLCAgICAgICAgICAgICAgICAgICAjIFRvIG1hdGNoIFBvc3NpYmxlLCBQb3NzaWJsZUFkZCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUG9zc2libGVOb3Qga2V5IGluIEFDTAogICAgICAgIFJldHVyblN1YlR5cGUgID0+ICctJywgICAgICAgICAgICAgICAgICAgICAgICAjIFRvIG1hdGNoIFBvc3NpYmxlLCBQb3NzaWJsZUFkZCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUG9zc2libGVOb3Qgc3ViLWtleSBpbiBBQ0wKCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlcklEID0+IDEgaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMgZnVuY3Rpb24KICAgICk7CgpvciB0byByZXN0cmljdCBjb25maWcgaXRlbSBzdGF0ZXM6CgogICAgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbCgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMSA9PiAnbmV3JywKICAgICAgICAgICAgMiA9PiAnb3BlbicsCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdDb25maWdJdGVtJywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdTdGF0ZScsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxMjMsCiAgICApOwoKcmV0dXJuczoKICAgICRTdWNjZXNzID0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBhbiBBQ0wgbWF0Y2hlcywgb3IgZmFsc2Ugb3RoZXJ3aXNlLgoKSWYgQUNMIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIEM8SVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlPiBjb25maWcga2V5LCB0aGV5IGFyZSBpbnZva2VkCmR1cmluZyB0aGUgY2FsbCB0byBDPENvbmZpZ0l0ZW1BY2w+LiBUaGUgY29uZmlndXJhdGlvbiBvZiBhIG1vZHVsZSBsb29rcyBsaWtlIHRoaXM6CgogICAgICRDb25maWdPYmplY3QtPnsnSVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlJ30tPnsnVGhlTmFtZSd9ID0gewogICAgICAgICBNb2R1bGUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6QWNsOjpUaGVBY2xNb2R1bGUnLAogICAgICAgICBDaGVja3MgPT4gWydUQkQnXSwKICAgICAgICAgUmV0dXJuVHlwZSA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gWydUQkQnXSwKICAgICB9OwoKRWFjaCB0aW1lIHRoZSBDPFJldHVyblR5cGU+IGFuZCBvbmUgb2YgdGhlIEM8UmV0dXJuU3ViVHlwZT4gZW50cmllcyBpcyBpZGVudGljYWwgdG8gdGhlIHNhbWUKYXJndW1lbnRzIHBhc3NlZCB0byBDPENvbmZpZ0l0ZW1BY2w+LCB0aGUgbW9kdWxlIG9mIHRoZSBuYW1lIGluIEM8TW9kdWxlPiBpcyBsb2FkZWQsIHRoZSBDPG5ldz4gbWV0aG9kCmlzIGNhbGxlZCBvbiBpdCwgYW5kIHRoZW4gdGhlIEM8UnVuPiBtZXRob2QgaXMgY2FsbGVkLgoKVGhlIEM8Q2hlY2tzPiBhcnJheSByZWZlcmVuY2UgaW4gdGhlIGNvbmZpZ3VyYXRpb24gY29udHJvbHMgd2hhdCBhcmd1bWVudHMgYXJlIHBhc3NlZC4gdG8gdGhlCkM8UnVuPiBtZXRob2QuClZhbGlkIGtleXMgYXJlIEM8RnJvbnRlbmQ+IGFuZCBDPENvbmZpZ0l0ZW0+LgpJZiBhbnkgb2YgdGhvc2UgYXJlIHByZXNlbnQsIHRoZSBDPENoZWNrcz4gYXJndW1lbnQgcGFzc2VkIHRvIEM8UnVuPiBjb250YWlucyBhbiBlbnRyeSB3aXRoIHRoZSBzYW1lCm5hbWUsIGFuZCBhcyBhIHZhbHVlIHRoZSBhc3NvY2lhdGVkIGRhdGEuCgpUaGUgQzxSdW4+IG1ldGhvZCBjYW4gYWRkIGVudHJpZXMgdG8gdGhlIEM8QWNsPiBwYXJhbSBoYXNoLCB3aGljaCBhcmUgdGhlbiBldmFsdWF0ZWQgYWxvbmcgd2l0aCBhbGwKb3RoZXIgQUNMLiBJdCBzaG91bGQgb25seSBhZGQgZW50cmllcyB3aG9zZSBjb25kaXRpb25hbHMgY2FuIGJlIGNoZWNrZWQgd2l0aCB0aGUgZGF0YSBzcGVjaWZpZWQgaW4KdGhlIEM8Q2hlY2tzPiBjb25maWd1cmF0aW9uIGVudHJ5LgoKVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgQzxSdW4+IG1ldGhvZCBpcyBpZ25vcmVkLgoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2wgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gJiYgISRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCBvciBDdXN0b21lclVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUmV0dXJuU3ViVHlwZSBSZXR1cm5UeXBlIERhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBub3QgZXhlY3V0ZSBBQ0xzIGlmIFVzZXJJRCAxIGlzIHVzZWQKICAgIHJldHVybiBpZiAkUGFyYW17VXNlcklEfSAmJiAkUGFyYW17VXNlcklEfSA9PSAxOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRBQ0xzICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQWNsJyk7CiAgICBteSAkQWNsTW9kdWxlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlJyk7CgogICAgIyBkbyBub3QgZXhlY3V0ZSBBQ0xzIGlmIG5laXRoZXIgQ29uZmlnSXRlbUFjbCBub3IgSVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlIGlzIGNvbmZpZ3VyZWQKICAgIGlmICggISRBQ0xzICYmICEkQWNsTW9kdWxlcyApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBmaW5kIG91dCB3aGljaCBkYXRhIHdlIGFjdHVhbGx5IG5lZWQKICAgIG15ICVBcHBsaWNhYmxlQWNsTW9kdWxlczsKICAgIG15ICVSZXF1aXJlZENoZWNrczsKICAgIG15ICRDaGVja0FsbCA9IDA7CgogICAgTU9EVUxFTkFNRToKICAgIGZvciBteSAkTW9kdWxlTmFtZSAoIHNvcnQga2V5cyAleyAkQWNsTW9kdWxlcyAvLyB7fSB9ICkgewogICAgICAgIG15ICRNb2R1bGUgPSAkQWNsTW9kdWxlcy0+eyRNb2R1bGVOYW1lfTsKCiAgICAgICAgaWYgKCAkTW9kdWxlLT57UmV0dXJuVHlwZX0gJiYgJE1vZHVsZS0+e1JldHVyblR5cGV9IG5lICRQYXJhbXtSZXR1cm5UeXBlfSApIHsKICAgICAgICAgICAgbmV4dCBNT0RVTEVOQU1FOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSB7CgogICAgICAgICAgICAjIFRPRE86IHRoaXMgbG9va3MgYnJva2VuLiAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gaXMgYSBoYXNocmVmLCB5ZXQgdGhlIHZhbHVlIGlzIGRlcmVmZXJlbmNlZCBhcyBhbiBhcnJheQogICAgICAgICAgICBpZiAoIHJlZiggJE1vZHVsZS0+e1JldHVyblN1YlR5cGV9ICkgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgbmV4dCBNT0RVTEVOQU1FIGlmICFncmVwIHsgJFBhcmFte1JldHVyblN1YlR5cGV9IGVxICRfIH0KICAgICAgICAgICAgICAgICAgICBAeyAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGEgc2NhbGFyLCB3ZSBob3BlLCBidXQgaXQgY291bGQgYWxzbyBiZSBhbiBhcnJheQogICAgICAgICAgICAgICAgIyBUT0RPOiB0aGlzIGZpbHRlciBsb29rcyBicm9rZW4KICAgICAgICAgICAgICAgICMgISRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSBpcyBlaXRoZXIgcXt9IG9yIDEsIChvciAhITAsIGFuZCAhITEpCiAgICAgICAgICAgICAgICAjIHNvIGl0IGlzIHVubGlrZWx5IHRoYXQgYSBzdHJpbmcgY29tcGFyaXNvbiB3b3VsZCBnaXZlIGEgdHJ1ZSB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNT0RVTEVOQU1FIGlmICggISRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSApIGVxICRQYXJhbXtSZXR1cm5TdWJUeXBlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBoZXJlIG9ubHkgbW9kdWxlcyBhcHBsaWNhYmxlIHRvIHRoaXMgQUNMIGludm9jYXRpb24gcmVtYWluCiAgICAgICAgJEFwcGxpY2FibGVBY2xNb2R1bGVzeyRNb2R1bGVOYW1lfSA9ICRNb2R1bGU7CgogICAgICAgIGlmICggJE1vZHVsZS0+e0NoZWNrc30gJiYgcmVmKCAkTW9kdWxlLT57Q2hlY2tzfSApIGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICRSZXF1aXJlZENoZWNrc3skX30gPSAxIGZvciBAeyAkTW9kdWxlLT57Q2hlY2tzfSB9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRNb2R1bGUtPntDaGVja3N9ICkgewogICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7ICRNb2R1bGUtPntDaGVja3N9IH0gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENoZWNrQWxsID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICElQXBwbGljYWJsZUFjbE1vZHVsZXMgJiYgISRBQ0xzICYmICEkQ2hlY2tBbGw7CgogICAgZm9yIG15ICRBQ0wgKCB2YWx1ZXMgJXsgJEFDTHMgLy8ge30gfSApIHsKICAgICAgICBmb3IgbXkgJFNvdXJjZSAocXcvIFByb3BlcnRpZXMgUHJvcGVydGllc0RhdGFiYXNlLykgewogICAgICAgICAgICBmb3IgbXkgJENoZWNrICggc29ydCBrZXlzICV7ICRBQ0wtPnskU291cmNlfSB9ICkgewogICAgICAgICAgICAgICAgbXkgJENsZWFuZWRVcCA9ICRDaGVjazsKICAgICAgICAgICAgICAgICRDbGVhbmVkVXAgPX4gcy8oPzpJRHxOYW1lfExvZ2luKSQvLzsKICAgICAgICAgICAgICAgICRDbGVhbmVkVXAgPX4gcy9eKD86TmV4dHxOZXd8T2xkKS8vOwogICAgICAgICAgICAgICAgJFJlcXVpcmVkQ2hlY2tzeyRDbGVhbmVkVXB9ID0gMTsKICAgICAgICAgICAgICAgIGlmICggJENoZWNrIGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiggJEFDTC0+e1Byb3BlcnRpZXN9eyRDaGVja30gKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5uZXJDaGVjayAoIHNvcnQga2V5cyAleyAkQUNMLT57JFNvdXJjZX17JENoZWNrfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElubmVyQ2hlY2sgPX4gcy8oPzpJRHxOYW1lfExvZ2luKSQvLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbm5lckNoZWNrID1+IHMvXig/Ok5leHR8TmV3fE9sZCkvLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZXF1aXJlZENoZWNrc3skSW5uZXJDaGVja30gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGFsbCByZXF1aXJlZCBkYXRhIHRvIGJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIEFDTHMKICAgIG15ICRDaGVja1Jlc3VsdCA9ICRTZWxmLT5fR2V0Q2hlY2tzKAogICAgICAgICVQYXJhbSwKICAgICAgICBDaGVja0FsbCAgICAgICA9PiAkQ2hlY2tBbGwsCiAgICAgICAgUmVxdWlyZWRDaGVja3MgPT4gXCVSZXF1aXJlZENoZWNrcywKICAgICk7CiAgICBteSAlQ2hlY2tzICAgICAgICAgPSAleyAkQ2hlY2tSZXN1bHQtPntDaGVja3N9ICAgICAgICAgfHwge30gfTsKICAgIG15ICVDaGVja3NEYXRhYmFzZSA9ICV7ICRDaGVja1Jlc3VsdC0+e0NoZWNrc0RhdGFiYXNlfSB8fCB7fSB9OwoKICAgICMgbm90ZSB0aGF0ICVBY2xzIGlzIGp1c3QgdGhlIGRlcmVmZXJlbmNlZCAkQUNMcwogICAgbXkgJUFjbHM7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFjbCcpICkgewogICAgICAgICVBY2xzID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQWNsJykgfTsKICAgIH0KCiAgICAjIGNoZWNrIEFDTCBtb2R1bGUKICAgIE1PRFVMRToKICAgIGZvciBteSAkTW9kdWxlTmFtZSAoIHNvcnQga2V5cyAlQXBwbGljYWJsZUFjbE1vZHVsZXMgKSB7CgogICAgICAgIG15ICRNb2R1bGUgPSAkQXBwbGljYWJsZUFjbE1vZHVsZXN7JE1vZHVsZU5hbWV9OwoKICAgICAgICBuZXh0IE1PRFVMRSBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1vZHVsZS0+e01vZHVsZX0gKTsKCiAgICAgICAgbXkgJEdlbmVyaWMgPSAkTW9kdWxlLT57TW9kdWxlfS0+bmV3KCk7CgogICAgICAgICRHZW5lcmljLT5SdW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWNsICAgID0+IFwlQWNscywKICAgICAgICAgICAgQ2hlY2tzID0+IFwlQ2hlY2tzLAogICAgICAgICAgICBDb25maWcgPT4gJE1vZHVsZSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVzZWQgZGF0YQogICAgbXkgJURhdGE7CiAgICBpZiAoIHJlZiAkUGFyYW17RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkUGFyYW17RGF0YX0gfTsKICAgIH0KCiAgICBteSAlTmV3RGF0YTsKICAgIG15ICRVc2VOZXdNYXN0ZXJQYXJhbXMgPSAwOwoKICAgIGlmICggJFBhcmFte1JldHVyblR5cGV9IGVxICdBY3Rpb24nICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgKSB7CgogICAgICAgICAgICAjIHVzZSBEYXRhIGlmIGlzIGEgc3RyaW5nIGFuZCBpdCBpcyBub3QgJy0nCiAgICAgICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgJiYgJFBhcmFte0RhdGF9IG5lICctJyApIHsKICAgICAgICAgICAgICAgICVEYXRhID0gKCAxID0+ICRQYXJhbXtEYXRhfSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG90aGVyd2lzZSB1c2UgdGhlIHBhcmFtIEFjdGlvbgogICAgICAgICAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtBY3Rpb259ICkgKSB7CiAgICAgICAgICAgICAgICAlRGF0YSA9ICggMSA9PiAkUGFyYW17QWN0aW9ufSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlTmV3QWN0aW9uRGF0YSA9ICVEYXRhOwoKICAgICAgICAjIGNhbGN1bGF0ZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGFjdGlvbiBBQ0wgZGF0YQogICAgICAgIG15IEBBY3Rpb25zVG9EZWxldGU7CiAgICAgICAgbXkgJERlZmF1bHRBY3Rpb25EYXRhID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVmYXVsdDo6QWN0aW9uJykgfHwge307CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJERlZmF1bHRBY3Rpb25EYXRhKSApIHsKCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCBzb3J0IGtleXMgJU5ld0FjdGlvbkRhdGEgKSB7CgogICAgICAgICAgICAgICAgbXkgJEFjdGlvbiA9ICROZXdBY3Rpb25EYXRheyRJbmRleH07CiAgICAgICAgICAgICAgICBpZiAoICEkRGVmYXVsdEFjdGlvbkRhdGEtPnskSW5kZXh9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFjdGlvbnNUb0RlbGV0ZSwgJEFjdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPntEZWZhdWx0Q29uZmlnSXRlbUFjbEFjdGlvbkRhdGF9ID0gXCVOZXdBY3Rpb25EYXRhOwoKICAgICAgICBmb3IgbXkgJEFjdGlvbiAoQEFjdGlvbnNUb0RlbGV0ZSkgewogICAgICAgICAgICBkZWxldGUgJFNlbGYtPntEZWZhdWx0Q29uZmlnSXRlbUFjbEFjdGlvbkRhdGF9LT57JEFjdGlvbn07CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IE5ld1RtcERhdGEgYWZ0ZXIgUG9zc2libGUgRGF0YSByZWNhbGN1bGF0aW9uIG9uIFJldHVyblR5cGUgQWN0aW9uCiAgICBteSAlTmV3VG1wRGF0YSA9ICVEYXRhOwoKICAgICMgZ2V0IHRoZSBkZWJ1ZyBwYXJhbWV0ZXJzCiAgICAkU2VsZi0+e0FDTERlYnVnfSAgICAgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkVuYWJsZWQnKSAgICAgfHwgMDsKICAgICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtQUNMOjpEZWJ1Zzo6TG9nUHJpb3JpdHknKSB8fCAnZGVidWcnOwoKICAgIG15ICRBQ0xEZWJ1Z0NvbmZpZ0ZpbHRlcnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtQUNMOjpEZWJ1Zzo6RmlsdGVyJykgfHwge307CiAgICBmb3IgbXkgJEZpbHRlck5hbWUgKCBzb3J0IGtleXMgJXskQUNMRGVidWdDb25maWdGaWx0ZXJzfSApIHsKICAgICAgICBteSAlRmlsdGVyID0gJXsgJEFDTERlYnVnQ29uZmlnRmlsdGVycy0+eyRGaWx0ZXJOYW1lfSB9OwogICAgICAgIGZvciBteSAkRmlsdGVySXRlbSAoIHNvcnQga2V5cyAlRmlsdGVyICkgewogICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnskRmlsdGVySXRlbX0gPSAkRmlsdGVyeyRGaWx0ZXJJdGVtfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBkZWJ1ZyBmaWx0ZXJzIGFwcGx5IChjb25maWcgaXRlbSkKICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CgogICAgICAgIERFQlVHRklMVEVSOgogICAgICAgIGZvciBteSAkRGVidWdGaWx0ZXIgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIG5leHQgREVCVUdGSUxURVIgaWYgJERlYnVnRmlsdGVyIGVxICdBQ0xOYW1lJzsKICAgICAgICAgICAgbmV4dCBERUJVR0ZJTFRFUiBpZiAhJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57JERlYnVnRmlsdGVyfTsKCiAgICAgICAgICAgIGlmICggJERlYnVnRmlsdGVyID1+IG17PE9UT0JPX0lUU01DT05GSUdJVEVNXyhbXj5dKyk+fW1zeCApIHsKICAgICAgICAgICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbVBhcmFtID0gJDE7CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JElUU01Db25maWdJdGVtUGFyYW19CiAgICAgICAgICAgICAgICAgICAgJiYgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JElUU01Db25maWdJdGVtUGFyYW19CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57JERlYnVnRmlsdGVyfSBuZQogICAgICAgICAgICAgICAgICAgICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBERUJVR0ZJTFRFUjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHJlbWVtYmVyIGxhc3QgQUNMRGVidWcgc3RhdGUgKGJlZm9yZSBBQ0xzIGxvb3ApCiAgICAkU2VsZi0+e0FDTERlYnVnUmVjb3Zlcnl9ID0gJFNlbGYtPntBQ0xEZWJ1Z307CgogICAgQUNMUlVMRVM6CiAgICBmb3IgbXkgJEFjbCAoIHNvcnQga2V5cyAlQWNscyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBkZWJ1ZyBmaWx0ZXJzIGFwcGx5IChBQ0wpIChvbmx5IGlmIEFDTERlYnVnIGlzIGFjdGl2ZSkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRTZWxmLT57QUNMRGVidWdSZWNvdmVyeX0KICAgICAgICAgICAgJiYgZGVmaW5lZCAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9CiAgICAgICAgICAgICYmICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eydBQ0xOYW1lJ30KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgIyBpZiBub3QgbWF0Y2ggY3VycmVudCBBQ0wgZGlzYWJsZSBBQ0xEZWJ1ZwogICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eydBQ0xOYW1lJ30gbmUgJEFjbCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57QUNMRGVidWd9ID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWVuYWJsZSBvdGhlcndpc2UgKHdlIGFyZSBzdXJlIGl0IHdhcyBlbmFibGVkIGJlZm9yZSkKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVTdGVwID0gJXsgJEFjbHN7JEFjbH0gfTsKCiAgICAgICAgIyBjaGVjayBmb3JjZSBtYXRjaAogICAgICAgIG15ICRGb3JjZU1hdGNoOwogICAgICAgIGlmICgKICAgICAgICAgICAgIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzfSApCiAgICAgICAgICAgICYmICFJc0hhc2hSZWZXaXRoRGF0YSggJFN0ZXB7UHJvcGVydGllc0RhdGFiYXNlfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JjZU1hdGNoID0gMTsKICAgICAgICB9CgogICAgICAgIG15ICRQcm9wZXJ0aWVzTWF0Y2g7CiAgICAgICAgbXkgJFByb3BlcnRpZXNNYXRjaFRyeTsKICAgICAgICBteSAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2g7CiAgICAgICAgbXkgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoVHJ5OwogICAgICAgIG15ICRVc2VOZXdQYXJhbXMgPSAwOwoKICAgICAgICBmb3IgbXkgJFByb3BlcnRpZXNIYXNoIChxdyhQcm9wZXJ0aWVzIFByb3BlcnRpZXNEYXRhYmFzZSkpIHsKCiAgICAgICAgICAgIG15ICVVc2VkQ2hlY2tzID0gJUNoZWNrczsKICAgICAgICAgICAgaWYgKCAkUHJvcGVydGllc0hhc2ggZXEgJ1Byb3BlcnRpZXNEYXRhYmFzZScgKSB7CiAgICAgICAgICAgICAgICAlVXNlZENoZWNrcyA9ICVDaGVja3NEYXRhYmFzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgbWF0Y2ggcGFyYW1zCiAgICAgICAgICAgIG15ICRNYXRjaCAgICA9IDE7CiAgICAgICAgICAgIG15ICRNYXRjaFRyeSA9IDA7CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTdGVweyRQcm9wZXJ0aWVzSGFzaH0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkRGF0YSAoIHNvcnQga2V5cyAleyAkU3RlcHskUHJvcGVydGllc0hhc2h9LT57JEtleX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hQcm9wZXJ0eSA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJFN0ZXB7JFByb3BlcnRpZXNIYXNofS0+eyRLZXl9LT57JERhdGF9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVmICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hJdGVtID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3Vic3RyKCAkSXRlbSwgMCwgbGVuZ3RoICdbTm90JyApIGVxICdbTm90JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hJdGVtID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaGVkQXJyYXlEYXRhSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZREFUQUlURU06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEFycmF5RGF0YUl0ZW0gKCBAeyAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaGVkQXJyYXlEYXRhSXRlbSA9ICRBcnJheURhdGFJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICRBcnJheURhdGFJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkTG9vcE1hdGNoUmVzdWx0LT57U2tpcH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoSXRlbSA9ICRMb29wTWF0Y2hSZXN1bHQtPntNYXRjaH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgQVJSQVlEQVRBSVRFTTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJE1hdGNoSXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaFByb3BlcnR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyAkUHJvcGVydGllc0hhc2g6JyRLZXktPiREYXRhJyBNYXRjaGVkQVJSQVkgKCRJdGVtIGVxICRNYXRjaGVkQXJyYXlEYXRhSXRlbSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJFVzZWRDaGVja3N7JEtleX0tPnskRGF0YX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFJdGVtICAgID0gJFVzZWRDaGVja3N7JEtleX0tPnskRGF0YX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaFByb3BlcnR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWJ1ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnICRQcm9wZXJ0aWVzSGFzaDonJEtleS0+JERhdGEnIE1hdGNoZWQgKCRJdGVtIGVxICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggISRNYXRjaFByb3BlcnR5ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2ggPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkTWF0Y2hUcnkgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGZvcmNlIG9wdGlvbgogICAgICAgICAgICBpZiAoJEZvcmNlTWF0Y2gpIHsKICAgICAgICAgICAgICAgICRNYXRjaCAgICA9IDE7CiAgICAgICAgICAgICAgICAkTWF0Y2hUcnkgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQcm9wZXJ0aWVzSGFzaCBlcSAnUHJvcGVydGllcycgKSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc01hdGNoICAgID0gJE1hdGNoOwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaFRyeSA9ICRNYXRjaFRyeTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaCAgICA9ICRNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeSA9ICRNYXRjaFRyeTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBpZiBwcm9wZXJ0aWVzIGlzIG1pc3NpbmcKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGVwe1Byb3BlcnRpZXN9ICkgKSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc01hdGNoICAgID0gJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoOwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaFRyeSA9ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBpZiBwcm9wZXJ0aWVzIGRhdGFiYXNlIGlzIG1pc3NpbmcKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGVwe1Byb3BlcnRpZXNEYXRhYmFzZX0gKSApIHsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaCAgICA9ICRQcm9wZXJ0aWVzTWF0Y2g7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgPSAkUHJvcGVydGllc01hdGNoVHJ5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRoZSBmb2xsb3dpbmcgbG9naWMgc2hvdWxkIGJlIGFwcGxpZWQgdG8gY2FsY3VsYXRlIGlmIGFuIEFDTCBtYXRjaGVzOgogICAgICAgICMgaWYgYm90aCBQcm9wZXJ0aWVzIGFuZCBQcm9wZXJ0aWVzRGF0YWJhc2UgbWF0Y2ggPT4gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXMgbWF0Y2hlcywgYW5kIFByb3BlcnRpZXNEYXRhYmFzZSBkb2VzIG5vdCBtYXRjaCA9PiBubyBtYXRjaAogICAgICAgICMgaWYgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoZXMsIGJ1dCBQcm9wZXJ0aWVzIGRvZXMgbm90IG1hdGNoID0+IG5vIG1hdGNoCiAgICAgICAgIyBpZiBQcm9wZXJ0aWVzRGF0YWJhc2UgbWF0Y2hlcywgYW5kIFByb3BlcnRpZXMgaXMgbWlzc2luZyA9PiBtYXRjaAogICAgICAgICMgaWYgUHJvcGVydGllcyBtYXRjaGVzLCBhbmQgUHJvcGVydGllc0RhdGFiYXNlIGlzIG1pc3NpbmcgPT4gbWF0Y2guCiAgICAgICAgbXkgJE1hdGNoOwogICAgICAgIGlmICggJFByb3BlcnRpZXNNYXRjaCAmJiAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggKSB7CiAgICAgICAgICAgICRNYXRjaCA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkTWF0Y2hUcnk7CiAgICAgICAgaWYgKCAkUHJvcGVydGllc01hdGNoVHJ5ICYmICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeSApIHsKICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICB9CgogICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgaWYgKCAkTWF0Y2ggJiYgJE1hdGNoVHJ5ICkgewogICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgTWF0Y2hlZCBmb3IgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVTcGVjaWFsUmV0dXJuVHlwZXMgPSAoCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFByb2Nlc3MgICAgICAgID0+IDEsCiAgICAgICAgICAgIEFjdGl2aXR5RGlhbG9nID0+IDEsCiAgICAgICAgICAgIEZvcm0gICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEZvcm1TdGQgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkU3BlY2lhbFJldHVyblR5cGVzeyAkUGFyYW17UmV0dXJuVHlwZX0gfSApIHsKCiAgICAgICAgICAgICMgYnVpbGQgbmV3IFNwZWNpYWwgUmV0dXJuVHlwZSBkYXRhIGhhc2ggKFByb2Nlc3NNYW5hZ2VtZW50KQogICAgICAgICAgICAjIGZvciBTcGVjaWFsIFJldHVyblR5cGUgU3RlcHtQb3NzaWJsZX0KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCAlQ2hlY2tzIHx8ICVDaGVja3NEYXRhYmFzZSApCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2gKICAgICAgICAgICAgICAgICYmICRNYXRjaFRyeQogICAgICAgICAgICAgICAgJiYgJFN0ZXB7UG9zc2libGV9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9CiAgICAgICAgICAgICAgICAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRTdGVwe1Bvc3NpYmxlfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVzZXQgcmV0dXJuIGRhdGEgYXMgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBqdXN0IHRoZSBQb3NzaWJsZSBJdGVtcyBleGNsdWRlZCB0aGUKICAgICAgICAgICAgICAgICMgICAgb25lcyB0aGF0IGFyZSBub3QgaW4gdGhlIHBvc3NpYmxlIHNlY3Rpb24sIHRoaXMgaXMgdGhlIHNhbWUgYXMgcmVtb3ZlIGFsbAogICAgICAgICAgICAgICAgIyAgICBtaXNzaW5nIGl0ZW1zIGZyb20gdGhlIG9yaWdpbmFsIGRhdGEKICAgICAgICAgICAgICAgICVOZXdUbXBEYXRhID0gKCk7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBSZXNldCByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfScnIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZX0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBSZXR1cm5UeXBlIFN0ZXB7UG9zc2libGVBZGR9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlQWRkfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfQogICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgJFVzZU5ld1BhcmFtcyA9IDE7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlQWRkOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICVEYXRhICkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlQWRkfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1RtcERhdGF7JElEfSA9ICREYXRheyRJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlQWRkIHBhcmFtICckRGF0YXskSUR9JyBhZGRlZCB0byByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlQWRkIHBhcmFtICckRGF0YXskSUR9JyBza2lwcGVkIGZyb20gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZvciBTcGVjaWFsIFN0ZXB7UG9zc2libGVOb3R9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlTm90fS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfQogICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RlcHtQb3NzaWJsZU5vdH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgJFVzZU5ld1BhcmFtcyA9IDE7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlTm90OickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG5vdCBwb3NzaWJsZSBsaXN0CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICVEYXRhICkgewogICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaCA9IDE7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZU5vdH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExvb3BNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTG9vcE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICEkTWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZU5vdCBwYXJhbSAnJERhdGF7JElEfScgcmVtb3ZlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE5ld1RtcERhdGF7JElEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkTmV3VG1wRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIGxlYXZlZCBmb3IgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2lmICggJFBhcmFte1JldHVyblR5cGV9IGVxICdDb25maWdJdGVtJyApIHsKCiAgICAgICAgICAgICMgYnVpbGQgbmV3IGNvbmZpZyBpdGVtIGRhdGEgaGFzaAogICAgICAgICAgICAjIFN0ZXAgQ29uZmlnSXRlbSBQb3NzaWJsZSAoUmVzZXRzIFdoaXRlIGxpc3QpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlfS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVzZXQgcmV0dXJuIGRhdGEgYXMgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBqdXN0IHRoZSBQb3NzaWJsZSBJdGVtcyBleGNsdWRlZCB0aGUgb25lcwogICAgICAgICAgICAgICAgIyB0aGF0IGFyZSBub3QgaW4gdGhlIHBvc3NpYmxlIHNlY3Rpb24sIHRoaXMgaXMgdGhlIHNhbWUgYXMgcmVtb3ZlIGFsbCBtaXNzaW5nIGl0ZW1zIGZyb20KICAgICAgICAgICAgICAgICMgdGhlIG9yaWdpbmFsIGRhdGEKICAgICAgICAgICAgICAgICVOZXdUbXBEYXRhID0gKCk7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBSZXNldCByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfScnIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZX0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1RtcERhdGF7JElEfSA9ICREYXRheyRJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlIHBhcmFtICckRGF0YXskSUR9JyBhZGRlZCB0byByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlIHBhcmFtICckRGF0YXskSUR9JyBza2lwcGVkIGZyb20gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFN0ZXAgQ29uZmlnSXRlbSBQb3NzaWJsZUFkZCAoQWRkIG5ldyBvcHRpb25zIHRvIHRoZSB3aGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZUFkZH0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBVc2VkIHdpdGggUG9zc2libGVBZGQ6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcG9zc2libGUgYWRkIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGVBZGR9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGVOb3QgKHJlbW92ZXMgb3B0aW9ucyBmcm9tIHdoaXRlIGxpc3QpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlTm90fS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZU5vdDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3QgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGVOb3R9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExvb3BNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTG9vcE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICEkTWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZU5vdCBwYXJhbSAnJERhdGF7JElEfScgcmVtb3ZlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE5ld1RtcERhdGF7JElEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkTmV3VG1wRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIGxlYXZlZCBmb3IgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdG8gbmV3IHBhcmFtcyBpZiBnaXZlbgogICAgICAgIGlmICgkVXNlTmV3UGFyYW1zKSB7CiAgICAgICAgICAgICVOZXdEYXRhICAgICAgICAgICAgPSAlTmV3VG1wRGF0YTsKICAgICAgICAgICAgJFVzZU5ld01hc3RlclBhcmFtcyA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIHJldHVybiBuZXcgcGFyYW1zIGlmIHN0b3AgYWZ0ZXIgdGhpcyBzdGVwCiAgICAgICAgaWYgKCAkVXNlTmV3UGFyYW1zICYmICRTdGVwe1N0b3BBZnRlck1hdGNofSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gPSBcJU5ld0RhdGE7CgogICAgICAgICAgICAjIGlmIHdlIHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IG1hdGNoCiAgICAgICAgICAgICMgZXhpdCB0aGUgQUNMUlVMRVMgbG9vcAogICAgICAgICAgICBsYXN0IEFDTFJVTEVTOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJldHVybiBpZiBubyBuZXcgcGFyYW0gZXhpc3RzCiAgICByZXR1cm4gaWYgISRVc2VOZXdNYXN0ZXJQYXJhbXM7CgogICAgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gPSBcJU5ld0RhdGE7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb25maWdJdGVtQWNsRGF0YSgpCgpyZXR1cm4gdGhlIGN1cnJlbnQgQUNMIGRhdGEgaGFzaCBhZnRlciBDb25maWdJdGVtQWNsKCkKCiAgICBteSAlQWNsID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFjbERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJXsgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gfHwge30gfTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCkKCnJldHVybiB0aGUgY3VycmVudCBBQ0wgYWN0aW9uIGRhdGEgaGFzaCBhZnRlciBDb25maWdJdGVtQWNsKCkKCiAgICBteSAlQWNsQWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFjbEFjdGlvbkRhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ICkgewogICAgICAgIHJldHVybiAleyAkU2VsZi0+e0NvbmZpZ0l0ZW1BY2xEYXRhfSB9OwogICAgfQogICAgcmV0dXJuICV7ICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY3Rpb25EYXRhfSB8fCB7fSB9Owp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9Y3V0Cgo9aGVhZDIgX0dldENoZWNrcygpCgpjcmVhdGVzIHR3byBjaGVjayBoYXNoZXMgKG9uZSBmb3IgY3VycmVudCBkYXRhIHVwZGF0YWJsZSB2aWEgQUpBWCByZWZyZXNoZXMgYW5kIGFub3RoZXIgZm9yCnN0YXRpYyBjb25maWcgaXRlbSBkYXRhIHN0b3JlZCBpbiB0aGUgREIpIHdpdGggdGhlIHJlcXVpcmVkIGRhdGEgdG8gdXNlIGFzIGEgYmFzaXMgdG8gbWF0Y2ggdGhlIEFDTHMKCiAgICBteSAkQ2hlY3NrUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9HZXRDaGVja3MoCiAgICAgICAgQ2hlY2tBbGwgPT4gJzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICBSZXF1aXJlZENoZWNrcyA9PiAkUmVxdWlyZWRDaGVja0hhc2hSZWYsICAgICAgIyBPcHRpb25hbCBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgYXR0cmlidXRlcyB0byBnYXRoZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZS4gZy4gVXNlciA9PiAxLCB3aWxsIGZldGNoIGFsbCB1c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UsIHRoaXMgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIHdpbGwgYmUgdHJpZWQgdG8gbWF0Y2ggd2l0aCBjdXJyZW50IEFDTHMKICAgICAgICBBY3Rpb24gICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtWm9vbScsICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+IDEyMywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVaID0+ICdzb21lIHZhbHVlJywKICAgICAgICB9LAoKICAgICAgICBSZXNwb25zaWJsZUlEICAgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCBSZXNwb25zaWJsZUlEIG9yIE5ld1Jlc3BvbnNpYmxlSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGNhbiBiZSB1c2VkIGFuZCB0aGV5IGJvdGggcmVmZXJzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIFJlc3BvbnNpYmxlSUQKICAgICAgICBSZXNwb25zaWJsZSAgICAgID0+ICdzb21lIHVzZXIgbG9naW4nICAgICAgICAgIyBPcHRpb25hbAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCnJldHVybnM6CiAgICAkQ2hlY2tzUmVzdWx0ID0gewogICAgICAgIENoZWNrcyA9PiB7CiAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKICAgICAgICBDaGVja3NEYXRhYmFzZSA9PgogICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICB9LAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIF9HZXRDaGVja3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2hlY2tBbGwgICAgICAgPSAkUGFyYW17Q2hlY2tBbGx9OwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzID0gJXsgJFBhcmFte1JlcXVpcmVkQ2hlY2tzfSB9OwoKICAgICMgZ2V0IHVzZWQgaW50ZXJmYWNlIGZvciBwcm9jZXNzIG1hbmFnZW1lbnQgY2hlY2tzCiAgICBteSAkSW50ZXJmYWNlID0gJ0FnZW50SW50ZXJmYWNlJzsKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRJbnRlcmZhY2UgPSAnQ3VzdG9tZXJJbnRlcmZhY2UnOwogICAgfQoKICAgIG15ICVDaGVja3M7CiAgICBteSAlQ2hlY2tzRGF0YWJhc2U7CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSApIHsKICAgICAgICAkQ2hlY2tze0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICAgICAgJENoZWNrc0RhdGFiYXNle0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyB1c2UgY29uZmlnIGl0ZW0gZGF0YSBpZiBjb25maWcgaXRlbSBpZCBpcyBnaXZlbgogICAgIyBkbyB0aGF0IGFsd2F5cywgZXZlbiBpZiAkUmVxdWlyZWRDaGVja3N7Q29uZmlnSXRlbX0gaXMgbm90IHRoYXQKICAgICMgKGJlY2F1c2UgdG9vIG11Y2ggc3R1ZmYgZGVwZW5kcyBvbiBpdCkKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19ID0gJENvbmZpZ0l0ZW07CgogICAgICAgICMga2VlcCBkYXRhYmFzZSBjb25maWcgaXRlbSBkYXRhIHNlcGFyYXRlZCBzaW5jZSB0aGUgcmVmZXJlbmNlIGlzIGFmZmVjdGVkIGJlbG93CiAgICAgICAgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19ID0gXCV7JENvbmZpZ0l0ZW19OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfSA9IHsKICAgICAgICAgICAgQ2xhc3MgICA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICB9OwogICAgfQoKICAgICMgY2hlY2sgZm9yIGR5bmFtaWMgZmllbGRzCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkfSApICkgewogICAgICAgICRDaGVja3N7RHluYW1pY0ZpZWxkfSA9ICRQYXJhbXtEeW5hbWljRmllbGR9OwoKICAgICAgICAjIHVwZGF0ZSBvciBhZGQgZHluYW1pYyBmaWVsZHMgaW5mb3JtYXRpb24gdG8gdGhlIGNvbmZpZyBpdGVtIGNoZWNrCiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICggc29ydCBrZXlzICV7ICRQYXJhbXtEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0tPnskRHluYW1pY0ZpZWxkTmFtZX0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGROYW1lfTsKICAgICAgICB9CiAgICB9CgogICAgIyBhbHdheXMgZ2V0IGluZm8gZnJvbSBjb25maWcgaXRlbSB0b28gYW5kIHNldCBpdCB0byB0aGUgRHluYW1pYyBGaWVsZCBjaGVjayBoYXNoIGlmIHRoZSBpbmZvIGlzCiAgICAjIGRpZmZlcmVudC4gdGhpcyBjYW4gYmUgZG9uZSBiZWNhdXNlIGluIHRoZSBwcmV2aW91cyBzdGVwIGNvbmZpZyBpdGVtIGluZm8gd2FzIHVwZGF0ZWQuIGJ1dCBtYXliZQogICAgIyBjb25maWcgaXRlbSBoYXMgbW9yZSBpbmZvcm1hdGlvbiBzdG9yZWQgdGhhbiBpbiB0aGUgRHluYW1pY0ZpZWxkIHBhcmFtZXRlci4KICAgIElUU01DT05GSUdJVEVNQVRUUklCVVRFOgogICAgZm9yIG15ICRDb25maWdJdGVtQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRDaGVja3N7Q29uZmlnSXRlbX0gLy8ge30gfSApIHsKICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFIGlmICEkQ29uZmlnSXRlbUF0dHJpYnV0ZTsKCiAgICAgICAgIyBjaGVjayBpZiBpcyBhIGR5bmFtaWMgZmllbGQgd2l0aCBkYXRhCiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAhfiBteyBcQSBEeW5hbWljRmllbGRfIH1zbXg7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhZGVmaW5lZCAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWxlbmd0aCAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIHJlZiAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAjIGNvbXBhcmUgaWYgZGF0YSBpcyBkaWZmZXJlbnQgYW5kIHNraXAgb24gc2FtZSBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0KICAgICAgICAgICAgJiYgIURhdGFJc0RpZmZlcmVudCgKICAgICAgICAgICAgICAgIERhdGExID0+ICRDaGVja3N7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICBEYXRhMiA9PiAkQ2hlY2tze0R5bmFtaWNGaWVsZH0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0sCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDaGVja3N7RHluYW1pY0ZpZWxkfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSA9ICRDaGVja3N7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX07CiAgICB9CgogICAgIyBhbHNvIGNvcHkgdGhlIGRhdGFiYXNlIGluZm9ybWF0aW9uIHRvIHRoZSBhcHByb3ByaWF0ZSBoYXNoCiAgICBJVFNNQ09ORklHSVRFTUFUVFJJQlVURToKICAgIGZvciBteSAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFIGlmICEkQ29uZmlnSXRlbUF0dHJpYnV0ZTsKCiAgICAgICAgIyBjaGVjayBpZiBpcyBhIGR5bmFtaWMgZmllbGQgd2l0aCBkYXRhCiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAhfiBteyBcQSBEeW5hbWljRmllbGRfIH1zbXg7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhZGVmaW5lZCAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX07CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhbGVuZ3RoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICByZWYgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9ICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDaGVja3NEYXRhYmFzZXtEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9ID0gJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgfQoKICAgICMgdXNlIHVzZXIgZGF0YQogICAgaWYgKCAoICRDaGVja0FsbCB8fCAkUmVxdWlyZWRDaGVja3N7VXNlcn0gKSAmJiAkUGFyYW17VXNlcklEfSApIHsKCiAgICAgICAgbXkgJVVzZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGdyb3VwIG9iamVjdAogICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICBmb3IgbXkgJFR5cGUgKCBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N5c3RlbTo6UGVybWlzc2lvbicpIH0gKSB7CgogICAgICAgICAgICBteSAlR3JvdXBzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkVHlwZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBHcm91cE5hbWVzID0gc29ydCB2YWx1ZXMgJUdyb3VwczsKCiAgICAgICAgICAgICRVc2VyeyJHcm91cF8kVHlwZSJ9ID0gXEBHcm91cE5hbWVzOwogICAgICAgIH0KCiAgICAgICAgbXkgJVJvbGVJRHMgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Vc2VyUm9sZUdldCgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBSb2xlTmFtZXMgPSBzb3J0IHZhbHVlcyAlUm9sZUlEczsKCiAgICAgICAgJFVzZXJ7Um9sZX0gICAgICAgICAgID0gXEBSb2xlTmFtZXM7CiAgICAgICAgJENoZWNrc3tVc2VyfSAgICAgICAgID0gXCVVc2VyOwogICAgICAgICRDaGVja3NEYXRhYmFzZXtVc2VyfSA9IFwlVXNlcjsKICAgIH0KCiAgICAjIHVzZSB0eXBlIGRhdGEgKGlmIGdpdmVuKQogICAgaWYgKCAkQ2hlY2tBbGwgfHwgJFJlcXVpcmVkQ2hlY2tze1R5cGV9ICkgewoKICAgICAgICAjIGdldCB0eXBlIG9iamVjdAogICAgICAgIG15ICRUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKCiAgICAgICAgaWYgKCAkUGFyYW17VHlwZUlEfSApIHsKICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgIElEICAgICA9PiAkUGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2hlY2tze1R5cGV9ID0gXCVUeXBlOwoKICAgICAgICAgICAgIyB1cGRhdGUgb3IgYWRkIGNvbmZpZyBpdGVtIHR5cGUgaW5mb3JtYXRpb24gdG8gdGhlIGNvbmZpZyBpdGVtIGNoZWNrCiAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0tPntUeXBlfSAgID0gJENoZWNrc3tUeXBlfS0+e05hbWV9OwogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZUlEfSA9ICRDaGVja3N7VHlwZX0tPntJRH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1R5cGV9ICkgewoKICAgICAgICAgICAgIyBUT0RPIEF0dGVudGlvbiEKICAgICAgICAgICAgIwogICAgICAgICAgICAjIFRoZSBwYXJhbWV0ZXIgdHlwZSBjYW4gY29udGFpbiBub3Qgb25seSB0aGUgd2FudGVkIGNvbmZpZyBpdGVtIHR5cGUsIGJlY2F1c2UgYWxzbwogICAgICAgICAgICAjIHNvbWUgb3RoZXIgZnVuY3Rpb25zIGluIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0ucG0gdXNlIGEgdHlwZSBwYXJhbWV0ZXIsIGZvciBleGFtcGxlCiAgICAgICAgICAgICMgTW92ZUxpc3QoKSBldGMuLi4gVGhlc2UgZnVuY3Rpb25zIGNvdWxkIGJlIHJld3JpdHRlbiB0byBub3QKICAgICAgICAgICAgIyB1c2UgYSBUeXBlIHBhcmFtZXRlciwgb3IgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgQ29uZmlnSXRlbUFjbCgpIGNvdWxkIGJlIG1vZGlmaWVkIHRvCiAgICAgICAgICAgICMgbm90IGp1c3QgcGFzcyB0aGUgY29tcGxldGUgUGFyYW0tSGFzaCwgYnV0IGluc3RlYWQgYSBuZXcgcGFyYW1ldGVyLCBsaWtlIEZyb250RW5kUGFyYW1ldGVyLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgQXMgYSB3b3JrYXJvdW5kIHdlIGxvb2t1cCB0aGUgVHlwZUxpc3QgZmlyc3QsIGFuZCBjb21wYXJlIGlmIHRoZSB0eXBlIHBhcmFtZXRlcgogICAgICAgICAgICAjIGlzIGZvdW5kIGluIHRoZSBsaXN0LCBzbyB3ZSBjYW4gYmUgbW9yZSBzdXJlIHRoYXQgaXQgaXMgdGhlIHR5cGUgdGhhdCB3ZSB3YW50IGhlcmUuCgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgdHlwZSBsaXN0ICh3b3JrYXJvdW5kIGZvciBkZXNjcmliZWQgcHJvYmxlbSkKICAgICAgICAgICAgbXkgJVR5cGVMaXN0ID0gcmV2ZXJzZSAkVHlwZU9iamVjdC0+VHlwZUxpc3QoKTsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdHlwZSBpcyBpbiB0aGUgdHlwZSBsaXN0ICh3b3JrYXJvdW5kIGZvciBkZXNjcmliZWQgcHJvYmxlbSkKICAgICAgICAgICAgaWYgKCAkVHlwZUxpc3R7ICRQYXJhbXtUeXBlfSB9ICkgewogICAgICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDaGVja3N7VHlwZX0gPSBcJVR5cGU7CgogICAgICAgICAgICAgICAgIyB1cGRhdGUgb3IgYWRkIGNvbmZpZyBpdGVtIHR5cGUgaW5mb3JtYXRpb24gdG8gdGhlIGNvbmZpZyBpdGVtIGNoZWNrCiAgICAgICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZX0gICA9ICRDaGVja3N7VHlwZX0tPntOYW1lfTsKICAgICAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0tPntUeXBlSUR9ID0gJENoZWNrc3tUeXBlfS0+e0lEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICEkUGFyYW17VHlwZUlEfSAmJiAhJFBhcmFte1R5cGV9ICkgewogICAgICAgICAgICBpZiAoIElzUG9zaXRpdmVJbnRlZ2VyKCAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZUlEfSApICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHR5cGUgZGF0YSBmcm9tIHRoZSBjb25maWcgaXRlbQogICAgICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgICAgICBJRCAgICAgPT4gJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENoZWNrc3tUeXBlfSA9IFwlVHlwZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgaGFzaCB3aXRoIHRoZSBjb25maWcgaXRlbSBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlCiAgICAgICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57VHlwZUlEfSApICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiBkYXRhYmFzZSBkYXRhIG1hdGNoZXMgY3VycmVudCBkYXRhIChwZXJmb3JtYW5jZSkKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgZGVmaW5lZCAkQ2hlY2tze1R5cGV9LT57SUR9CiAgICAgICAgICAgICAgICAmJiAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPntUeXBlSUR9IGVxICRDaGVja3N7VHlwZX0tPntJRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJENoZWNrc0RhdGFiYXNle1R5cGV9ID0gJENoZWNrc3tUeXBlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgY29tcGxldGUgdGhlIGRhdGEgcXVlcnlpbmcgdGhlIGRhdGFiYXNlIGFnYWluCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgICAgICBJRCAgICAgPT4gJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57VHlwZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7VHlwZX0gPSBcJVR5cGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB3aXRoaW4gdGhpcyBmdW5jdGlvbiAlUGFyYW0gaXMgbW9kaWZpZWQgYnkgcmVwbGFjZW1lbnRzIGxpa2U6CiAgICAjICAgICRQYXJhbXtQcmlvcml0eUlEfSA9ICRQYXJhbXtOZXdQcmlvcml0eUlEfQogICAgIyAgICBhcHBhcmVudGx5IHRoaXMgY2hhbmdlcyBhcmUgbm90IGxvbmdlciBuZWVkZWQgb3V0c2lkZSB0aGlzIGZ1bmN0aW9uIGFuZCBpdCBpcyBub3QgbmVjZXNzYXJ5CiAgICAjICAgIHRvIHJldHVybiBzdWNoIHJlcGxhY2VtZW50cwoKICAgIHJldHVybiB7CiAgICAgICAgQ2hlY2tzICAgICAgICAgPT4gXCVDaGVja3MsCiAgICAgICAgQ2hlY2tzRGF0YWJhc2UgPT4gXCVDaGVja3NEYXRhYmFzZSwKICAgIH07Cn0KCj1oZWFkMiBfQ29tcGFyZU1hdGNoV2l0aERhdGEoKQoKQ29tcGFyZXMgYSBwcm9wZXJ0aWVzIGVsZW1lbnQgd2l0aCB0aGUgZGF0YSBzZW50IHRvIHRoZSBBQ0wsIHRoZSBjb21wYXJlIHJlc3VsdHMgdmFyaWVzIG9uIGhvdyB0aGUKQUNMIHByb3BlcnRpZXMgd2hlcmUgZGVmaW5lZCBpbmNsdWRpbmcgbm9ybWFsLCBuZWdhdGVkLCByZWd1bGFyIGV4cHJlc3Npb24gYW5kIG5lZ2F0ZWQgcmVndWxhcgpleHByZXNzaW9uIGNvbXBhcmlzb25zLgoKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgIE1hdGNoID0+ICdhIHZhbHVlJywgICAgICAgICAjIG9yICdbTm90XWEgdmFsdWUnLCBvciAnW1JlZ0V4cF12YWwnIG9yICdbTm90UmVnRXhwXXZhbCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBvciAnW05vdHJlZ2V4cF12YWwnIG9yICdbTm90cmVnZXhwXScKICAgICAgICBEYXRhID0+ICdhIHZhbHVlJywKICAgICAgICBTaW5nbGVJdGVtID0+IDEsICAgICAgICAgICAgIyBvciAwLCBvcHRpb25hbCwgZGVmYXVsdCAwCiAgICApOwoKUmV0dXJuczoKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAjIG9yIGZhbHNlCiAgICAgICAgTWF0Y2ggICA9PiAxLCAgICAgICAgICAgICAgICMgb3IgZmFsc2UKICAgICAgICBTa2lwICAgID0+IDEsICAgICAgICAgICAgICAgIyBvciBmYWxzZSAoaW4gY2VydGFpbiBjYXNlcyB3aGVyZSBTaW5nbGVJdGVtIGlzIHNldCkKICAgIH07Cgo9Y3V0CgpzdWIgX0NvbXBhcmVNYXRjaFdpdGhEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhNYXRjaCBEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRNYXRjaCA9ICRQYXJhbXtNYXRjaH07CiAgICBteSAkRGF0YSAgPSAkUGFyYW17RGF0YX07CgogICAgIyBOZWdhdGVkIG1hdGNoZXMgcmVxdWlyZXMgYSBkaWZmZXJlbnQgbG9naWMuCiAgICBpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tOb3QnICkgZXEgJ1tOb3QnICkgewoKICAgICAgICAjIE5vdCBlcXVhbCBtYXRjaAogICAgICAgIGlmICggc3Vic3RyKCAkTWF0Y2gsIDAsIGxlbmd0aCAnW05vdF0nICkgZXEgJ1tOb3RdJyApIHsKICAgICAgICAgICAgbXkgJE5vdFZhbHVlID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbTm90XSc7CiAgICAgICAgICAgIGlmICggJE5vdFZhbHVlIGVxICREYXRhICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBOb3QgcmVnLWV4cCBtYXRjaCBjYXNlLXNlbnNpdGl2ZS4KICAgICAgICBlbHNpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tOb3RSZWdFeHBdJyApIGVxICdbTm90UmVnRXhwXScgKSB7CiAgICAgICAgICAgIG15ICRSZWdFeHAgPSBzdWJzdHIgJE1hdGNoLCBsZW5ndGggJ1tOb3RSZWdFeHBdJzsKICAgICAgICAgICAgaWYgKCAkRGF0YSA9fiAvJFJlZ0V4cC8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDAsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE5vdCByZWctZXhwIG1hdGNoIGNhc2UtaW5zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90cmVnZXhwXScgKSBlcSAnW05vdHJlZ2V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbTm90cmVnZXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvaSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte1NpbmdsZUl0ZW19ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAxLAogICAgICAgICAgICAgICAgU2tpcCAgICA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBFcXVhbCBtYXRjaC4KICAgICAgICBpZiAoICRNYXRjaCBlcSAkRGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgUmVnLWV4cCBtYXRjaCBjYXNlLXNlbnNpdGl2ZS4KICAgICAgICBlbHNpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tSZWdFeHBdJyApIGVxICdbUmVnRXhwXScgKSB7CiAgICAgICAgICAgIG15ICRSZWdFeHAgPSBzdWJzdHIgJE1hdGNoLCBsZW5ndGggJ1tSZWdFeHBdJzsKICAgICAgICAgICAgaWYgKCAkRGF0YSA9fiAvJFJlZ0V4cC8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFJlZy1leHAgbWF0Y2ggY2FzZS1pbnNlbnNpdGl2ZS4KICAgICAgICBlbHNpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tyZWdleHBdJyApIGVxICdbcmVnZXhwXScgKSB7CiAgICAgICAgICAgIG15ICRSZWdFeHAgPSBzdWJzdHIgJE1hdGNoLCBsZW5ndGggJ1tyZWdleHBdJzsKICAgICAgICAgICAgaWYgKCAkRGF0YSA9fiAvJFJlZ0V4cC9pICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAxLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17U2luZ2xlSXRlbX0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDAsCiAgICAgICAgICAgICAgICBTa2lwICAgID0+IDAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgU2tpcCAgICA9PiAxLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQoKPWVuZCBJbnRlcm5hbDoKCj1jdXQKCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0gZm9yIGNvbmZpZyBpdGVtIHNlYXJjaAoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29uZmlnIGl0ZW0gc2VhcmNoIGZ1bmN0aW9ucy4gVGhlIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHZpYSB0aGUgQzxLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0+IG9iamVjdC4KCj1oZWFkMiBDb25maWdJdGVtU2VhcmNoKCkKClRvIGZpbmQgY29uZmlnIGl0ZW1zIGluIHlvdXIgc3lzdGVtLgoKICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgIyByZXN1bHQgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdIQVNIJykKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJyB8fCAnSEFTSCcgfHwgJ0NPVU5UJywKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXQgdG8gMCB0byBzZWFyY2ggZmllbGRzIHdpdGggYSB2YWx1ZSBwcmVzZW50CiAgICAgICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTGlrZSAgICAgICAgICAgICAgPT4gJ3ZhbHVlKicsICAgICAgICAgICAgICAgICMgImVxdWFscyIgb3BlcmF0b3Igd2l0aCB3aWxkY2FyZCBzdXBwb3J0CiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICcyMDAxLTAxLTAxIDAxOjAxOjAxJywKICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnMjAwMi0wMi0wMiAwMjowMjowMicsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICB9CgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdEb3duJykKICAgICAgICBPcmRlckJ5ID0+ICdEb3duJywgICMgRG93bnxVcAoKICAgICAgICAjIFNvcnRCeSAob3B0aW9uYWwsIGRlZmF1bHQgaXMgJ051bWJlcicpCiAgICAgICAgU29ydEJ5ICA9PiAnTmFtZScsCgogICAgICAgICMgT3JkZXJCeSBhbmQgU29ydEJ5IGFzIEFSUkFZIGZvciBzdWIgc29ydGluZyAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiBbJ0Rvd24nLCAnVXAnXSwKICAgICAgICBTb3J0QnkgID0+IFsnQ29uZmlnSXRlbUlEJywgJ051bWJlciddLAoKICAgICAgICAjIHVzZXIgc2VhcmNoCiAgICAgICAgVXNlcklEICAgICA9PiAxMjMsICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQZXJtaXNzaW9uID0+ICdybycgfHwgJ3J3JywgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAncm8nCgogICAgICAgICMgQ2FjaGVUVEwsIGNhY2hlIHNlYXJjaCByZXN1bHQgaW4gc2Vjb25kcyAob3B0aW9uYWwsIHRoZSBkZWZhdWx0IGlzIGZvdXIgbWludXRlcykKICAgICAgICBDYWNoZVRUTCA9PiA2MCAqIDE1LAoKICAgICAgICAjIEVuLSBvciBkaXNhYmxlIHVzYWdlIG9mIFF1ZXJ5Q29uZGl0aW9uOyBjb250cm9sbGluZyB0aGUgZXZhbHVhdGlvbiBvZiBzb21lIHNwZWNpYWwgY2hhcmFjdGVycywgZS5nLiAnKycsIGFzIHNlYXJjaCBvcGVyYXRvcnMKICAgICAgICAjIGRlZmF1bHQgMQogICAgICAgIFF1ZXJ5Q29uZGl0aW9uID0+ICgxfDApLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdBUlJBWSc+OgoKICAgIEBDb25maWdJdGVtSURzID0gKCAxLCAyLCAzICk7CgpSZXR1cm5zIGZvciBDPFJlc3VsdCA9PiAnSEFTSCc+IG9yIHdoZW4gbm8gcmVzdWx0IHR5cGUgaXMgc3BlY2lmaWVkOgoKICAgICVDb25maWdJdGVtSURzID0gKAogICAgICAgIDEgPT4gJzIwMTAxMDI3MDAwMDEnLAogICAgICAgIDIgPT4gJzIwMTAxMDI3MDAwMDInLAogICAgICAgIDMgPT4gJzIwMTAxMDI3MDAwMDMnLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdDT1VOVCc+OgoKICAgICROdW1Db25maWdJdGVtSURzID0gMzsgIyB0aHJlZSByZXN1bHRzCgo9Y3V0CgojIFRPRE86IENoZWNrIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhpcyBpcyBjYWxsZWQuIENoYW5nZSBEeW5hbWljRmllbGRzLCBPcmRlckJ5IC0+IFNvcnRCeSwgT3JkZXJCeURpcmVjdGlvbiAtPiBPcmRlckJ5LCBSZXR1cm4gPT4gQVJSQVkgcmV0dXJucyBub3QgYSByZWYKc3ViIENvbmZpZ0l0ZW1TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlZmF1bHQgdmFsdWVzCiAgICBteSAkUmVzdWx0ICAgICAgICAgPSAkUGFyYW17UmVzdWx0fSAgfHwgJ0hBU0gnOwogICAgbXkgJE9yZGVyQnkgICAgICAgID0gJFBhcmFte09yZGVyQnl9IHx8ICdEb3duJzsKICAgIG15ICRTb3J0QnkgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9ICB8fCAnTnVtYmVyJzsKICAgIG15ICRMaW1pdCAgICAgICAgICA9ICRQYXJhbXtMaW1pdH0gICB8fCAxMDAwMDsKICAgIG15ICRRdWVyeUNvbmRpdGlvbiA9ICRQYXJhbXtRdWVyeUNvbmRpdGlvbn0gLy8gMTsKCiAgICBteSAlU29ydE9wdGlvbnMgPSAoCiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTnVtYmVyICAgICAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICd2Lm5hbWUnLAogICAgICAgIERlcGxTdGF0ZSAgICA9PiAnZ2NfZGVwbC5uYW1lJywKICAgICAgICBJbmNpU3RhdGUgICAgPT4gJ2djX2luY2kubmFtZScsCiAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdnY19jZGVwbC5uYW1lJywKICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ2djX2NpbmNpLm5hbWUnLAogICAgICAgIEFnZSAgICAgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZWQgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENoYW5nZWQgICAgICA9PiAnY2kuY2hhbmdlX3RpbWUnLAogICAgKTsKCiAgICAjIGNoZWNrIHR5cGVzIG9mIGdpdmVuIGFyZ3VtZW50cwogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDb25maWdJdGVtSUQgQ2xhc3NJRHMgRGVwbFN0YXRlSURzIEN1ckRlcGxTdGF0ZUlEcyBJbmNpU3RhdGVJRHMgQ3VySW5jaVN0YXRlSURzIENyZWF0ZUJ5IENoYW5nZUJ5CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBuZXh0IEtFWSBpZiAhJFBhcmFteyRLZXl9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aHkgbm8gc2VhcmNoIGZvciAnMCcgPz8/CiAgICAgICAgbmV4dCBLRVkgaWYgcmVmICRQYXJhbXskS2V5fSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXskS2V5fSB9OwoKICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckS2V5JyBpcyBpbnZhbGlkIG9yIGFuIGVtcHR5IGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBvYmplY3RzCiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgcXVvdGUgaWQgYXJyYXkgZWxlbWVudHMKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDbGFzc0lEcyBEZXBsU3RhdGVJRHMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZUlEcyBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgISRQYXJhbXskS2V5fTsKCiAgICAgICAgIyBxdW90ZSBlbGVtZW50cwogICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRQYXJhbXskS2V5fSB9ICkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICREQk9iamVjdC0+UXVvdGUoICRFbGVtZW50LCAnSW50ZWdlcicgKSApIHsKCiAgICAgICAgICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckRWxlbWVudCcgaW4gJyRLZXknIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzb3J0L29yZGVyIGJ5IG9wdGlvbnMKICAgIG15IEBTb3J0QnlBcnJheSAgPSByZWYgJFNvcnRCeSBlcSAnQVJSQVknICA/ICRTb3J0QnktPkAqICA6ICRTb3J0Qnk7CiAgICBteSBAT3JkZXJCeUFycmF5ID0gcmVmICRPcmRlckJ5IGVxICdBUlJBWScgPyAkT3JkZXJCeS0+QCogOiAkT3JkZXJCeTsKCiAgICBmb3IgbXkgJENvdW50ICggMCAuLiAkI1NvcnRCeUFycmF5ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgISRTb3J0T3B0aW9uc3sgJFNvcnRCeUFycmF5WyRDb3VudF0gfQogICAgICAgICAgICAmJiAkU29ydEJ5QXJyYXlbJENvdW50XSAhfiAvXkR5bmFtaWNGaWVsZF8vCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHZhbGlkIFNvcnRCeSAoJyAuICRTb3J0QnlBcnJheVskQ291bnRdIC4gJykhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgVE9ETzogZmFsbCBiYWNrIHRvIGEgZGVmYXVsdCBvZiAnVXAnCiAgICAgICAgaWYgKCAkT3JkZXJCeUFycmF5WyRDb3VudF0gbmUgJ0Rvd24nICYmICRPcmRlckJ5QXJyYXlbJENvdW50XSBuZSAnVXAnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB2YWxpZCBPcmRlckJ5ICgnIC4gJE9yZGVyQnlBcnJheVskQ291bnRdIC4gJykhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgc3FsCiAgICBteSAkU1FMU2VsZWN0OwoKICAgICMgVE9ETzogYWRkIHZlcnNpb24gc2VhcmNoCiAgICBpZiAoICRSZXN1bHQgZXEgJ0NPVU5UJyApIHsKICAgICAgICAkU1FMU2VsZWN0ID0gJ1NFTEVDVCBDT1VOVChESVNUSU5DVChjaS5pZCkpJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUxTZWxlY3QgPSAnU0VMRUNUIERJU1RJTkNUIGNpLmlkLCBjaS5jb25maWdpdGVtX251bWJlcic7CiAgICB9CgogICAgbXkgJFNRTEZyb20gPSAnIEZST00gY29uZmlnaXRlbSBjaSc7CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHZlcnNpb24gc2VhcmNoIGluZGV4IHRhYmxlIGpvaW4KICAgIG15ICRWZXJzaW9uVGFibGVKb2luZWQ7CiAgICBpZiAoICRTZWxmLT5fVmVyc2lvblNlYXJjaEluZGV4U1FMSm9pbk5lZWRlZCggU2VhcmNoUGFyYW1zID0+IFwlUGFyYW0gKSApIHsKICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gY29uZmlnaXRlbV92ZXJzaW9uIHYgT04gY2kubGFzdF92ZXJzaW9uX2lkID0gdi5pZCc7CiAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICB9CgogICAgbXkgJFNRTEV4dCA9ICcgV0hFUkUgMSA9IDEnOwoKICAgICMgTGltaXQgdGhlIHNlYXJjaCB0byBqdXN0IG9uZSAob3IgYSBsaXN0KSBDb25maWdJdGVtSUQKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgKSB7CgogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnY2kuaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gcmVmICRQYXJhbXtDb25maWdJdGVtSUR9IGVxICdBUlJBWScgPyAkUGFyYW17Q29uZmlnSXRlbUlEfSA6IFsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgUXVvdGVUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICAgICAgQmluZE1vZGUgID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkU1FMRXh0IC49ICcgQU5EICggJyAuICRTUUxRdWVyeUluQ29uZGl0aW9uIC4gJyApICc7CiAgICB9CgogICAgIyBsb29rdXAgY2xhc3NlcwogICAgaWYgKCAkUGFyYW17Q2xhc3Nlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDbGFzcyAoIEB7ICRQYXJhbXtDbGFzc2VzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJENsYXNzTG9va3VweyRDbGFzc30gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJENsYXNzIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17Q2xhc3NJRHN9IH0sICRDbGFzc0xvb2t1cHskQ2xhc3N9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHBlcm1pc3Npb25zIGFyZSBoYW5kbGVkIHZpYSBjbGFzc2VzCiAgICBpZiAoICRQYXJhbXtVc2VySUR9ICYmICRQYXJhbXtVc2VySUR9ICE9IDEgKSB7CgogICAgICAgIG15IEBDbGFzc0lEcyA9ICRQYXJhbXtDbGFzc0lEc30gPyAkUGFyYW17Q2xhc3NJRHN9LT5AKiA6CiAgICAgICAgICAgIGtleXMgJXsKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkgLy8ge30KICAgICAgICAgICAgfTsKCiAgICAgICAgbXkgQEFsbG93ZWRDbGFzc0lEczsKCiAgICAgICAgZm9yIG15ICRDbGFzc0lEIChAQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRTZWxmLT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRQYXJhbXtQZXJtaXNzaW9ufSAvLyAncm8nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNBY2Nlc3MpIHsKICAgICAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEFsbG93ZWRDbGFzc0lEczsKCiAgICAgICAgJFBhcmFte0NsYXNzSURzfSA9IFxAQWxsb3dlZENsYXNzSURzOwogICAgfQoKICAgICMgY2xhc3MgaWRzCiAgICBpZiAoICRQYXJhbXtDbGFzc0lEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5jbGFzc19pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiAkUGFyYW17Q2xhc3NJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBkZXBsb3ltZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17RGVwbFN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlRGVwbFN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICkgLy8ge30KICAgICAgICB9OwoKICAgICAgICBmb3IgbXkgJERlcGxTdGF0ZSAoIEB7ICRQYXJhbXtEZXBsU3RhdGVzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUxvb2t1cHskRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIElEIGZvciAkRGVwbFN0YXRlIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17RGVwbFN0YXRlSURzfSB9LCAkRGVwbFN0YXRlTG9va3VweyREZXBsU3RhdGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlcGxveW1lbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAndi5kZXBsX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtEZXBsU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjdXJyZW50IGRlcGxveW1lbnQgc3RhdGVzCiAgICBpZiAoICRQYXJhbXtDdXJEZXBsU3RhdGVzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVDdXJEZXBsU3RhdGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkQ3VyRGVwbFN0YXRlICggQHsgJFBhcmFte0N1ckRlcGxTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkQ3VyRGVwbFN0YXRlTG9va3VweyRDdXJEZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICRDdXJEZXBsU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9IH0sICRDdXJEZXBsU3RhdGVMb29rdXB7JEN1ckRlcGxTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgY3VycmVudCBkZXBsb3ltZW50IHN0YXRlIGlkcwogICAgaWYgKCAkUGFyYW17Q3VyRGVwbFN0YXRlSURzfSApIHsKICAgICAgICBteSAkU1FMUXVlcnlJbkNvbmRpdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ2NpLmN1cl9kZXBsX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBpbmNpZGVudCBzdGF0ZXMKICAgIGlmICggJFBhcmFte0luY2lTdGF0ZXN9ICkgewoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJUluY2lTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkSW5jaVN0YXRlICggQHsgJFBhcmFte0luY2lTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkSW5jaVN0YXRlTG9va3VweyRJbmNpU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICRJbmNpU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtJbmNpU3RhdGVJRHN9IH0sICRJbmNpU3RhdGVMb29rdXB7JEluY2lTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAndi5pbmNpX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtJbmNpU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjdXJyZW50IGluY2lkZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17Q3VySW5jaVN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlQ3VySW5jaVN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDdXJJbmNpU3RhdGUgKCBAeyAkUGFyYW17Q3VySW5jaVN0YXRlc30gfSApIHsKCiAgICAgICAgICAgIGlmICggISRDdXJJbmNpU3RhdGVMb29rdXB7JEN1ckluY2lTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJEN1ckluY2lTdGF0ZSBmb3VuZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0N1ckluY2lTdGF0ZUlEc30gfSwgJEN1ckluY2lTdGF0ZUxvb2t1cHskQ3VySW5jaVN0YXRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBpbmNpZGVudCBzdGF0ZSBpZHMKICAgIGlmICggJFBhcmFte0N1ckluY2lTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5jdXJfaW5jaV9zdGF0ZV9pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiAkUGFyYW17Q3VySW5jaVN0YXRlSURzfSwKICAgICAgICAgICAgUXVvdGVUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICAgICAgQmluZE1vZGUgID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkU1FMRXh0IC49ICcgQU5EICggJyAuICRTUUxRdWVyeUluQ29uZGl0aW9uIC4gJyApICc7CiAgICB9CgogICAgIyBvdGhlciBjb25maWcgaXRlbSBzdHVmZgogICAgbXkgJUZpZWxkU1FMTWFwID0gKAogICAgICAgIE51bWJlciAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTmFtZSAgICAgPT4gJ3YubmFtZScsCiAgICAgICAgQ3JlYXRlQnkgPT4gJ2NpLmNyZWF0ZV9ieScsCiAgICAgICAgQ2hhbmdlQnkgPT4gJ2NpLmNoYW5nZV9ieScsCiAgICApOwoKICAgIEFUVFJJQlVURToKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVGaWVsZFNRTE1hcCApIHsKICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhZGVmaW5lZCAkUGFyYW17JEtleX07CgogICAgICAgICMgaWYgaXQncyBubyByZWYsIHB1dCBpdCB0byBhcnJheSByZWYKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEtleX0gZXEgJycgKSB7CiAgICAgICAgICAgICRQYXJhbXskS2V5fSA9IFsgJFBhcmFteyRLZXl9IF07CiAgICAgICAgfQoKICAgICAgICAjIHByb2NjZXNzIGFycmF5IHJlZgogICAgICAgIG15ICRVc2VkID0gMDsKCiAgICAgICAgVkFMVUU6CiAgICAgICAgZm9yIG15ICRWYWx1ZSAoIEB7ICRQYXJhbXskS2V5fSB9ICkgewogICAgICAgICAgICBuZXh0IFZBTFVFIGlmICFkZWZpbmVkICRWYWx1ZSB8fCAhbGVuZ3RoICRWYWx1ZTsKCiAgICAgICAgICAgICRWYWx1ZSA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAjIGNoZWNrIHNlYXJjaCBhdHRyaWJ1dGUsIHdlIGRvIG5vdCBuZWVkIHRvIHNlYXJjaCBmb3IgKgogICAgICAgICAgICBuZXh0IFZBTFVFIGlmICRWYWx1ZSA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgIGlmICggISRVc2VkICkgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoJzsKICAgICAgICAgICAgICAgICRVc2VkID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBPUiAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFF1ZXJ5Q29uZGl0aW9uKSB7CgogICAgICAgICAgICAgICAgIyB1c2Ugc2VhcmNoIGNvbmRpdGlvbiBleHRlbnNpb24KICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJERCT2JqZWN0LT5RdWVyeUNvbmRpdGlvbigKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkRmllbGRTUUxNYXB7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJEZpZWxkU1FMTWFweyRLZXl9IC4gIiA9ICciIC4gJERCT2JqZWN0LT5RdW90ZSgkVmFsdWUpIC4gIiciOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJFVzZWQpIHsKICAgICAgICAgICAgJFNRTEV4dCAuPSAnKSc7CiAgICAgICAgfQogICAgfQoKICAgICMgUmVtZW1iZXIgYWxyZWFkeSBqb2luZWQgdGFibGVzIGZvciBzb3J0aW5nLgogICAgbXkgJUR5bmFtaWNGaWVsZEpvaW5UYWJsZXM7CiAgICBteSAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIgPSAxOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoIGtleXMgJVBhcmFtICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGFyYW1OYW1lID1+IG0vXkR5bmFtaWNGaWVsZF8oLispLzsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkLT4lKiApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gcXFbTm8gc3VjaCBkeW5hbWljIGZpZWxkICIkMSIgKG9yIGl0IGlzIGluYWN0aXZlKV0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkU2VhcmNoUGFyYW0gPSBkZWxldGUgJFBhcmFteyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9In07CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VhcmNoUGFyYW07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIHJlZiAkU2VhcmNoUGFyYW0gZXEgJ0hBU0gnOwoKICAgICAgICBteSAkTmVlZEpvaW47CiAgICAgICAgbXkgJFF1ZXJ5Rm9yRW1wdHlWYWx1ZXMgPSAwOwoKICAgICAgICBmb3IgbXkgJE9wZXJhdG9yICggc29ydCBrZXlzICRTZWFyY2hQYXJhbS0+JSogKSB7CgogICAgICAgICAgICBteSBAU2VhcmNoUGFyYW1zID0gKCByZWYgJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSBlcSAnQVJSQVknICkKICAgICAgICAgICAgICAgID8gQHsgJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSB9CiAgICAgICAgICAgICAgICA6ICggJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSApOwoKICAgICAgICAgICAgbXkgJFNRTEV4dFN1YiA9ICcgQU5EICgnOwogICAgICAgICAgICBteSAkQ291bnRlciAgID0gMDsKICAgICAgICAgICAgVEVYVDoKICAgICAgICAgICAgZm9yIG15ICRUZXh0IChAU2VhcmNoUGFyYW1zKSB7CiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgdW5sZXNzIGRlZmluZWQgJFRleHQ7CiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgaWYgJFRleHQgZXEgJyc7CgogICAgICAgICAgICAgICAgJFRleHQgPX4gcy9cKi8lL2dpOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgc2VhcmNoIGF0dHJpYnV0ZSwgd2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZvciAqCiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgaWYgJFRleHQgPX4gL15cJXsxLDN9JC87CgogICAgICAgICAgICAgICAgIyBza2lwIHZhbGlkYXRpb24gZm9yIGVtcHR5IHZhbHVlcwogICAgICAgICAgICAgICAgaWYgKCAkT3BlcmF0b3IgbmUgJ0VtcHR5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSBkYXRhIHR5cGUKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vVmFsaWRhdGVSZWdleCAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0gfHwgMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdmFsdWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRUZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiJyBvbiBmaWVsZCAnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiJyEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyBPUiAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRW1wdHkgPT4gMSByZXF1aXJlcyBhIExFRlQgSk9JTi4KICAgICAgICAgICAgICAgIGlmICggJE9wZXJhdG9yIGVxICdFbXB0eScgJiYgJFRleHQgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVBbGlhcyAgICAgICAgID0+ICJkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yICAgICAgICAgICA9PiAkT3BlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRRdWVyeUZvckVtcHR5VmFsdWVzID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaFNRTEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3IgICAgICAgICAgID0+ICRPcGVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoVGVybSAgICAgICAgID0+ICRUZXh0LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcpJzsKICAgICAgICAgICAgaWYgKCRDb3VudGVyKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICRTUUxFeHRTdWI7CiAgICAgICAgICAgICAgICAkTmVlZEpvaW4gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJE5lZWRKb2luKSB7CgogICAgICAgICAgICBpZiAoICEkVmVyc2lvblRhYmxlSm9pbmVkICkgewogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2IE9OIGNpLmxhc3RfdmVyc2lvbl9pZCA9IHYuaWQnOwogICAgICAgICAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkUXVlcnlGb3JFbXB0eVZhbHVlcykgewoKICAgICAgICAgICAgICAgICMgVXNlIExFRlQgSk9JTiB0byBhbGxvdyBmb3IgbnVsbCB2YWx1ZXMuCiAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAiIExFRlQgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdkVtcHR5JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgT04gKHYuaWQgPSBkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlci5vYmplY3RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdkVtcHR5JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLmZpZWxkX2lkID0gIiAuCiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5RdW90ZSggJER5bmFtaWNGaWVsZC0+e0lEfSwgJ0ludGVnZXInICkgLiAiKSAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gIiBJTk5FUiBKT0lOIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgT04gKHYuaWQgPSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIub2JqZWN0X2lkCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICAgICAkREJPYmplY3QtPlF1b3RlKCAkRHluYW1pY0ZpZWxkLT57SUR9LCAnSW50ZWdlcicgKSAuICIpICI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICAjIHJlbWVtYmVyIGN1cnJlbnQgdGltZSB0byBwcmV2ZW50IHNlYXJjaGVzIGZvciBmdXR1cmUgdGltZXN0YW1wcwogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIvbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIG15ICVDb25maWdJdGVtVGltZSA9ICgKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZSA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgKTsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtVGltZSApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4IG1pbnV0ZXMKICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFteyAkS2V5IC4gJ09sZGVyTWludXRlcycgfSApIHsKCiAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gfHw9IDA7CgogICAgICAgICAgICBteSAkVGltZSA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAgICAgJFRpbWUtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gKTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzIDw9ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG5ld2VyIHRoYW4geCBtaW51dGVzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXsgJEtleSAuICdOZXdlck1pbnV0ZXMnIH0gKSB7CgogICAgICAgICAgICAkUGFyYW17ICRLZXkgLiAnTmV3ZXJNaW51dGVzJyB9IHx8PSAwOwoKICAgICAgICAgICAgbXkgJFRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgJFRpbWUtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXsgJEtleSAuICdOZXdlck1pbnV0ZXMnIH0gKTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzID49ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIvbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtVGltZSApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgICAgICBteSAkQ29tcGFyZU9sZGVyTmV3ZXJEYXRlOwogICAgICAgIGlmICggJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfQogICAgICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyIgLiAkUGFyYW17ICRLZXkgLiAnT2xkZXJEYXRlJyB9IC4gIichIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17ICRLZXkgLiAnT2xkZXJEYXRlJyB9IC4gIichIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENvbXBhcmVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAgICAgbXkgJFRhcmdldFRpbWUgPSAkS2V5IGVxICdDb25maWdJdGVtQ3JlYXRlVGltZScgPyAkVGltZS0+VG9TdHJpbmcoKSA6ICRUaW1lLT5Ub0Vwb2NoKCk7CgogICAgICAgICAgICAkU1FMRXh0IC49IHNwcmludGYoICIgQU5EICggJXMgPD0gJyVzJyApIiwgJENvbmZpZ0l0ZW1UaW1leyRLZXl9LCAkVGFyZ2V0VGltZSApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgICAgICBpZiAoICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0gKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0KICAgICAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICciIC4gJFBhcmFteyAkS2V5IC4gJ05ld2VyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFBhcmFteyAkS2V5IC4gJ05ld2VyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkRGF0ZVRpbWVPYmplY3Q7CgogICAgICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBvbGRlci9uZXdlciBkYXRlIHJlc3RyaWN0aW9uIHNob3cgbm93IHZhbGlkIHRpbWVmcmFtZQogICAgICAgICAgICByZXR1cm4gaWYgJENvbXBhcmVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlT2xkZXJOZXdlckRhdGU7CgogICAgICAgICAgICBteSAkVGFyZ2V0VGltZSA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lJyA/ICRUaW1lLT5Ub1N0cmluZygpIDogJFRpbWUtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICRTUUxFeHQgLj0gc3ByaW50ZiggIiBBTkQgKCAlcyA+PSAnJXMnICkiLCAkQ29uZmlnSXRlbVRpbWV7JEtleX0sICRUYXJnZXRUaW1lICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyTWludXRlc30gKSB7CgogICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJERhdGVUaW1lT2JqZWN0LT5DbG9uZSgpOwogICAgICAgICRUaW1lU3RhbXAtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICk7CgogICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9ID0gJFRpbWVTdGFtcC0+VG9TdHJpbmcoKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAkVGltZVN0YW1wLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSApOwoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSA9ICRUaW1lU3RhbXAtPlRvU3RyaW5nKCk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNoYW5nZWQgb2xkZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIG15ICRDb21wYXJlTGFzdENoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJENvbXBhcmVMYXN0Q2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlID0gJFRpbWU7CgogICAgICAgICRTUUxFeHQgLj0gIiBBTkQgY2kuY2hhbmdlX3RpbWUgPD0gJyIgLiAkVGltZS0+VG9TdHJpbmcoKSAuICInIjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG5ld2VyIGRhdGUgaXMgYWZ0ZXIgY3VycmVudCBkYXRlCiAgICAgICAgcmV0dXJuIGlmICRUaW1lID4gJERhdGVUaW1lT2JqZWN0OwoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBvbGRlci9uZXdlciBkYXRlIHJlc3RyaWN0aW9uIHNob3cgbm93IHZhbGlkIHRpbWVmcmFtZQogICAgICAgIHJldHVybgogICAgICAgICAgICBpZiAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGUgJiYgJFRpbWUgPiAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CgogICAgICAgICRTUUxFeHQgLj0gIiBBTkQgY2kuY2hhbmdlX3RpbWUgPj0gJyIgLiAkVGltZS0+VG9TdHJpbmcoKSAuICInIjsKICAgIH0KCiAgICAjIGRhdGFiYXNlIHF1ZXJ5IGZvciBzb3J0L29yZGVyIGJ5IG9wdGlvbgogICAgaWYgKCAkUmVzdWx0IG5lICdDT1VOVCcgKSB7CiAgICAgICAgJFNRTEV4dCAuPSAnIE9SREVSIEJZJzsKCiAgICAgICAgbXkgJUpvaW5lZFRhYmxlczsKICAgICAgICBmb3IgbXkgJENvdW50ICggMCAuLiAkI1NvcnRCeUFycmF5ICkgewogICAgICAgICAgICBpZiAoICRDb3VudCA+IDAgKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcsJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzb3J0IGJ5IGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSA9fiAvXkR5bmFtaWNGaWVsZF8oLiopLyApIHsKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJDE7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkICAgICA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICQxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB2YWxpZCBTb3J0QnkgKCcgLiAkU29ydEJ5QXJyYXlbJENvdW50XSAuICcpIScsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgSWYgdGhlIHRhYmxlIHdhcyBhbHJlYWR5IGpvaW5lZCBmb3Igc2VhcmNoaW5nLCB3ZSByZXVzZSBpdC4KICAgICAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRKb2luVGFibGVzeyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFZlcnNpb25UYWJsZUpvaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2IE9OIGNpLmxhc3RfdmVyc2lvbl9pZCA9IHYuaWQnOwogICAgICAgICAgICAgICAgICAgICAgICAkVmVyc2lvblRhYmxlSm9pbmVkID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tCiAgICAgICAgICAgICAgICAgICAgICAgIC49ICIgTEVGVCBPVVRFUiBKT0lOIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgICAgIE9OICh2LmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5maWVsZF9pZCA9ICIgLgogICAgICAgICAgICAgICAgICAgICAgICAkREJPYmplY3QtPlF1b3RlKCAkRHluYW1pY0ZpZWxkLT57SUR9LCAnSW50ZWdlcicgKSAuICIpICI7CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU1FMT3JkZXJGaWVsZCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hTUUxPcmRlckZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTUUxTZWxlY3QgLj0gIiwgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICAgICAgICAgICRTUUxFeHQgICAgLj0gIiAkU1FMT3JkZXJGaWVsZCAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgam9pbiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGZvciBzb3J0aW5nCiAgICAgICAgICAgICAgICBpZiAoICRTb3J0QnlBcnJheVskQ291bnRdIGVxICdEZXBsU3RhdGUnICYmICEkSm9pbmVkVGFibGVze0RlcGxTdGF0ZX0rKyApIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gZ2VuZXJhbF9jYXRhbG9nIGdjX2RlcGwgT04gKHYuZGVwbF9zdGF0ZV9pZCA9IGdjX2RlcGwuaWQpJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNvcnRCeUFycmF5WyRDb3VudF0gZXEgJ0luY2lTdGF0ZScgJiYgISRKb2luZWRUYWJsZXN7SW5jaVN0YXRlfSsrICkgewogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBnZW5lcmFsX2NhdGFsb2cgZ2NfaW5jaSBPTiAodi5pbmNpX3N0YXRlX2lkID0gZ2NfaW5jaS5pZCknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnQ3VyRGVwbFN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tDdXJEZXBsU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19jZGVwbCBPTiAoY2kuY3VyX2RlcGxfc3RhdGVfaWQgPSBnY19jZGVwbC5pZCknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnQ3VySW5jaVN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tDdXJJbmNpU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19jaW5jaSBPTiAoY2kuY3VyX2luY2lfc3RhdGVfaWQgPSBnY19jaW5jaS5pZCknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgUmVndWxhciBzb3J0LgogICAgICAgICAgICAgICAgJFNRTFNlbGVjdCAuPSAnLCAnIC4gJFNvcnRPcHRpb25zeyAkU29ydEJ5QXJyYXlbJENvdW50XSB9OwogICAgICAgICAgICAgICAgJFNRTEV4dCAgICAuPSAnICcgLiAkU29ydE9wdGlvbnN7ICRTb3J0QnlBcnJheVskQ291bnRdIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJE9yZGVyQnlBcnJheVskQ291bnRdIGVxICdVcCcgKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcgQVNDJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBERVNDJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVPYmplY3Q7CgogICAgaWYgKCAkUGFyYW17Q2FjaGVUVEx9ICkgewogICAgICAgICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIG15ICRDYWNoZURhdGEgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIEtleSAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBkZWZpbmVkICRDYWNoZURhdGEgKSB7CiAgICAgICAgICAgIGlmICggcmVmICRDYWNoZURhdGEgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgcmV0dXJuICV7JENhY2hlRGF0YX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJENhY2hlRGF0YSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcmV0dXJuIEB7JENhY2hlRGF0YX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJENhY2hlRGF0YSBlcSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkQ2FjaGVEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIHJlZiAnIC4gcmVmKCRDYWNoZURhdGEpIC4gJyEnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkYXRhYmFzZSBxdWVyeQogICAgbXkgJUNvbmZpZ0l0ZW1zOwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBteSAkQ291bnQ7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCwKICAgICAgICBMaW1pdCA9PiAkTGltaXQKICAgICk7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgICAgICAkQ29uZmlnSXRlbXN7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJFJvd1swXTsKICAgIH0KCiAgICAjIHJldHVybiBDT1VOVAogICAgaWYgKCAkUmVzdWx0IGVxICdDT1VOVCcgKSB7CiAgICAgICAgaWYgKCRDYWNoZU9iamVjdCkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQgLiAkUmVzdWx0IC4gJExpbWl0LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvdW50LAogICAgICAgICAgICAgICAgVFRMICAgPT4gJFBhcmFte0NhY2hlVFRMfSB8fCA2MCAqIDQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkQ291bnQ7CiAgICB9CgogICAgIyByZXR1cm4gSEFTSAogICAgZWxzaWYgKCAkUmVzdWx0IGVxICdIQVNIJyApIHsKICAgICAgICBpZiAoJENhY2hlT2JqZWN0KSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcJUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICAgICAgVFRMICAgPT4gJFBhcmFte0NhY2hlVFRMfSB8fCA2MCAqIDQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAlQ29uZmlnSXRlbXM7CiAgICB9CgogICAgIyByZXR1cm4gQVJSQVkKICAgIGVsc2UgewogICAgICAgIGlmICgkQ2FjaGVPYmplY3QpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU1FMU2VsZWN0IC4gJFNRTEZyb20gLiAkU1FMRXh0IC4gJFJlc3VsdCAuICRMaW1pdCwKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxAQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRQYXJhbXtDYWNoZVRUTH0gfHwgNjAgKiA0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQENvbmZpZ0l0ZW1JRHM7CiAgICB9Cn0KCnN1YiBfVmVyc2lvblNlYXJjaEluZGV4U1FMSm9pbk5lZWRlZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9OYW1lIERlcGxTdGF0ZXMgSW5jaVN0YXRlcyBEZXBsU3RhdGVJRHMgSW5jaVN0YXRlSURzLykgewogICAgICAgIHJldHVybiAxIGlmICRQYXJhbXtTZWFyY2hQYXJhbXN9eyRBdHRyaWJ1dGV9OwogICAgfQoKICAgIGZvciBteSAkS2V5ICgga2V5cyAkUGFyYW17U2VhcmNoUGFyYW1zfS0+JSogKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJEtleSA9fiAvXkR5bmFtaWNGaWVsZF8vOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Definition.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RGVmaW5pdGlvbjsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24gLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGRlZmluaXRpb24gb2YgY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgcm9sZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgbm9uZSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMiBEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgY2xhc3MgYXMgYW4gYXJyYXktaGFzaCByZWZlcmVuY2UuIFRoZSBsaXN0CmlzIHNvcnRlZCBieSB2ZXJzaW9uLgoKICAgIG15ICREZWZpbml0aW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gWwogICAgICAgICAgewogICAgICAgICAgICAnVmVyc2lvbicgICAgICA9PiAnMScsCiAgICAgICAgICAgICdDcmVhdGVUaW1lJyAgID0+ICcyMDEyLTA2LTEyIDE0OjA5OjQzJywKICAgICAgICAgICAgJ0RlZmluaXRpb25JRCcgPT4gJzEnLAogICAgICAgICAgICAnQ3JlYXRlQnknICAgICA9PiAnMTIzJywKICAgICAgICAgICAgJ0RlZmluaXRpb24nICAgPT4gJy0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKCi0gS2V5OiBEZXNjcmlwdGlvbgogIE5hbWU6IERlc2NyaXB0aW9uCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dEFyZWEKCi0gS2V5OiBUeXBlCiAgTmFtZTogVHlwZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAtIFR5cGU6IFRleHRBcmVhCiAgLSBUeXBlOiBHZW5lcmFsQ2F0YWxvZ1wKICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpDb21wdXRlcjo6VHlwZQogICAgVHJhbnNsYXRpb246IDEKIyAuLi4gZXRjIC4uLgonLAogICAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNrIGRhdGFiYXNlCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieQogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgPSA/CiAgT1JERVIgQlkgdmVyc2lvbgpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRSb3dzOwoKICAgIG15IEBEZWZpbml0aW9uTGlzdDsKICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0gPSAkUm93LT5bMF07CiAgICAgICAgJERlZmluaXRpb257RGVmaW5pdGlvbn0gICA9ICRSb3ctPlsxXSB8fCAiLS0tIHt9IjsKICAgICAgICAkRGVmaW5pdGlvbntWZXJzaW9ufSAgICAgID0gJFJvdy0+WzJdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ICAgPSAkUm93LT5bM107CiAgICAgICAgJERlZmluaXRpb257Q3JlYXRlQnl9ICAgICA9ICRSb3ctPls0XTsKCiAgICAgICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICAgICAgaWYgKCBzdWJzdHIoICREZWZpbml0aW9ue0RlZmluaXRpb259LCAwLCAzICkgbmUgJy0tLScgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJFBhcmFte0NsYXNzSUR9IgogICAgICAgICAgICAgICAgICAgIC4gIiBmb3VuZCBpbiBsZWdhY3kgUGVybCBjb2RlIGZvcm1hdCwgY2FuIG5vdCBjb250aW51ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSA9ICItLS0ge30iOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBARGVmaW5pdGlvbkxpc3QsIFwlRGVmaW5pdGlvbjsKICAgIH0KCiAgICByZXR1cm4gXEBEZWZpbml0aW9uTGlzdDsKfQoKPWhlYWQyIFJvbGVEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgcm9sZSBhcyBhbiBhcnJheS1oYXNoIHJlZmVyZW5jZS4gVGhlIGxpc3QKaXMgc29ydGVkIGJ5IHZlcnNpb24uIFRoaXMgdGhlIHNhbWUgYXMgQzxEZWZpbml0aW9uTGlzdD4sIGJ1dCB0aGUgcGFyYW1ldGVyIEM8Um9sZUlEPiBpcwp1c2VkIGluc3RlYWQgb2YgQzxDbGFzc0lEPi4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJlbmFtZSB0aGUgcGFyYW1ldGVyCiAgICAkUGFyYW17Q2xhc3NJRH0gPSBkZWxldGUgJFBhcmFte1JvbGVJRH07CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uTGlzdCglUGFyYW0pOwp9Cgo9aGVhZDIgRGVmaW5pdGlvbkdldCgpCgpyZXR1cm5zIGEgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+IDEyMywKICAgICk7CgpvcgoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3NJRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3N9ICAgICAgICAgICAgICAgIyBOYW1lIG9mIHRoZSBjbGFzcwogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9ufQogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfQogICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9CiAgICAkRGVmaW5pdGlvbi0+e1ZlcnNpb259CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZVRpbWV9CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fQoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb25JRH0gJiYgISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvbklEIG9yIENsYXNzSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQFJvdzsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0RlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlIGZvciB0aGUgc3BlY2lmaWVkIGRlZmluaXRpb24gdmVyc2lvbgogICAgICAgIEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCBkeW5hbWljZmllbGRfZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtEZWZpbml0aW9uSUR9IF0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgY2xhc3NfaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24sIHZlcnNpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkgJwogICAgICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY2xhc3NfaWQgPSA/IE9SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntDbGFzc0lEfSAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICctLS0ge30nOyAgICAjIGEgWUFNTCBzdHJpbmcKICAgIG15ICREeW5hbWljRmllbGRzID0gJFJvd1szXSB8fCAnLS0tIHt9JzsgICAgICAgICAgICAjIGEgWUFNTCBzdHJpbmcKICAgICREZWZpbml0aW9ue1ZlcnNpb259ICAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ID0gJFJvd1s1XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgID0gJFJvd1s2XTsKCiAgICByZXR1cm4ge30gdW5sZXNzICREZWZpbml0aW9ue0RlZmluaXRpb25JRH07CgogICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICBpZiAoIHN1YnN0ciggJERlZmluaXRpb257RGVmaW5pdGlvbn0sIDAsIDMgKSBuZSAnLS0tJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZWZpbml0aW9uSUQ6ICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0iCiAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJERlZmluaXRpb257Q2xhc3NJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgdGhpcyBjYW4gYmUgY2hhbmdlcyB0byBwcm9kdWNlIGFuIGVycm9yIHNvbWV3aGVuCiAgICAjIGN1cnJlbnRseSAoMTEuMCkgd2Ugd2lsbCBoYXZlIHRvIGRlYWwgd2l0aCBsZWdhY3kgZGVmaW5pdGlvbnMgaW4gdGhlIHN5c3RlbQogICAgaWYgKCByZWYgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gbmUgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0ge307CiAgICB9CgogICAgJERlZmluaXRpb257RHluYW1pY0ZpZWxkUmVmfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkRHluYW1pY0ZpZWxkcywKICAgICk7CgogICAgIyBtZXJnZSB0aGUgcm9sZXMgaW50byB0aGUgRGVmaW5pdGlvblJlZiwgdGhlIHBhc3NlZCBpbiByZWZlcmVuY2UgaXMgbW9kaWZpZWQgaW4gcGxhY2UKICAgICRTZWxmLT5fUHJvY2Vzc1JvbGVzKAogICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0sCiAgICApOwoKICAgICMgcHJlcGFyZSBkZWZpbml0aW9uCiAgICAjIFRPRE86IFJld29yaz8KICAgICNpZiAoICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ICYmIHJlZiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSBlcSAnQVJSQVknICkgewogICAgIyAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgIyAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSwKICAgICMgICAgKTsKICAgICN9CiAgICAjZWxzZSB7CiAgICAjICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0gJyc7CiAgICAjfQoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSBjb25maWcgaXRlbSBjbGFzcyB0byB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJElEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb257Q2xhc3N9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Q2xhc3NJRH0gfTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSByb2xlIGRlZmluaXRpb24gYXMgaGFzaCByZWZlcmVuY2UuIFRoZSByb2xlIGRlZmluaXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlCnRhYmxlIEk8Y29uZmlnaXRlbV9kZWZpbml0aW9uPiwganVzdCBsaWtlIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucy4KCkdldCBhIHNwZWNpZmljIHZlcnNpb24gd2hlbiB0aGUgdGVjaG5pY2FsIElEIGlzIGtub3duOgoKICAgIG15ICRSb2xlRGVmaW5pdGlvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIsCiAgICApOwoKT3IgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbjoKCiAgICBteSAkUm9sZURlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25HZXQoCiAgICAgICAgUm9sZUlEID0+IDEyMywgIyBhbmFsb2dvdXMgdG8gQ2xhc3NJRCBpbiBEZWZpbml0aW9uR2V0KCkKICAgICk7CgpPciBnZXQgYSBzcGVjaWZpYyB2ZXJzaW9uIHdoZW4gdGhlIHZlcnNpb24gaXMga25vd24uCgogICAgbXkgJFJvbGVEZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uR2V0KAogICAgICAgIFJvbGVJRCAgPT4gMTIzLAogICAgICAgIFZlcnNpb24gPT4gMiwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfQogICAgJERlZmluaXRpb24tPntSb2xlSUR9ICAgICAgICAgICAgICAgICAjIGFuYWxvZ291cyB0byBDbGFzc0lEIGluIERlZmluaXRpb25HZXQoKQogICAgJERlZmluaXRpb24tPntSb2xlfSAgICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIHJvbGUsIGFuYWxvZ291cyB0byBDbGFzcyBpbiBEZWZpbml0aW9uR2V0KCkKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0KICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfQogICAgJERlZmluaXRpb24tPntWZXJzaW9ufQogICAgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfQogICAgJERlZmluaXRpb24tPntDcmVhdGVCeX0KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvbklEfSAmJiAhJFBhcmFte1JvbGVJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb25JRCBvciBSb2xlSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBTUUwKICAgIG15ICggQFdoZXJlLCBAQmluZHMgKTsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Um9sZURlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH0KICAgICAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfTsKCiAgICAgICAgcHVzaCBAV2hlcmUsICdpZCA9ID8nOwogICAgICAgIHB1c2ggQEJpbmRzLCBcJFBhcmFte0RlZmluaXRpb25JRH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBwdXNoIEBXaGVyZSwgJ2NsYXNzX2lkID0gPyc7CiAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17Um9sZUlEfTsKCiAgICAgICAgIyBvciByZXF1ZXN0IGEgc3BlY2lmaWMgdmVyc2lvbgogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb259ICkgewogICAgICAgICAgICBwdXNoIEBXaGVyZSwgJ3ZlcnNpb24gPSA/JzsKICAgICAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17VmVyc2lvbn07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTUUwgPSBzcHJpbnRmIDw8J0VORF9TUUwnLCBqb2luKCAnIEFORCAnLCBAV2hlcmUgKTsKU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24KICBXSEVSRSAlcwogIE9SREVSIEJZIHZlcnNpb24gREVTQwpFTkRfU1FMCgogICAgbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBcQEJpbmRzLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntSb2xlSUR9ICAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICItLS0ge30iOwogICAgJERlZmluaXRpb257VmVyc2lvbn0gICAgICA9ICRSb3dbM107CiAgICAkRGVmaW5pdGlvbntDcmVhdGVUaW1lfSAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgICAgPSAkUm93WzVdOwoKICAgIHJldHVybiB7fSB1bmxlc3MgJERlZmluaXRpb257RGVmaW5pdGlvbklEfTsKCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gY29kZSBpcyBub3QgYSBZQU1MIHN0cmluZy4KICAgIGlmICggc3Vic3RyKCAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgIC4gIiBSb2xlSUQ6ICREZWZpbml0aW9ue1JvbGVJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue1JvbGV9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Um9sZUlEfSB9OwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBEZWZpbml0aW9uQWRkKCkKCmFkZHMgYSBuZXcgY29uZmlnIGl0ZW0gY2xhc3MgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIGNsYXNzIGRlZmluaXRpb24gb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3RpbmcgY2xhc3MgZGVmaW5pdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAxMjMsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAndGhlIGRlZmluaXRpb24gY29kZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgIEZvcmNlICAgICAgPT4gMSwgICAgIyBvcHRpb25hbCwgZm9yIGludGVybmFsIHVzZSwgZm9yY2UgYWRkIGV2ZW4gaWYgZGVmaW5pdGlvbiBpcyB1bmNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKHVzZWQgaWYgZHluYW1pYyBmaWVsZHMgY2hhbmdlZCwgb3IgYSBkeW5hbWljIHJvbGUgY2hhbmdlZCkKICAgICk7CgpSZXR1cm5zIGluIHRoZSBjYXNlIG9mIHN1Y2Nlc3M6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIzLAogICAgfTsKClJldHVybnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY2FzZSBvZiBmYWlsdXJlOgoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICAgICAgRXJyb3IgICAgID0+ICJOZWVkICVzISIsCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ0RlZmluaXRpb24nIF0sCiAgICB9OwoKT25seSB0d28gYXJndW1lbnRzIG9mIHRoZSBlcnJvciBtZXNzYWdlIGFyZSBzdXBwb3J0ZWQuCgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIERlZmluaXRpb24gVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICBteSAkTWVzc2FnZSA9ICJOZWVkICVzISI7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYoICRNZXNzYWdlLCAkQXJndW1lbnQgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yICAgICA9PiAkTWVzc2FnZSwKICAgICAgICAgICAgICAgIEVycm9yQXJncyA9PiBbJEFyZ3VtZW50XSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzYW5pdHkgb2YgdGhlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJENoZWNrUmVzdWx0IHVubGVzcyAkQ2hlY2tSZXN1bHQtPntTdWNjZXNzfTsKICAgIH0KCiAgICAjIGdldCBsYXN0IGRlZmluaXRpb24KICAgIG15ICRMYXN0RGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgVE9ETzogJFBhcmFte0ZvcmNlfSB8fCAkU2VsZi0+X0NoZWNrRHluYW1pY0ZpZWxkQ2hhbmdlKCk7IGNhbiBiZSB0YWtlbiBvdXQgb2YgX0RlZmluaXRpb25TeW5jKCkgd2l0aCBhIGxpdHRsZSBhZGFwdGlvbgogICAgJERlZmluaXRpb25DaGFuZ2VkIHx8PSAkUGFyYW17Rm9yY2V9OwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZHluYW1pYyBmaWVsZCBpbmZvLCByb2xlcyBhcmUgYWxyZWFkeSBjb25zaWRlcmVkIGluIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0CiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbiA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAlUGFyYW0sCiAgICApIHx8ICctLS0ge30nOwoKICAgICMgaW5jcmVtZW50IHZlcnNpb24sIHN0YXJ0IHdpdGggdmVyc2lvbiAxIGZvciBjb21wbGV0ZWx5IG5ldyBjbGFzcyBkZWZpbml0aW9ucwogICAgbXkgJFZlcnNpb24gPSAoICRMYXN0RGVmaW5pdGlvbi0+e1ZlcnNpb259IHx8IDAgKSArIDE7CgogICAgIyBpbnNlcnQgbmV3IGRlZmluaXRpb24KICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9kZWZpbml0aW9uICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb25maWdpdGVtX2RlZmluaXRpb24sIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtEZWZpbml0aW9ufSwgXCREeW5hbWljRmllbGREZWZpbml0aW9uLCBcJFZlcnNpb24sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICBFcnJvciAgID0+ICdJbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uIHdhcyBub3Qgc3VjY2Vzc2Z1bCcsCiAgICB9IHVubGVzcyAkU3VjY2VzczsKCiAgICAjIGdldCBpZCBvZiBuZXcgZGVmaW5pdGlvbgogICAgbXkgKCREZWZpbml0aW9uSUQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uIFdIRVJFICcKICAgICAgICAgICAgLiAnY2xhc3NfaWQgPSA/IEFORCB2ZXJzaW9uID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFZlcnNpb24gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBzeW5jZWQKICAgICRTZWxmLT5EZWZpbml0aW9uU2V0U3luY2VkKAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIHRyaWdnZXIgRGVmaW5pdGlvbkNyZWF0ZSBldmVudAogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnRGVmaW5pdGlvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIE9sZERlZmluaXRpb24gPT4gJExhc3REZWZpbml0aW9uLAogICAgICAgICAgICBDbGFzc0lEICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIFZlcnNpb24gICAgICA9PiAkVmVyc2lvbiwKICAgIH07Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkFkZCgpCgphZGRzIGEgbmV3IHJvbGUgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIHJvbGUgb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3Rpbmcgcm9sZS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gMTIzLAogICAgICAgIERlZmluaXRpb24gPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICBGb3JjZSAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGZvciB1c2UgZHVyaW5nIGltcG9ydCBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcwogICAgKTsKClJldHVybnMgaW4gdGhlIGNhc2Ugb2Ygc3VjY2VzczoKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAxMjMsICMgZXZlbiB0aG91Z2ggaXQgaXMgYSByb2xlCiAgICAgICAgVmVyc2lvbiAgICAgID0+IDQsCiAgICB9OwoKUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjYXNlIG9mIGZhaWx1cmU6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICBFcnJvciAgICAgPT4gIk5lZWQgJXMhIiwKICAgICAgICBFcnJvckFyZ3MgPT4gWyAnRGVmaW5pdGlvbicgXSwKICAgIH07CgpPbmx5IHR3byBhcmd1bWVudHMgb2YgdGhlIGVycm9yIG1lc3NhZ2UgYXJlIHN1cHBvcnRlZC4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhSb2xlSUQgRGVmaW5pdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgIG15ICRNZXNzYWdlID0gIk5lZWQgJXMhIjsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiggJE1lc3NhZ2UsICRBcmd1bWVudCApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3IgICAgID0+ICRNZXNzYWdlLAogICAgICAgICAgICAgICAgRXJyb3JBcmdzID0+IFskQXJndW1lbnRdLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHNhbml0eSBvZiB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJENoZWNrUmVzdWx0ID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uQ2hlY2soCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkQ2hlY2tSZXN1bHQgdW5sZXNzICRDaGVja1Jlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgZ2V0IGxhc3QgZGVmaW5pdGlvbiwgZXZlbiB0aG91Z2ggdGhpcyBpcyByb2xlCiAgICBteSAkTGFzdERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgJFBhcmFte0ZvcmNlfQogICAgICAgIHx8CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBpbmNyZW1lbnQgdmVyc2lvbiwgc3RhcnRpbmcgd2l0aCAxIGZvciB0aGUgaW5pdGlhbCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbiA9ICggJExhc3REZWZpbml0aW9uLT57VmVyc2lvbn0gfHwgMCApICsgMTsKCiAgICAjIGluc2VydCBuZXcgZGVmaW5pdGlvbiB3aXRob3V0IGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAnCiAgICAgICAgICAgIC4gJyhjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCggJFBhcmFte1JvbGVJRH0sICRQYXJhbXtEZWZpbml0aW9ufSwgJFZlcnNpb24sICRQYXJhbXtVc2VySUR9ICkgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgRXJyb3IgICA9PiAnSW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiB3YXMgbm90IHN1Y2Nlc3NmdWwnLAogICAgfSB1bmxlc3MgJFN1Y2Nlc3M7CgogICAgIyBnZXQgaWQgb2YgbmV3IGRlZmluaXRpb24KICAgIG15ICgkTmV3Um9sZURlZmluaXRpb25JRCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIHZlcnNpb24gPSA/ICcKICAgICAgICAgICAgLiAnT1JERVIgQlkgdmVyc2lvbiBERVNDJywKICAgICAgICBCaW5kICA9PiBbIFwoICRQYXJhbXtSb2xlSUR9LCAkVmVyc2lvbiApIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBUaGVyZSBpcyBub3cgYW4gaW5pdGlhbCBvciBzdWJzZXF1ZW50IHZlcnNpb24gb2YgYSByb2xlIGRlZmluaXRpb24uIFRoaXMgbmV3IGRlZmluaXRpb24KICAgICMgbWlnaHQgaGF2ZSBhZGRlZCBvciByZW1vdmVkIGR5bmFtaWMgZmllbGRzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzZWQgdGhhdAogICAgIyBpbmNsdWRlIHRoZSByb2xlIGR5bmFtaWNhbGx5IG11c3QgYmUgdXBkYXRlZCB0b28uCiAgICAkU2VsZi0+X0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUoCiAgICAgICAgUm9sZUlEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkTmV3Um9sZURlZmluaXRpb25JRCwKICAgICAgICBWZXJzaW9uICAgICAgPT4gJFZlcnNpb24sCiAgICB9Owp9Cgo9aGVhZDIgRGVmaW5pdGlvbkNoZWNrKCkKCmNoZWNrcyB0aGUgc3ludGF4IG9mIGEgbmV3IGRlZmluaXRpb24uIEJvdGggY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgY2FuIGJlIGNoZWNrZWQKd2l0aCB0aGlzIG1ldGhvZC4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAwLCB0byBjaGVjayBzdWIgZWxlbWVudHMgcmVjdXJzaXZlbHkpCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdDbGFzcycsICAgICAgICAgICAjIG9wdGlvbmFsLCBkZWZhdWx0IGlzICdDbGFzcycsIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ0NsYXNzJyBhbmQgJ1JvbGUnCiAgICApOwoKUmV0dXJucyBpbiB0aGUgY2FzZSBvZiBhIHZhbGlkIGRlZmluaXRpb246CgogICAgbXkgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwoKSW5kaWNhdGVzIHRoZSBmaXJzdCBmb3VuZCBwcm9ibGVtIGluIHRoZSBjYXNlIG9mIGFuIGludmFsaWQgZGVmaW5pdGlvbjoKCiAgICBteSAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgIEVycm9yICAgICA9PiBxeyVzIGlzIG1pc3NpbmcuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0sCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ1NlY3Rpb25zJywgJ1NlY3Rpb25zJyBdLAogICAgfTsKCk5vdGUgdGhhdCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBzcGxpdCB1cCBpbiBjb25zdGFudCBhbmQgdmFyaWFibGUgcGFydHMuIFRoaXMgYWxsb3dzIHRyYW5zbGF0aW9uIGluIHRoZSB1c2VyIGludGVyZmFjZS4KCj1jdXQKCnN1YiBEZWZpbml0aW9uQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb259ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igcm9sZXMgYW5kIGNsYXNzZXMKICAgIG15ICRUeXBlID0gJFBhcmFte1R5cGV9IC8vICdDbGFzcyc7CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJFJldHVybkVycm9yID0gc3ViIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgRXJyb3IgICAgID0+ICRfWzBdLAogICAgICAgICAgICBFcnJvckFyZ3MgPT4gWyAoICRfWzFdIC8vICcnICksICggJF9bMl0gLy8gJycgKSBdLCAgICAjIG9ubHkgdHdvIGFyZ3MgYXJlIHN1cHBvcnRlZAogICAgICAgIH07CiAgICB9OwoKICAgICMgc2ltcGxlIFlBTUwgcGFyc2luZywgd2l0aG91dCB1c2luZyBZQU1MIHRhZ3MKICAgIG15ICREZWZpbml0aW9uUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICk7CgogICAgIyBZQU1MIGludmFsaWQKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREZWZpbml0aW9uUmVmKSApIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZSgnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0LicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gc3RhcnRzIHdpdGggJy0tLScKICAgICMgVGhpcyBpcyBhIGxhc3QgY2hlY2sgZm9yIGxlZ2FjeSBsZWdhY3kgRGVmaW5pdGlvbnMgKHByZSBPVFJTNikgd2hpY2ggd2hlcmUgbm90IFlBTUwKICAgICMgV2UgY2FuIHJlbW92ZSB0aGlzIHRvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBpbiBEZWZpbml0aW9uR2V0KCkgZXRjLiB3aXRoIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UgYWZ0ZXIgMTEuMAogICAgaWYgKCBzdWJzdHIoICRQYXJhbXtEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE1lcmdlIHRoZSByb2xlcyBpbnRvIHRoZSBEZWZpbml0aW9uUmVmLiBUaGUgcGFzc2VkIGluIHJlZmVyZW5jZSBpcyBtb2RpZmllZCBpbiBwbGFjZS4KICAgICMgVGhpcyBtaWdodCBjcmVhdGVzIHRoZSAnU2VjdGlvbnMnIGF0dHJpYnV0ZSB3aGVuIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KICAgIGlmICggJFR5cGUgZXEgJ0NsYXNzJyApIHsKICAgICAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9Qcm9jZXNzUm9sZXMoCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIEltcG9ydFJvbGVzICAgPT4gJFBhcmFte0ltcG9ydFJvbGVzfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJFJlc3VsdCB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBvZiB0aGUgdG9wIGxldmVsIGF0dHJpYnV0ZXMKICAgIG15ICVFeHBlY3RlZEZvcm1hdCA9ICgKICAgICAgICBTZWN0aW9ucyA9PiAnSGFzaCcsCiAgICApOwogICAgaWYgKCAkVHlwZSBlcSAnQ2xhc3MnICkgewogICAgICAgICRFeHBlY3RlZEZvcm1hdHtQYWdlc30gPSAnQXJyYXknOwogICAgfQogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUV4cGVjdGVkRm9ybWF0ICkgewoKICAgICAgICAjIGVpdGhlciBwYWdlcyBvciBzZWN0aW9ucyBkYXRhIGludmFsaWQKICAgICAgICBpZiAoICEkRGVmaW5pdGlvblJlZi0+eyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXslcyBpcyBtaXNzaW5nLiBQbGVhc2UgcHJvdmlkZSBkYXRhIGZvciAlcyBpbiB0aGUgZGVmaW5pdGlvbi59KSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCB0cmFuc2xhdGFibGUKICAgICAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZi0+eyRLZXl9IG5lIHVjKCAkRXhwZWN0ZWRGb3JtYXR7JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgbm90IGEgJXMuIFBsZWFzZSBjb3JyZWN0IHRoZSBzeW50YXgufSksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICAgICAgJEV4cGVjdGVkRm9ybWF0eyRLZXl9CiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVmFsaWRhdGVGdW5jdGlvblJlZiA9IFwmeyJLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjazo6SXMkRXhwZWN0ZWRGb3JtYXR7JEtleX1SZWZXaXRoRGF0YSJ9OwogICAgICAgIGlmICggISRWYWxpZGF0ZUZ1bmN0aW9uUmVmLT4oICREZWZpbml0aW9uUmVmLT57JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgZW1wdHkuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0pLAogICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgc2Vjb25kIGxldmVsIGRhdGEgZm9ybWF0CiAgICBteSAlU2VjdGlvbklzTWlzc2luZzsKCiAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlcwogICAgaWYgKCAkRXhwZWN0ZWRGb3JtYXR7UGFnZXN9ICkgewogICAgICAgIGZvciBteSAkUGFnZUluZGV4ICggMCAuLiAkI3sgJERlZmluaXRpb25SZWYtPntQYWdlc30gfSApIHsKICAgICAgICAgICAgbXkgJFBhZ2UgPSAkRGVmaW5pdGlvblJlZi0+e1BhZ2VzfS0+WyRQYWdlSW5kZXhdOwogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBDb250ZW50KSkgewogICAgICAgICAgICAgICAgaWYgKCAhJFBhZ2UtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAnJXMnIGlzIG1pc3NpbmcgaW4gdGhlIGRlZmluaXRpb24gb2YgcGFnZSAlcy59KSwKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgZGF0YQogICAgICAgICAgICBpZiAoIHJlZiAkUGFnZS0+e0NvbnRlbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIG5vdCBhbiBBcnJheS59KSwKICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcsCiAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFnZS0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIGVtcHR5Ln0pLAogICAgICAgICAgICAgICAgICAgICdDb250ZW50JywKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgc2VjdGlvbnMKICAgICAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkluZGV4ICggMCAuLiAkI3sgJFBhZ2UtPntDb250ZW50fSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJFBhZ2UtPntDb250ZW50fS0+WyRTZWN0aW9uSW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU2VjdGlvbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgaW52YWxpZC4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24gb3IgcmVtb3ZlIGl0Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCByZWYgJFNlY3Rpb24gbmUgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBub3QgYSBIYXNoLiBQbGVhc2UgY29ycmVjdCB0aGUgc3ludGF4Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFNlY3Rpb24tPiUqICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBlbXB0eS4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24ufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFNlY3Rpb24tPntTZWN0aW9ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgbWlzc2luZyB0aGUga2V5ICdTZWN0aW9uJywgd2hpY2ggaGFzIHRvIGJlIGZpbGxlZCB3aXRoIHRoZSBzZWN0aW9uIG5hbWUufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgc2VjdGlvbiBuYW1lIGZvciBjaGVja2luZyBkYXRhIGludGVncml0eSBsYXRlciBvbgogICAgICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbklzTWlzc2luZ3sgJFNlY3Rpb24tPntTZWN0aW9ufSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIHRoZSBvcHRpb25hbCBhcnJheSByZWZlcmVuY2VzCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KEludGVyZmFjZXMgR3JvdXBzKSkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRQYWdlLT57JEtleX07ICAgICAgICAgICAgICAgIyBpcyBvcHRpb25hbAogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgcmVmICRQYWdlLT57JEtleX0gZXEgJ0FSUkFZJzsgICAgIyBtdXN0IGJlIGFycmF5cmVmIHdoZW4gaXQgZXhpc3RzCgogICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAlcyBmb3IgcGFnZSAlcyBpcyBub3QgYW4gQXJyYXkufSksCiAgICAgICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAlRGVmaW5lZER5bmFtaWNGaWVsZHM7CiAgICBteSBATmVlZGVkQ29udGVudEVudHJ5ID0gcXcvREYgR3JpZCBIZWFkZXIvOwoKICAgICMgc2VjdGlvbnMgZGF0YSBpbiBwYWdlcyBjb250ZW50IGFyZSB2YWxpZCwgZ28gb24gY2hlY2tpbmcKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb25OYW1lICgga2V5cyAleyAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLyB7fSB9ICkgewoKICAgICAgICAjIHJlbW92ZSBkZWZpbmVkIHNlY3Rpb25zIHRvIGxhdGVyIGlkZW50aWZ5IHVuZGVmaW5lZCBvbmVzCiAgICAgICAgZGVsZXRlICRTZWN0aW9uSXNNaXNzaW5neyRTZWN0aW9uTmFtZX07CgogICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb25SZWYtPntTZWN0aW9uc317JFNlY3Rpb25OYW1lfTsKCiAgICAgICAgaWYgKCAhJFNlY3Rpb24gfHwgIUlzSGFzaFJlZldpdGhEYXRhKCRTZWN0aW9uKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RWl0aGVyIHRoZSBjb250ZW50IG9mIHNlY3Rpb24gJXMgaXMgZW50aXJlbHkgbWlzc2luZyBvciBub3QgYSBoYXNoLn0pLAogICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VjdGlvbi0+e01vZHVsZX0gKSB7CiAgICAgICAgICAgIG15ICRNb2R1bGUgPSAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpTZWN0aW9uOjonIC4gJFNlY3Rpb24tPntNb2R1bGV9OwoKICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkTW9kdWxlKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtDYW5ub3QgbG9hZCBNb2R1bGUgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIHNraXAgZGVzY3JpcHRpb24gc2VjdGlvbnMKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbic7CgogICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgaWYgKCAhYW55IHsgJFNlY3Rpb24tPntUeXBlfSBlcSAkXyB9IHF3L0NvbmZpZ0l0ZW1MaW5rcyBEZXNjcmlwdGlvbiBSZWZlcmVuY2VkU2VjdGlvbi8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7SW52YWxpZCB0eXBlIGluIHNlY3Rpb24gJXMufSksCiAgICAgICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICEkU2VjdGlvbi0+e0NvbnRlbnR9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJ0NvbnRlbnQnIGlzIG1pc3NpbmcgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VjdGlvbi0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0RhdGEgZm9yICdDb250ZW50JyBpbiBzZWN0aW9uICVzIGlzIG5vdCBhbiBhcnJheS59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQEdyaWRzOwogICAgICAgIGZvciBteSAkQ29udGVudEl0ZW0gKCAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKiApIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb250ZW50SXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QW4gZWxlbWVudCBvZiAnQ29udGVudCcgaW4gc2VjdGlvbiAlcyBkb2VzIG5vdCBjb250YWluIGtleSB2YWx1ZSBwYWlycy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIWFueSB7ICRDb250ZW50SXRlbS0+eyRffSB9IEBOZWVkZWRDb250ZW50RW50cnkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7U2VjdGlvbiAlcyBoYXMgY29udGVudCB3aGljaCBkb2Vzbid0IHByb3ZpZGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgZW50cmllcyA8JXM+Ln0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgICAgICAgICAiQE5lZWRlZENvbnRlbnRFbnRyeSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJENvbnRlbnRJdGVtLT57REZ9ICkgewogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyAkQ29udGVudEl0ZW0tPntERn0gfSA9ICRTZWN0aW9uTmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb250ZW50SXRlbS0+e0dyaWR9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAR3JpZHMsICRDb250ZW50SXRlbS0+e0dyaWR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJEdyaWRJdGVtIChAR3JpZHMpIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRHcmlkSXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgbWlzY29uZmlndXJlZCBncmlkLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJEdyaWRJdGVtLT57Um93c30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IGFueSByb3dzLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUT0RPIHNvbWUgbW9yZSBiYXNpYyBjaGVja3MKICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkR3JpZEl0ZW0tPntSb3dzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJENlbGwgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ2VsbC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IERGIGluIGEgY2VsbC59KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRGVmaW5lZER5bmFtaWNGaWVsZHN7ICRDZWxsLT57REZ9IH0gPSAkU2VjdGlvbk5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzZWN0aW9ucyBvZiByb2xlcyB3aGljaCBhcmUgb25seSBhYm91dCB0byBiZSBpbXBvcnRlZCBhcmUgbm90IGRlZmluZWQgeWV0CiAgICBteSAlSW1wb3J0Um9sZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0ltcG9ydFJvbGVzfSAvLyBbXSB9OwoKICAgIGZvciBteSAkU2VjdGlvbk5hbWUgKCBrZXlzICVTZWN0aW9uSXNNaXNzaW5nICkgewogICAgICAgIGlmICggJUltcG9ydFJvbGVzICYmICRTZWN0aW9uTmFtZSA9fiAvOjovICkgewogICAgICAgICAgICBST0xFOgogICAgICAgICAgICBmb3IgbXkgJFJvbGUgKCBrZXlzICV7ICREZWZpbml0aW9uUmVmLT57Um9sZXN9IC8vIHt9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFJPTEUgaWYgISRJbXBvcnRSb2xlc3skUm9sZX07CgogICAgICAgICAgICAgICAgIyB0aGlzIHNlY3Rpb24gd2lsbCBiZSBpbXBvcnRlZCBhbmQgY2hlY2tlZCB3aXRoIHRoZSBzcGVjaWZpYyByb2xlCiAgICAgICAgICAgICAgICBkZWxldGUgJFNlY3Rpb25Jc01pc3Npbmd7JFNlY3Rpb25OYW1lfSBpZiAkU2VjdGlvbk5hbWUgPX4gLyREZWZpbml0aW9uUmVmLT57Um9sZXN9eyRSb2xlfXtOYW1lfTo6LzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJVNlY3Rpb25Jc01pc3NpbmcpIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgYXJlIHVzZWQgaW4gcGFnZXMsIGJ1dCBhcmUgbm90IGRlZmluZWQ6ICVzfSksCiAgICAgICAgICAgIGpvaW4oICcsICcsIHNvcnQga2V5cyAlU2VjdGlvbklzTWlzc2luZyApCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFsbCB1c2VkIGR5bmFtaWMgZmllbGRzIGFyZSB2YWxpZAogICAgbXkgJERGSUQyTmFtZUxpc3RSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAlREZOYW1lMklETGlzdCA9IHJldmVyc2UgJERGSUQyTmFtZUxpc3RSZWYtPiUqOwoKICAgIGZvciBteSAkRGVmaW5lZEZpZWxkTmFtZSAoIGtleXMgJURlZmluZWREeW5hbWljRmllbGRzICkgewoKICAgICAgICAjIGNoZWNrIHdpdGggZHluYW1pYyBmaWVsZCBsaXN0CiAgICAgICAgaWYgKCAhJERGTmFtZTJJRExpc3R7JERlZmluZWRGaWVsZE5hbWV9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEeW5hbWljIGZpZWxkICVzIGlzIHVzZWQgaW4gc2VjdGlvbiAlcywgYnV0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBzeXN0ZW0uIFBlcmhhcHMgeW91IGZvcmdvdCB0byBjcmVhdGUgaXQgb3IgbWlzc3BlbGxlZCBpdHMgbmFtZT99KSwKICAgICAgICAgICAgICAgICREZWZpbmVkRmllbGROYW1lLAogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyREZWZpbmVkRmllbGROYW1lfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgUm9sZURlZmluaXRpb25DaGVjaygpCgpjaGVja3MgdGhlIHN5bnRheCBhbmQgdGhlIHNhbml0eSBvZiBhIG5ldyByb2xlIGRlZmluaXRpb24uCgpUaGlzIG1ldGhvZCBjdXJyZW50bHkgb25seSBmYWxscyBiYWNrIHRvIHRoZSBtZXRob2QgQzxEZWZpbml0aW9uQ2hlY2soKT4uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCwgdG8gY2hlY2sgc3ViIGVsZW1lbnRzIHJlY3Vyc2l2ZWx5KQogICAgKTsKCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uQ2hlY2soICVQYXJhbSwgVHlwZSA9PiAnUm9sZScgKTsKfQoKPWhlYWQyIERlZmluaXRpb25OZWVkU3luYygpCgpyZXR1cm4gYSBoYXNoIG9mIGNsYXNzIGlkcyB3aXRoIGN1cnJlbnQgZGVmaW5pdGlvbnMgd2l0aCBkeW5hbWljIGZpZWxkcyBub3Qgc3luY2VkCgogICAgbXkgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25OZWVkU3luYygpOwoKUmV0dXJuCgogICAgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gKAogICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICBDbGFzc0lEMiA9PiBbIER5bmFtaWNGaWVsZElEMSwgRHluYW1pY0ZpZWxkSUQzIF0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25OZWVkU3luYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRDYWNoZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRDYWNoZSkgKSB7CiAgICAgICAgcmV0dXJuICRDYWNoZS0+JSo7CiAgICB9CgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNsYXNzX2lkLCBmaWVsZF9pZCBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9zeW5jJywKICAgICk7CgogICAgbXkgJU91dE9mU3luYzsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQHsgJE91dE9mU3luY3sgJFJvd1swXSB9IH0sICRSb3dbMV07CiAgICB9CgogICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtRGVmaW5pdGlvbicsCiAgICAgICAgS2V5ICAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgICAgIFZhbHVlID0+IFwlT3V0T2ZTeW5jLAogICAgICAgIFRUTCAgID0+IDcyMDAwLCAgICAgICAgICAgICAgICAgICAgIyAyMCBkCiAgICApOwoKICAgIHJldHVybiAlT3V0T2ZTeW5jOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldE91dE9mU3luYygpCgpEZWNsYXJlIGN1cnJlbnQgY2xhc3MgZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMgd2l0aCB0aGVpciBkeW5hbWljIGZpZWxkcwoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TZXRPdXRPZlN5bmMoCiAgICAgICAgQ2xhc3NlcyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICAgICAgQ2xhc3NJRDIgPT4gWyBEeW5hbWljRmllbGRJRDEsIER5bmFtaWNGaWVsZElEMyBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25TZXRPdXRPZlN5bmMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte0NsYXNzZXN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc2VzIGhhc2ghJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUN1cnJlbnQgPSAkU2VsZi0+RGVmaW5pdGlvbk5lZWRTeW5jKCk7CiAgICBteSAlTmV3OwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAkUGFyYW17Q2xhc3Nlc30tPiUqICkgewogICAgICAgIGlmICggISRDdXJyZW50eyRDbGFzc0lEfSApIHsKICAgICAgICAgICAgJE5ld3skQ2xhc3NJRH0gPSAkUGFyYW17Q2xhc3Nlc317JENsYXNzSUR9OwoKICAgICAgICAgICAgbmV4dCBDTEFTUzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkRmllbGRJRCAoICRQYXJhbXtDbGFzc2VzfXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBpZiAoICFncmVwIHsgJF8gPT0gJEZpZWxkSUQgfSAkQ3VycmVudHskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkTmV3eyRDbGFzc0lEfSB9LCAkRmllbGRJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSB1bmxlc3MgJU5ldzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBteSAkU3VjY2VzcyA9IDE7CiAgICBmb3IgbXkgJENsYXNzSUQgKCBrZXlzICVOZXcgKSB7CiAgICAgICAgZm9yIG15ICRGaWVsZElEICggJE5ld3skQ2xhc3NJRH0tPkAqICkgewoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IG91dCBvZiBzeW5jIHJlbGF0aW9ucwogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICdJTlNFUlQgSU5UTyBjb25maWdpdGVtX2RlZmluaXRpb25fc3luYyAoY2xhc3NfaWQsIGZpZWxkX2lkKSBWQUxVRVMgKD8sID8pJywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJENsYXNzSUQsIFwkRmllbGRJRCBdLAogICAgICAgICAgICApID8gJFN1Y2Nlc3MgOiAwOwogICAgICAgIH0KICAgIH0KCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW1EZWZpbml0aW9uJywKICAgICAgICBLZXkgID0+ICdPdXRPZlN5bmNDbGFzc2VzJywKICAgICk7CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldFN5bmNlZCgpCgpEZWNsYXJlIGN1cnJlbnQgY2xhc3MgZGVmaW5pdGlvbiBhcyBpbiBzeW5jIHdpdGggaXRzIGR5bmFtaWMgZmllbGRzCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldFN5bmNlZCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvblNldFN5bmNlZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkCiAgICBpZiAoICEkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENsYXNzSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uX3N5bmMgV0hFUkUgY2xhc3NfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW1EZWZpbml0aW9uJywKICAgICAgICBLZXkgID0+ICdPdXRPZlN5bmNDbGFzc2VzJywKICAgICk7CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblN5bmMoKQoKQWRkIG5ldyBkZWZpbml0aW9ucyBmb3IgYWxsIGNsYXNzZXMgd2hlcmUgZHluYW1pYyBmaWVsZCBjb250ZW50cyBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBjdXJyZW50IGRlZmluaXRpb24KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU3luYygpOwoKPWN1dAoKc3ViIERlZmluaXRpb25TeW5jIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJU91dE9mU3luYyA9ICRTZWxmLT5EZWZpbml0aW9uTmVlZFN5bmMoKTsKCiAgICByZXR1cm4gMSB1bmxlc3MgJU91dE9mU3luYzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIG15IEBDbGFzc0lEcyA9IGtleXMgJU91dE9mU3luYzsKCiAgICBDTEFTUzoKICAgIGZvciBteSAkQ2xhc3NJRCAoQENsYXNzSURzKSB7CgogICAgICAgICMgY2hlY2sgd2hldGhlciBtZWFuaW5nZnVsIGNvbnRlbnQgaXMgKHN0aWxsKSBhZmZlY3RlZAogICAgICAgIG15ICROZWVkc1N5bmMgID0gMDsKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZERlZmluaXRpb247CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJEZpZWxkSUQgKCAkT3V0T2ZTeW5jeyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkRmllbGRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRPbGREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17ICREeW5hbWljRmllbGQtPntOYW1lfSB9OwogICAgICAgICAgICBpZiAoICEkT2xkRHluYW1pY0ZpZWxkIHx8ICRPbGREeW5hbWljRmllbGQtPntJRH0gbmUgJER5bmFtaWNGaWVsZC0+e0lEfSApIHsKCiAgICAgICAgICAgICAgICAjIGNvbnNpZGVyIG5hbWUgY2hhbmdlcwogICAgICAgICAgICAgICAgJE5lZWRzU3luYyA9IDE7CgogICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJE9sZER5bmFtaWNGaWVsZC0+e0xhYmVsfSBuZSAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICkgewoKICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IGxhYmVscyBjYW4gYmUgZHVlIHRvIHRoZSBzZWN0aW9uIGRlZmluaXRpb24KICAgICAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGREZWZpbml0aW9uICkgewogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgICkgfHwgJy0tLSB7fSc7CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRPbGREeW5hbWljRmllbGQtPntMYWJlbH0gbmUgJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH17TGFiZWx9ICkgewogICAgICAgICAgICAgICAgICAgICROZWVkc1N5bmMgPSAxOwoKICAgICAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgRGF0YUlzRGlmZmVyZW50KAogICAgICAgICAgICAgICAgICAgIERhdGExID0+ICRPbGREeW5hbWljRmllbGQtPntDb25maWd9LAogICAgICAgICAgICAgICAgICAgIERhdGEyID0+ICREeW5hbWljRmllbGQtPntDb25maWd9LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkTmVlZHNTeW5jID0gMTsKCiAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJE5lZWRzU3luYyApIHsKICAgICAgICAgICAgJFNlbGYtPkRlZmluaXRpb25TZXRTeW5jZWQoCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDTEFTUyB1bmxlc3MgJE5lZWRzU3luYzsKICAgICAgICB9CgogICAgICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb259LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9IHNwcmludGYgJFJlc3VsdC0+e0Vycm9yfSwgJFJlc3VsdC0+e0Vycm9yQXJnc30tPkAqOwogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkRXJyb3JNZXNzYWdlLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENsYXNzSW1wb3J0KCkKCkltcG9ydCBjb25maWcgaXRlbSBjbGFzcyBpbmNsdWRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIG5hbWVzcGFjZXMsIGJhc2VkIG9uIGNsYXNzIGRlZmluaXRpb24KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENsYXNzRXhpc3RzID0+ICIoRVJST1J8SUdOT1JFfFVQREFURSkiICAgIyAob3B0aW9uYWwpIGhvdyB0byBoYW5kbGUgaW1wb3J0IG9mIGFscmVhZHkgZXhpc3RpbmcgY2xhc3NlcywgZGVmYXVsdCBFUlJPUgogICAgKTsKClJldHVybnM6CgogICAgbXkgJFJlc3VsdCA9ICgKICAgICAgICBTdWNjZXNzICAgICAgPT4gKDF8MCksICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdTb21lIE1lc3NhZ2UnLCAgICAgIyBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgZmFpbHVyZQogICAgKTsKCj1jdXQKCnN1YiBDbGFzc0ltcG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtDbGFzc0V4aXN0c30gfHw9ICdFUlJPUic7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZXhwZWN0IGFycmF5IHJlZiBvZiBkZWZpbml0aW9ucwogICAgbXkgJERlZmluaXRpb25MaXN0ID0gJFBhcmFte0NvbnRlbnR9OwogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCREZWZpbml0aW9uTGlzdCkgKSB7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ1BhcmFtIERlZmluaXRpb25MaXN0IGlzIGVtcHR5IG9yIG5vdCBhbiBhcnJheSByZWZlcmVuY2UuJywKICAgICAgICB9OwogICAgfQoKICAgICMgaW5pdGlhbGl6ZSBuZWVkZWQgdmFyaWFibGVzCiAgICBteSAlQ2xhc3NEZWZpbml0aW9uczsKICAgIG15ICVSb2xlRGVmaW5pdGlvbnM7CiAgICBteSBAQ2xhc3NDYXRlZ29yaWVzOwogICAgbXkgJUR5bmFtaWNGaWVsZHM7CiAgICBteSAlTmFtZXNwYWNlczsKICAgIG15ICVTZXRERnM7CiAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAlewogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKSAvLyB7fQogICAgfTsKICAgIG15ICVEeW5hbWljRmllbGRMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICAgICApIHx8IHt9CiAgICB9OwogICAgbXkgJVJvbGVOYW1lMklEID0gcmV2ZXJzZSAlewogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApIC8vIHt9CiAgICB9OwoKICAgICMgMC4gcGVyZm9ybSBzYW5pdHkgY2hlY2tzIEkgLSBnZXQgcm9sZXMgYW5kIGNsYXNzZXMKICAgIG15ICVJbXBvcnRSb2xlczsKICAgIG15ICVJbXBvcnRDbGFzc2VzOwogICAgZm9yIG15ICREZWZpbml0aW9uSXRlbSAoICREZWZpbml0aW9uTGlzdC0+QCogKSB7CiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc30gJiYgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9ICkgewogICAgICAgICAgICAkSW1wb3J0Q2xhc3Nlc3sgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9IH0gPSAkRGVmaW5pdGlvbkl0ZW07CgogICAgICAgICAgICBpZiAoICRDbGFzc05hbWUySUR7ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfSB9ICYmICRQYXJhbXtDbGFzc0V4aXN0c30gZXEgJ0VSUk9SJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDbGFzcyAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc317TmFtZX0gYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gKSB7CiAgICAgICAgICAgICRJbXBvcnRSb2xlc3sgJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IH0gPSAkRGVmaW5pdGlvbkl0ZW07CgogICAgICAgICAgICBpZiAoICRSb2xlTmFtZTJJRHsgJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IH0gJiYgJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnRVJST1InICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlJvbGUgJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IGFscmVhZHkgZXhpc3RzLiIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIk5lZWQgQ2xhc3Mgb3IgUm9sZU5hbWUgaW4gRGVmaW5pdGlvbi4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHBlcmZvcm0gc2FuaXR5IGNoZWNrcyBJSSAtIG1vcmUgY2xhc3MgYW5kIHJvbGUgc3BlY2lmaWNzOyBjb2xsZWN0IGNhdGVnb3J5IGFuZCBkZiBkYXRhCiAgICBmb3IgbXkgJERlZmluaXRpb25JdGVtICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uSXRlbS0+e0RlZmluaXRpb259LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJERlZmluaXRpb25SZWYgKSB7CiAgICAgICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IHx8ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSXRlbSAnJE5hbWUnIGhhcyBub3QgYSB2YWxpZCBZQU1MIGRlZmluaXRpb24gZmllbGQuIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uS2V5ICgga2V5cyAleyREZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAgICAgJERlZmluaXRpb25JdGVtLT57JERlZmluaXRpb25LZXl9ID0gJERlZmluaXRpb25SZWYtPnskRGVmaW5pdGlvbktleX07CiAgICAgICAgfQoKICAgICAgICAjICAgICAgICBteSAkVHlwZSA9ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfSA/ICdDbGFzcycgOiAnUm9sZSc7CiAgICAgICAgIwogICAgICAgICMgVE9ETzogQWRkIGEgcHJlbGltaW5hcnkgY2hlY2sKICAgICAgICAjICAgICAgICAjIGNoZWNrIGRlZmluaXRpb24gZm9yIHZhbGlkaXR5CiAgICAgICAgIyAgICAgICAgbXkgJENoZWNrUmVzdWx0ID0gJFNlbGYtPkRlZmluaXRpb25DaGVjaygKICAgICAgICAjICAgICAgICAgICAgRGVmaW5pdGlvbiAgPT4gJERlZmluaXRpb25JdGVtLT57RGVmaW5pdGlvbn0sCiAgICAgICAgIyAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICRUeXBlLAogICAgICAgICMgICAgICAgICAgICBJbXBvcnRSb2xlcyA9PiBbIGtleXMgJUltcG9ydFJvbGVzIF0sCiAgICAgICAgIyAgICAgICAgKTsKICAgICAgICAjCiAgICAgICAgIyAgICAgICAgaWYgKCAhJENoZWNrUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgIyAgICAgICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IHx8ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfTsKICAgICAgICAjCiAgICAgICAgIyAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgIyAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAjICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSXRlbSAnJE5hbWUnIGZhaWxlZCBpbml0aWFsIGRlZmluaXRpb24gY2hlY2suIiwKICAgICAgICAjICAgICAgICAgICAgfTsKICAgICAgICAjICAgICAgICB9CgogICAgICAgICMgY29sbGVjdCBjbGFzcyB0YWdzCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc30gKSB7CiAgICAgICAgICAgIEBDbGFzc0NhdGVnb3JpZXMgPSB1bmlxKCBAQ2xhc3NDYXRlZ29yaWVzLCAoICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtDYXRlZ29yaWVzfSAvLyBbXSApLT5AKiApOwogICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGR5bmFtaWMgZmllbGRzIChpZiB0aGV5IGV4aXN0KQogICAgICAgIGlmICggJERlZmluaXRpb25JdGVtLT57RHluYW1pY0ZpZWxkc30gKSB7CiAgICAgICAgICAgICVEeW5hbWljRmllbGRzID0gKAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZHMsCiAgICAgICAgICAgICAgICAkRGVmaW5pdGlvbkl0ZW0tPntEeW5hbWljRmllbGRzfS0+JSosCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZmV0Y2ggZXhpc3RpbmcgY2F0ZWdvcmllcyB0byBjaGVjayBmb3IgZHVwbGljYXRlcwogICAgbXkgJEV4aXN0aW5nQ2F0ZWdvcmllcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDYXRlZ29yeScsCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICkgLy8ge307CgogICAgIyBoYW5kbGUgY3JlYXRpb24gb2YgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcmllcwogICAgQ0FURUdPUlk6CiAgICBmb3IgbXkgJENhdGVnb3J5IChAQ2xhc3NDYXRlZ29yaWVzKSB7CgogICAgICAgIG5leHQgQ0FURUdPUlkgaWYgYW55IHsgJF8gZXEgJENhdGVnb3J5IH0gdmFsdWVzICRFeGlzdGluZ0NhdGVnb3JpZXMtPiUqOwoKICAgICAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICAgICAgICAgTmFtZSAgICA9PiAkQ2F0ZWdvcnksCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGRuJ3QgYWRkIGNvbmZpZyBpdGVtIGNsYXNzIGNhdGVnb3J5ICRDYXRlZ29yeS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCBpbm5lciBmaWVsZHMgb2Ygc2V0IERGcyB0byBoYXNoCiAgICBmb3IgbXkgJEZpZWxkICgga2V5cyAlRHluYW1pY0ZpZWxkcyApIHsKICAgICAgICBpZiAoICREeW5hbWljRmllbGRzeyRGaWVsZH17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgbXkgJVNldEZpZWxkcyA9IG1hcCB7ICRfLT57REZ9ID0+ICRfLT57RGVmaW5pdGlvbn0gfSAkRHluYW1pY0ZpZWxkc3skRmllbGR9e0NvbmZpZ317SW5jbHVkZX0tPkAqOwoKICAgICAgICAgICAgaWYgKCAhJVNldEZpZWxkcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9uZW91cyBjb25maWd1cmF0aW9uIG9mIFNldCAkRmllbGQuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICVTZXRERnMgPSAoCiAgICAgICAgICAgICAgICAlU2V0REZzLAogICAgICAgICAgICAgICAgJVNldEZpZWxkcywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBkeW5hbWljIGZpZWxkcwogICAgbXkgJUFsbEZpZWxkcyA9ICggJUR5bmFtaWNGaWVsZHMsICVTZXRERnMgKTsKICAgIGZvciBteSAkRmllbGQgKCBrZXlzICVBbGxGaWVsZHMgKSB7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkTG9va3VweyRGaWVsZH0gKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRGaWVsZCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gbmUgJEFsbEZpZWxkc3skRmllbGR9e0ZpZWxkVHlwZX0gfHwgJER5bmFtaWNGaWVsZC0+e09iamVjdFR5cGV9IG5lICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRHluYW1pY0ZpZWxkICRGaWVsZCBleGlzdHMgYnV0IGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIE9iamVjdC0gYW5kL29yIEZpZWxkVHlwZS4iLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57TXVsdGlWYWx1ZX0geG9yICRBbGxGaWVsZHN7JEZpZWxkfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQgJEZpZWxkIGV4aXN0cyBidXQgZG9lcyBub3QgbWF0Y2ggdGhlIG11bHRpdmFsdWUgc2V0dGluZy4iLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmllbGQgIX4gbXsgXEEgW2EtekEtWlxkXC1dKyBceiB9eG1zICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkludmFsaWQgRHluYW1pY0ZpZWxkIG5hbWUgJyRGaWVsZCcuIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICggJEZpZWxkID1+IC9eKFteLV0rKS0vICkgewogICAgICAgICAgICAkTmFtZXNwYWNlc3skMX0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIDEuIGNyZWF0ZSBhbGwgY2xhc3NlcwogICAgQ0xBU1NERUZJTklUSU9OOgogICAgZm9yIG15ICRDbGFzc0RlZmluaXRpb24gKCBncmVwIHsgJF8tPntDbGFzc30gfSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICBteSAlQ2xhc3NEYXRhID0gJXsgZGVsZXRlICRDbGFzc0RlZmluaXRpb24tPntDbGFzc30gfTsKCiAgICAgICAgIyBoYW5kbGUgZHVwbGljYXRpb25zIGFjY29yZGluZyBwYXJhbSBDbGFzc0V4aXN0cwogICAgICAgIG15ICRDbGFzc0lEOwogICAgICAgIGlmICggJENsYXNzTmFtZTJJRHsgJENsYXNzRGF0YXtOYW1lfSB9ICkgewogICAgICAgICAgICBpZiAoICRQYXJhbXtDbGFzc0V4aXN0c30gZXEgJ1VQREFURScgKSB7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgID0+ICRDbGFzc05hbWUySUR7ICRDbGFzc0RhdGF7TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0RhdGF7TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb3VsZCBub3QgdXBkYXRlIGNsYXNzICRDbGFzc0RhdGF7TmFtZX0uIiwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENsYXNzSUQgPSAkQ2xhc3NOYW1lMklEeyAkQ2xhc3NEYXRhe05hbWV9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBuZXh0IENMQVNTREVGSU5JVElPTjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICAgICAgICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0RhdGF7TmFtZX0sCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb3VsZCBub3QgYWRkIGNsYXNzICRDbGFzc0RhdGF7TmFtZX0uIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgUFJFRkVSRU5DRUtFWToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKHF3KE5hbWVNb2R1bGUgTnVtYmVyTW9kdWxlIFZlcnNpb25TdHJpbmdNb2R1bGUgUGVybWlzc2lvbiBDYXRlZ29yaWVzIFZlcnNpb25UcmlnZ2VyKSkgewoKICAgICAgICAgICAgIyB0cmFuc2l0aW9uOiBwcmVmZXJlbmNlIFBlcm1pc3Npb24gaXMgbmFtZWQgUGVybWlzc2lvbkdyb3VwIGluIGRlZmluaXRpb24gc3ludGF4CiAgICAgICAgICAgIG15ICRQcmVmZXJlbmNlVmFsdWU7CiAgICAgICAgICAgIGlmICggJFByZWZlcmVuY2VLZXkgZXEgJ1Blcm1pc3Npb24nICkgewoKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRUtFWSB1bmxlc3MgJENsYXNzRGF0YXtQZXJtaXNzaW9uR3JvdXB9OwoKICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgR3JvdXAgPT4gJENsYXNzRGF0YXtQZXJtaXNzaW9uR3JvdXB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlVmFsdWUgPSAkQ2xhc3NEYXRheyRQcmVmZXJlbmNlS2V5fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFS0VZIHVubGVzcyAkUHJlZmVyZW5jZVZhbHVlOwoKICAgICAgICAgICAgaWYgKCAhcmVmICRQcmVmZXJlbmNlVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkUHJlZmVyZW5jZVZhbHVlID0gWyRQcmVmZXJlbmNlVmFsdWVdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0VLRVkgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkUHJlZmVyZW5jZVZhbHVlKTsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRQcmVmZXJlbmNlVmFsdWUsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkbid0IHVwZGF0ZSBwcmVmZXJlbmNlICRQcmVmZXJlbmNlS2V5IGZvciBjb25maWcgaXRlbSBjbGFzcyAkQ2xhc3NJRC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGRlZmluaXRpb24KICAgICAgICAkQ2xhc3NEZWZpbml0aW9uc3skQ2xhc3NJRH0gPSAkQ2xhc3NEZWZpbml0aW9uLT57RGVmaW5pdGlvbn07CiAgICB9CgogICAgIyAyLiBjcmVhdGUgYWxsIHJvbGVzCiAgICBST0xFREVGSU5JVElPTjoKICAgIGZvciBteSAkUm9sZURlZmluaXRpb24gKCBncmVwIHsgJF8tPntSb2xlTmFtZX0gfSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICBteSAkUm9sZU5hbWUgPSBkZWxldGUgJFJvbGVEZWZpbml0aW9uLT57Um9sZU5hbWV9OwoKICAgICAgICAjIGhhbmRsZSBkdXBsaWNhdGlvbnMgYWNjb3JkaW5nIHBhcmFtIENsYXNzRXhpc3RzCiAgICAgICAgbXkgJFJvbGVJRDsKICAgICAgICBpZiAoICRSb2xlTmFtZTJJRHskUm9sZU5hbWV9ICkgewogICAgICAgICAgICBpZiAoICRQYXJhbXtDbGFzc0V4aXN0c30gZXEgJ1VQREFURScgKSB7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgID0+ICRSb2xlTmFtZTJJRHskUm9sZU5hbWV9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHJvbGUgJFJvbGVOYW1lLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUm9sZUlEID0gJFJvbGVOYW1lMklEeyRSb2xlTmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBuZXh0IFJPTEVERUZJTklUSU9OOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUm9sZUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRSb2xlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiQ291bGQgbm90IGFkZCByb2xlICRSb2xlTmFtZS4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGRlZmluaXRpb24KICAgICAgICAkUm9sZURlZmluaXRpb25zeyRSb2xlSUR9ID0gJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvbn07CiAgICB9CgogICAgIyBuYW1lc3BhY2UgaGFuZGxpbmcKICAgIGlmICglTmFtZXNwYWNlcykgewoKICAgICAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgICAgICAjIEdldCBjdXJyZW50IHNldHRpbmcgdmFsdWUuCiAgICAgICAgbXkgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnLAogICAgICAgICk7CgogICAgICAgICMgZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB1bml0IHRlc3RzCiAgICAgICAgbXkgJEV4aXN0aW5nTmFtZXNwYWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzJykgfHwgW107CiAgICAgICAgbXkgJUFsbE5hbWVzcGFjZXMgICAgICA9ICgKICAgICAgICAgICAgKCBtYXAgeyAkXyA9PiAxIH0gJEV4aXN0aW5nTmFtZXNwYWNlcy0+QCogKSwKICAgICAgICAgICAgJU5hbWVzcGFjZXMsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lc3BhY2VzIG5lZWQgdG8gYmUgY2hhbmdlZAogICAgICAgIG15ICRVcGRhdGVOYW1lc3BhY2VzID0gMDsKICAgICAgICBORVdOQU1FU1BBQ0U6CiAgICAgICAgZm9yIG15ICROZXdOYW1lc3BhY2UgKCBrZXlzICVBbGxOYW1lc3BhY2VzICkgewogICAgICAgICAgICBpZiAoIG5vbmUgeyAkTmV3TmFtZXNwYWNlIGVxICRfIH0gJEV4aXN0aW5nTmFtZXNwYWNlcy0+QCogKSB7CiAgICAgICAgICAgICAgICAkVXBkYXRlTmFtZXNwYWNlcyA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IE5FV05BTUVTUEFDRTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFVwZGF0ZU5hbWVzcGFjZXMpIHsKCiAgICAgICAgICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICBGb3JjZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIERlZmF1bHRJRCA9PiAkU2V0dGluZ3tEZWZhdWx0SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBVcGRhdGUgc2V0dGluZyB3aXRoIG1vZGlmaWVkIGRhdGEKICAgICAgICAgICAgbXkgJVJlc3VsdCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVcGRhdGUoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzJywKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSAgICA9PiBbIGtleXMgJUFsbE5hbWVzcGFjZXMgXSwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHVwZGF0ZSBzZXR0aW5nIER5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcy4nLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHVubG9jayBzZXR0aW5nIER5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcy4nLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJURlcGxveW1lbnRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICAgICAgQ29tbWVudHMgICAgICA9PiAiQ2xhc3NJbXBvcnQgdXBkYXRpbmcgRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIERpcnR5U2V0dGluZ3MgPT4gWydEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISREZXBsb3ltZW50UmVzdWx0e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0RlcGxveW1lbnQgZmFpbGVkIScsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc3BsaXQgZHluYW1pYyBmaWVsZHMgaW4gdGhyZWUgc2VwYXJhdGUgZ3JvdXBzCiAgICBteSBATm9ybWFsRmllbGROYW1lcyA9IGdyZXAgeyAkQWxsRmllbGRzeyRffXtGaWVsZFR5cGV9IG5lICdMZW5zJyAmJiAkQWxsRmllbGRzeyRffXtGaWVsZFR5cGV9IG5lICdTZXQnIH0ga2V5cyAlQWxsRmllbGRzOwogICAgbXkgQExlbnNGaWVsZE5hbWVzICAgPSBncmVwIHsgJEFsbEZpZWxkc3skX317RmllbGRUeXBlfSBlcSAnTGVucycgfSBrZXlzICVBbGxGaWVsZHM7CiAgICBteSBAU2V0RmllbGROYW1lcyAgICA9IGdyZXAgeyAkQWxsRmllbGRzeyRffXtGaWVsZFR5cGV9IGVxICdTZXQnIH0ga2V5cyAlQWxsRmllbGRzOwoKICAgICMgc29ydCBsZW5zIGZpZWxkcyBpbiBjYXNlIGEgbGVucyBoYXMgYW5vdGhlciBsZW5zIGFzIGF0dHJpYnV0ZSBkeW5hbWljIGZpZWxkCiAgICBteSBATGVuc0ZpZWxkTmFtZXNTb3J0ZWQgPSBzb3J0IHsKICAgICAgICAoICRBbGxGaWVsZHN7JGJ9e05hbWV9IGVxICRBbGxGaWVsZHN7JGF9e0NvbmZpZ317QXR0cmlidXRlREZ9ICkgPD0+ICggJEFsbEZpZWxkc3skYX17TmFtZX0gZXEgJEFsbEZpZWxkc3skYn17Q29uZmlnfXtBdHRyaWJ1dGVERn0gKQogICAgfSBATGVuc0ZpZWxkTmFtZXM7CgogICAgIyAzLiBjcmVhdGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICRPcmRlciA9IHNjYWxhcigga2V5cyAlRHluYW1pY0ZpZWxkTG9va3VwICk7CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGROYW1lICggQE5vcm1hbEZpZWxkTmFtZXMsIEBMZW5zRmllbGROYW1lc1NvcnRlZCwgQFNldEZpZWxkTmFtZXMgKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAkRHluYW1pY0ZpZWxkTG9va3VweyRGaWVsZE5hbWV9OwoKICAgICAgICBteSAkRmllbGRDb25maWcgPSAkQWxsRmllbGRzeyRGaWVsZE5hbWV9OwoKICAgICAgICBteSAlU2V0Q29uZmlnOwogICAgICAgIGlmICggJEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgbXkgQEluY2x1ZGVkID0gbWFwIHsgeyBERiA9PiAkXy0+e0RGfSB9IH0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICVTZXRDb25maWcgPSAoCiAgICAgICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgICAgICRGaWVsZENvbmZpZy0+e0NvbmZpZ30tPiUqLAogICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgPT4gXEBJbmNsdWRlZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5lZWRlZCwgcGVyZm9ybSBuZWNlc3NhcnkgdHJhbnNmb3JtYXRpb25zCiAgICAgICAgJEZpZWxkQ29uZmlnID0gJFNlbGYtPl9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmllbGRDb25maWcsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnSW1wb3J0JywKICAgICAgICApOwoKICAgICAgICBteSAkRmllbGRJRCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEFkZCgKICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT4lKiwKICAgICAgICAgICAgJVNldENvbmZpZywKICAgICAgICAgICAgRmllbGRPcmRlciA9PiArKyRPcmRlciwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGFkZCBkeW5hbWljIGZpZWxkICRGaWVsZENvbmZpZy0+e05hbWV9LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJpZ2dlciBkeW5hbWljIGZpZWxkIGV2ZW50cwogICAgIyAgIHRoaXMgaXMgZG9uZSBiZWNhdXNlIFNldC1pbm5lciBkeW5hbWljIGZpZWxkcyBhcmUgdXBkYXRlZCBhZnRlcndhcmRzIHZpYQogICAgIyAgIGFuIGV2ZW50LCBjYXVzaW5nIHRoZSBkYXRhIGluIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucyB0byBiZWNvbWUgb3V0ZGF0ZWQKICAgICREeW5hbWljRmllbGRPYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgIyA0LiBhZGQgZGVmaW5pdGlvbnMKICAgIGZvciBteSAkUm9sZUlEICgga2V5cyAlUm9sZURlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+Um9sZURlZmluaXRpb25BZGQoCiAgICAgICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkUm9sZURlZmluaXRpb25zeyRSb2xlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUmV0dXJuLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHN0b3JlIGRlZmluaXRpb24uJywKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgbXkgJENsYXNzSUQgKCBrZXlzICVDbGFzc0RlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkQ2xhc3NEZWZpbml0aW9uc3skQ2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRSZXR1cm4tPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3Qgc3RvcmUgZGVmaW5pdGlvbi4nLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfTsKfQoKPWhlYWQyIENsYXNzRXhwb3J0KCkKCkV4cG9ydCBjb25maWcgaXRlbSBjbGFzc2VzLCBpbmNsdWRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIG5hbWVzcGFjZXMsIGludG8gYSBZQU1MIHN0cmluZwoKICAgIG15ICRZQU1MU3RyaW5nID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzRXhwb3J0KAogICAgICAgIEl0ZW1JRExpc3QgPT4gW0NsYXNzSUQxLCBDbGFzc0lEMiwgQ2xhc3NJRDMsIC4uLl0sICAgICAgIyBsaXN0IG9mIGNsYXNzIG9yIC8gYW5kIHJvbGUgSURzIHRvIGV4cG9ydAogICAgKTsKCkluIGNhc2Ugb2YgYSBmYWlsdXJlIEM8dW5kZWY+IGlzIHJldHVybmVkLgoKPWN1dAoKc3ViIENsYXNzRXhwb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgIG15ICRBbGxFeHBvcnRlZENsYXNzZXNSZWY7CgogICAgZm9yIG15ICRFeHBvcnRJdGVtSUQgKCBAeyAkUGFyYW17SXRlbUlETGlzdH0gfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBpdGVtIGlzIHJvbGUgb3IgY2xhc3MKICAgICAgICBteSAkSXRlbURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRXhwb3J0SXRlbUlELAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklEICRFeHBvcnRJdGVtSUQgaXMgaW52YWxpZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICYmICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJdGVtIHdpdGggSUQgJEV4cG9ydEl0ZW1JRCBpcyBuZWl0aGVyIGEgY29uZmlnIGl0ZW0gY2xhc3Mgbm9yIGEgY29uZmlnIGl0ZW0gcm9sZSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUV4cG9ydEl0ZW07CiAgICAgICAgbXkgJERlZmluaXRpb25SZWY7CiAgICAgICAgaWYgKCAkSXRlbURhdGEtPntDbGFzc30gZXEgJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApIHsKCiAgICAgICAgICAgICMgZmV0Y2ggY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAkRGVmaW5pdGlvblJlZiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRFeHBvcnRJdGVtSUQgKTsKICAgICAgICAgICAgJEV4cG9ydEl0ZW17Q2xhc3N9e05hbWV9ID0gJERlZmluaXRpb25SZWYtPntDbGFzc307CgogICAgICAgICAgICAjIGZldGNoIGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRFeHBvcnRJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISVDbGFzc1ByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBnZXQgcHJlZmVyZW5jZSBkYXRhIGZvciBjbGFzcyAkRGVmaW5pdGlvblJlZi0+e0NsYXNzfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgUFJFRkVSRU5DRVNLRVk6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZUtleSAoIGtleXMgJUNsYXNzUHJlZmVyZW5jZXMgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdOwoKICAgICAgICAgICAgICAgICMgdHJhbnNpdGlvbiBvZiBQZXJtaXNzaW9uIHRvIFBlcm1pc3Npb25Hcm91cAogICAgICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZUtleSBlcSAnUGVybWlzc2lvbicgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIGdyb3VwIGlkIGludG8gZ3JvdXAgbmFtZQogICAgICAgICAgICAgICAgICAgIG15ICRQcmVmZXJlbmNlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXtQZXJtaXNzaW9uR3JvdXB9ID0gJFByZWZlcmVuY2VWYWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNpbmdsZS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBlbHNpZiAoIGdyZXAgeyAkXyBlcSAkUHJlZmVyZW5jZUtleSB9IHF3KE5hbWVNb2R1bGUgTnVtYmVyTW9kdWxlIFZlcnNpb25TdHJpbmdNb2R1bGUpICkgewogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXskUHJlZmVyZW5jZUtleX0gPSAkQ2xhc3NQcmVmZXJlbmNlc3skUHJlZmVyZW5jZUtleX1bMF07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBtdWx0aS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBlbHNpZiAoIGdyZXAgeyAkXyBlcSAkUHJlZmVyZW5jZUtleSB9IHF3KENhdGVnb3JpZXMgVmVyc2lvblRyaWdnZXIpICkgewogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXskUHJlZmVyZW5jZUtleX0gPSAkQ2xhc3NQcmVmZXJlbmNlc3skUHJlZmVyZW5jZUtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkSXRlbURhdGEtPntDbGFzc30gZXEgJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnICkgewoKICAgICAgICAgICAgIyBmZXRjaCByb2xlIGRlZmluaXRpb24KICAgICAgICAgICAgJERlZmluaXRpb25SZWYgPSAkU2VsZi0+Um9sZURlZmluaXRpb25HZXQoIFJvbGVJRCA9PiAkRXhwb3J0SXRlbUlEICk7CiAgICAgICAgICAgICRFeHBvcnRJdGVte1JvbGVOYW1lfSA9ICREZWZpbml0aW9uUmVmLT57Um9sZX07CiAgICAgICAgfQoKICAgICAgICAjIHBlcmZvcm0gZHluYW1pYyBmaWVsZCB0cmFuc2Zvcm1hdGlvbgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIGtleXMgJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICAgICAgbXkgJFRyYW5zZm9ybWVkREZDb25maWcgPSAkU2VsZi0+X0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRGVmaW5pdGlvblJlZi0+e0R5bmFtaWNGaWVsZFJlZn17JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgID0+ICdFeHBvcnQnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkRXhwb3J0SXRlbXtEeW5hbWljRmllbGRzfXskRHluYW1pY0ZpZWxkTmFtZX0gPSAkVHJhbnNmb3JtZWRERkNvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgZXhwb3J0IHRoZSBzdWIteWFtbCBkZWZpbml0aW9uIGZpZWxkIGFzIGEgc3RyaW5nIGZpZWxkCiAgICAgICAgJEV4cG9ydEl0ZW17RGVmaW5pdGlvbn0gPSAkRGVmaW5pdGlvblJlZi0+e0RlZmluaXRpb259OwoKICAgICAgICBwdXNoIEB7JEFsbEV4cG9ydGVkQ2xhc3Nlc1JlZn0sIFwlRXhwb3J0SXRlbTsKICAgIH0KCiAgICBteSAkQWxsRXhwb3J0ZWRDbGFzc2VzU3RyID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiAkQWxsRXhwb3J0ZWRDbGFzc2VzUmVmCiAgICApOwoKICAgIHJldHVybiAkQWxsRXhwb3J0ZWRDbGFzc2VzU3RyOwp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9aGVhZDIgX1Byb2Nlc3NSb2xlcwoKRm9yIGNvbnZlbmllbmNlIHRoZSBZQU1MIGZvciBhIGNvbmZpZyBpdGVtIGNsYXNzIG1heSBjb250YWluIGEgc3VidHJlZSBjYWxsZWQgUm9sZXMuIFVzdWFsbHkgdGhlc2UgUm9sZXMKbG9hZCBvdGhlciBZQU1MIGRvY3VtZW50cyB3aGljaCBjb250YWluIGEgU2VjdGlvbiBoYXNoLiBUaGVzZSBzZWN0aW9uIGEgbWVyZ2VkIGludG8gdGhlIHRvcGxldmVsIFNlY3Rpb24gaGFzaC4KVGhlIGtleXMgb2YgdGhlIG1lcmdlZCBpbiBzZWN0aW9ucyBhcmUgdGhlIFJvbGUga2V5IGpvaW5lZCB3aXRoIHRoZSBsb2FkZWQgc2VjdGlvbiBuYW1lLiBUaGUgam9pbiBtYXJrZXIgaXMgQzw6Oj4uCgpUaGUgcGFzc2VkIGluIGhhc2ggcmVmZXJlbmNlIGlzIG1vZGlmaWVkIGluIHBsYWNlLgoKPWN1dAoKc3ViIF9Qcm9jZXNzUm9sZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGRlZmluaXRpb24KICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvblJlZiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHJvbGVzIGFyZSBvcHRpb25hbAogICAgbXkgJERlZmluaXRpb25SZWYgPSAkUGFyYW17RGVmaW5pdGlvblJlZn07CiAgICBteSAkUm9sZXMgICAgICAgICA9ICREZWZpbml0aW9uUmVmLT57Um9sZXN9OwoKICAgIHJldHVybiB7IFN1Y2Nlc3MgPT4gMSB9IHVubGVzcyAkUm9sZXM7CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJFJldHVybkVycm9yID0gc3ViIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgRXJyb3IgICAgID0+ICRfWzBdLAogICAgICAgICAgICBFcnJvckFyZ3MgPT4gWyAoICRfWzFdIC8vICcnICksICggJF9bMl0gLy8gJycgKSBdLCAgICAjIG9ubHkgdHdvIGFyZ3MgYXJlIHN1cHBvcnRlZAogICAgICAgIH07CiAgICB9OwoKICAgIGlmICggcmVmICRSb2xlcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJXMgaXMgbm90IGEgSGFzaC59KSwKICAgICAgICAgICAgJ1JvbGVzJywKICAgICAgICApOwogICAgfQoKICAgICMgbm90aGluZyB0byBkbwogICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gdW5sZXNzICRSb2xlcy0+JSo7CgogICAgIyBnZXQgcm9sZSBsaXN0IGZvciBtYXBwaW5nIG5hbWUgdG8gSUQKICAgIG15ICVSb2xlTmFtZTJJRDsKICAgIHsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkUm9sZUxpc3QgICAgICAgICAgICAgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScsCiAgICAgICAgKTsKICAgICAgICAlUm9sZU5hbWUySUQgPSByZXZlcnNlICRSb2xlTGlzdC0+JSo7CiAgICB9CgogICAgbXkgJUltcG9ydFJvbGVzID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtJbXBvcnRSb2xlc30gLy8gW10gfTsKCiAgICAjIG92ZXJ3cml0ZSB3aXRob3V0IG1lcmN5CiAgICBST0xFX0tFWToKICAgIGZvciBteSAkUm9sZUtleSAoIGtleXMgJFJvbGVzLT4lKiApIHsKICAgICAgICBteSAkUm9sZVNvdXJjZSA9ICRSb2xlcy0+eyRSb2xlS2V5fTsKCiAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBwZXIgZGVmYXVsdCB0aGUga2V5IGluIHRoZSBSb2xlcyBoYXNoLAogICAgICAgICMgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFuIGV4cGxpY2l0IGF0dHJpYnV0ZSAnTmFtZScuCiAgICAgICAgIyBUaGlzIGFsbG93cyB0byB1c2UgYSBtb3JlIGNvbnZlbmllbnQgbmFtZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KICAgICAgICBteSAkUm9sZU5hbWUgPSAkUm9sZVNvdXJjZS0+e05hbWV9IC8vICRSb2xlS2V5OwoKICAgICAgICAjIFRoZSBhdHRyaWJ1dGUgVmVyc2lvbiBpcyBub3QgcmVxdWlyZWQgaW4gdGhlIFlBTUwuCiAgICAgICAgIyBXaGVuIG5vIFZlcnNpb24gaXMgcGFzc2VkIHRoZW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSByb2xlIGlzIHVzZWQuCiAgICAgICAgI2lmICggISRSb2xlU291cmNlLT57VmVyc2lvbn0gKSB7CiAgICAgICAgIyAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgIyAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGlzIG1pc3NpbmcgZm9yIHRoZSByb2xlICVzfSksCiAgICAgICAgIyAgICAgICAgJ1ZlcnNpb24nLAogICAgICAgICMgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAjICAgICk7CiAgICAgICAgI30KCiAgICAgICAgIyB0aGUgZmV0Y2hpbmcgaXMgZG9uZSB2aWEgdGhlIElECiAgICAgICAgbXkgJFJvbGVJRCA9ICRSb2xlTmFtZTJJRHskUm9sZU5hbWV9OwoKICAgICAgICBpZiAoICEkUm9sZUlEICYmICEkSW1wb3J0Um9sZXN7JFJvbGVOYW1lfSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7VGhlIHJvbGUgJXMgd2FzIG5vdCBmb3VuZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZG8gbm90IGNoZWNrIGFueSBmdXJ0aGVyLCBpZiB0aGUgcm9sZSBpcyBvbmx5IGFib3V0IHRvIGJlIGltcG9ydGVkCiAgICAgICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gaWYgJEltcG9ydFJvbGVzeyRSb2xlTmFtZX07CgogICAgICAgICMgVGhpcyBhbHJlYWR5IHBhcnNlcyB0aGUgWUFNTAogICAgICAgIG15ICRSb2xlRGVmaW5pdGlvbiA9ICRTZWxmLT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgUm9sZUlEICA9PiAkUm9sZUlELAogICAgICAgICAgICBWZXJzaW9uID0+ICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJvbGVEZWZpbml0aW9uICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgd2FzIG5vdCBmb3VuZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkUm9sZURlZmluaXRpb24gbmUgJ0hBU0gnICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgaXMgbm90IGEgaGFzaC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICEkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9ufQogICAgICAgICAgICB8fAogICAgICAgICAgICAhJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICAgICAgICAgfHwKICAgICAgICAgICAgISRSb2xlRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LT57U2VjdGlvbnN9CiAgICAgICAgICAgIHx8CiAgICAgICAgICAgIHJlZiAkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfS0+e1NlY3Rpb25zfSBuZSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7VGhlIHJvbGUgJXMgd2l0aCB2ZXJzaW9uICVzIGlzIG5vdCB2YWxpZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB0aGUgc2VjdGlvbnMgZnJvbSB0aGUgUm9sZSB0byB0aGUgU2VjdGlvbnMgb2YgdGhlIGNsYXNzLgogICAgICAgICMgTm90ZSB0aGF0IHRoZSBjb252ZW5pZW50IG5hbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyB1c2VkIGhlcmUKICAgICAgICBteSAkUm9sZVNlY3Rpb25zID0gJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntTZWN0aW9uc307CiAgICAgICAgZm9yIG15ICRSb2xlU2VjdGlvbktleSAoIGtleXMgJFJvbGVTZWN0aW9ucy0+JSogKSB7CgogICAgICAgICAgICAjIGlmIGEgY2xhc3MgaGFzIHZhbGlkIHJvbGVzLCB0aGVuIFNlY3Rpb25zIGlzIG5vdCByZXF1aXJlZAogICAgICAgICAgICAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLz0ge307CgogICAgICAgICAgICBteSAkU2VjdGlvbk5hbWUgPSBqb2luICc6OicsICRSb2xlS2V5LCAkUm9sZVNlY3Rpb25LZXk7CiAgICAgICAgICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57JFNlY3Rpb25OYW1lfSA9ICRSb2xlU2VjdGlvbnMtPnskUm9sZVNlY3Rpb25LZXl9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uUHJlcGFyZSgpCgpQcmVwYXJlIHRoZSBzeW50YXggb2YgYSBuZXcgZGVmaW5pdGlvbi4KCiAgICBteSAkVHJ1ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5fRGVmaW5pdGlvblByZXBhcmUoCiAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgVE9ETzogdGhlIG1ldGhvZCBpcyB1bnVzZWQuIEVpdGhlciByZW1vdmUgaXQgb3IgYWN0dWFsbHkgdXNlIGl0LgogICAgIyBjaGVjayBkZWZpbml0aW9uCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvblJlZn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb25SZWYhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17RGVmaW5pdGlvblJlZn0gfSApIHsKCiAgICAgICAgIyBzZXQgQ291bnRNaW4KICAgICAgICAkSXRlbS0+e0NvdW50TWlufSAvLz0gMTsKCiAgICAgICAgIyBzZXQgQ291bnRNYXgKICAgICAgICAkSXRlbS0+e0NvdW50TWF4fSB8fD0gMTsKCiAgICAgICAgIyBzZXQgQ291bnRNaW4KICAgICAgICBpZiAoICRJdGVtLT57Q291bnRNaW59ID4gJEl0ZW0tPntDb3VudE1heH0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnRNaW59ID0gJEl0ZW0tPntDb3VudE1heH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBDb3VudERlZmF1bHQKICAgICAgICAkSXRlbS0+e0NvdW50RGVmYXVsdH0gLy89IDE7CiAgICAgICAgaWYgKCAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPCAkSXRlbS0+e0NvdW50TWlufSApIHsKICAgICAgICAgICAgJEl0ZW0tPntDb3VudERlZmF1bHR9ID0gJEl0ZW0tPntDb3VudE1pbn07CiAgICAgICAgfQogICAgICAgIGlmICggJEl0ZW0tPntDb3VudERlZmF1bHR9ID4gJEl0ZW0tPntDb3VudE1heH0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnREZWZhdWx0fSA9ICRJdGVtLT57Q291bnRNYXh9OwogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIGlzIGRlZmluZWQuCiAgICAgICAgaWYgKCAkSXRlbS0+e1N1Yn0gJiYgcmVmICRJdGVtLT57U3VifSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgICAgICAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkZWxldGUgJEl0ZW0tPntTdWJ9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KCkKCkNyZWF0ZSBhIFlBTUwgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRlZmluaXRpb24gb2YgdGhlIGR5bmFtaWMgZmllbGRzIHJlbGV2YW50IGZvciB0aGlzIGNvbmZpZyBpdGVtLgpUaGUgZGVmaW5pdGlvbiBjYW4gYmUgcGFzc2VkIGluIGVpdGhlciBhcyBhIFlBTUwgc3RyaW5nIG9yIGFzIGEgUGVybCBkYXRhIHN0cnVjdHVyZS4KCiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb259LAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICApOwoKb3IKCiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElzSW5pdGlhbENhbGwgPSBkZWZpbmVkICRQYXJhbXtEZWZpbml0aW9ufTsgICAgIyB0aGUgWUFNTCBkZWZpbml0aW9uCgogICAgIyBJbiB0aGUgaW5pdGlhbCBjYWxsIHRoZSBEZWZpbml0aW9uIGlzIHBhc3NlZCBhcyBZQU1MLgogICAgIyBJbiB0aGUgc3Vic2VxdWVudCByZWN1cnNpdmUgY2FsbHMgRGVmaW5pdGlvblBlcmwgaXMgcGFzc2VkIGFzIGEgUGVybCBkYXRhIHN0cnVjdHVyZS4KICAgIGlmICgkSXNJbml0aWFsQ2FsbCkgewogICAgICAgICRQYXJhbXtEZWZpbml0aW9uUGVybH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICAjIG1lcmdlIHRoZSByb2xlcyBpbnRvIHRoZSBEZWZpbml0aW9uUmVmLCB0aGUgcGFzc2VkIGluIHJlZmVyZW5jZSBpcyBtb2RpZmllZCBpbiBwbGFjZQogICAgICAgICRTZWxmLT5fUHJvY2Vzc1JvbGVzKAogICAgICAgICAgICBEZWZpbml0aW9uUmVmID0+ICRQYXJhbXtEZWZpbml0aW9uUGVybH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlQ29udGVudEhhc2ggID0gcmVmICRQYXJhbXtEZWZpbml0aW9uUGVybH0gZXEgJ0hBU0gnICA/ICRQYXJhbXtEZWZpbml0aW9uUGVybH0tPiUqIDogKCk7CiAgICBteSBAQ29udGVudEFycmF5ID0gcmVmICRQYXJhbXtEZWZpbml0aW9uUGVybH0gZXEgJ0FSUkFZJyA/ICRQYXJhbXtEZWZpbml0aW9uUGVybH0tPkAqIDogKCk7CgogICAgIyBsb2csIGV2ZW4gd2hlbiBlbXB0eSBhcnJheXMgb3IgaGFzaGVzIGFyZSBhbGxvd2VkCiAgICBpZiAoICElQ29udGVudEhhc2ggJiYgIUBDb250ZW50QXJyYXkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb24gb3IgRGVmaW5pdGlvblBlcmwgYXMgaGFzaCBvciBhcnJheSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHJlY3Vyc2l2ZWx5IGNvbGxlY3QgdGhlIGR5bmFtaWMgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkczsKCiAgICAjIFRPRE86IHNwZWNpZnkgdGhlIHBhdGggd2hlcmUgREYgZmllbGRzIGFyZSBleHBlY3RlZCwgbWF5YmUgd2l0aCBKU09OOjpQYXRoCiAgICBLRVk6CiAgICBmb3IgbXkgJEtleSAoIGtleXMgJUNvbnRlbnRIYXNoICkgewogICAgICAgIGlmICggJEtleSBlcSAnREYnICkgewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc3sgJENvbnRlbnRIYXNoeyRLZXl9IH0gPSBcJUNvbnRlbnRIYXNoOwoKICAgICAgICAgICAgbmV4dCBLRVk7CiAgICAgICAgfQoKICAgICAgICAjIGRvIG5vdCBkZXNjZW5kIGludG8gSW50ZXJmYWNlcyBhbmQgR3JvdXBzLAogICAgICAgICMgYXMgdGhlc2UgbWF5IGJlIGVtcHR5IGFuZCB3b3VsZCBiZSBsb2dnZWQgYXMgZXJyb3JzCiAgICAgICAgIyBUT0RPOiBhcmUgSW50ZXJmYWNlcyBhbmQgR3JvdXBzIHN0aWxsIHVzZWQgPwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0ludGVyZmFjZXMnOwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0dyb3Vwcyc7CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnUGFnZXMnOwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ1JvbGVzJzsKCiAgICAgICAgbmV4dCBLRVkgdW5sZXNzIHJlZiAkQ29udGVudEhhc2h7JEtleX07CgogICAgICAgICMgZGVzY2VuZAogICAgICAgICVEeW5hbWljRmllbGRzID0gKAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgJFNlbGYtPl9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgRGVmaW5pdGlvblBlcmwgPT4gJENvbnRlbnRIYXNoeyRLZXl9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICApLAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRFbnRyeSAoQENvbnRlbnRBcnJheSkgewogICAgICAgIGlmICggcmVmICRFbnRyeSApIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgICAgICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCggRGVmaW5pdGlvblBlcmwgPT4gJEVudHJ5ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdGhlIHJlY3Vyc2l2ZSBjYWxscyBvbmx5IGNvbGxlY3QgdGhlIGR5bmFtaWMgZmllbGRzCiAgICByZXR1cm4gJUR5bmFtaWNGaWVsZHMgdW5sZXNzICRJc0luaXRpYWxDYWxsOwoKICAgICMgc29tZSBtb3JlIHdvcmsgdG8gZG8gaW4gdGhlIGluaXRpYWwgY2FsbAogICAgbXkgJVJldHVybkR5bmFtaWNGaWVsZHM7CiAgICB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAgICAgIyBTdG9yZSBjb25maWcgaXRlbSBjbGFzcyB0byBjaGVjayBmb3IgdmVyc2lvbiB0cmlnZ2VycyBpbiBkeW5hbWljIGZpZWxkIG9iamVjdCBoYW5kbGVyCiAgICAgICAgbXkgJENsYXNzSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgIG15ICRDbGFzcyA9ICRDbGFzc0lEMk5hbWUtPnsgJFBhcmFte0NsYXNzSUR9IH07CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICVEeW5hbWljRmllbGRzICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBOYW1lID0+ICROYW1lICk7CgogICAgICAgICAgICAjIG9ubHkgcmV0dXJuIHZhbGlkIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkLT4lKjsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGQtPntWYWxpZElEfSBlcSAnMSc7CgogICAgICAgICAgICAjIGZvciBzZXQgZmllbGRzIGFsc28gdGhlIGNvbnRhaW5lZCBkeW5hbWljIGZpZWxkcyBoYXZlIHRvIGJlIHZlcnNpb25lZAogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0gKTsKCiAgICAgICAgICAgICAgICBJTkNMVURFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZWRERiAoICREeW5hbWljRmllbGQtPntDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVEIHVubGVzcyAkSW5jbHVkZWRERi0+e0RGfTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJEluY2x1ZGVkREZDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJEluY2x1ZGVkREYtPntERn0gKTsKCiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgSUQgICAgICAgICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e0lEfSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57Q29uZmlnfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJEluY2x1ZGVkREZDb25maWctPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ0lDbGFzcyAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFJldHVybkR5bmFtaWNGaWVsZHN7JE5hbWV9ID0gewogICAgICAgICAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGQtPntDb25maWd9LCAgICAgICAjIG1heSBjb250YWluIGluY2x1ZGVkIERGCiAgICAgICAgICAgICAgICBGaWVsZFR5cGUgID0+ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9LAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICBDSUNsYXNzICAgID0+ICRDbGFzcywKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9NYW5kYXRvcnkgTGFiZWwgUmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZHN7JE5hbWV9eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXR1cm5EeW5hbWljRmllbGRzeyROYW1lfXskQXR0cmlidXRlfSA9ICREeW5hbWljRmllbGRzeyROYW1lfXskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHRoZSBpbml0aWFsIGNhbGwgcmV0dXJucyBZQU1MCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+RHVtcCgKICAgICAgICBEYXRhID0+IFwlUmV0dXJuRHluYW1pY0ZpZWxkcywKICAgICk7Cn0KCj1oZWFkMiBfRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKCkKClRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgbmVlZGVkIGZvciBJbXBvcnQvRXhwb3J0LgpOb3RlIHRoYXQgdGhlIHBhc3NlZCBpbiBkeW5hbWljIGZpZWxkIGNvbmZpZyBpcyBtb2RpZmllZCBpbiBwbGFjZS4KCiAgICAkRmllbGRDb25maWcgPSAkU2VsZi0+X0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnSW1wb3J0JywKICAgICk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhBY3Rpb24gRHluYW1pY0ZpZWxkQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBpZiAoIGdyZXAgeyAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtGaWVsZFR5cGV9IGVxICRfIH0gcXcoQWdlbnQgQ29uZmlnSXRlbSBDb25maWdJdGVtVmVyc2lvbiBDdXN0b21lckNvbXBhbnkgQ3VzdG9tZXJVc2VyIEZBUSBUaWNrZXQpICkgewoKICAgICAgICAjIG5lZWRlZCB0cmFuc2Zvcm1hdGlvbjogTmFtZSAtPiBJRAogICAgICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0ltcG9ydCcgKSB7CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfSApIHsKICAgICAgICAgICAgICAgIG15IEBRdWV1ZUlEczsKICAgICAgICAgICAgICAgIGZvciBteSAkUXVldWVOYW1lICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBRdWV1ZUlEcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkUXVldWVOYW1lICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gPSBcQFF1ZXVlSURzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAVHlwZUlEczsKICAgICAgICAgICAgICAgIGZvciBteSAkVHlwZU5hbWUgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVHlwZUlEcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxvb2t1cCggVHlwZUlEID0+ICRUeXBlTmFtZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gPSBcQFR5cGVJRHM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gKSB7CiAgICAgICAgICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAlewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgbXkgQENsYXNzSURzID0gbWFwCiAgICAgICAgICAgICAgICAgICAgeyAkQ2xhc3NOYW1lMklEeyRffSB9CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntDbGFzc0lEc30tPkAqOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317Q2xhc3NJRHN9ID0gXEBDbGFzc0lEczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBuZWVkZWQgdHJhbnNmb3JtYXRpb246IElEIC0+IE5hbWUKICAgICAgICBlbHNpZiAoICRQYXJhbXtBY3Rpb259IGVxICdFeHBvcnQnICkgewoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAUXVldWVOYW1lczsKICAgICAgICAgICAgICAgIGZvciBteSAkUXVldWVJRCAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUXVldWVOYW1lcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlTG9va3VwKCBRdWV1ZUlEID0+ICRRdWV1ZUlEICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gPSBcQFF1ZXVlTmFtZXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfSApIHsKICAgICAgICAgICAgICAgIG15IEBUeXBlTmFtZXM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFR5cGVJRCAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUeXBlTmFtZXMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVMb29rdXAoIFR5cGVJRCA9PiAkVHlwZUlEICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfSA9IFxAVHlwZU5hbWVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317Q2xhc3NJRHN9ICkgewogICAgICAgICAgICAgICAgbXkgJUNsYXNzSUQyTmFtZSA9ICV7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBteSBAQ2xhc3NOYW1lcyA9IG1hcAogICAgICAgICAgICAgICAgICAgIHsgJENsYXNzSUQyTmFtZXskX30gfQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57Q2xhc3NJRHN9LT5AKjsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSA9IFxAQ2xhc3NOYW1lczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317RmllbGRUeXBlfSBlcSAnTGVucycgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0ltcG9ydCcgKSB7CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9ID0gJEF0dHJpYnV0ZURGLT57SUR9OwogICAgICAgICAgICBteSAkUmVmZXJlbmNlREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e0lEfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRXhwb3J0JyApIHsKICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9ID0gJEF0dHJpYnV0ZURGLT57TmFtZX07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e05hbWV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNhbml0aXplIGNvbmZpZ3Mgb2Ygc2V0LWluY2x1ZGVkIERGcwogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAiRXhwb3J0IiAmJiBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57SW5jbHVkZX0gKSApIHsKICAgICAgICBJTkNMVURFRF9ERjoKICAgICAgICBmb3IgbXkgJEluY2x1ZGVkREYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0luY2x1ZGV9LT5AKiApIHsKCiAgICAgICAgICAgIGRlbGV0ZSAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259e0lEfTsKCiAgICAgICAgICAgICMgRmlsdGVyIG9mZiB0aGUgJ1BhcnRPZlNldCcgYXR0cmlidXRlLCBpdCBpcyBub3QgbmVjZXNzYXJ5IGFuZCBtYXkgY2F1c2UgaW5jb25zaXN0ZW5jeSBlcnJvcnMgbGF0ZXIgb24gaW1wb3J0CiAgICAgICAgICAgIGRlbGV0ZSAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259LT57Q29uZmlnfS0+e1BhcnRPZlNldH07CgogICAgICAgICAgICAjIHRyYW5zZm9ybSBpbmNsdWRlZCBjb25maWdzIHJlY3Vyc2l2ZWx5IG9uIGV4cG9ydAogICAgICAgICAgICAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259ID0gJFNlbGYtPl9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnRXhwb3J0JywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRXhwb3J0JyApIHsKICAgICAgICBkZWxldGUgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317SUR9OwogICAgfQoKICAgIHJldHVybiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uQ3JlYXRlQWZ0ZXJSb2xlQ3JlYXRlKCkKCkNvbmZpZyBpdGVtIGNsYXNzIGRlZmluaXRpb24gbWF5IGluY2x1ZGUgZHluYW1pYyByb2xlcy4gVGhpcyBtZWFucwp0aGF0IHRoZSB1c2Ugcm9sZXMgd2l0aG91dCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiBvZiB0aGUgcm9sZS4gVGhpcwptZWFucyB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgbWF5IGhhdmUgdG8gYmUgdXBkYXRlIHdoZW4gYSByb2xlIGlzCmNoYW5nZWQuCgogICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+X0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRGaWVsZENvbmZpZywKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0ltcG9ydCcsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uQ3JlYXRlQWZ0ZXJSb2xlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGhlIG5hbWUgb2YgdGhlIHJvbGVkIHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIG15ICRSb2xlTmFtZTsKICAgIHsKICAgICAgICBteSAkUm9sZUlEICAgICAgPSAkUGFyYW17Um9sZUlEfTsKICAgICAgICBteSAkUm9sZUlEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApOwogICAgICAgICRSb2xlTmFtZSA9ICRSb2xlSUQyTmFtZS0+eyRSb2xlSUR9OwogICAgfQoKICAgICMgTG9vcCBvdmVyIGFsbCBjbGFzc2VzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaW5jbHVkZSB0aGUgY2hhbmdlZCBkeW5hbWljIGZpZWxkCiAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgbXkgQENsYXNzSXNBZmZlY3RlZDsKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIGNtcCAkYiB9IGtleXMgJENsYXNzSUQyTmFtZS0+JSogKSB7CgogICAgICAgICMgRGVmaW5pdGlvbkdldCgpIGRvZXMgcmVzb2x2ZSB0aGUgcm9sZSBkZWNsYXJhdGlvbiwKICAgICAgICAjIGJ1dCB0aGUgYXR0cmlidXRlICdSb2xlcycgaXMgc3RpbGwgaW5jbHVkZWQKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uOwogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgICAgIG15ICRSb2xlcyA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntSb2xlc30gLy8ge307CgogICAgICAgIFJPTEVfS0VZOgogICAgICAgIGZvciBteSAkUm9sZUtleSAoIGtleXMgJFJvbGVzLT4lKiApIHsKICAgICAgICAgICAgbXkgJFJvbGVTb3VyY2UgPSAkUm9sZXMtPnskUm9sZUtleX07CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyByZWYgJFJvbGVTb3VyY2UgZXEgJ0hBU0gnOyAgICAjIGFuIGVtcHR5IGhhc2hyZWYgaXMgT0sKCiAgICAgICAgICAgICMgb25seSBkeW5hbWljIHJvbGVzLCB0aGF0IGlzIHJvbGVzIHdpdGhvdXQgdmVyc2lvbiwgYXJlIHJlbGV2YW50IGhlcmUKICAgICAgICAgICAgbmV4dCBST0xFX0tFWSBpZiAkUm9sZVNvdXJjZS0+e1ZlcnNpb259OwoKICAgICAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBwZXIgZGVmYXVsdCB0aGUga2V5IGluIHRoZSBSb2xlcyBoYXNoLAogICAgICAgICAgICAjIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhbiBleHBsaWNpdCBhdHRyaWJ1dGUgJ05hbWUnLgogICAgICAgICAgICAjIFRoaXMgYWxsb3dzIHRvIHVzZSBhIG1vcmUgY29udmVuaWVudCBuYW1lIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgogICAgICAgICAgICBteSAkRGVjbGFyZWRSb2xlTmFtZSA9ICRSb2xlU291cmNlLT57TmFtZX0gLy8gJFJvbGVLZXk7CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyAkRGVjbGFyZWRSb2xlTmFtZSBlcSAkUm9sZU5hbWU7CgogICAgICAgICAgICBwdXNoIEBDbGFzc0lzQWZmZWN0ZWQsICRDbGFzc0lEOwoKICAgICAgICAgICAgbGFzdCBST0xFX0tFWTsKICAgICAgICB9CiAgICB9CgogICAgIyBmb3JjZSBuZXcgdmVyc2lvbnMgZm9yIHRoZSBhZmZlY3RlZCBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKEBDbGFzc0lzQWZmZWN0ZWQpIHsKICAgICAgICBteSAkT2xkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRDbGFzc0lEICk7CiAgICAgICAgJFNlbGYtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJE9sZERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBGb3JjZSAgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWVuZCBJbnRlcm5hbDoKCj1jdXQKCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/CountLicenseLinks.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q291bnRMaWNlbnNlTGlua3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzIC0gRXZlbnQgaGFuZGxlciB0aGF0IGNvdW50IGxpY2Vuc2VzIHVzaW5nIGxpbmtlZCBDSSdzCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyBmb3IgY291bnQgbGljZW5zZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9MaW5rQ291bnQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJERvTGlua0NvdW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICduZXcgdmFsdWU6IDEnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGF0YSBFdmVudCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IENvbmZpZyBvcHRpb25zCiAgICBteSAlTGljZW5zZVNldHRpbmdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50JyktPiUqOwoKICAgIG15ICVEZXBsb3ltZW50U3RhdGVMaXN0ID0gJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApCiAgICB9OwoKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnRGVwbG95bWVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRDdXJyZW50RGVwbFN0YXRlSUQgID0gJFBhcmFte0RhdGF9e05ld307CiAgICAgICAgbXkgJFByZXZpb3VzRGVwbFN0YXRlSUQgPSAkUGFyYW17RGF0YX17T2xkfTsKICAgICAgICBteSAkQ3VycmVudERlcGxTdGF0ZSAgICA9ICREZXBsb3ltZW50U3RhdGVMaXN0eyRDdXJyZW50RGVwbFN0YXRlSUR9OwogICAgICAgIG15ICRQcmV2aW91c0RlcGxTdGF0ZSAgID0gJERlcGxveW1lbnRTdGF0ZUxpc3R7JFByZXZpb3VzRGVwbFN0YXRlSUR9OwoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewoKICAgICAgICAgICAgIyBpZiBhbGwgZGVwbG95bWVudCBzdGF0ZXMgYXJlIHZhbGlkIHdlIGRvIG5vdCBjaGVjayBjaGFuZ2VzCiAgICAgICAgICAgIG5leHQgU0VUVElORyBpZiAhJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtWYWxpZERlcGxTdGF0ZXN9OwoKICAgICAgICAgICAgbXkgQFZhbGlkRGVwbFN0YXRlcyAgICA9ICRMaWNlbnNlU2V0dGluZ3N7JEtleX17VmFsaWREZXBsU3RhdGVzfS0+QCo7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn07CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIGFueSB7ICRfIGVxICRDdXJyZW50RGVwbFN0YXRlIH0gQFZhbGlkRGVwbFN0YXRlcyApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT5fTGljZW5zZXNBY2NvdW50aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZVNldHRpbmdzID0+ICRMaWNlbnNlU2V0dGluZ3N7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGEgICAgICAgICAgID0+IC0xCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgKCBhbnkgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkQ3VycmVudERlcGxTdGF0ZSB9IEBWYWxpZERlcGxTdGF0ZXMgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJExpY2Vuc2VSZWZlcmVuY2VERiJ9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1EZWxldGUnICkgewoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewogICAgICAgICAgICBteSAkTGljZW5zZVJlZmVyZW5jZURGID0gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9OwogICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzICAgID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifTsKICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXtDdXJEZXBsU3RhdGV9IH0gQFZhbGlkRGVwbFN0YXRlczsKCiAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifS0+QCogKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEZWx0YSAgICAgICAgICAgPT4gMQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gPX4gL15Db25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXy8gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIFNFVFRJTkc6CiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVMaWNlbnNlU2V0dGluZ3MgKSB7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CiAgICAgICAgICAgIG15ICRUb3RhbExpY2Vuc2VzREYgICAgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1RvdGFsTGljZW5zZXNERn07CgogICAgICAgICAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgIkNvbmZpZ0l0ZW1EeW5hbWljRmllbGRVcGRhdGVfJExpY2Vuc2VSZWZlcmVuY2VERiIgKSB7CiAgICAgICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9IEBWYWxpZERlcGxTdGF0ZXM7CgogICAgICAgICAgICAgICAgbXkgQE9sZExpY2Vuc2VSZWZlcmVuY2VzTGlzdCA9ICggJFBhcmFte0RhdGF9e09sZFZhbHVlfSB8fCBbXSApLT5AKjsKICAgICAgICAgICAgICAgIG15IEBOZXdMaWNlbnNlUmVmZXJlbmNlc0xpc3QgPSAoICRQYXJhbXtEYXRhfXtWYWx1ZX0gICAgfHwgW10gKS0+QCo7CiAgICAgICAgICAgICAgICBteSAlRGVsdGE7CgogICAgICAgICAgICAgICAgT0xEOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChAT2xkTGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBPTEQgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9Kys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTkVXOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChATmV3TGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBORVcgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9LS07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgREVMVEE6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCBrZXlzICVEZWx0YSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERFTFRBIGlmICEkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9OwoKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICJDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXyRUb3RhbExpY2Vuc2VzREYiICkgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICAgICBteSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRSZWZlcmVuY2VEeW5hbWljRmllbGRJRCA9ICRSZWZlcmVuY2VEeW5hbWljRmllbGRDb25maWctPntJRH07CgogICAgICAgICAgICAgICAgbXkgJFRvdGFsTGljZW5zZXMgPSAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJFRvdGFsTGljZW5zZXNERiJ9OwogICAgICAgICAgICAgICAgbXkgJENvdW50TGlua3MgICAgPSAwOwoKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdCb3RoJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIExJTks6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgTElOSyBpZiAkTGluay0+e0R5bmFtaWNGaWVsZElEfSAhPSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkSUQ7CiAgICAgICAgICAgICAgICAgICAgJENvdW50TGlua3MrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQXZhaWxhYmxlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtBdmFpbGFibGVMaWNlbnNlc0RGfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdmFpbGFibGVEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVG90YWxMaWNlbnNlcyAtICRDb3VudExpbmtzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9MaWNlbnNlc0FjY291bnRpbmdVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSwKICAgICk7CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRBdmFpbGFibGVMaWNlbnNlc0RGID0gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317QXZhaWxhYmxlTGljZW5zZXNERn07CiAgICBteSAkU3VjY2VzcyAgICAgICAgICAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgJEF2YWlsYWJsZUxpY2Vuc2VzREYgPT4gJENvbmZpZ0l0ZW0tPnskQXZhaWxhYmxlTGljZW5zZXNERn0gKyAkUGFyYW17RGVsdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgZmllbGQgJyRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e0F2YWlsYWJsZUxpY2Vuc2VzREZ9JyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGVsdGF9IDwgMCApIHsKICAgICAgICBteSAkTWluaW11bUxpY2Vuc2VzICAgICAgICAgICAgICAgICAgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtNaW5pbXVtTGljZW5zZXN9OwogICAgICAgICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9ICs9ICRQYXJhbXtEZWx0YX07ICAgICMgU3luY2hyb25pemUgQ0kgc25hcHNob3QKCiAgICAgICAgaWYgKCAkTWluaW11bUxpY2Vuc2VzICYmICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9IDwgJE1pbmltdW1MaWNlbnNlcyApIHsKICAgICAgICAgICAgJFNlbGYtPl9Ob3RpZnkoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBMaWNlbnNlU2V0dGluZ3MgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc30KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfTm90aWZ5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayB3aGV0aGVyIGEgdGlja2V0IHdhcyBnZW5lcmF0ZWQgcHJldmlvdXNseSBhbmQgaXMgbm90IGNsb3NlZAogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJUxpbmtMaXN0ICAgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleTEgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICgga2V5cyAlTGlua0xpc3QgKSB7CiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBza2lwIG5vdGlmaWNhdGlvbiBpZiBhbiBvcGVuIHRpY2tldCB3YXMgYWxyZWFkeSBjcmVhdGVkCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0R5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAmJiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0R5bmFtaWNGaWVsZH0gfSA9PSAxCiAgICAgICAgICAgICYmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAiY2xvc2VkIgogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBzdWJzdGl0dXRpb25zCiAgICBteSAlU3Vic3RpdHV0aW9ucyA9ICgKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTlVNQkVSPicgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17TnVtYmVyfSwKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTkFNRT4nICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17TmFtZX0sCiAgICAgICAgJzxPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX0FWQUlMPicgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSB9LAogICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9MSUNFTlNFU19NSU4+JyAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317TWluaW11bUxpY2Vuc2VzREZ9IH0sCiAgICApOwoKICAgIFNVQktFWToKICAgIGZvciBteSAkS2V5ICggKCAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RpdGxlfSAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17VGV4dH0gKSA9fiAvPE9UT0JPX0NPTkZJR0lURU1fKFtePl0rKT4vZyApIHsKICAgICAgICBuZXh0IFNVQktFWSBpZiBleGlzdHMgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In07CiAgICAgICAgbmV4dCBTVUJLRVkgaWYgISRQYXJhbXtDb25maWdJdGVtfXskS2V5fTsKCiAgICAgICAgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In0gPSAkUGFyYW17Q29uZmlnSXRlbX17JEtleX0gLy8gJyc7CiAgICB9CgogICAgbXkgJFRpY2tldFRpdGxlICAgICAgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RpdGxlfTsKICAgIG15ICROb3RpZmljYXRpb25UZXh0ID0gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUZXh0fTsKICAgIGZvciBteSAkS2V5ICgga2V5cyAlU3Vic3RpdHV0aW9ucyApIHsKICAgICAgICAkVGlja2V0VGl0bGUgICAgICA9fiBzLyRLZXkvJFN1YnN0aXR1dGlvbnN7ICRLZXkgfS9nOwogICAgICAgICROb3RpZmljYXRpb25UZXh0ID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICB9CgogICAgIyBhbGwgY2hlY2tzIGZpbmlzaGVkIC0+IGNyZWF0ZSBhIHRpY2tldCBhcyBub3RpZmljYXRpb24KICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCksCiAgICAgICAgVGl0bGUgICAgICAgID0+ICRUaWNrZXRUaXRsZSwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtRdWV1ZX0sCiAgICAgICAgTG9jayAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17TG9ja30gICAgICAgICB8fCAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtQcmlvcml0eX0gICAgIHx8ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U3RhdGV9ICAgICAgICB8fCAnbmV3JywKICAgICAgICBUeXBlICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUeXBlfSAgICAgICAgIHx8ICcnLAogICAgICAgIFNlcnZpY2UgICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1NlcnZpY2V9ICAgICAgfHwgJycsCiAgICAgICAgU0xBICAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U0xBfSAgICAgICAgICB8fCAnJywKICAgICAgICBDdXN0b21lcklEICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtDdXN0b21lcklEfSAgIHx8ICcnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0N1c3RvbWVyVXNlcn0gfHwgJycsCiAgICAgICAgT3duZXJJRCAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17T3duZXJJRH0gICAgICB8fCAnMScsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJFRpY2tldElEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGNyZWF0ZSBhIHRpY2tldCBmb3IgQ29uZmlnSXRlbUlEOiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZG8gYXJ0aWNsZSBkYiBpbnNlcnQKICAgIG15ICRBcnRpY2xlT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwogICAgbXkgJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcgKTsKICAgIG15ICRBcnRpY2xlSUQgICAgICAgICAgICAgICAgICAgID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U2VuZGVyVHlwZX0gfHwgJ3N5c3RlbScsCiAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJE5vdGlmaWNhdGlvblRleHQsCiAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gIlwlXCVDTURCTm90aWZpY2F0aW9uIiwKICAgICk7CgogICAgIyBjbG9zZSB0aWNrZXQgaWYgYXJ0aWNsZSBjcmVhdGUgZmFpbGVkIQogICAgaWYgKCAhJEFydGljbGVJRCApIHsKICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgcHJvY2VzcyB0aWNrZXQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxpbmsgdGlja2V0IGFuZCBjb25maWcgaXRlbQogICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9LAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFRpY2tldElELAogICAgICAgIFR5cGUgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgIHRvIDEsIHRvIG1hcmsgdGhlIHRpY2tldCBhcyBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17RHluYW1pY0ZpZWxkfSwKICAgICk7CiAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DefinitionConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRlZmluaXRpb25Db25maWdJdGVtVXBkYXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyh1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUgLSBFdmVudCBoYW5kbGVyIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgb24gZGVmaW5pdGlvbiBjaGFuZ2VzCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEV2ZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJEV2ZW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0RlZmluaXRpb25DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBMYXN0RGVmaW5pdGlvbklEID0+ICRMYXN0RGVmaW5pdGlvbklELAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAkUGFyYW17RXZlbnR9IG5lICdEZWZpbml0aW9uQ3JlYXRlJzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERlZmluaXRpb25JRCBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBvbmx5IGNvbnNpZGVyIHByb2R1Y3RpdmUgYW5kIHByZXByb2R1Y3RpdmUgQ0lzCiAgICBteSAkU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIG9ubHkgY29uc2lkZXIgcHJvZHVjdGl2ZSBhbmQgcHJlcHJvZHVjdGl2ZSBDSXMKICAgIG15ICVBZmZlY3RlZENJcyA9ICREQk9iamVjdC0+U2VsZWN0TWFwcGluZygKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaS5pZCwgY2kubGFzdF92ZXJzaW9uX2lkIEZST00gY29uZmlnaXRlbSBjaScKICAgICAgICAgICAgLiAiIFdIRVJFIGNpLmNsYXNzX2lkID0gPyBBTkQgY2kuY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0RhdGF9e0NsYXNzSUR9IF0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJUFmZmVjdGVkQ0lzOwoKICAgICMgYWRkIGhpc3RvcnkgZW50cmllcwogICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJElELAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0RlZmluaXRpb25VcGRhdGUnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0RlZmluaXRpb25JRH0iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGlmIHdlIGFyZSBjaGFuZ2luZyByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMsIHdlIG5lZWQgdG8gc3luY2hyb25pc2UgdGhlIGxpbmsgdGFibGUgYWNjb3JkaW5nbHkKICAgICMgdGhpcyBpcyBkb25lIGJlZm9yZSBWZXJzaW9uQWRkLCB3aGljaCB3aWxsIGluZXZpdGFibHkgd3JpdGUgdGhlIGxpbmtzLCB0b28sIHdpdGggdGhlIG5ldyBDb25maWcgYWxyZWFkeQogICAgaWYgKCAkUGFyYW17RGF0YX17T2xkRGVmaW5pdGlvbn0gJiYgJFBhcmFte0RhdGF9e09sZERlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn0gKSB7CiAgICAgICAgbXkgJE9sZER5bmFtaWNGaWVsZFJlZiA9ICRQYXJhbXtEYXRhfXtPbGREZWZpbml0aW9ufXtEeW5hbWljRmllbGRSZWZ9IC8vIHt9OwogICAgICAgIG15ICREZWZpbml0aW9uUmVmICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e0NsYXNzSUR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RhdGF9LT57RGVmaW5pdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICBteSBARHluYW1pY0ZpZWxkTmFtZXMgPSB1bmlxKCBrZXlzICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfS0+JSosIGtleXMgJE9sZER5bmFtaWNGaWVsZFJlZi0+JSogKTsKICAgICAgICBteSAlQ29uZmlnSXRlbTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoQER5bmFtaWNGaWVsZE5hbWVzKSB7CiAgICAgICAgICAgIG15ICROZXdERiA9ICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfXskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRPbGRERiA9ICRPbGREeW5hbWljRmllbGRSZWYtPnskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRERiAgICA9ICROZXdERiAvLyAkT2xkREY7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJERGLT57Q29uZmlnfXtSZWZlcmVuY2VkT2JqZWN0VHlwZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkREYtPntDb25maWd9e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9fiAnXklUU01Db25maWdJdGVtJzsKCiAgICAgICAgICAgIG15ICRTa2lwID0gMTsKICAgICAgICAgICAgaWYgKCAkTmV3REYgJiYgJE9sZERGICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRDb25maWcgKHF3L0xpbmtUeXBlIExpbmtSZWZlcmVuY2luZ1R5cGUgTGlua0RpcmVjdGlvbi8pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICggJE5ld0RGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApIG5lICggJE9sZERGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2tpcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNraXAgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkU2tpcDsKCiAgICAgICAgICAgIElEUzoKICAgICAgICAgICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17JElEfSAvLz0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkQ29uZmlnSXRlbXskSUR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifTsKCiAgICAgICAgICAgICAgICBuZXh0IElEUyB1bmxlc3MgJFZhbHVlICYmICRWYWx1ZS0+WzBdOwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5TeW5jTGlua1RhYmxlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICROZXdERiwKICAgICAgICAgICAgICAgICAgICBPbGREeW5hbWljRmllbGRDb25maWcgICA9PiAkT2xkREYsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1WZXJzaW9uSUQgICAgID0+ICRDb25maWdJdGVteyRJRH17VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbXskSUR9e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIGRlZmluaXRpb24gdXBkYXRlcyBzaG91bGQgdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbiwgY2FsbCBWZXJzaW9uQWRkCiAgICBpZiAoIGdyZXAgeyAkXyBlcSAnRGVmaW5pdGlvblVwZGF0ZScgfSBAeyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uVHJpZ2dlcn0gLy8gW10gfSApIHsKICAgICAgICBmb3IgbXkgJElEICgga2V5cyAlQWZmZWN0ZWRDSXMgKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiB3ZSBkbyBub3QgbmVlZCB0byBhZGQgYSBuZXcgdmVyc2lvbiwgdXBkYXRlIGFsbCBhZmZlY3RlZCB2ZXJzaW9ucyBhbmQgY2xlYXIgdGhlIGNhY2hlCiAgICBlbHNlIHsKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24nCiAgICAgICAgICAgICAgICAuICcgU0VUIGRlZmluaXRpb25faWQgPSA/JwogICAgICAgICAgICAgICAgLiAnIFdIRVJFIGlkIElOICgnCiAgICAgICAgICAgICAgICAuICcgU0VMRUNUIGxhc3RfdmVyc2lvbl9pZCcKICAgICAgICAgICAgICAgIC4gJyBGUk9NIGNvbmZpZ2l0ZW0nCiAgICAgICAgICAgICAgICAuICcgV0hFUkUgY2xhc3NfaWQgPSA/JwogICAgICAgICAgICAgICAgLiAiIEFORCBjdXJfZGVwbF9zdGF0ZV9pZCBJTiAoICREZXBsU3RhdGVTdHJpbmcgKSIKICAgICAgICAgICAgICAgIC4gJyApJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RGF0YX17RGVmaW5pdGlvbklEfSwgXCRQYXJhbXtEYXRhfXtDbGFzc0lEfSBdLAogICAgICAgICk7CgogICAgICAgICMgY2xlYXIgdGhlIGNhY2hlCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgICAgIGZvciBteSAkSUQgKCBrZXlzICVBZmZlY3RlZENJcyApIHsKICAgICAgICAgICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAkREZEYXRhLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQWZmZWN0ZWRDSXN7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+ICRERkRhdGEsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DoHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5IC0gRXZlbnQgaGFuZGxlciB0aGF0IHJlY29yZHMgdGhlIGhpc3RvcnkKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUnVuKCkKClRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIGV2ZW50LgoKICAgICREb0hpc3RvcnlPYmplY3QtPlJ1bigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJ25ldyB2YWx1ZTogMScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhIEV2ZW50IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBkeW5hbWljIGZpZWxkcyBmaXJzdCwgbW9zdCBldmVudHMgd2lsbCBiZSB0aGlzLAogICAgIyBSZWFkYWJsZVZhbHVlIGFuZCBSZWFkYWJsZU9sZFZhbHVlIGFyZSBleHBlY3RlZCB0byBiZSBzdHJpbmdzCiAgICBpZiAoICRQYXJhbXtFdmVudH0gPX4gbS9eQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8vICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0hpc3RvcnlBZGQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdWYWx1ZVVwZGF0ZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0ZpZWxkTmFtZX0lJSRQYXJhbXtEYXRhfXtSZWFkYWJsZU9sZFZhbHVlfSUlJFBhcmFte0RhdGF9e1JlYWRhYmxlVmFsdWV9IiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBkdWUgdG8gY29uc2lzdGVuY3kgd2l0aCB0aWNrZXQgaGlzdG9yeSwgd2UgbmVlZCBIaXN0b3J5VHlwZQogICAgJFBhcmFte0hpc3RvcnlUeXBlfSA9ICRQYXJhbXtFdmVudH07CgogICAgIyBkaXNwYXRjaCB0YWJsZSBmb3IgYWxsIGV2ZW50cwogICAgbXkgJURpc3BhdGNoZXIgPSAoCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSAgICAgID0+IFwmX1JldHVybiwKICAgICAgICBDb25maWdJdGVtRGVsZXRlICAgICAgPT4gXCZfQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICBMaW5rQWRkICAgICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBMaW5rRGVsZXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBOYW1lVXBkYXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBJbmNpZGVudFN0YXRlVXBkYXRlICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZXBsb3ltZW50U3RhdGVVcGRhdGUgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZWZpbml0aW9uVXBkYXRlICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uQ3JlYXRlICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uVXBkYXRlICAgICAgICAgPT4gXCZfUmV0dXJuLAogICAgICAgIERlZmluaXRpb25DcmVhdGUgICAgICA9PiBcJl9SZXR1cm4sCiAgICAgICAgVmVyc2lvbkRlbGV0ZSAgICAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudEFkZFBvc3QgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudERlbGV0ZVBvc3QgID0+IFwmX0hpc3RvcnlBZGQsCiAgICApOwoKICAgICMgZXJyb3IgaGFuZGxpbmcKICAgIGlmICggIWV4aXN0cyAkRGlzcGF0Y2hlcnsgJFBhcmFte0V2ZW50fSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnbm9uIGV4aXN0ZW50IGhpc3RvcnkgdHlwZTogJyAuICRQYXJhbXtFdmVudH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2FsbCBjYWxsYmFjawogICAgbXkgJFN1YiA9ICREaXNwYXRjaGVyeyAkUGFyYW17RXZlbnR9IH07CiAgICAkU2VsZi0+JFN1YigKICAgICAgICAlUGFyYW0sCiAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX1JldHVybigpCgpkbyBub3RoaW5nCgo9Y3V0CgpzdWIgX1JldHVybiB7IHJldHVybiAxIH0KCj1oZWFkMiBfQ29uZmlnSXRlbURlbGV0ZSgpCgpoaXN0b3J5J3MgZXZlbnQgaGFuZGxlciBmb3IgQ29uZmlnSXRlbURlbGV0ZQoKPWN1dAoKc3ViIF9Db25maWdJdGVtRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgaGlzdG9yeQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlEZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9IaXN0b3J5QWRkKCkKCmhpc3RvcnkncyBkZWZhdWx0IGV2ZW50IGhhbmRsZXIuCgo9Y3V0CgpzdWIgX0hpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFkZCBoaXN0b3J5IGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlBZGQoCiAgICAgICAgJVBhcmFtLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/RebuildACLPreselectionCache.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OlJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7CiAgICAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/EvaluateScriptFields.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkV2YWx1YXRlU2NyaXB0RmllbGRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkJhc2VTY3JpcHQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEYXRhIEV2ZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJEV2ZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVNjcmlwdCcpLT5HZXRVcGRhdGVFdmVudHMoKTsKCiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEV2ZW50cyk7CiAgICByZXR1cm4gMSBpZiAhJEV2ZW50cy0+eyAkUGFyYW17RXZlbnR9IH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJEZpZWxkSUQgKCAkRXZlbnRzLT57ICRQYXJhbXtFdmVudH0gfS0+QCogKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICk7CgogICAgICAgICMgaWYgd2Ugc3RvcmUgc2V0IHZhbHVlcywgc3RvcmUgYXMgbWFueSB2YWx1ZXMgYXMgdGhlcmUgYXJlIGluIHRpY2tldCBkYXRhIGZvciB0aGUgc2V0CiAgICAgICAgbXkgJFZhbHVlOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSApIHsKICAgICAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICAgICAgbXkgJFNldENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICREeW5hbWljRmllbGQtPntDb25maWd9e1BhcnRPZlNldH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJFNldFZhbHVlICggJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRTZXRDb25maWctPntOYW1lfSJ9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICVTZXRWYWx1ZXNNYXBwZWQgPSBtYXAgeyAoICJEeW5hbWljRmllbGRfJF8iID0+ICRTZXRWYWx1ZS0+eyRffSApIH0ga2V5cyAkU2V0VmFsdWUtPiUqOwogICAgICAgICAgICAgICAgcHVzaCBAVmFsdWVzLCAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RXZhbHVhdGUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0ICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWVzTWFwcGVkLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRWYWx1ZSA9IFxAVmFsdWVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkV2YWx1YXRlKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3JlICAgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/FieldRestrictions.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMgLSBmdW5jdGlvbnMgdG8gcmVzdHJpY3QgRHluYW1pY0ZpZWxkIGNvbnRlbnQgYW5kIGZpZWxkIHZpc2liaWxpdHkgZm9yIHZhcmlvdXMgZm9ybXMKCj1oZWFkMSBTWU5PUFNJUwoKQ3JlYXRlIEZpZWxkUmVzdHJpY3Rpb25zIG9iamVjdAogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpEb24ndCB1c2UgdGhlIGNvbnN0cnVjdG9yIGRpcmVjdGx5LCB1c2UgdGhlIE9iamVjdE1hbmFnZXIgaW5zdGVhZDoKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIEdldEZpZWxkU3RhdGVzKCkKClJldHVybnMgcG9zc2libGUgdmFsdWVzLCBzZWxlY3RlZCB2YWx1ZXMsIGFuZCB2aXNpYmlsaXR5IG9mIGZpZWxkcwoKICAgIG15ICRMb29wUHJvdGVjdGlvbiA9IDEwMDsKCiAgICBteSAlU3RhdGVzID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5HZXRGaWVsZFN0YXRlcygKICAgICAgICBDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0+ICRDb25maWdJdGVtT2JqZWN0LAogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3MsCiAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IHt9LAogICAgICAgIEN1c3RvbWVyVXNlciAgICAgICAgICAgICAgPT4gJEN1c3RvbWVyVXNlciwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRBY3Rpb24sCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgIH0sCiAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLCAgICAgICAgICAgICAgIyByZXN0cmljdHMgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBjYWxsczsgcGFzc2luZyBhIHJlZmVyZW5jZSB0byAndW5kZWYnIHdpbGwgbGVhZCB0byBhIHdhcm5pbmcKICAgICAgICBBdXRvc2VsZWN0ICAgICAgICAgICAgICAgID0+IHt9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsOyBkZWZhdWx0OiB1bmRlZjsge0ZpZWxkID0+IDAsMSwyLCAuLi59CiAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAwfDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFBvc3NpYmxlVmFsdWVzT25seSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWw7IGFzc3VtZSBhbGwgZmllbGRzIGFyZSB2aXNpYmxlIGUuZy4gZm9yIHNldHMKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICVTdGF0ZXMgPSAoCiAgICAgICAgRmllbGRzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICBJbmRleCAgICAgICAgICAgPT4gPEluZGV4IHdpdGhpbiBAeyAkRHluYW1pY0ZpZWxkQ29uZmlncyB9PgogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+ICRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgfQogICAgICAgICAgICAuLi4KICAgICAgICBdLAogICAgICAgIFZpc2liaWxpdHkgPT4gewogICAgICAgICAgICBGaWVsZDEgID0+IDEsCiAgICAgICAgICAgIEZpZWxkMiAgPT4gMCwKICAgICAgICB9LAogICAgICAgIE5ld1ZhbHVlcyA9PiB7CiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIEdldEZpZWxkU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGZvciAocXcoQWN0aW9uIEdldFBhcmFtKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbiBjb25maWcgaXRlbSBpZCBpZiBpdCBpcyAnTkVXJwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICBkZWxldGUgJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQgb3IgQ3VzdG9tZXJVc2VySUQhIgogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGRlY3JlbWVudCBvbiB1bmRlZiByZXN1bHQgaW4gJy0xJywgc28gaWYgTG9vcFByb3RlY3Rpb24gaXMgdW5kZWYsIGZ1bmN0aW9uIGFib3J0cyBoZXJlCiAgICBpZiAoICR7ICRQYXJhbXtMb29wUHJvdGVjdGlvbn0gfS0tIDwgMSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJhbiBpbnRvIHVucmVzb2x2YWJsZSBsb29wISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHRoZSBjdXJyZW50IHZpc2liaWxpdHkKICAgIG15ICRDYWNoZWRWaXNpYmlsaXR5ID0gJFBhcmFte0FDTFByZXNlbGVjdGlvbn0KICAgICAgICA/ICRTZWxmLT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0hpZGRlbkZpZWxkcycsCiAgICAgICAgICAgIEtleSAgPT4gJFBhcmFte0Zvcm1JRH0sCiAgICAgICAgKQogICAgICAgIDogdW5kZWY7CgogICAgIyBkb24ndCBza2lwIGFueSBmaWVsZHMgaW5pdGlhbGx5IG9yIGlmIEFDTFByZXNlbGN0aW9uIGlzIGRpc2FibGVkCiAgICBteSAkQ29tcGxldGVSdW4gPSAkQ2FjaGVkVmlzaWJpbGl0eSA/IDAgOiAxOwoKICAgICMgc2hvcnRjdXQKICAgIG15ICRERlBhcmFtID0gJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9OwoKICAgICMgVE9ETzogbmVlZGVkLCBiZWNhdXNlIENvbmZpZ0l0ZW1BY2wgdGFtcGVycyB3aXRoIHRoZSBEeW5hbWljRmllbGQgcmVmZXJlbmNlLCBpZiBDb25maWdJdGVtSUQgaXMgZ2l2ZW4KICAgIGZvciBteSAkTmFtZSAoIGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0gLy89ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfTsgICAgIyBhbGwga2V5cyBoYXZlIHRvIGV4aXN0CiAgICB9CgogICAgIyB0cmFuc2Zvcm0gZHluYW1pYyBmaWVsZCBkYXRhIGludG8gREZOYW1lID0+IERGTmFtZSBwYWlyCiAgICBteSAlRHluYW1pY0ZpZWxkQWNsID0gbWFwIHsgJF8gPT4gJF8gfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSo7CgogICAgbXkgJVVzZXJQcmVmZXJlbmNlczsKICAgIG15ICVWaXNpYmlsaXR5OwogICAgbXkgJFZpc0NoZWNrID0gMTsKCiAgICAjIGluIHRoZSBzcGVjaWFsIGNhc2Ugb2YgYXNzdW1pbmcgdmlzaWJsZSBmaWVsZHMgd2Ugc3RpbGwgd2FudCB0byBrbm93IHdoZXRoZXIgd2UgZG8gYSAkQ29tcGxldGVSdW4KICAgICMgYnV0IHdlIGRpc2NhcmQgYWxsIHZpc2liaWxpdHkgY2hlY2tzCiAgICBpZiAoICRQYXJhbXtQb3NzaWJsZVZhbHVlc09ubHl9ICkgewogICAgICAgICRWaXNDaGVjayA9IDA7CgogICAgICAgICMgdHJlYXQgYWxsIGZpZWxkcyBhcyBhbHdheXMgdmlzaWJsZQogICAgICAgICRDYWNoZWRWaXNpYmlsaXR5ID0gewogICAgICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAxIH0ga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGluIHRoZSBzdGFuZGFyZCBjYXNlIGFuZCBpZiB3ZSB1c2UgQUNMLVByZXNlbGVjdGlvbiBvbmx5IHZpcyBjaGVjayBpZiBuZWNlc3NhcnkKICAgIGVsc2lmICggISRDb21wbGV0ZVJ1biApIHsKICAgICAgICAkVmlzQ2hlY2sgPSAwOwoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgZm9ybS1BQ0xzIGFyZSBhZmZlY3RlZCBieSBhbnkgb2YgdGhlIGNoYW5nZWQgZWxlbWVudHMKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBhdXRvdml2aWZpY2F0aW9uIGNvdWxkIGJlIGF2b2lkZWQKICAgICAgICAgICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtSdWxlc317Rm9ybX17JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgJFZpc0NoZWNrID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyRFbGVtZW50fSApIHsKICAgICAgICAgICAgICAgICRWaXNDaGVjayA9IDE7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbGFzdCBFTEVNRU5UOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkVmlzQ2hlY2spIHsKCiAgICAgICAgIyBjYWxsIGNvbmZpZyBpdGVtIEFDTHMgZm9yIER5bmFtaWNGaWVsZHMgdG8gY2hlY2sgZmllbGQgdmlzaWJpbGl0eQogICAgICAgIG15ICRBQ0xSZXN1bHQgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnRm9ybScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkQWNsLAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMUmVzdWx0KSB7CiAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gMCB9IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKjsKICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfID0+IDEgfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSo7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB1c2VyIHByZWZlcmVuY2VzIGZvciBwb3NzaWJsZSB1c2VyIGRlZmF1bHQgdmFsdWVzCiAgICAgICAgaWYgKCAkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAgICAgJVVzZXJQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICgkQ2FjaGVkVmlzaWJpbGl0eSkgewogICAgICAgICVWaXNpYmlsaXR5ID0gJXskQ2FjaGVkVmlzaWJpbGl0eX07CiAgICB9CgogICAgbXkgKCAlRmllbGRzLCAlTmV3VmFsdWVzLCAlU2V0cyApOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkREZOYW1lICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICk7CgogICAgICAgICMgMS4gaGFuZGxlIGhpZGRlbiBmaWVsZHMKICAgICAgICBpZiAoICVWaXNpYmlsaXR5ICYmICRWaXNpYmlsaXR5eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAoICRDYWNoZWRWaXNpYmlsaXR5ICYmICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApOwoKICAgICAgICAgICAgIyB2YWx1ZXMgb2YgdmlzaWJsZSBmaWVsZHMgdHVybmluZyBpbnZpc2libGUgYXJlIGRlbGV0ZWQgb3Igc2V0IHRvIHZhbHVlcyBvZiBjb25maWcgaXRlbSBkYXRhIGlmIHByZXNlbnQKICAgICAgICAgICAgbXkgJFVwZGF0ZVJlcXVpcmVkID0gIWRlZmluZWQgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSA/IDAgOgogICAgICAgICAgICAgICAgcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkKICAgICAgICAgICAgICAgID8KICAgICAgICAgICAgICAgICggSXNBcnJheVJlZldpdGhEYXRhKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgPyAxIDogMCApCiAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID1+IG0vXi0/JC8gPyAwIDogMTsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YTsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlSXNEaWZmZXJlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZTEgICAgICAgICAgICAgPT4gJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUyICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkVmFsdWVJc0RpZmZlcmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAkVXBkYXRlUmVxdWlyZWQgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFVwZGF0ZVJlcXVpcmVkID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdmFsdWVzIGFyZSBwcmVzZW50LCBGaWVsZHJlc3RyaWN0aW9ucyBoYXZlIHRvIGJlIGNoZWNrZWQgYWdhaW4gZm9yIHRoZSBuZXdseSBjaGFuZ2VkIGVsZW1lbnRzCiAgICAgICAgICAgIGlmICgkVXBkYXRlUmVxdWlyZWQpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBlbnRyeSBhbmQgcmVtZW1iZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgPyBbXSA6ICcnOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBhIGNvbmZpZyBpdGVtIGRhdGEgdmFsdWUgYW5kIHVzZSB0aGVtLCBpZiBzbwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGZpZWxkcyBoYXZlIHRvIGJlIGFkZGVkIHRvIGNvcnJlY3RseSByZW1vdmUgYWxsIGNvbnRlbnQKICAgICAgICAgICAgICAgIGlmICggISRJc0FDTFJlZHVjaWJsZSApIHsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7fSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CgogICAgICAgICMgMi4gaGFuZGxlIGZpZWxkcyB3aGljaCBzZXQgdGhlaXIgZHluYW1pYyBjb250ZW50IHRoZW1zZWx2ZXMKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0fS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnU2V0c0R5bmFtaWNDb250ZW50JywKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAlQ29udGVudCA9ICRQYXJhbXtEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0fS0+R2V0RmllbGRTdGF0ZSgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENhY2hlZFZpc2liaWxpdHkgICAgICAgID0+ICRDYWNoZWRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0ID0+ICRTZWxmLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBpZiBhdXRvc2VsZWN0aW9uIGlzIGFjdGl2YXRlZCBhbmQgZmllbGQgY2hhbmdlZCBpbiBhbnkgd2F5CiAgICAgICAgICAgIGlmICggJENvbnRlbnR7UG9zc2libGVWYWx1ZXN9ICYmICRQYXJhbXtBdXRvc2VsZWN0fSAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfSApIHsKCiAgICAgICAgICAgICAgICBteSAkU2VsZWN0ZWQgPSBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ID8gJENvbnRlbnR7TmV3VmFsdWV9IDogJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKCiAgICAgICAgICAgICAgICBteSAkQXV0b3NlbGVjdGVkID0gJFNlbGYtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgQ3VycmVudCAgICAgICAgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+ICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRBdXRvc2VsZWN0ZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnR7TmV3VmFsdWV9ID0gJEF1dG9zZWxlY3RlZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgbmV3IHZhbHVlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBpZiAoIGV4aXN0cyAkQ29udGVudHtOZXdWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJENvbnRlbnR7TmV3VmFsdWV9OwogICAgICAgICAgICAgICAgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRDb250ZW50e05ld1ZhbHVlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCBleGlzdHMgJENvbnRlbnR7UG9zc2libGVWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkQ29udGVudHtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggZXhpc3RzICRDb250ZW50e1NldH0gKSB7CiAgICAgICAgICAgICAgICAlU2V0cyA9ICgKICAgICAgICAgICAgICAgICAgICAlU2V0cywKICAgICAgICAgICAgICAgICAgICAkQ29udGVudHtTZXR9LT4lKiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ICkgewogICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgTm90QUNMUmVkdWNpYmxlID0+IDEsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntSZWFkb25seX07CgogICAgICAgICMgMy4gc2tpcCBub24gQUNMIHJlZHVjaWJsZSBmaWVsZHMuLi4KICAgICAgICBpZiAoICEkSXNBQ0xSZWR1Y2libGUgKSB7CgogICAgICAgICAgICAjIC4uLmJ1dCBzZXQgYWN0dWFsIG9yIGRlZmF1bHQgdmFsdWVzIG9mIHJlYXBwZWFyaW5nIGZpZWxkcyBmaXJzdAogICAgICAgICAgICBpZiAoICRDYWNoZWRWaXNpYmlsaXR5ICYmICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90QUNMUmVkdWNpYmxlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJENoZWNrQUNMcyA9IDE7CgogICAgICAgICMgNC4gaGFuZGxlIGFsbCBzdGFuZGFyZCBBQ0wgcmVkdWNpYmxlIGZpZWxkcwogICAgICAgICMgZXZhbHVhdGUgcHJlc2VsZWN0aW9uCiAgICAgICAgaWYgKCAhJENvbXBsZXRlUnVuICkgewogICAgICAgICAgICBpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0gKSB7CgogICAgICAgICAgICAgICAgIyBubyB3YXkgdG8gdGVsbCBpZiB0aGVyZSBhcmUgYWNscyB3aGljaCBjb25uZWN0IHRoZSBjaGFuZ2VkIGVsZW1lbnQgdG8gdGhlIGFmZmVjdGVkIGZpZWxkCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRfJERGTmFtZSBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDA7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhY2xzIGlmLi4uCiAgICAgICAgICAgICAgICAjIC4uLmEgZmllbGQgcmVhcHBlYXJzOiBwb3NzaWJsZSB2YWx1ZXMgaGF2ZSB0byBiZSByZWNhbGN1bGF0ZWQ7CiAgICAgICAgICAgICAgICBpZiAoICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHRha2UgdGhlIGNvbmZpZyBpdGVtIG9yIGRlZmF1bHQgdmFsdWUgYW5kIHB1dCBpdCBhbHNvIGludG8gTmV3VmFsdWVzCiAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgdW5saWtlbHkgY2FzZSB0aGF0IHRoZXkgd2lsbCBiZSBkZWxldGVkIGFnYWluLCB0aGlzIHdpbGwganVzdCBjYXVzZSBhIHJlZHVuZGFudCBzZWNvbmQgcnVuCiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJENvbmZpZ0l0ZW1EYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJFVzZXJQcmVmZXJlbmNlc3siVXNlckR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9OwogICAgICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyAuLi5hdXRvc2VsZWN0IGlzIHR1cm5lZCBvbiBmb3IgdGhlIGNoYW5nZWQgZmllbGQgKHJlZmlsbCBhIGZpZWxkIGVtcHRpZWQgYnkgaGFuZCkKICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAkUGFyYW17QXV0b3NlbGVjdH0KICAgICAgICAgICAgICAgICAgICAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfQogICAgICAgICAgICAgICAgICAgICYmICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRDaGVja0FDTHMgPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEVMRU1FTlQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uLnRoZSBjaGFuZ2VkIGVsZW1lbnQgYWZmZWN0cyB0aGUgY3VycmVudCBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtSdWxlc317Q29uZmlnSXRlbX17JEVsZW1lbnR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyAuLi50aGUgZWxlbWVudCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgY2FjaGUgYW5kIHRodXMgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgaWYgdGhlcmUgYXJlIGFjbHMgd2hpY2ggY29ubmVjdCBpdCB0byB0aGUgYWZmZWN0ZWQgZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFBhcmFte0FDTFByZXNlbGVjdGlvbn17RmllbGRzfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRFbGVtZW50IG5vdCBkZWZpbmVkIGluIENvbmZpZ0l0ZW1BQ0wgcHJlc2VsZWN0aW9uIHJ1bGVzISIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaWYgbm90aGluZyBjaGFuZ2VkLCBvbWl0IHRoaXMgZmllbGQKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJENoZWNrQUNMczsKCiAgICAgICAgIyBlbHNlIGNoZWNrIEFDTHMKICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgIG15ICVBY2xEYXRhID0gJXskUG9zc2libGVWYWx1ZXN9OwogICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgIG15ICRBQ0wgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJERGTmFtZSwKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgKTsKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICBteSAlRmlsdGVyID0gJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgIyBjb252ZXJ0IEZpbHRlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc30gPSBtYXAgeyAkXyA9PiAkUG9zc2libGVWYWx1ZXMtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgfQoKICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgfTsKCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIGFsbCBzZWxlY3RlZCBlbnRyaWVzIGFyZSBzdGlsbCB2YWxpZAogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICYmCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0KICAgICAgICAgICAgICAgIHx8ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gZXEgJzAnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgbXVsdGlzZWxlY3QgYW5kIC12YWx1ZSBmaWVsZHMKICAgICAgICAgICAgaWYgKCByZWYoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSApIHsKICAgICAgICAgICAgICAgIFNFTEVDVEVEOgogICAgICAgICAgICAgICAgZm9yIG15ICRTZWxlY3RlZCAoIEB7ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGVtcHR5IHZhbHVlcyAocG9zc2libGUgb25seSBmb3IgbXVsdGl2YWx1ZSkKICAgICAgICAgICAgICAgICAgICBuZXh0IFNFTEVDVEVEIGlmICFkZWZpbmVkICRTZWxlY3RlZDsKCiAgICAgICAgICAgICAgICAgICAgIyBpZiBhIHNlbGVjdGVkIHZhbHVlIGlzIG5vdCBwb3NzaWJsZSBhbnltb3JlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnskU2VsZWN0ZWR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgeyBkZWZpbmVkICRfICYmICFkZWZpbmVkICRQb3NzaWJsZVZhbHVlcy0+eyRffSA/IHVuZGVmIDogJF8gfSAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcCB7IGRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57JFNlbGVjdGVkfSB9ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFNFTEVDVEVEOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaW5nbGVzZWxlY3QgZmllbGRzCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnsgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSB9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhdXRvc2VsZWN0IGlmIGFwcGxpY2FibGUKICAgICAgICBpZiAoICRQYXJhbXtBdXRvc2VsZWN0fSAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfSApIHsKCiAgICAgICAgICAgIG15ICRTZWxlY3RlZCA9ICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0KICAgICAgICAgICAgICAgIC8vICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gLy8gJyc7CgogICAgICAgICAgICBteSAkQXV0b3NlbGVjdGVkID0gJFNlbGYtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICBDdXJyZW50ICAgICAgICA9PiAkU2VsZWN0ZWQsCiAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEF1dG9zZWxlY3RlZCApIHsKICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQXV0b3NlbGVjdGVkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2FjaGUgdGhlIG5ldyB2aXNpYmlsaXR5CiAgICBpZiAoICRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259ICYmICRWaXNDaGVjayApIHsKICAgICAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAnSGlkZGVuRmllbGRzJywKICAgICAgICAgICAgS2V5ICAgPT4gJFBhcmFte0Zvcm1JRH0sCiAgICAgICAgICAgIFZhbHVlID0+IHslVmlzaWJpbGl0eX0sCiAgICAgICAgICAgIFRUTCAgID0+IDYwICogMjAsICAgICAgICAgICMgMjAgbWluCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGlmIGFkZGl0aW9uYWwgZWxlbWVudHMgYXJlIGNoYW5nZWQgYnkgdGhlIHJvdXRpbmUsIHJlY3Vyc2l2ZWx5IGNhbGwgR2V0RmllbGRTdGF0ZXMsIHVudGlsIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHdvcmtlZCB0aHJvdWdoCiAgICBpZiAoJU5ld1ZhbHVlcykgewoKICAgICAgICBteSAlUmVjdSA9ICRTZWxmLT5HZXRGaWVsZFN0YXRlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBHZXRQYXJhbSA9PiB7CiAgICAgICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19IH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgPT4gewogICAgICAgICAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfSB9LAogICAgICAgICAgICAgICAgICAgICVOZXdWYWx1ZXMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBDaGFuZ2VkRWxlbWVudHMgPT4geyBtYXAgeyAkXyA9PiAxIH0ga2V5cyAlTmV3VmFsdWVzIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhbHdheXMgdGFrZSB0aGUgaW5uZXJtb3N0IHZpc2liaWxpdHkKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUmVjdXtWaXNpYmlsaXR5fSApICkgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9ICV7ICRSZWN1e1Zpc2liaWxpdHl9IH07CiAgICAgICAgfQoKICAgICAgICAjIGNvbWJpbmUgdGhlIGZpZWxkIGluZm8sIGlubmVyIHZhbHVlcyB0YWtlIHByZWNlZGVuY2UKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUmVjdXtGaWVsZHN9ICkgKSB7CiAgICAgICAgICAgICVGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRmllbGRzLAogICAgICAgICAgICAgICAgJXsgJFJlY3V7RmllbGRzfSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjb21iaW5lIGFsbCBjaGFuZ2VkIGVsZW1lbnRzCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7TmV3VmFsdWVzfSApICkgewogICAgICAgICAgICAlTmV3VmFsdWVzID0gKAogICAgICAgICAgICAgICAgJU5ld1ZhbHVlcywKICAgICAgICAgICAgICAgICV7ICRSZWN1e05ld1ZhbHVlc30gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZmluYWxseSB0YWtlIGNhcmUgb2Ygc2V0IGluZm9ybWF0aW9uCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7U2V0c30gKSApIHsKICAgICAgICAgICAgJVNldHMgPSAoCiAgICAgICAgICAgICAgICAlU2V0cywKICAgICAgICAgICAgICAgICV7ICRSZWN1e1NldHN9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgRmllbGRzICAgICA9PiBcJUZpZWxkcywKICAgICAgICBWaXNpYmlsaXR5ID0+IFwlVmlzaWJpbGl0eSwKICAgICAgICBOZXdWYWx1ZXMgID0+IFwlTmV3VmFsdWVzLAogICAgICAgIFNldHMgICAgICAgPT4gXCVTZXRzLAogICAgKTsKfQoKPWhlYWQyIEF1dG9zZWxlY3QoKQoKQXV0b3NlbGVjdHMgYSB2YWx1ZSBpZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgZW1wdHkgYW5kIG9ubHkgb25lIHZhbGlkIG9wdGlvbiBpcyBwcmVzZW50LCBlbHNlIHVuZGVmIGlzIHJldHVybmVkCgogICAgbXkgJFNlbGVjdGVkID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5BdXRvc2VsZWN0KAogICAgICAgIEN1cnJlbnQgICAgICAgID0+ICRWYWx1ZSwgICAjIHVuZGVmLCAnJywgb3IgW10KICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7fSwKICAgICk7Cgo9Y3V0CgpzdWIgQXV0b3NlbGVjdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcmV0dXJuLCBpZiBhbHJlYWR5IGZpbGxlZCAoICcwJyBpcyB2YWxpZCEgKQogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0N1cnJlbnR9CiAgICAgICAgJiYgKCAoICFyZWYoICRQYXJhbXtDdXJyZW50fSApICYmICRQYXJhbXtDdXJyZW50fSAhfiAvXi0/JC8gKSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDdXJyZW50fSApICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0KCiAgICAjIGNoZWNrIHBvc3NpYmxlIHZhbHVlcwogICAgaWYgKCAhJFBhcmFte1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgfQogICAgaWYgKCByZWYoICRQYXJhbXtQb3NzaWJsZVZhbHVlc30gKSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQb3NzaWJsZVZhbHVlcyBoYXMgdG8gYmUgYSBIYXNoIHJlZiEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgfQoKICAgIG15ICggJFZhbGlkS2V5cywgJFVzZWRLZXkgKTsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRQYXJhbXtQb3NzaWJsZVZhbHVlc30gfSApIHsKCiAgICAgICAgIyBleGNsdWRlIGVtcHR5IHZhbHVlczsgJy0nIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICAgICAgIGlmICggJEtleSAhfiAvXi0/JC8gKSB7CiAgICAgICAgICAgIGlmICggKyskVmFsaWRLZXlzID4gMSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVzZWRLZXkgPSAkS2V5OwogICAgICAgIH0KICAgIH0KICAgIGlmICggISRWYWxpZEtleXMgKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0gICAgIyBlbHNlICRWYWxpZEtleXMgPT0gMSA9PiBhdXRvc2VsZWN0CgogICAgIyBmaWxsIHRoZSBmaWVsZCBpZiBhbmQgYWRkIGl0IHRvIHRoZSBjaGFuZ2VkIGVsZW1lbnRzCiAgICBpZiAoIHJlZiggJFBhcmFte0N1cnJlbnR9ICkgKSB7CiAgICAgICAgcmV0dXJuIFskVXNlZEtleV07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFVzZWRLZXk7CiAgICB9Cgp9Cgo9aGVhZDIgU2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKQoKQ2FsY3VsYXRlcyBhbmQgc3RvcmVzIHNpbXBsZSBmaWVsZCByZWxhdGlvbnMgYW5kIGdyb3VwcyBBQ0xzIHZpYSB0aGVpciBvdXRwdXQgdHlwZXMgdG8gcHJlc2VsZWN0IHRoZW0gd2hlbiB1c2VkLCBsYXRlciBvbgoKICAgIG15ICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+U2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKTsKCj1jdXQKCnN1YiBTZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBY2xzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdDb25maWdJdGVtQWNsJyk7CgogICAgIyBzdGFuZGFyZCBmaWVsZHMKICAgIG15ICVGaWVsZHMgPSAoCiAgICAgICAgRGVwbFN0YXRlID0+ICdEZXBsU3RhdGUnLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaVN0YXRlJywKICAgICk7CgogICAgIyBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHZhbHVlcyAleyAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KCBSZXN1bHRUeXBlID0+ICdIQVNIJyApIH0gKSB7CiAgICAgICAgJEZpZWxkc3siRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGROYW1lIn0gPSAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGROYW1lIjsKICAgIH0KCiAgICBteSAlUHJlc2VsZWN0aW9uUnVsZXM7CgogICAgIyBwYXJzZSBBY2xzCiAgICBBQ0w6CiAgICBmb3IgbXkgJEFDTCAoIHZhbHVlcyAleyRBY2xzfSApIHsKCiAgICAgICAgIyBnZXQgY29udHJvbGxpbmcgZWxlbWVudHMgKEVsZW1lbnRDaGFuZ2VkIGxhdGVyIG9uKQogICAgICAgIG15ICVDb250cm9sbGVyOwogICAgICAgIGZvciBteSAkUHJvcGVydGllc0hhc2ggKHF3KFByb3BlcnRpZXMgUHJvcGVydGllc0RhdGFiYXNlKSkgewogICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9e0NvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAleyAkQUNMLT57JFByb3BlcnRpZXNIYXNofXtDb25maWdJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkTmFtZSB1c2VkIGluIEFDTHMsIGlzIG5vdCBkZWZpbmVkISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ29udHJvbGxlcnskTmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIE5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkTmFtZSB1c2VkIGluIEFDTHMsIGlzIG5vdCBkZWZpbmVkISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ29udHJvbGxlcnskTmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKHF3L0RlcGxTdGF0ZSBJbmNpU3RhdGUvKSB7CiAgICAgICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9eyRGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRyb2xsZXJ7JEZpZWxkfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCAhJUNvbnRyb2xsZXIgKSB7IG5leHQgQUNMIH0KCiAgICAgICAgIyBnZXQgYWZmZWN0ZWQgZWxlbWVudHMKICAgICAgICBmb3IgbXkgJEltcGFjdCAocXcoUG9zc2libGUgUG9zc2libGVBZGQgUG9zc2libGVOb3QpKSB7CgogICAgICAgICAgICAjIENvbmZpZ0l0ZW0gUnVsZXMKICAgICAgICAgICAgaWYgKCAkQUNMLT57JEltcGFjdH17Q29uZmlnSXRlbX0gKSB7CiAgICAgICAgICAgICAgICBBRkZFQ1RFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQWZmZWN0ZWQgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRJbXBhY3R9e0NvbmZpZ0l0ZW19IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEZpZWxkc3skQWZmZWN0ZWR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkQWZmZWN0ZWQgdXNlZCBpbiBBQ0xzLCBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQUZGRUNURUQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudENoYW5nZWQgKCBzb3J0IGtleXMgJUNvbnRyb2xsZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQcmVzZWxlY3Rpb25SdWxlc3tDb25maWdJdGVtfXsgJEZpZWxkc3skRWxlbWVudENoYW5nZWR9IH17ICRGaWVsZHN7JEFmZmVjdGVkfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRm9ybSBSdWxlcwogICAgICAgICAgICBpZiAoICRBQ0wtPnskSW1wYWN0fS0+e0Zvcm19ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50Q2hhbmdlZCAoIHNvcnQga2V5cyAlQ29udHJvbGxlciApIHsKICAgICAgICAgICAgICAgICAgICAkUHJlc2VsZWN0aW9uUnVsZXN7Rm9ybX17ICRGaWVsZHN7JEVsZW1lbnRDaGFuZ2VkfSB9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfQoKICAgIG15ICRSZXR1cm4gPSB7CiAgICAgICAgRmllbGRzID0+IHsgbWFwIHsgJF8gPT4gMSB9ICggdmFsdWVzICVGaWVsZHMgKSB9LAogICAgICAgIFJ1bGVzICA9PiBcJVByZXNlbGVjdGlvblJ1bGVzLAogICAgfTsKCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtQUNMJywgICAgICAgIyBvbmx5IFthLXpBLVowLTlfXSBjaGFycyB1c2FibGUKICAgICAgICBLZXkgICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICBWYWx1ZSA9PiAkUmV0dXJuLAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDEwMCwgICAgIyBzZWNvbmRzLCB0aGlzIG1lYW5zIDEwMCBkYXlzCiAgICApOwoKICAgIHJldHVybiAkUmV0dXJuOwoKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/History.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okhpc3RvcnkgLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggaGlzdG9yeSBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBoaXN0b3J5IGZ1bmN0aW9ucy4KCj1oZWFkMiBIaXN0b3J5R2V0KCkKClJldHVybnMgYW4gYXJyYXkgcmVmZXJlbmNlIHdpdGggYWxsIGhpc3RvcnkgZW50cmllcyBmb3IgdGhlIGdpdmVuIGNvbmZpZyBpdGVtLgpFYWNoIGFycmF5IGVsZW1lbnQgaXMgYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcgb25lIGhpc3RvcnkgZW50cnkuCgpUaGVzZSBoYXNoIHJlZmVyZW5jZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dDoKCiAgICAkSW5mb3tIaXN0b3J5RW50cnlJRH0KICAgICRJbmZve0NvbmZpZ0l0ZW1JRH0KICAgICRJbmZve0hpc3RvcnlUeXBlfQogICAgJEluZm97SGlzdG9yeVR5cGVJRH0KICAgICRJbmZve0NvbW1lbnR9CiAgICAkSW5mb3tDcmVhdGVkQnl9CiAgICAkSW5mb3tDcmVhdGVUaW1lfQogICAgJEluZm97VXNlcklEfQogICAgJEluZm97VXNlckxvZ2lufQogICAgJEluZm97VXNlckxhc3RuYW1lfQogICAgJEluZm97VXNlckZpcnN0bmFtZX0KICAgICRJbmZve1VzZXJGdWxsbmFtZX0KCiAgICBteSAkSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjM0LAogICAgKTsKCj1jdXQKCnN1YiBIaXN0b3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwoKICAgICMgZmV0Y2ggc29tZSBkYXRhIGZyb20gaGlzdG9yeSBmb3IgZ2l2ZW4gY29uZmlnIGl0ZW0KICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgY2guaWQsIGNoLmNvbmZpZ2l0ZW1faWQsIGNoLmNvbnRlbnQsIGNoLnR5cGVfaWQsICcKICAgICAgICAgICAgLiAnY2guY3JlYXRlX2J5LCBjaC5jcmVhdGVfdGltZSwgY2h0Lm5hbWUgJwogICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBjaCwgY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgY2h0ICcKICAgICAgICAgICAgLiAnV0hFUkUgY2gudHlwZV9pZCA9IGNodC5pZCBBTkQgY2guY29uZmlnaXRlbV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBjaC5pZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIHNhdmUgZGF0YSBmcm9tIGhpc3RvcnkgaW4gYXJyYXkKICAgIG15IEBFbnRyaWVzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlVG1wID0gKAogICAgICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICBIaXN0b3J5VHlwZUlEICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAkUm93WzZdLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEVudHJpZXMsIFwlVG1wOwogICAgfQoKICAgICMgZ2V0IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNlciB3aG8gY3JlYXRlZCBoaXN0b3J5IGVudHJpZXMKICAgIGZvciBteSAkRW50cnkgKEBFbnRyaWVzKSB7CgogICAgICAgICMgZ2V0IHVzZXIgaW5mb3JtYXRpb24KICAgICAgICBteSAlVXNlckluZm8gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRFbnRyeS0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgQ2FjaGVkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIGhpc3RvcnkgZW50cnkKICAgICAgICAkRW50cnktPntVc2VySUR9ICAgICAgICA9ICRVc2VySW5mb3tVc2VySUR9OwogICAgICAgICRFbnRyeS0+e1VzZXJMb2dpbn0gICAgID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJEVudHJ5LT57VXNlckZpcnN0bmFtZX0gPSAkVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJEVudHJ5LT57VXNlckxhc3RuYW1lfSAgPSAkVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRW50cnktPntVc2VyRnVsbG5hbWV9ICA9ICRVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwogICAgfQoKICAgICMgc2F2ZSByZXN1bHQgaW4gY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9uc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSA9IFxARW50cmllczsKCiAgICByZXR1cm4gXEBFbnRyaWVzOwp9Cgo9aGVhZDIgSGlzdG9yeUVudHJ5R2V0KCkKClJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuClRoZSBoYXNoIHJlZmVyZW5jZSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0OgoKICAgICRJbmZve0hpc3RvcnlFbnRyeUlEfQogICAgJEluZm97Q29uZmlnSXRlbUlEfQogICAgJEluZm97SGlzdG9yeVR5cGV9CiAgICAkSW5mb3tIaXN0b3J5VHlwZUlEfQogICAgJEluZm97Q29tbWVudH0KICAgICRJbmZve0NyZWF0ZUJ5fQogICAgJEluZm97Q3JlYXRlVGltZX0KICAgICRJbmZve1VzZXJJRH0KICAgICRJbmZve1VzZXJMb2dpbn0KICAgICRJbmZve1VzZXJMYXN0bmFtZX0KICAgICRJbmZve1VzZXJGaXJzdG5hbWV9CiAgICAkSW5mb3tVc2VyRnVsbG5hbWV9CgogICAgbXkgJEluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUVudHJ5R2V0KAogICAgICAgIEhpc3RvcnlFbnRyeUlEID0+IDEyMzQsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICBpZiAoICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSApIHsKICAgICAgICBteSAoJENvbmZpZ0l0ZW1JRCkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSB9OwogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnskQ29uZmlnSXRlbUlEfTsKICAgIH0KCiAgICAjIGZldGNoIGEgc2luZ2xlIGVudHJ5IGZyb20gaGlzdG9yeQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaC5pZCwgY2guY29uZmlnaXRlbV9pZCwgY2guY29udGVudCwgY2gudHlwZV9pZCwgJwogICAgICAgICAgICAuICdjaC5jcmVhdGVfYnksIGNoLmNyZWF0ZV90aW1lLCBjaHQubmFtZSAnCiAgICAgICAgICAgIC4gJ0ZST00gY29uZmlnaXRlbV9oaXN0b3J5IGNoLCBjb25maWdpdGVtX2hpc3RvcnlfdHlwZSBjaHQgJwogICAgICAgICAgICAuICdXSEVSRSBjaC50eXBlX2lkID0gY2h0LmlkIEFORCBjaC5pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtIaXN0b3J5RW50cnlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRW50cnk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAlRW50cnkgPSAoCiAgICAgICAgICAgIEhpc3RvcnlFbnRyeUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgID0+ICRSb3dbM10sCiAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICRSb3dbNF0sCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICRSb3dbNV0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICRSb3dbNl0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGRhdGEgZm9yIHRoaXMgZW50cnkKICAgIG15ICVVc2VySW5mbyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRW50cnl7Q3JlYXRlQnl9LAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAkRW50cnl7VXNlcklEfSAgICAgICAgPSAkVXNlckluZm97VXNlcklEfTsKICAgICRFbnRyeXtVc2VyTG9naW59ICAgICA9ICRVc2VySW5mb3tVc2VyTG9naW59OwogICAgJEVudHJ5e1VzZXJGaXJzdG5hbWV9ID0gJFVzZXJJbmZve1VzZXJGaXJzdG5hbWV9OwogICAgJEVudHJ5e1VzZXJMYXN0bmFtZX0gID0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX07CiAgICAkRW50cnl7VXNlckZ1bGxuYW1lfSAgPSAkVXNlckluZm97VXNlckZ1bGxuYW1lfTsKCiAgICAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnsgJEVudHJ5e0NvbmZpZ0l0ZW1JRH0gfSA9IFwlRW50cnk7CgogICAgcmV0dXJuIFwlRW50cnk7Cn0KCj1oZWFkMiBIaXN0b3J5QWRkKCkKCkFkZHMgYSBzaW5nbGUgaGlzdG9yeSBlbnRyeSB0byB0aGUgaGlzdG9yeS4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMzQsCiAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnTmV3Q29uZmlnSXRlbScsICMgZWl0aGVyIEhpc3RvcnlUeXBlIG9yIEhpc3RvcnlUeXBlSUQgaXMgbmVlZGVkCiAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICBDb21tZW50ICAgICAgID0+ICdBbnkgdXNlZnVsIGluZm9ybWF0aW9uJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFVzZXJJRCBDb21tZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISggJFBhcmFte0hpc3RvcnlUeXBlfSB8fCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGUgb3IgSGlzdG9yeVR5cGVJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGhpc3RvcnkgdHlwZSBpZCBmcm9tIGhpc3RvcnkgdHlwZSBpZiBoaXN0b3J5IHR5cGUgaXMgZ2l2ZW4uCiAgICBpZiAoICRQYXJhbXtIaXN0b3J5VHlwZX0gKSB7CiAgICAgICAgbXkgJElkID0gJFNlbGYtPkhpc3RvcnlUeXBlTG9va3VwKCBIaXN0b3J5VHlwZSA9PiAkUGFyYW17SGlzdG9yeVR5cGV9ICk7CgogICAgICAgIGlmICggISRJZCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ludmFsaWQgaGlzdG9yeSB0eXBlIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtIaXN0b3J5VHlwZUlEfSA9ICRJZDsKICAgIH0KCiAgICAjIGlmIGhpc3RvcnkgdHlwZSBpcyBnaXZlbgogICAgZWxzaWYgKCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkU2VsZi0+SGlzdG9yeVR5cGVMb29rdXAoIEhpc3RvcnlUeXBlSUQgPT4gJFBhcmFte0hpc3RvcnlUeXBlSUR9ICk7CgogICAgICAgIGlmICggISROYW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCBoaXN0b3J5IHR5cGUgaWQgZ2l2ZW4hJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGdpdmVuIGNvbmZpZyBpdGVtIGlkIHBvaW50cyB0byBhbiBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgIG15ICROdW1iZXIgPSAkU2VsZi0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISROdW1iZXIgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIGNvbmZpZyBpdGVtIGlkIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgY2FjaGVkIHJlc3VsdHMKICAgIGRlbGV0ZSAkU2VsZi0+e0NhY2hlfS0+e0NJVmVyc2lvbnN9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgIyBzaG9ydGVuIHRoZSBjb21tZW50IGlmIGl0IGlzIGJpZ2dlciB0aGFuIG1heCBsZW5ndGgKICAgIGlmICggbGVuZ3RoKCAkUGFyYW17Q29tbWVudH0gKSA+IDE5MSApIHsKCiAgICAgICAgbXkgKCAkRmllbGQsICRPbGQsICROZXcgKSA9IHNwbGl0IC8lJS8sICRQYXJhbXtDb21tZW50fSwgMzsKCiAgICAgICAgbXkgJExlbmd0aCA9IGludCggKCAxOTEgLSBsZW5ndGgoJEZpZWxkKSAtIDQgKSAvIDIgKTsKCiAgICAgICAgaWYgKCBsZW5ndGgoJE9sZCkgPiAkTGVuZ3RoICkgewogICAgICAgICAgICBteSAkSW5kZXggPSBpbnQoICRMZW5ndGggLyAyICk7CiAgICAgICAgICAgICRPbGQgPSBzdWJzdHIoICRPbGQsIDAsICRJbmRleCAtIDIgKSAuICcuLi4nIC4gc3Vic3RyKCAkT2xkLCBsZW5ndGgoJE9sZCkgLSAkSW5kZXggKyAyICk7CiAgICAgICAgfQogICAgICAgIGlmICggbGVuZ3RoKCROZXcpID4gJExlbmd0aCApIHsKICAgICAgICAgICAgbXkgJEluZGV4ID0gaW50KCAkTGVuZ3RoIC8gMiApOwogICAgICAgICAgICAkTmV3ID0gc3Vic3RyKCAkTmV3LCAwLCAkSW5kZXggLSAyICkgLiAnLi4uJyAuIHN1YnN0ciggJE5ldywgbGVuZ3RoKCROZXcpIC0gJEluZGV4ICsgMiApOwogICAgICAgIH0KICAgICAgICBteSAkTmV3Q29tbWVudCA9ICRGaWVsZCAuICclJScgLiAkT2xkIC4gJyUlJyAuICROZXc7CgogICAgICAgICRQYXJhbXtDb21tZW50fSA9ICROZXdDb21tZW50OwogICAgfQoKICAgICMgaW5zZXJ0IGhpc3RvcnkgZW50cnkKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBjb25maWdpdGVtX2hpc3RvcnkgKCBjb25maWdpdGVtX2lkLCBjb250ZW50LCBjcmVhdGVfYnksICcKICAgICAgICAgICAgLiAnY3JlYXRlX3RpbWUsIHR5cGVfaWQgKSBWQUxVRVMgKCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SGlzdG9yeVR5cGVJRH0sCiAgICAgICAgXSwKICAgICk7Cn0KCj1oZWFkMiBIaXN0b3J5RGVsZXRlKCkKCkRlbGV0ZXMgY29tcGxldGUgaGlzdG9yeSBmb3IgYSBnaXZlbiBjb25maWcgaXRlbQoKICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5RGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjYWNoZWQgcmVzdWx0cwogICAgZGVsZXRlICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9ufS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwogICAgZm9yIG15ICRWZXJzaW9uTnIgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30gfSApIHsKICAgICAgICBteSAoJENhY2hlQ29uZmlnSXRlbSkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57JFZlcnNpb25Ocn0gfTsKICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30tPnskVmVyc2lvbk5yfSBpZiAkQ2FjaGVDb25maWdJdGVtIGVxICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgfQoKICAgICMgZGVsZXRlIGhpc3RvcnkgZm9yIGdpdmVuIGNvbmZpZyBpdGVtCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBjb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlFbnRyeURlbGV0ZSgpCgpEZWxldGVzIGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlFbnRyeURlbGV0ZSgKICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgc2luZ2xlIGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0hpc3RvcnlFbnRyeUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlUeXBlTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpZCBpcyBnaXZlbiwKaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpcyBnaXZlbiwgdGhlIGFwcHJvcHJpYXRlCmlkIGlzIHJldHVybmVkLgoKICAgIG15ICROYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMTIzNCwKICAgICk7CgogICAgbXkgJElkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeVR5cGVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAoJEtleSkgPSBncmVwIHsgJFBhcmFteyRffSB9IHF3KEhpc3RvcnlUeXBlSUQgSGlzdG9yeVR5cGUpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEtleSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGVJRCBvciBIaXN0b3J5VHlwZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57SGlzdG9yeVR5cGVMb29rdXB9LT57ICRQYXJhbXskS2V5fSB9OwoKICAgICMgc2V0IHRoZSBhcHByb3ByaWF0ZSBTUUwgc3RhdGVtZW50CiAgICBteSAkU1FMID0gJ1NFTEVDVCBuYW1lIEZST00gY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgV0hFUkUgaWQgPSA/JzsKCiAgICBpZiAoICRLZXkgZXEgJ0hpc3RvcnlUeXBlJyApIHsKICAgICAgICAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeV90eXBlIFdIRVJFIG5hbWUgPSA/JzsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXF1ZXN0ZWQgdmFsdWUKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17JEtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkVmFsdWU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWYWx1ZSA9ICRSb3dbMF07CiAgICB9CgogICAgIyBzYXZlIHZhbHVlIGluIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Link.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okxpbms7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBtb2R1bGUgc3VwcG9ydHMgdGhlIG1haW50ZW5hbmNlIG9mIHRoZSBjb250ZW50IG9mIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4uIFRoaXMgdGFibGUKaXMgYSBzaGFkb3cgb2YgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMgY29udGFpbmVkIGluIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcyB0aGF0IGNvbm5lY3Qgb2JqZWN0cwpvZiB0eXBlIEM8SVRTTUNvbmZpZ0l0ZW0+IGFuZCBDPElUU01Db25maWdJdGVtVmVyc2lvbj4uCgpUaGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgTGlua09iamVjdCBmZWF0dXJlIGlzIGFsc28gcmVwcmVzZW50ZWQgaW4gQjxjb25maWdpdGVtX2xpbms+LiBUaGVzZQpjYXNlIGlzIG1hcmtlZCBieSBCPGNvbmZpZ2l0ZW1fbGluay5keW5hbWljX2ZpZWxkX2lkPiBoYXZpbmcgdGhlIHZhbHVlIEI8TlVMTD4uCgpUaGVyZSBpcyBzdXBwb3J0IGZvciBpbW1lZGlhdGUgdXBkYXRlIG9mIHRoZSB0YWJsZSBhbmQgZm9yIGEgY29tcGxldGUgcmVidWlsZCBvZiB0aGUgdGFibGUuCgpQbGFubmVkIGlzIGFsc28gc3VwcG9ydCBmb3IgZHVtcGluZyB0aGUgY29tcGxldGUgZ3JhcGggc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBmb3IgcHJlc2VudGF0aW9uLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBBZGRDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGFkZGluZyBhIGxpbmsgYmV0d2VlbiB0d28gY29uZmlnIGl0ZW1zLiBJdCBpcyBuZWVkZWQKZm9yIHN1cHBvcnRpbmcgdGhlIExpbmtPYmplY3QgZnVuY3Rpb25hbGl0eS4KClRoZSBsaW5raW5nIG9mIHNwZWNpZmljIHZlcnNpb25zIGlzIG5vdCBzdXBwb3J0ZWQuCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+QWRkQ29uZmlnSXRlbUxpbmsoCiAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgU291cmNlQ29uZmlnSUQgPT4gMTI3LAogICAgICAgIFRhcmdldENvbmZpZ0lEID0+IDEyOCwKICAgICk7Cgo9Y3V0CgpzdWIgQWRkQ29uZmlnSXRlbUxpbmsgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBTb3VyY2VDb25maWdJdGVtSUQgVGFyZ2V0Q29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb29rdXAgdHlwZSBpZAogICAgbXkgJFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPlR5cGVMb29rdXAoCiAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsIGR5bmFtaWNfZmllbGRfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICg/LCA/LCA/LCBOVUxMLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCggJFR5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gWyAkUGFyYW17VGFyZ2V0Q29uZmlnSXRlbUlEfSBdLAogICAgICAgIFVubGlua2VkICAgICA9PiBbXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBEZWxldGVDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGRlbGV0aW5nIGEgbGluayBiZXR3ZWVuIHR3byBjb25maWcgaXRlbXMuIEl0IGlzIG5lZWRlZApmb3Igc3VwcG9ydGluZyB0aGUgTGlua09iamVjdCBmdW5jdGlvbmFsaXR5LgoKVGhlIHVubGlua2luZyBvZiBzcGVjaWZpYyB2ZXJzaW9ucyBpcyBub3Qgc3VwcG9ydGVkLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgIFR5cGUgICAgICAgICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFNvdXJjZUNvbmZpZ0lEID0+IDEyNywKICAgICAgICBUYXJnZXRDb25maWdJRCA9PiAxMjgsCiAgICApOwoKPWN1dAoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1MaW5rIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgU291cmNlQ29uZmlnSXRlbUlEIFRhcmdldENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9va3VwIHR5cGUgaWQKICAgIG15ICRMaW5rVHlwZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+VHlwZUxvb2t1cCgKICAgICAgICBOYW1lICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluawogIFdIRVJFIGxpbmtfdHlwZV9pZCA9ID8KICAgIEFORCBzb3VyY2VfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCB0YXJnZXRfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCBkeW5hbWljX2ZpZWxkX2lkIElTIE5VTEwKRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWyBcKCAkTGlua1R5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gW10sCiAgICAgICAgVW5saW5rZWQgICAgID0+IFsgJFBhcmFte1RhcmdldENvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rZWRDb25maWdJdGVtcygpCgpnZXQgdGhlIGNvbmZpZyBpdGVtcyB0aGF0IGFyZSBkaXJlY3RseSBsaW5rZWQgdG8gYSBzcGVjaWZpYyBjb25maWcgaXRlbS4gTm8gZGV0YWlscwpvZiB0aGUgbGlua2VkIGNvbmZpZyBpdGVtcyBhcmUgcmV0dXJuZWQuCgogICAgIyBvbmx5IGxpbmtlZCBmcm9tIGEgY29uZmlnIGl0ZW0KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFR5cGVzICAgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAjIG9ubHkgbGlua2VkIGZyb20gYSBjb25maWcgaXRlbSB2ZXJzaW9uCiAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgVmVyc2lvbklEICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gID0+ICdTb3VyY2UnLCAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpQYXNzaW5nIGJvdGggY29uZmlnIGl0ZW0gSUQgYW5kIGNvbmZpZyBpdGVtIHZlcnNpb24gSUQgaXMgZmluZSB0b28uCgogICAgIyBsaW5rIHZpYSBpdGVtIG9mIHZlcnNpb24KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFZlcnNpb25JRCAgICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICAgID0+IFsgJ1BhcmVudENoaWxkJywgJ0lzSW5zcGlyZWRCeScgXSwgIyBvcHRpb25hbAogICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpUaGUgc2VtYW50aWNzIG9mIHRoZSBwYXJhbWV0ZXIgQzxEaXJlY3Rpb24+IGNhbiBiZSBjb25mdXNpbmcuIFRoZSBhYm92ZSBjYWxsIGNhbiBiZSB2ZXJiYWxpemVkIGFzOgoiR2l2ZSBtZSBhbGwgY29uZmlnIGl0ZW1zIHRoYXQgaGF2ZSBhICdQYXJlbnRDaGlsZCcgb3IgJ0lzSW5zcGlyZWRCeScgcmVsYXRpb25zaGlwIGluIHdoaWNoIHRoZQpjb25maWcgaXRlbSAzMjEgaXMgdGhlIFNvdXJjZSBvYmplY3QuIgoKUmV0dXJucyBhbiBlbXB0eSBhcnJheSByZWYgd2hlbiBubyByZWxhdGlvbnNoaXBzIHdlcmUgZm91bmQ6CgogICAgJExpbmtlZENvbmZpZ0l0ZW1zID0gW107CgpSZXR1cm5zIGEgbGlzdCB3aGVuIHJlbGF0aW9uc2hpcHMgaGF2ZSBiZWVuIGZvdW5kLiBFaXRoZXIgQzxDb25maWdJdGVtSUQ+IG9yIEM8VmVyc2lvbklEPiBpcyBzZXQuCkM8RHluYW1pY0ZpZWxkSUQ+IGlzIG5vdCBkZWZpbmVkIHdoZW4gTGlua09iamVjdCBpcyB1c2VkLgoKICAgICRMaW5rZWRDb25maWdJdGVtcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDE3LAogICAgICAgICAgICBWZXJzaW9uSUQgICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgIExpbmtUeXBlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExpbmtUeXBlICAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IDEyNywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gdW5kZWYsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgID0+IDIyLAogICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgTGlua1R5cGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGlua1R5cGUgICAgICAgPT4gJ0lzSW5zcGlyZWRCeScsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IHVuZGVmLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICBdOwoKPWN1dAoKc3ViIExpbmtlZENvbmZpZ0l0ZW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KERpcmVjdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggISggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfHwgJFBhcmFte1ZlcnNpb25JRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgZWl0aGVyIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgUGFzc2luZyBib3RoIENvbmZpZ0l0ZW1JRCBhbmQgVmVyc2lvbklEIGlzIGZpbmUKCiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBnZXQgY29tcGxldGUgbGlzdCBmb3IgYm90aCBkaXJlY3Rpb25zIChvciBvbmx5IG9uZSBpZiByZXN0cmljdGVkKQogICAgbXkgKCAkU1FMLCBAQmluZHMgKTsKICAgIHsKICAgICAgICAjIHRoZSBsaW5rIHR5cGUgaXMgb3B0aW9uYWwKICAgICAgICBteSBAVHlwZUNvbmRpdGlvbnM7ICAgICMgMCBvciAxIGNvbmRpdGlvbnMKICAgICAgICBteSBAVHlwZUJpbmRzOyAgICAgICAgICMgMCwgMSwgb3IgbWFueSBiaW5kcwogICAgICAgIGlmICggJFBhcmFte1R5cGVzfSAmJiByZWYgJFBhcmFte1R5cGVzfSBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBlbXB0eSBsaXN0IG9mIHR5cGVzIGdpdmVzIG5vIHJlc3VsdAogICAgICAgICAgICByZXR1cm4gW10gdW5sZXNzICRQYXJhbXtUeXBlc30tPkAqOwoKICAgICAgICAgICAgbXkgJFBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgbWFwIHsnPyd9ICRQYXJhbXtUeXBlc30tPkAqOwogICAgICAgICAgICBwdXNoIEBUeXBlQ29uZGl0aW9ucywgImxpbmtfdHlwZV9pZCBJTiAoJFBsYWNlaG9sZGVycykiOwoKICAgICAgICAgICAgcHVzaCBAVHlwZUJpbmRzLCBtYXAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRfLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUGFyYW17VHlwZXN9LT5AKjsKICAgICAgICB9CgogICAgICAgICMgdGhlc2UgIGFycmF5cyBoYXZlIGVpdGhlciAxIG9yIDIgZWxlbWVudHMKICAgICAgICBteSAoIEBTb3VyY2VDb25kaXRpb25zLCBAVGFyZ2V0Q29uZGl0aW9ucywgQElEQmluZHMgKTsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1faWQgPSA/JzsKICAgICAgICAgICAgcHVzaCBAVGFyZ2V0Q29uZGl0aW9ucywgJ3RhcmdldF9jb25maWdpdGVtX2lkID0gPyc7CiAgICAgICAgICAgIHB1c2ggQElEQmluZHMsICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25kaXRpb25zLCAndGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBJREJpbmRzLCAgICAgICAgICAkUGFyYW17VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgICMgbGluayBkaXJlY3Rpb25zIGFyZSByZWFkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB3aW5kIGRpcmVjdGlvbnMgLSBub3J0aCB3aW5kIGNvbWVzIGZyb20gdGhlIG5vcnRoLAogICAgICAgICMgYSAiU291cmNlIiBkaXJlY3Rpb24gcmV0dXJucyBhbGwgbGlua2VkIENJcyB3aGVyZSB3ZSBjb21lIGZyb20gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gYXMgc291cmNlCiAgICAgICAgIyAuLi5vciBzbzsgdGhpcyBpcyBjb25zaXN0ZW50IHdpdGggS2VybmVsL1N5c3RlbS9MaW5rT2JqZWN0LnBtIG1vc3QgaW1wb3J0YW50bHkKICAgICAgICBpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdTb3VyY2UnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFNvdXJjZUNvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFRhcmdldENvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBCb3RoIGRpcmVjdGlvbnMKICAgICAgICAgICAgIyBUT0RPOiB0ZXN0IHdpdGggUG9zdGdyZVNRTCBhbmQgT3JhY2xlCiAgICAgICAgICAgICRTUUwgPSA8PCJFTkRfU1FMIjsKKAogIFNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBTb3VyY2VDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKVU5JT04KKAogIFNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBUYXJnZXRDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKRU5EX1NRTAogICAgICAgICAgICBAQmluZHMgPSAoIEBJREJpbmRzLCBAVHlwZUJpbmRzLCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWyBcKEBCaW5kcykgXSwKICAgICk7CgogICAgbXkgQFJlc3VsdCA9IG1hcAogICAgICAgIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRfLT5bMF0sCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJF8tPlsxXSwKICAgICAgICAgICAgICAgIExpbmtUeXBlSUQgICA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAkXy0+WzNdLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJF8tPls0XSwKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkUm93cy0+QCo7CgogICAgcmV0dXJuIFxAUmVzdWx0Owp9Cgo9aGVhZDIgU3luY0xpbmtUYWJsZSgpCgpUaGlzIG1ldGhvZCBlbnRhaWxzIHRoZSBsb2dpYyBmb3Iga2VlcGluZyB0aGUgdGFibGUgQjxjb25maWdpdGVtX2xpbms+IGluIHN5bmMKd2l0aCBkeW5hbWljIGZpZWxkIHVwZGF0ZXMuCgpEZWZpbml0aW9uVXBkYXRlcyBwYXNzIE9sZER5bmFtaWNGaWVsZENvbmZpZyBhcyBhZGRpdGlvbmFsIHBhcmFtZXRlciBiZWNhdXNlCmxpbmtpbmcgYW5kIHVubGlua2luZyBtaWdodCBkaWZmZXIuCgpJbiB0aGUgYmVsb3cgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkeW5hbWljIGZpZWxkIGlzIHJlZmVycmVkIHRvIGFzICJSZWZlcmVuY2luZyIsCnRoZSBvYmplY3RzIHdoaWNoIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkIGFyZSAiUmVmZXJlbmNlZCIuIFRoaXMgaXMKaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIExpbmtUeXBlRGlyZWN0aW9uIHdoaWNoIGNhbiBlaXRoZXIgYmUKUmVmZXJlbmNpbmdJc1NvdXJjZSBvciBSZWZlcmVuY2luZ0lzVGFyZ2V0LgoKPWN1dAoKc3ViIFN5bmNMaW5rVGFibGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRNaXNzaW5nICggZ3JlcCB7ICEkUGFyYW17JF99IH0gcXcoRHluYW1pY0ZpZWxkQ29uZmlnIENvbmZpZ0l0ZW1JRCBDb25maWdJdGVtTGFzdFZlcnNpb25JRCBDb25maWdJdGVtVmVyc2lvbklEKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE1pc3NpbmchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAgID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CiAgICBteSAkT2xkRmllbGRDb25maWcgICAgICAgPSAkUGFyYW17T2xkRHluYW1pY0ZpZWxkQ29uZmlnfTsKICAgIG15ICREeW5hbWljRmllbGRJRCAgICAgICA9ICREeW5hbWljRmllbGRDb25maWctPntJRH07CiAgICBteSAkREZEZXRhaWxzICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfTsKICAgIG15ICRPbGRERkRldGFpbHMgICAgICAgICA9ICRPbGRGaWVsZENvbmZpZyA/ICRPbGRGaWVsZENvbmZpZy0+e0NvbmZpZ30gOiAkREZEZXRhaWxzOwogICAgbXkgJFJlZmVyZW5jZWRPYmplY3RUeXBlID0gJERGRGV0YWlscy0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfTsKCiAgICBpZiAoICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW0nICYmICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBwYXJhbWV0ZXIgUmVmZXJlbmNlZE9iamVjdFR5cGUgbXVzdCBiZSBlaXRoZXIgSVRTTUNvbmZpZ0l0ZW0gb3IgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHsKICAgICAgICBteSBATGlua0NvbmZpZ3M7CgogICAgICAgIHB1c2ggQExpbmtDb25maWdzLCAkREZEZXRhaWxzICAgIGlmICRERkRldGFpbHMtPntMaW5rVHlwZX07CiAgICAgICAgcHVzaCBATGlua0NvbmZpZ3MsICRPbGRERkRldGFpbHMgaWYgJE9sZEZpZWxkQ29uZmlnICYmICRPbGRERkRldGFpbHMtPntMaW5rVHlwZX07CgogICAgICAgICMgTGlua2luZyBpcyBub3QgbmVjZXNzYXJpbHkgc2V0IHVwLiBUaGF0IGlzIGZpbmUuCiAgICAgICAgcmV0dXJuIDEgdW5sZXNzIEBMaW5rQ29uZmlnczsKCiAgICAgICAgIyBXaGVuIGxpbmtpbmcgaXMgc2V0IHVwIHdlIG5lZWQgdGhlIGNvbXBsZXRlIGluZm9ybWF0aW9uIGZvciBob3cKICAgICAgICAjIHRoZSBsaW5raW5nIHNob3VsZCBiZSBkb25lLgogICAgICAgIGZvciBteSAkQ29uZmlnIChATGlua0NvbmZpZ3MpIHsKICAgICAgICAgICAgTkVFREVEOgogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTGlua0RpcmVjdGlvbiBMaW5rUmVmZXJlbmNpbmdUeXBlKSkgewogICAgICAgICAgICAgICAgbmV4dCBORUVERUQgaWYgJENvbmZpZy0+eyROZWVkZWR9OwoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gcXF7SW52YWxpZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24uIFRoZSBzZXR0aW5nICROZWVkZWQgaXMgbWlzc2luZyx9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJERCT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFdlIGNhbiBlaXRoZXIgYnVpbGQgInN0YXRpYyIgbGlua3MgZnJvbSBzcGVjaWZpYyBjb25maWcgaXRlbSB2ZXJzaW9ucwogICAgIyBvciAiZHluYW1pYyIgbGlua3MgZnJvbSBhIENJIGRpcmVjdGx5LgogICAgIyBEZXBlbmRpbmcgb24gdGhhdCB3ZSB1c2UgYSBkaWZmZXJlbnQgb2JqZWN0IGlkCiAgICBteSAkT2JqZWN0SUQgPSAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnID8gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gOiAkUGFyYW17Q29uZmlnSXRlbVZlcnNpb25JRH07CgogICAgbXkgJExpbmtUeXBlSUQ7CiAgICBteSAkT2JqZWN0Q29sdW1uOwogICAgbXkgJFZhbHVlQ29sdW1uOwogICAgbXkgQE9sZFZhbHVlczsKCiAgICBteSAkR2V0Q29sdW1uRGF0YSA9IHN1YiB7CiAgICAgICAgbXkgJENvbmZpZyA9ICRfWzBdOwoKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJENvbmZpZy0+e0xpbmtUeXBlfTsKICAgICAgICAkTGlua1R5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlTmFtZSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJExpbmtUeXBlSUQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbGluayB0eXBlICckTGlua1R5cGVOYW1lJyBpcyBub3QgdmFsaWQnLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNpbmcpIG9iamVjdCBpZCBkZXBlbmRzIG9uIHRoZSBkaXJlY3Rpb24gYW5kCiAgICAgICAgIyBvbiB3aGV0aGVyIHdlIGxpbmsgZnJvbSBhIHNwZWNpZmljIHZlcnNpb24gKHN0YXRpYykgb3IgdGhlIENJIChkeW5hbWljKQogICAgICAgICMgUG9zc2libGUgY29sdW1ucyBhcmU6CiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX2lkCiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQsCiAgICAgICAgIyAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgICAgICMgICBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkCiAgICAgICAgJE9iamVjdENvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAnc291cmNlJyAgICAgOiAndGFyZ2V0JyApLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnRHluYW1pYycgICAgICAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNlZCkgdmFsdWUgYWxzbyBkZXBlbmRzIG9uIHRoZSBsaW5rIGRpcmVjdGlvbgogICAgICAgICMgYW5kIGhlcmUgb24gdGhlIGZpZWxkIHR5cGU7IGlmIHRoZSBsYXR0ZXIgY2hhbmdlcyBiZXR3ZWVuIGRlZmluaXRpb25zIFJlYnVpbGRMaW5rVGFibGUgaGFzIHRvIGJlIHVzZWQKICAgICAgICAjIFRoZSBwb3NzaWJsZSBjb2x1bW5zIGFyZSB0aGUgc2FtZSBhcyBhYm92ZQogICAgICAgICRWYWx1ZUNvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAndGFyZ2V0JyAgICAgOiAnc291cmNlJyApLAogICAgICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwogICAgfTsKCiAgICAjIGZpcnN0IGRlbGV0ZSBleGlzdGluZyBsaW5rcwogICAgaWYgKCAkT2xkREZEZXRhaWxzLT57TGlua1R5cGV9ICkgewogICAgICAgICRHZXRDb2x1bW5EYXRhLT4oJE9sZERGRGV0YWlscyk7CgogICAgICAgICMgaWYgd2UgaGF2ZSBDSSAtIENJIGxpbmtzLCB3ZSBoYXZlIHRvIHRyaWdnZXIgQ3VySW5jaVN0YXRlIFJlY2FsY3VsYXRpb24gZm9yIGRlbGV0ZWQgbGlua3MKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkT2xkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBAT2xkVmFsdWVzID0gJERCT2JqZWN0LT5TZWxlY3RDb2xBcnJheSgKICAgICAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCAkVmFsdWVDb2x1bW4gRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJER5bmFtaWNGaWVsZElELCBcJE9iamVjdElEIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRHluYW1pY0ZpZWxkSUQsIFwkT2JqZWN0SUQgXSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgd2UgZGlkIGEgZGVmaW5pdGlvbiB1cGRhdGUsIHdlIGhhdmUgdG8gImxvYWQiIHRoZSBuZXcgREYgQ29uZmlnCiAgICBpZiAoJE9sZEZpZWxkQ29uZmlnKSB7CiAgICAgICAgJEdldENvbHVtbkRhdGEtPigkREZEZXRhaWxzKTsKICAgIH0KCiAgICBteSBATmV3VmFsdWVzID0gJFBhcmFte1ZhbHVlfQogICAgICAgID8gcmVmICRQYXJhbXtWYWx1ZX0gPyAoIGdyZXAgeyRffSAkUGFyYW17VmFsdWV9LT5AKiApIDogKCAkUGFyYW17VmFsdWV9ICkKICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgKCk7CgogICAgIyBmaW5hbGx5IHNldCB0aGUgbmV3IGxpbmtzCiAgICBpZiAoICRERkRldGFpbHMtPntMaW5rVHlwZX0gJiYgQE5ld1ZhbHVlcyApIHsKCiAgICAgICAgJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fbGluayAoCiAgICBkeW5hbWljX2ZpZWxkX2lkLCBsaW5rX3R5cGVfaWQsICRPYmplY3RDb2x1bW4sICRWYWx1ZUNvbHVtbiwKICAgIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICgKICAgID8sID8sID8sID8sCiAgICBjdXJyZW50X3RpbWVzdGFtcCwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsgJER5bmFtaWNGaWVsZElELCAkTGlua1R5cGVJRCwgJE9iamVjdElELCBcQE5ld1ZhbHVlcyBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBsYXN0bHkgd2UgaGF2ZSB0byByZWNhbGMgY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgZm9yIGZ1bGx5IGR5bmFtaWMgbGlua3MKICAgIGlmICgKICAgICAgICBAT2xkVmFsdWVzCiAgICAgICAgfHwKICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkKICAgICAgICApCiAgICB7CgogICAgICAgIG15ICVMaW5rZWQ7CiAgICAgICAgbXkgJVVubGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBPbGRWYWx1ZXM7CgogICAgICAgICMgaWYgd2UgaGF2ZSBhIG5vcm1hbCBmaWVsZCB1cGRhdGUsIHdlIGRvIG5vdCBuZWVkIHRvIHJlY2FsY3VsYXRlIGxpbmtzIHdoaWNoIGRvIG5vdCBjaGFuZ2UKICAgICAgICBpZiAoICEkT2xkRmllbGRDb25maWcgKSB7CiAgICAgICAgICAgIGZvciBteSAkSUQgKEBOZXdWYWx1ZXMpIHsKICAgICAgICAgICAgICAgIGlmICggZXhpc3RzICRVbmxpbmtlZHskSUR9ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkVW5saW5rZWR7JElEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMaW5rZWR7JElEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW4gY2FzZSBvZiBhIGRlZmluaXRpb24gdXBkYXRlICh3ZSBoYXZlIGFuIG9sZCBERiBDb25maWcpIHdlIGp1c3QgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIGFyZSBmdWxseSBkeW5hbWljCiAgICAgICAgIyB3ZSBkbyBub3Qgc2tpcCBzdGF5aW5nIGxpbmtzLCBiZWNhdXNlIGRpcmVjdGlvbiBhbmQgdHlwZSBtaWdodCBoYXZlIGNoYW5nZWQKICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICAlTGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBOZXdWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X1RyaWdnZXJDdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIExpbmtlZCAgICAgICA9PiBbIGtleXMgJUxpbmtlZCBdLAogICAgICAgICAgICBVbmxpbmtlZCAgICAgPT4gWyBrZXlzICVVbmxpbmtlZCBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBhc3N1bWUgc3VjY2VzcwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBSZWJ1aWxkTGlua1RhYmxlKCkKCnB1cmdlIGFuZCByZXBvcHVsYXRlIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4gYmFzZWQgb24gdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcwphbmQgb24gdGhlIExpbmtPYmplY3QgZGF0YS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgpUaGUgcmVzdWx0IGlzIGEgaGFzaHJlZiBsaWtlOgoKICAgIG15ICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgPT4gMSwgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZQogICAgICAgIE1lc3NhZ2UgID0+ICdzb21lIG1lc3NhZ2UnLAogICAgICAgIENvbG9yICAgID0+ICdncmVlbicsICAgICMgb3IgcmVkLCBvciB5ZWxsb3cKICAgIH07Cgo9Y3V0CgpzdWIgUmVidWlsZExpbmtUYWJsZSB7CiAgICBteSAoJFNlbGYpID0gQF87CgogICAgIyBubyBwYXJhbWV0ZXJzIGFyZSBzdXBwb3J0ZWQKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHB1cmdlIHRoZSB0YWJsZSwgZ2l2ZSB1cCBpbiBjYXNlIG9mIGVycm9yCiAgICBteSAkU3VjY2Vzc1B1cmdlID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLicpLAogICAgICAgIENvbG9yICAgPT4gJ3JlZCcsCiAgICB9IHVubGVzcyAkU3VjY2Vzc1B1cmdlOwoKICAgICMgR2V0IHRoZSByZWxldmFudCBkeW5hbWljIGZpZWxkcy4gUmVsZXZhbnQgYXJlIG9ubHkKICAgICMgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIHRoYXQgY29ubmVjdCBhbiBJVFNNQ29uZmlnSXRlbQogICAgIyB0byBhbm90aGVyIElUU01Db25maWdJdGVtIG9yIGFuIElUU01Db25maWdJdGVtVmVyc2lvbi4KICAgICMgQW5vdGhlciBjb25kaXRpb24gaXMgdGhhdCB0aGUgYXR0cmlidXRlICdMaW5rVHlwZScgaXMgY29uZmlndXJlZCBmb3IgdGhhdAogICAgIyBkeW5hbWljIGZpZWxkLgogICAgbXkgQER5bmFtaWNGaWVsZHM7CiAgICB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkQ29tcGxldGVEeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nCiAgICAgICAgKTsKICAgICAgICBARHluYW1pY0ZpZWxkcyA9CiAgICAgICAgICAgIGdyZXAgeyAkXy0+e0NvbmZpZ30tPntMaW5rVHlwZX0gfQogICAgICAgICAgICBncmVwIHsgcmVmICRfLT57Q29uZmlnfSBlcSAnSEFTSCcgfQogICAgICAgICAgICBncmVwIHsgJF8tPntGaWVsZFR5cGV9ID1+IG0vXkNvbmZpZ0l0ZW0vIH0KICAgICAgICAgICAgJENvbXBsZXRlRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICB9CgogICAgIyBub3RoaW5nIHRvIGRvIHdoZW4gdGhlcmUgYXJlIG5vIGR5bmFtaWMgZmllbGRzCiAgICAjIFRPRE86IGNvdmVyIHRoZSBjYXNlIHdoZXJlIG9ubHkgTGlua09iamVjdCBpcyB1c2VkCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCcpLAogICAgICAgIENvbG9yICAgPT4gJ3llbGxvdycsCiAgICB9IHVubGVzcyBARHluYW1pY0ZpZWxkczsKCiAgICAjIE5lZWRlZCBmb3IgZGVjaWRpbmcgd2hpY2ggYXR0cmlidXRlIG9mIGNvbmZpZ2l0ZW1fbGluayBpcyB1c2VkLgogICAgbXkgJUxpbmtzVG9DSSA9CiAgICAgICAgbWFwICB7ICRfLT57SUR9ID0+IDEgfQogICAgICAgIGdyZXAgeyAkXy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKICAgIG15ICVMaW5rc1RvQ0lWZXJzaW9uID0KICAgICAgICBtYXAgIHsgJF8tPntJRH0gPT4gMSB9CiAgICAgICAgZ3JlcCB7ICRfLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbVZlcnNpb24nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEVhc3kgYWNjZWVkIHRvIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZy4KICAgIG15ICVERkxvb2t1cEJ5SUQgPQogICAgICAgIG1hcCB7ICRfLT57SUR9ID0+ICRfIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEdldCB0aGUgcmVsZXZhbnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMuCiAgICAjIFRoZSBtZXRob2RzIGluIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZSBhcmUgc3BlY2lmaWMgdG8gc3BlY2lmaWMgZmllbGRzLAogICAgIyBzbyB1c2UgZGVkaWNhdGVkIFNRTCBoZXJlLgogICAgbXkgJFJvd3M7CiAgICB7CiAgICAgICAgbXkgJVF1ZXJ5Q29uZGl0aW9uID0gJERCT2JqZWN0LT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICA9PiAnZGZ2LmZpZWxkX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgPT4gWyBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlREZMb29rdXBCeUlEIF0sCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkUm93cyA9ICREQk9iamVjdC0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsClNFTEVDVCBkZnYuZmllbGRfaWQsIHYuY29uZmlnaXRlbV9pZCwgdi5pZCwgZGZ2LnZhbHVlX2ludCwgdl9tYXgubWF4X3ZlcnNpb25faWQKICBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2CiAgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdgogICAgT04gZGZ2Lm9iamVjdF9pZCA9IHYuaWQKICBJTk5FUiBKT0lOICgKICAgIFNFTEVDVCBjb25maWdpdGVtX2lkLCBNQVgoaWQpIEFTIG1heF92ZXJzaW9uX2lkCiAgICAgIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgICAgIEdST1VQIEJZIGNvbmZpZ2l0ZW1faWQKICApIEFTIHZfbWF4CiAgICBPTiB2X21heC5jb25maWdpdGVtX2lkID0gdi5jb25maWdpdGVtX2lkCiAgV0hFUkUgJFF1ZXJ5Q29uZGl0aW9ue1NRTH0KICBPUkRFUiBieSBkZnYuaWQKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+ICRRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlcyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGEgYmF0Y2ggaW5zZXJ0CgogICAgIyBmb3IgdGhlIGxpbmsgdHlwZXMgd2UgbmVlZCB0byBkbyBzb21lIHdvcmsKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICgKICAgICAgICBATGlua1R5cGVJRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywKICAgICAgICBARmllbGRJRHMsCiAgICApOwogICAgUk9XOgogICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgbXkgKCAkRmllbGRJRCwgJENvbmZpZ0l0ZW1JRCwgJFZlcnNpb25JRCwgJFZhbHVlLCAkTWF4VmVyc2lvbklEICkgPSAkUm93LT5AKjsKCiAgICAgICAgbmV4dCBST1cgdW5sZXNzICRERkxvb2t1cEJ5SUR7JEZpZWxkSUR9OwoKICAgICAgICBteSAkREZEZXRhaWxzID0gJERGTG9va3VwQnlJRHskRmllbGRJRH0tPntDb25maWd9OwoKICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJERGRGV0YWlsczsKCiAgICAgICAgTkVFREVEOgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhMaW5rVHlwZSBMaW5rRGlyZWN0aW9uKSkgewogICAgICAgICAgICBuZXh0IE5FRURFRCBpZiAkREZEZXRhaWxzLT57JE5lZWRlZH07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBxcXtJbnZhbGlkIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gVGhlIHNldHRpbmcgJE5lZWRlZCBpcyBtaXNzaW5nIGZvciBmaWVsZCAkREZMb29rdXBCeUlEeyRGaWVsZElEfS0+e05hbWV9LH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgIG15ICRMaW5rVHlwZU5hbWUgPSAkREZEZXRhaWxzLT57TGlua1R5cGV9OwogICAgICAgIG15ICRMaW5rVHlwZUlEICAgPSAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSAgID0+ICRMaW5rVHlwZU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRMaW5rVHlwZUlEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGxpbmsgdHlwZSAnJExpbmtUeXBlTmFtZScgaXMgbm90IHZhbGlkJy4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHNvbWV0aW1lcyBvbmx5IHRoZSBzZXR0aW5nIG9mIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIGlzIHJlbGV2YW50CiAgICAgICAgIyBUaGUgZGVmYXVsdCBpcyBEeW5hbWljLgogICAgICAgIG15ICRMaW5rSXNEeW5hbWljID0gMDsKICAgICAgICAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gLy89ICdEeW5hbWljJzsKICAgICAgICBpZiAoICRERkRldGFpbHMtPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnJyB8fCAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJFZlcnNpb25JRCA9PSAkTWF4VmVyc2lvbklEOwoKICAgICAgICAgICAgJExpbmtJc0R5bmFtaWMgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzb21lIHZhbHVlcyBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGRpcmVjdGlvbgogICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAkTGlua1R5cGVJRDsKICAgICAgICBwdXNoIEBGaWVsZElEcywgICAgJEZpZWxkSUQ7CgogICAgICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJERGRGV0YWlscy0+e0xpbmtEaXJlY3Rpb259OwogICAgICAgIGlmICggJExpbmtEaXJlY3Rpb24gZXEgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBhcyBhYm92ZSwgYnV0IGJhY2t3YXJkcwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgICMgTXVsdGl2YWx1ZSBJTlNFUlQKICAgIG15ICROdW1SZWZlcmVuY2VSb3dzID0gJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKSU5TRVJUIElOVE8gY29uZmlnaXRlbV9saW5rICgKICAgIGxpbmtfdHlwZV9pZCwKICAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIHRhcmdldF9jb25maWdpdGVtX2lkLAogICAgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIGR5bmFtaWNfZmllbGRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieQogICkKICBWQUxVRVMgKD8sID8sID8sID8sID8sID8sIENVUlJFTlRfVElNRVNUQU1QKCksIDEpCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXEBMaW5rVHlwZUlEcywKICAgICAgICAgICAgXEBTb3VyY2VDb25maWdJdGVtSURzLAogICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIFxAVGFyZ2V0Q29uZmlnSXRlbVZlcnNpb25JRHMsCiAgICAgICAgICAgIFxARmllbGRJRHMsCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJyksCiAgICAgICAgQ29sb3IgICA9PiAncmVkJywKICAgIH0gdW5sZXNzIGRlZmluZWQgJE51bVJlZmVyZW5jZVJvd3M7CgogICAgIyBhZGQgcm93cyBmcm9tIExpbmtPYmplY3QsIHRoYXQgaXMgZnJvbSB0aGUgbGlua19yZWxhdGlvbiB0YWJsZQogICAgbXkgJE51bUxpbmtPYmplY3RSb3dzID0gMDsKICAgIHsKICAgICAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgICAgICMgZ2V0IGEgbGlzdCBvZiBwb3NzaWJsZSBsaW5rIHR5cGVzIGJldHdlZW4gY29uZmlnIGl0ZW1zIGZyb20gdGhlIFN5c0NvbmZpZwogICAgICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyBmb3IgdGhlIGRhdGFiYXNlIFNFTEVDVCB3ZSBuZWVkIHRoZSBudW1lcmljIElEcwogICAgICAgIG15IEBQb3NzaWJsZUxpbmtUeXBlSURzID0KICAgICAgICAgICAgbWFwIHsgJExpbmtPYmplY3QtPlR5cGVMb29rdXAoIE5hbWUgPT4gJF8sIFVzZXJJRCA9PiAxICkgfQogICAgICAgICAgICBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiAgICAgICAgbXkgJVR5cGVRdWVyeUNvbmRpdGlvbiA9ICREQk9iamVjdC0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ3R5cGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICA9PiBcQFBvc3NpYmxlTGlua1R5cGVJRHMsCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBsaW1pdCB0byBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcwogICAgICAgICMgQW4gSUQgaXMgY3JlYXRlZCB3aGVuIE9iamVjdExvb2t1cCgpIGlzIGNhbGxlZCB0aGUgZm9yIGZpcnN0IHRpbWUgd2l0aCB0aGF0IG5hbWUKICAgICAgICBteSAkQ0lPYmplY3RJRCA9ICRMaW5rT2JqZWN0LT5PYmplY3RMb29rdXAoCiAgICAgICAgICAgIE5hbWUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICApOwoKICAgICAgICAjIHRlbXBvcmFyeSBsaW5rcyBhcmUgbm90IGNvbnNpZGVyZWQKICAgICAgICBteSAkVGVtcG9yYXJ5U3RhdGVJRCA9ICRMaW5rT2JqZWN0LT5TdGF0ZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAnVGVtcG9yYXJ5JywKICAgICAgICApOwoKICAgICAgICBteSAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCB0eXBlX2lkLCBzb3VyY2Vfa2V5LCB0YXJnZXRfa2V5CiAgRlJPTSBsaW5rX3JlbGF0aW9uCiAgV0hFUkUgc3RhdGVfaWQgPD4gPwogICAgQU5EIHNvdXJjZV9vYmplY3RfaWQgPSA/CiAgICBBTkQgdGFyZ2V0X29iamVjdF9pZCA9ID8KICAgIEFORCAkVHlwZVF1ZXJ5Q29uZGl0aW9ue1NRTH0KRU5EX1NRTAogICAgICAgIG15IEBCaW5kcyA9ICgKICAgICAgICAgICAgXCRUZW1wb3JhcnlTdGF0ZUlELAogICAgICAgICAgICBcJENJT2JqZWN0SUQsCiAgICAgICAgICAgIFwkQ0lPYmplY3RJRCwKICAgICAgICAgICAgJFR5cGVRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LT5AKgogICAgICAgICk7CgogICAgICAgIHJldHVybiB1bmxlc3MgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICAgICApOwoKICAgICAgICBteSAoIEBMaW5rVHlwZUlEcywgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsIEBUYXJnZXRDb25maWdJdGVtSURzICk7CiAgICAgICAgd2hpbGUgKCBteSAoICRMaW5rVHlwZUlELCAkU291cmNlQ29uZmlnSXRlbUlELCAkVGFyZ2V0Q29uZmlnSXRlbUlEICkgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAgICAgICAgICRMaW5rVHlwZUlEOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAkU291cmNlQ29uZmlnSXRlbUlEOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAkVGFyZ2V0Q29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgIyBNdWx0aXZhbHVlIElOU0VSVAogICAgICAgICROdW1MaW5rT2JqZWN0Um93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoCiAgICA/LCA/LCA/LAogICAgQ1VSUkVOVF9USU1FU1RBTVAoKSwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFxATGlua1R5cGVJRHMsCiAgICAgICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTnVtUm93cyA9ICROdW1SZWZlcmVuY2VSb3dzICsgJE51bUxpbmtPYmplY3RSb3dzOwoKICAgICMgd2FybiB3aGVuIHRoZXJlIGFyZSBubyBsaW5rcwogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnKSwKICAgICAgICBDb2xvciAgID0+ICd5ZWxsb3cnLAogICAgfSBpZiAkTnVtUm93cyA9PSAwOwoKICAgICMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGxpbmssIGxvb2tzIGdvb2QKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdEb25lJyksCiAgICAgICAgQ29sb3IgICA9PiAnZ3JlZW4nLAogICAgfTsKfQoKc3ViIF9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0lUU006OkNvcmU6OkluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24nKTsKCiAgICByZXR1cm4gMSBpZiAhJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqOwoKICAgICMgdGhlIGNhY2hlIGZvciBEeW5hbWljRmllbGRzID0+IDAgaXMgYWxyZWFkeSBlbXB0aWVkIGJlZm9yZSBERnMgYXJlIHdyaXR0ZW4KICAgIG15ICRSZWZlcmVuY2luZ0NJID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwoKICAgICMgdG8gbm90IGFsd2F5cyByZWNhbGN1bGF0ZSB0aGUgY29tcGxldGUKICAgIG15IEBDSXNUb1JlY2FsYzsKCiAgICAjIGlmIHRoZSByZWZlcmVuY2luZyBDSSBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgQ3VySW5jaSBhbmQgSW5jaSBzdGF0ZSwganVzdCByZWNhbGN1bGF0ZSBldmVyeXRoaW5nCiAgICBpZiAoICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57SW5jaVN0YXRlSUR9ICkgewogICAgICAgIEBDSXNUb1JlY2FsYyA9ICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKTsKCiAgICAgICAgcHVzaCBAQ0lzVG9SZWNhbGMsICRQYXJhbXtVbmxpbmtlZH0tPkAqOwogICAgfQoKICAgIGVsc2UgewogICAgICAgIExJTktFRDoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte0xpbmtlZH0tPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgaW5pdGlhdGUgdGhlIHdob2xlIHJlY2FsY3VsYXRpb24gaWYgdGhlcmUgaXMgYW55IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgQ3VySW5jaVN0YXRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgQENJc1RvUmVjYWxjID0gKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgIGxhc3QgTElOS0VEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte1VubGlua2VkfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRJRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIHVubGlua2VkIENJcyB3ZSBhbHdheXMgaGF2ZSB0byBhZGQgYm90aCBzaWRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgJENJc1RvUmVjYWxjWzBdID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICBwdXNoIEBDSXNUb1JlY2FsYywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICFAQ0lzVG9SZWNhbGM7CgogICAgcmV0dXJuICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBcQENJc1RvUmVjYWxjLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Mask.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TWFzazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0KTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok1hc2sgLSBmdW5jdGlvbnMgdG8gcHJlcGFyZSBhbmQgYWRtaW5pc3RyYXRlIGNvbmZpZyBpdGVtIG1hc2tzCgo9aGVhZDEgREVTQ1JJUFRJT04KCmZ1bmN0aW9ucyB0byBwcmVwYXJlIGFuZCBhZG1pbmlzdHJhdGUgY29uZmlnIGl0ZW0gbWFza3MKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCkRvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICRNYXNrT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpNYXNrJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIERlZmluaXRpb25TZXQoKQoKU2V0IHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkU3VjY2VzcyA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uU2V0KAogICAgICAgIERlZmluaXRpb24gICAgICAgPT4gXEBEZWZpbml0aW9uLAogICAgICAgIERlZmluaXRpb25TdHJpbmcgPT4gJFlBTUxTdHJpbmcsICAjIGVpdGhlciBEZWZpbml0aW9uIG9yIERlZmluaXRpb25TdHJpbmcgaXMgbmVlZGVkCiAgICAgICAgTWFzayAgICAgICAgICAgICA9PiAkTWFzaywKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25TZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvVXNlcklEIE1hc2svKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gKSB7CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RlZmluaXRpb25TdHJpbmd9LAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICREZWZpbml0aW9uUmVmIG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIGFuZCBhcnJheSBpbiB2YWxpZCBZQU1MIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEZWZpbml0aW9ufSApIHsKICAgICAgICAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKAogICAgICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZCBub3QgZ2VuZXJhdGUgWUFNTCBmcm9tIHByb3ZpZGVkIERlZmluaXRpb24hJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uIG9yIERlZmluaXRpb25TdHJpbmchJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkU2VsZi0+RGVmaW5pdGlvbkRlbGV0ZSgKICAgICAgICBNYXNrICAgICAgPT4gJFBhcmFte01hc2t9LAogICAgICAgIEtlZXBDYWNoZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdJTlNFUlQgSU5UTyBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gKCBtYXNrLCBkZWZpbml0aW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5ICkgVkFMVUVTICggPywgPywgY3VycmVudF90aW1lc3RhbXAsID8gKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TWFza30sIFwkUGFyYW17RGVmaW5pdGlvblN0cmluZ30sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIERlZmluaXRpb25HZXQoKQoKR2V0IHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIE1hc2sgICA9PiAkTWFzaywKICAgICAgICBSZXR1cm4gPT4gJ0FSUkFZJywgIyBPcHRpb25hbCBlaXRoZXIgQVJSQVkgKGRlZmF1bHQpIG9yIFNUUklORyB3aGljaCByZXR1cm5zIHRoZSBZQU1MCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvTWFzay8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAkUGFyYW17UmV0dXJufSB8fD0gJ0FSUkFZJzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBkZWZpbml0aW9uIEZST00gZnJvbnRlbmRfbWFza19kZWZpbml0aW9uIFdIRVJFIG1hc2sgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TWFza30gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAoJERlZmluaXRpb25TdHJpbmcpID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCk7CgogICAgcmV0dXJuIGlmICEkRGVmaW5pdGlvblN0cmluZzsKCiAgICByZXR1cm4gJERlZmluaXRpb25TdHJpbmcgaWYgJFBhcmFte1JldHVybn0gZXEgJ1NUUklORyc7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvblN0cmluZywKICAgICk7Cn0KCj1oZWFkMiBEZWZpbml0aW9uRGVsZXRlKCkKCkRlbGV0ZSB0aGUgZGVmaW5pdGlvbiBmb3IgYSBjb25maWcgaXRlbSBtYXNrCgogICAgbXkgJFN1Y2Nlc3MgPSAkTWFza09iamVjdC0+RGVmaW5pdGlvbkRlbGV0ZSgKICAgICAgICBNYXNrID0+ICRNYXNrLAogICAgKTsKCj1jdXQKCnN1YiBEZWZpbml0aW9uRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3L01hc2svKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gV0hFUkUgbWFzayA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte01hc2t9IF0sCiAgICApOwp9Cgo9aGVhZDIgQ29uZmlndXJlZE1hc2tzTGlzdCgpCgpHZXQgYWxsIGNvbmZpZ3VyZWQgbWFza3MKCiAgICBteSBATWFza3MgPSAkTWFza09iamVjdC0+Q29uZmlndXJlZE1hc2tzTGlzdCgpOwoKPWN1dAoKc3ViIENvbmZpZ3VyZWRNYXNrc0xpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgbWFzayBGUk9NIGZyb250ZW5kX21hc2tfZGVmaW5pdGlvbicsCiAgICApOwoKICAgIG15IEBNYXNrczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQE1hc2tzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBATWFza3M7Cn0KCj1oZWFkMiBSZW5kZXJJbnB1dCgpCgpSZW5kZXIgaW5wdXQgZmllbGRzIGFjY29yZGluZyB0byBtYXNrIGRlZmluaXRpb24KCiAgICAkTWFza09iamVjdC0+UmVuZGVySW5wdXQoCiAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgTWFza0RlZmluaXRpb24gICAgICAgID0+ICRNYXNrRGVmaW5pdGlvbiwKICAgICAgICBEeW5hbWljRmllbGRDb25maWdzICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3MsCiAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgID0+ICRDb25maWcsCiAgICAgICAgU2VwYXJhdGVEeW5hbWljRmllbGRzID0+ICRTZXBhcmF0ZUR5bmFtaWNGaWVsZHMsCiAgICApOwoKPWN1dAoKc3ViIFJlbmRlcklucHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3L0dldFBhcmFtIExheW91dE9iamVjdCBNYXNrRGVmaW5pdGlvbi8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnc30gKTsKCiAgICBteSAlR2V0UGFyYW0gPSAleyAkUGFyYW17R2V0UGFyYW19IH07CgogICAgbXkgJUR5bmFtaWNGaWVsZENvbmZpZ3NIYXNoID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWdzfSB9OwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte01hc2tEZWZpbml0aW9ufSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBtYXNrIGRlZmluaXRpb24hIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZvciBteSAkQXJlYURlZmluaXRpb24gKCBAeyAkUGFyYW17TWFza0RlZmluaXRpb259IH0gKSB7CiAgICAgICAgbXkgJUFyZWEgPSAoIFJvd3MgPT4gW10gKTsKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQXJlYURlZmluaXRpb24tPntHcmlkfSApICkgewogICAgICAgICAgICAlQXJlYSA9ICRBcmVhRGVmaW5pdGlvbi0+e0dyaWR9LT4lKjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRBcmVhRGVmaW5pdGlvbi0+e0xpc3R9ICkgKSB7CiAgICAgICAgICAgICRBcmVhe1Jvd3N9ICAgID0gWyBtYXAgeyBbJF9dIH0gJEFyZWFEZWZpbml0aW9uLT57TGlzdH0tPkAqIF07CiAgICAgICAgICAgICRBcmVhe0NvbHVtbnN9ID0gMTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUm93ICggQHsgJEFyZWF7Um93c30gfSApIHsKCiAgICAgICAgICAgIG15ICRSb3dDbGFzc1N0cmluZyA9ICcnOwogICAgICAgICAgICBteSAkUm93UmVhZE9ubHkgICAgPSAoIGZpcnN0IHsgJF8tPntSZWFkT25seX0gfSAkUm93LT5AKiApID8gMSA6IDA7CgogICAgICAgICAgICAjIGhpZGUgY29tcGxldGUgcm93IGlmIG5vIGZpZWxkIGlzIHZpc2libGUKICAgICAgICAgICAgaWYgKCAkUGFyYW17VmlzaWJpbGl0eX0gJiYgIWdyZXAgeyAkUGFyYW17VmlzaWJpbGl0eX17IkR5bmFtaWNGaWVsZF8kXy0+e05hbWV9In0gfSBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgJFJvd0NsYXNzU3RyaW5nIC49ICcgb29vQUNMSGlkZGVuJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGVjaWFsIHRyZWF0bWVudCBmb3Igc2VwYXJhdGUgZHluYW1pYyBmaWVsZHMgYmFzZWQgb24gZmlyc3QgZmllbGQKICAgICAgICAgICAgbXkgJFJvd0Jsb2NrTmFtZSA9ICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9ICYmICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9LT57ICRSb3ctPlswXXtOYW1lfSB9CiAgICAgICAgICAgICAgICA/ICdSb3dfRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17U2VwYXJhdGVEeW5hbWljRmllbGRzfS0+eyAkUm93LT5bMF17TmFtZX0gfSA6ICdSb3dfRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICMgQ29sdW1uIHNpemUgc3RyaW5nIGlzIHNwbGl0IGluIHBhcnRzLiBVc2VkIGFyZSBhcyBtYW55IHBhcnRzIGFzIGNvbHVtbnMgYXJlIGRlZmluZWQKICAgICAgICAgICAgIyBQYXJ0cyBhcmUgY2hlY2tlZCBhZ2FpbnN0IGEgcmVnZXgKICAgICAgICAgICAgbXkgJENvbHVtblNpemVTdHJpbmcgPSAnJzsKICAgICAgICAgICAgaWYgKCAkQXJlYXtDb2x1bW5TaXplfSApIHsKICAgICAgICAgICAgICAgIG15IEBDb2x1bW5TaXplcyA9IHNwbGl0KCAnICcsICRBcmVhe0NvbHVtblNpemV9ICk7CiAgICAgICAgICAgICAgICBteSAkQ29sdW1uSW5kZXggPSAwOwogICAgICAgICAgICAgICAgQ09MVU1OU0laRToKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uU2l6ZSAoQENvbHVtblNpemVzKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5TSVpFIGlmICRDb2x1bW5TaXplICF+IC9eKChcZChcLlxkKT9mclxzPyl8KFxkK3B4XHM/KXxhdXRvXHM/KSskLzsKICAgICAgICAgICAgICAgICAgICBsYXN0IENPTFVNTlNJWkUgaWYgJENvbHVtbkluZGV4ID09ICggJEFyZWF7Q29sdW1uc30gfHwgMSApOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TaXplU3RyaW5nIC49ICRDb2x1bW5TaXplIC4gJyAnOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5JbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2hpbGUgKCBzY2FsYXIgc3BsaXQoICcgJywgJENvbHVtblNpemVTdHJpbmcgKSA8ICRBcmVhe0NvbHVtbnN9ICkgewogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TaXplU3RyaW5nIC49ICcgMWZyJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQ29sdW1uU2l6ZVN0cmluZyB8fD0gIjFmciAiIHggJEFyZWF7Q29sdW1uc307CgogICAgICAgICAgICAkUm93Q2xhc3NTdHJpbmcgLj0gJEFyZWF7Q29sdW1uc30gPiAxID8gJyBNdWx0aUNvbHVtbicgOiAnJzsKICAgICAgICAgICAgbXkgJE11bHRpVmFsdWVGaWVsZCA9ICcnOwogICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpZWxkSXRlbSAoICRSb3ctPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2h7ICRGaWVsZEl0ZW0tPntOYW1lfSB9LT57Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkUm93Q2xhc3NTdHJpbmcgLj0gJyBNdWx0aVZhbHVlJzsKICAgICAgICAgICAgICAgICAgICAkTXVsdGlWYWx1ZUZpZWxkID0gJEZpZWxkSXRlbS0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUm93QmxvY2tOYW1lLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVDb2x1bW5zID0+ICRDb2x1bW5TaXplU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIFJvd0NsYXNzZXMgICAgICA9PiAkUm93Q2xhc3NTdHJpbmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFRlbXBsYXRlRGF0YUxpc3Q7CgogICAgICAgICAgICAjIER5bmFtaWNGaWVsZEhUTUwgaXMgYXNzdW1lZCB0byBiZSBhIGhhc2ggd2l0aCBzZXBhcmF0ZSBodG1sIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgIG15IEBIVE1MQ291bnRLZXlzID0ga2V5cyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnskTXVsdGlWYWx1ZUZpZWxkfXtIVE1MfS0+JSo7CiAgICAgICAgICAgIG15ICRNYXhWYWx1ZUNvdW50ID0gQEhUTUxDb3VudEtleXMgPyAkI0hUTUxDb3VudEtleXMgOiAwOwogICAgICAgICAgICBmb3IgKCBteSAkUm93SW5kZXggPSAwOyAkUm93SW5kZXggPD0gJE1heFZhbHVlQ291bnQ7ICRSb3dJbmRleCsrICkgewogICAgICAgICAgICAgICAgbXkgJEdyaWRFbGVtZW50U3RhcnQgPSAxOwogICAgICAgICAgICAgICAgRUxFTUVOVDoKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQgeyAoICRhLT57U3RhcnR9IHx8IDEgKSA8PT4gKCAkYi0+e1N0YXJ0fSB8fCAxICkgfSBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWdzSGFzaHsgJEVsZW1lbnQtPntOYW1lfSB9ICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJEdldFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICRFbGVtZW50LT57TmFtZX0gfSApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2h7ICRFbGVtZW50LT57TmFtZX0gfTsKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTERhdGEgPSAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJEVsZW1lbnQtPntOYW1lfSB9OwogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MICAgICA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0hUTUx9eyRSb3dJbmRleH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZEhUTUwgJiYgISRSb3dJbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkSFRNTERhdGEtPntGaWVsZH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhJER5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5DbGFzc1N0cmluZyA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIGhpZGUgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17VmlzaWJpbGl0eX0gJiYgISRQYXJhbXtWaXNpYmlsaXR5fXsiRHluYW1pY0ZpZWxkXyRFbGVtZW50LT57TmFtZX0ifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENvbHVtbkNsYXNzU3RyaW5nIC49ICcgb29vQUNMSGlkZGVuJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29sdW1uIHBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5TdHlsZSA9ICdncmlkLWNvbHVtbjogJzsKICAgICAgICAgICAgICAgICAgICAkR3JpZEVsZW1lbnRTdGFydCA9ICggJEVsZW1lbnQtPntTdGFydH0gJiYgJEVsZW1lbnQtPntTdGFydH0gPiAkR3JpZEVsZW1lbnRTdGFydCApID8gJEVsZW1lbnQtPntTdGFydH0gOiAkR3JpZEVsZW1lbnRTdGFydDsKCiAgICAgICAgICAgICAgICAgICAgIyBzYXZpbmcgZWxlbWVudCBzdGFydCBmb3IgY29ycmVjdCBwbGFjaW5nIG9mIHJvd3Mgd2l0aCBtaXhlZCBmaWVsZHMgKG11bHRpdmFsdWUgYW5kIG5vbi1tdWx0aXZhbHVlKQogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LT57U3RhcnR9ID0gJEdyaWRFbGVtZW50U3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgJENvbHVtblN0eWxlIC49ICRHcmlkRWxlbWVudFN0YXJ0IC4gJyAvICc7CiAgICAgICAgICAgICAgICAgICAgJEdyaWRFbGVtZW50U3RhcnQrKzsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU3R5bGUgLj0gJEVsZW1lbnQtPntTcGFufSA/ICdzcGFuICcgLiAkRWxlbWVudC0+e1NwYW59IDogJ3NwYW4gMSc7CgogICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHNlcGFyYXRlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbEJsb2NrTmFtZSA9ICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9ICYmICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9LT57ICRFbGVtZW50LT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA/ICdEeW5hbWljRmllbGRfJyAuICRFbGVtZW50LT57TmFtZX0gOiAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiAkUm93SW5kZXggPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFRlbXBsYXRlQ29uZmlnID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICggJFBhcmFte0lEU3VmZml4fSA/ICRQYXJhbXtJRFN1ZmZpeH0gOiAnJyApIC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZFRlbXBsYXRlSFRNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRUZW1wbGF0ZUNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksICAgICMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgPT4gJFBhcmFte0FKQVhVcGRhdGFibGVGaWVsZHN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJbnRlcmZhY2UgID0+ICRQYXJhbXtDdXN0b21lckludGVyZmFjZX0gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5ICAgICAgICAgICA9PiAkRWxlbWVudC0+e1JlYWRPbmx5fSAgICAgIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRlbXBsYXRlRGF0YUxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgPT4gKCAkRmllbGRUZW1wbGF0ZUhUTUwtPntIVE1MfXsnMCd9IHx8ICRGaWVsZFRlbXBsYXRlSFRNTC0+e0ZpZWxkfSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0eWxlID0+ICRDb2x1bW5TdHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRDb2x1bW5DbGFzc1N0cmluZyAuPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSA/ICcgTXVsdGlWYWx1ZV8nIC4gJFJvd0luZGV4IDogJyc7CiAgICAgICAgICAgICAgICAgICAgbXkgJENlbGxCbG9ja0RhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdHlsZSAgID0+ICRDb2x1bW5TdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgVG9vbHRpcCAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUb29sdGlwfSwKICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93UmVhZE9ubHkgICA9PiAkUm93UmVhZE9ubHksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkNsYXNzZXMgPT4gJENvbHVtbkNsYXNzU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBJbmRleCAgICAgICAgID0+ICRSb3dJbmRleCwKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dJbmRleCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2VsbEJsb2NrRGF0YS0+e0xhYmVsfSA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkQ29sQmxvY2tOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRDZWxsQmxvY2tEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHRlbXBsYXRlcyBmb3IgZHluYW1pY2ZpZWxkcyBhdCBlbmQgb2Ygcm93CiAgICAgICAgICAgIGZvciBteSAkVGVtcGxhdGVEYXRhIChAVGVtcGxhdGVEYXRhTGlzdCkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZE11bHRpVmFsdWVUZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkVGVtcGxhdGVEYXRhLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Number.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGNvbmZpZyBpdGVtIG51bWJlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoKQoKcmV0dXJuIGNvbmZpZyBpdGVtIGlkIG9yIGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7CgogICAgb3IKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAnMTIzNDU0MzIxJywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAhJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgQ29uZmlnSXRlbU51bWJlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntJRH0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1OdW1iZXJMb29rdXB9LT57SUR9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgY29uZmlnaXRlbV9udW1iZXIgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAgICAgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e0lEfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9ID0gJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgIHJldHVybiAkQ29uZmlnSXRlbU51bWJlcjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e051bWJlcn0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFIGNvbmZpZ2l0ZW1fbnVtYmVyID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUeXBlIENsYXNzSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkUGFyYW17VHlwZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgY29uZmlnIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hICRAIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlQmFzZUNsYXNzKCAkUGFyYW17VHlwZX0gKTsKCiAgICAjIGNyZWF0ZSBudW1iZXIKICAgIG15ICROdW1iZXIgPSAkU2VsZi0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJE51bWJlcjsKfQoKPWhlYWQyIEN1cnJlbnRDb3VudGVyR2V0KCkKCnJldHVybiB0aGUgY3VycmVudCBjb3VudGVyIG9mIGEgY2xhc3MKCiAgICBteSAkQ291bnRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXJyZW50Q291bnRlckdldCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICk7Cgo9Y3V0CgpzdWIgQ3VycmVudENvdW50ZXJHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2xhc3NJRCBUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNvdW50ZXIgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIGNvdW50ZXJfdHlwZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtUeXBlfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJE51bWJlcjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJE51bWJlciA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICROdW1iZXI7Cn0KCj1oZWFkMiBDdXJyZW50Q291bnRlclNldCgpCgpzZXQgdGhlIGN1cnJlbnQgY291bnRlciBvZiBhIGNsYXNzCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAnQXV0b0luY3JlbWVudCcsCiAgICAgICAgQ291bnRlciA9PiAnMTInLAogICAgKTsKCj1jdXQKCnN1YiBDdXJyZW50Q291bnRlclNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIFR5cGUgQ291bnRlcikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgb2xkIGNvdW50ZXIKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgY2xhc3NfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAjIHNldCBuZXcgY291bnRlcgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9jb3VudGVyICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb3VudGVyX3R5cGUsIGNvdW50ZXIpIFZBTFVFUyAoPywgPywgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFBhcmFte1R5cGV9LCBcJFBhcmFte0NvdW50ZXJ9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Number/AutoIncrement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50IC0gY29uZmlnIGl0ZW0gbnVtYmVyIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBhdXRvIGluY3JlbWVudCBjb25maWcgaXRlbSBudW1iZXIgZnVuY3Rpb25zCgo9aGVhZDIgX0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQmFja2VuZE9iamVjdC0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIF9Db25maWdJdGVtTnVtYmVyQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN5c3RlbSBpZAogICAgbXkgJFN5c3RlbUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTeXN0ZW1JRCcpOwoKICAgICMgZ2V0IGN1cnJlbnQgY291bnRlcgogICAgbXkgJEN1cnJlbnRDb3VudGVyID0gJFNlbGYtPkN1cnJlbnRDb3VudGVyR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgIFR5cGUgICAgPT4gJ0F1dG9JbmNyZW1lbnQnLAogICAgKSB8fCAwOwoKICAgIENJUEhFUjoKICAgIGZvciBteSAkQ2lwaGVyICggMSAuLiAxXzAwMF8wMDBfMDAwICkgewoKICAgICAgICAjIGNyZWF0ZSBuZXcgbnVtYmVyCiAgICAgICAgbXkgJE51bWJlciA9ICRTeXN0ZW1JRCAuICRQYXJhbXtDbGFzc0lEfSAuIHNwcmludGYoICIlMDZkIiwgKCAkQ3VycmVudENvdW50ZXIgKyAkQ2lwaGVyICkgKTsKCiAgICAgICAgIyBmaW5kIGV4aXN0aW5nIG51bWJlcgogICAgICAgIG15ICREdXBsaWNhdGUgPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkTnVtYmVyLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0lQSEVSIGlmICREdXBsaWNhdGU7CgogICAgICAgICMgc2V0IGNvdW50ZXIKICAgICAgICAkU2VsZi0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ291bnRlciA9PiAoICRDdXJyZW50Q291bnRlciArICRDaXBoZXIgKSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE51bWJlcjsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb24gLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggUGVybWlzc2lvbiBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIFBlcm1pc3Npb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBQZXJtaXNzaW9uKCkKCnJldHVybnMgd2hldGhlciB0aGUgdXNlciBoYXMgcGVybWlzc2lvbnMgb3Igbm90CgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgU2NvcGUgICAgPT4gJ0NsYXNzJywgIyBDbGFzcyB8fCBJdGVtCiAgICAgICAgQ2xhc3NJRCAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnQ2xhc3MnCiAgICAgICAgSXRlbUlEICAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnSXRlbScKICAgICAgICBVc2VySUQgICA9PiAxMjMsCiAgICApOwoKb3Igd2l0aG91dCBsb2dnaW5nLCBmb3IgZXhhbXBsZSBmb3IgdG8gY2hlY2sgaWYgYSBsaW5rL2FjdGlvbiBzaG91bGQgYmUgc2hvd24KCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJ3JvJywKICAgICAgICBTY29wZSAgICA9PiAnQ2xhc3MnLCAjIENsYXNzIHx8IEl0ZW0KICAgICAgICBDbGFzc0lEICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdDbGFzcycKICAgICAgICBJdGVtSUQgICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdJdGVtJwogICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhUeXBlIFNjb3BlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgSXRlbUlEIG9yIENsYXNzSUQgZGVwZW5kZW50CiAgICAjIG9uIHRoZSBTY29wZQogICAgaWYgKAogICAgICAgICggJFBhcmFte1Njb3BlfSBlcSAnQ2xhc3MnICYmICEkUGFyYW17Q2xhc3NJRH0gKQogICAgICAgIHx8CiAgICAgICAgKCAkUGFyYW17U2NvcGV9IGVxICdJdGVtJyAmJiAhJFBhcmFte0l0ZW1JRH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ2xhc3NJRCBpZiBTY29wZSBpcyAnQ2xhc3MnIG9yIEl0ZW1JRCBpZiBTY29wZSBpcyAnSXRlbSchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBSdW4gYWxsIElUU01Db25maWdJdGVtIFBlcm1pc3Npb24gbW9kdWxlcy4KICAgICMKICAgICMgVGhlIGlkZWEgaXMgdGhlIHRoZSBwZXJtaXNzaW9uIG1vZHVsZXMgYXJlIG9yZGVyZWQgYW5kIGNhbiBiZSBkaXZpZGVkIGludG8gdHdvIHBoYXNlcy4KICAgICMgSW4gdGhlIGZpcnN0IHBoYXNlICdSZXF1aXJlZCcgaXMgb24gYW5kICdHcmFudGVkJyBpcyBvZmYuIFRoaXMgYXNzdXJlcyB0aGF0IGFsbCByZXF1aXJlZAogICAgIyBwcmVjb25kaXRpb25zIGFyZSBtZXQuIEluIHRoZSBzZWNvbmQgcGhhc2UgJ1JlcXVpcmVkJyBpcyBvZmYgYW5kICdHcmFudGVkJyBpcyBvbi4gSXQgc3VmZmljZXMKICAgICMgd2hlbiBvbmx5IG9uIHNlY29uZCBwaGFzZSBtb2R1bGUgZ3JhbnRzIGFjY2Vzcy4KICAgICMKICAgICMgT3RoZXIgY29tYmluYXRpb25zIGFyZSBwb3NzaWJsZSBidXQgbWlnaHQgYnJpbmcgc3VycHJpc2luZyByZXN1bHRzLgogICAgaWYgKAogICAgICAgIHJlZiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKSBlcSAnSEFTSCcKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJU1vZHVsZXMgPSAlewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKQogICAgICAgIH07CiAgICAgICAgTU9EVUxFOgogICAgICAgIGZvciBteSAkTW9kdWxlICggc29ydCBrZXlzICVNb2R1bGVzICkgewoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBuZXh0IE1PRFVMRSB1bmxlc3MgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1vZHVsZXN7JE1vZHVsZX0tPntNb2R1bGV9ICk7CgogICAgICAgICAgICAjIGNyZWF0ZSBvYmplY3QKICAgICAgICAgICAgbXkgJE1vZHVsZU9iamVjdCA9ICRNb2R1bGVzeyRNb2R1bGV9LT57TW9kdWxlfS0+bmV3OwoKICAgICAgICAgICAgIyBleGVjdXRlIFJ1bigpCiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRNb2R1bGVPYmplY3QtPlJ1biglUGFyYW0pOwoKICAgICAgICAgICAgIyBjaGVjayBncmFudGVkIG9wdGlvbiAoc2hvdWxkIEkgc2F5IG9rKQogICAgICAgICAgICBpZiAoICRBY2Nlc3NPayAmJiAkTW9kdWxlc3skTW9kdWxlfS0+e0dyYW50ZWR9ICkgewoKICAgICAgICAgICAgICAgICMgYWNjZXNzIG9rCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzICBiZWNhdXNlIGFjY2VzcyBpcyBmYWxzZSBidXQgaXQncyByZXF1aXJlZAogICAgICAgICAgICBpZiAoICEkQWNjZXNzT2sgJiYgJE1vZHVsZXN7JE1vZHVsZX0tPntSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIGJlY2F1c2UgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIigkTW9kdWxlc3skTW9kdWxlfS0+e01vZHVsZX0pIGlzIHJlcXVpcmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIihVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICckUGFyYW17VHlwZX0nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIm9uICRQYXJhbXtTY29wZX06ICIgLiAkUGFyYW17ICRQYXJhbXtTY29wZX0gLiAnSUQnIH0gLiAiKSEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBkb24ndCBncmFudCBhY2Nlc3MKICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgKFVzZXJJRDogJFBhcmFte1VzZXJJRH0gJyRQYXJhbXtUeXBlfScgIgogICAgICAgICAgICAgICAgLiAib24gJFBhcmFte1Njb3BlfTogIiAuICRQYXJhbXsgJFBhcmFte1Njb3BlfSAuICdJRCcgfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCj1oZWFkMiBDdXN0b21lclBlcm1pc3Npb24oKQoKcmV0dXJucyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9ucyBvciBub3QKCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICAgICAgTG9nTm8gICAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGRvIG5vdCBsb2csIGRlZmF1bHQ6IDAKICAgICk7Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDdXN0b21lckdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBteSAlQ29uZGl0aW9ucyA9ICV7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJykgLy8ge30gfTsKICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIENPTkRJVElPTjoKICAgIGZvciBteSAkQ29uZGl0aW9uU2V0ICggdmFsdWVzICVDb25kaXRpb25zICkgewogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0dyb3Vwc30gJiYgJENvbmRpdGlvblNldC0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRDdXN0b21lckdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEdyb3VwTG9va3VweyRffSB9ICRDb25kaXRpb25TZXQtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gPyAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBDbGFzc2VzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSBAQ2xhc3NlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgewogICAgICAgICAgICBteSBARGVwbFN0YXRlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gPyAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBEZXBsU3RhdGVzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0gQERlcGxTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgewogICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIGtleXMgJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewogICAgICAgICAgICAgICAgbXkgJENvbmRpdGlvblZhbHVlID0gJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gLy8gJyc7CgogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25kaXRpb25WYWx1ZSBuZSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggIXJlZiAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25kaXRpb25WYWx1ZSBuZSAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZGl0aW9uVmFsdWUgZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifS0+QCo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJF8gZXEgJENvbmRpdGlvblZhbHVlIH0gJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifS0+QCo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICEkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9OwoKICAgICAgICAgICAgbXkgQEN1c3RvbWVyVXNlcnMgPSByZWYgJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAgICAgPyAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9LT5AKgogICAgICAgICAgICAgICAgOiAoICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9IH0gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIG5vbmUgeyAkXyBlcSAkUGFyYW17VXNlcklEfSB9IEBDdXN0b21lclVzZXJzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgISRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH07CgogICAgICAgICAgICBteSBAQ3VzdG9tZXJDb21wYW5pZXMgPSByZWYgJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAgICAgPyAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9LT5AKgogICAgICAgICAgICAgICAgOiAoICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0gKTsKCiAgICAgICAgICAgIG15ICVBY2Nlc3NpYmxlQ3VzdG9tZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBDb250ZXh0Q3VzdG9tZXJzKAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEFjY2Vzc2libGVDdXN0b21lcnN7JF99IH0gQEN1c3RvbWVyQ29tcGFuaWVzOwogICAgICAgIH0KCiAgICAgICAgIyBncmFudCBhY2Nlc3MKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIChDdXN0b21lclVzZXJJRDogJFBhcmFte1VzZXJJRH0gIgogICAgICAgICAgICAgICAgLiAib24gQ29uZmlnSXRlbTogIiAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gIikhIiwKICAgICAgICApOwogICAgfQoKICAgICMgZG9uJ3QgZ3JhbnQgYWNjZXNzCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrIC0gY2hlY2sgaWYgYSB1c2VyIGJlbG9uZ3MgdG8gYSBncm91cAo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgaXMgYSBwZXJtaXNzaW9uIG1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENoZWNrT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uOjpDbGFzc0dyb3VwQ2hlY2snKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKdGhpcyBtZXRob2QgZG9lcyB0aGUgY2hlY2sgaWYgdGhlIHVzZSBiZWxvbmdzIHRvIGEgZ2l2ZW4gZ3JvdXAKCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgIENsYXNzSUQgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDb21wdXRlcicsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlcklEIFR5cGUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhIGZvciB0aGUgcmVsZXZhbnQgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufTsKICAgIG15ICgkQ2xhc3NJdGVtUGVybWlzc2lvbikgPSAkQ2xhc3NJdGVtLT57UGVybWlzc2lvbn0tPkAqOwogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKCiAgICAjIGdldCB1c2VyIGdyb3VwcwogICAgbXkgQEdyb3VwSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBSZXN1bHQgPT4gJ0lEJywKICAgICAgICBDYWNoZWQgPT4gMSwKICAgICk7CgogICAgIyBsb29raW5nIGZvciBncm91cCBpZCwgZ3JhbnQgYWNjZXNzIGlmIHVzZXIgaXMgaW4gZ3JvdXAKICAgIGZvciBteSAkR3JvdXBJRCAoQEdyb3VwSURzKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJENsYXNzSXRlbVBlcm1pc3Npb24gJiYgJEdyb3VwSUQgZXEgJENsYXNzSXRlbVBlcm1pc3Npb247CiAgICB9CgogICAgIyByZWZ1c2UgYWNjZXNzIHBlciBkZWZhdWx0CiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ItemClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjayAtIGNoZWNrIGlmIGEgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBpcyBhIHBlcm1pc3Npb24gbW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uClRoZSBjaGVjayBpcyBiYXNlZCBvbiB0aGUgY2xhc3Mgb2YgdGhlIGNvbmZpZyBpdGVtLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDaGVja09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjaycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHt9LCAkVHlwZTsKfQoKPWhlYWQyIFJ1bigpCgp0aGlzIG1ldGhvZCBkb2VzIHRoZSBjaGVjayBpZiB0aGUgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBJdGVtSUQgPT4gMzQ1LAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJJRCBUeXBlIEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICk7CgogICAgIyBnZXQgZGF0YSBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBpdGVtIGNsYXNzCiAgICBteSAkQ2xhc3NJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENsYXNzSXRlbS0+e1Blcm1pc3Npb259OwogICAgbXkgKCRDbGFzc0l0ZW1QZXJtaXNzaW9uKSA9ICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufS0+QCo7CiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW1QZXJtaXNzaW9uOwoKICAgICMgZ2V0IHVzZXIgZ3JvdXBzCiAgICBteSBAR3JvdXBJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFJlc3VsdCA9PiAnSUQnLAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAjIGxvb2tpbmcgZm9yIGdyb3VwIGlkLCBncmFudCBhY2Nlc3MgaWYgdXNlciBpcyBpbiBncm91cAogICAgZm9yIG15ICRHcm91cElEIChAR3JvdXBJRHMpIHsKICAgICAgICByZXR1cm4gMSBpZiAkQ2xhc3NJdGVtUGVybWlzc2lvbiAmJiAkR3JvdXBJRCBlcSAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKICAgIH0KCiAgICAjIHJlZnVzZSBhY2Nlc3MgcGVyIGRlZmF1bHQKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Version.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbjsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbiAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB2ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgSVRTTUNvbmZpZ0l0ZW0gb2JqZWN0cy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgVmVyc2lvblpvb21MaXN0KCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIHZlcnNpb24gbGlzdCBhcyBhcnJheS1oYXNoIHJlZmVyZW5jZQoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblpvb21MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZ2V0IHZlcnNpb24gem9vbSBsaXN0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZCwgbmFtZSwgdmVyc2lvbl9zdHJpbmcsIGRlcGxfc3RhdGVfaWQsIGluY2lfc3RhdGVfaWQsIGRlc2NyaXB0aW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFZlcnNpb25MaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWZXJzaW9uTGlzdCwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAkUm93WzJdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAkUm93WzNdLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAkUm93WzRdLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkUm93WzVdLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAkUm93WzZdLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAkUm93WzddLAogICAgICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAkUm93WzhdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICA9PiAkUm93WzldLAogICAgICAgICAgICB9OwoKICAgIH0KCiAgICBmb3IgbXkgJFZlcnNpb24gKEBWZXJzaW9uTGlzdCkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkRGVwbFN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gICAgID0gJERlcGxTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57RGVwbFN0YXRlVHlwZX0gPSAkRGVwbFN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkSW5jaVN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0luY2lTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gICAgID0gJEluY2lTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57SW5jaVN0YXRlVHlwZX0gPSAkSW5jaVN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgYWRkIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzSUR9ICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzfSAgICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICAgICAgJFZlcnNpb24tPntOdW1iZXJ9ICAgICAgICAgICA9ICRDb25maWdJdGVtLT57TnVtYmVyfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJEZXBsU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVUeXBlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJJbmNpU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfTsKICAgIH0KCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25MaXN0QWxsKCkKClJldHVybnMgYSB0d28tZGltZW5zaW9uYWwgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgY29uZmlnIGl0ZW0gaWRzIGFzIGtleXMgb2YgdGhlIGZpcnN0IGxldmVsCmFuZCB0aGUgY29ycmVzcG9uZGluZyB2ZXJzaW9uIGlkcyBhcyBrZXlzIG9mIHRoZSBzZWNvbmQgbGV2ZWwsCnRoZW4gZm9sbG93ZWQgYnkgdGhlIHZlcnNpb24gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZS4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3RBbGwoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBbIDEsIDIsIDMsIDQsIC4uLl0sICAgICMgb3B0aW9uYWwKCiAgICAgICAgT2xkZXJEYXRlICAgICA9PiAnMjAxNC0xMi0yMiAyMzo1OTo1OScsICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaW5kcyB2ZXJzaW9ucyBvbGRlciB0aGFuIHRoZSBnaXZlbiBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9ybWF0IE1VU1QgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBZWVlZLU1NLUREIEhIOk1NOlNTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsbCBtaXNzaW5nIHZhbHVlcyB3aXRoIDAgZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFeGFtcGxlOiAyMDE0LTA0LTAxIDA3OjAzOjA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGl0IHdvbid0IGJlIHRha2VuIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFsaWQgc2VhcmNoIHBhcmFtZXRlcgoKICAgICAgICBMaW1pdCAgICAgICAgID0+IDEwMDAwMDAsICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKClJldHVybnM6CgogICAgJFZlcnNpb25MaXN0UmVmID0gewoKICAgICAgICAjIENvbmZpZ0l0ZW1JRAogICAgICAgIDEgPT4gewoKICAgICAgICAgICAgIyBWZXJzaW9uSUQKICAgICAgICAgICAgMTAwID0+IHsKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnQ29uZmlnSXRlbTEnLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAnVmVyc2lvbjEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiA1LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAzLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAyLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDE2LTAzLTIyIDE3OjU4OjAwJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDEwMSA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDEwMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0yJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24yJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBDb25maWdJdGVtSUQKICAgICAgICAyID0+IHsKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDE1MCA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDE1MCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMiwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0xJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24xJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAjIFZlcnNpb25JRAogICAgICAgICAgICAxNTEgPT4gewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAxNTEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+IDIsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdDb25maWdJdGVtMScsCiAgICAgICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICdWZXJzaW9uMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+IDUsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDMsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdBQkNEJywKICAgICAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgPT4gJzIwMTYtMDMtMjIgMTc6NTg6MDAnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFZlcnNpb25MaXN0QWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjb2xsZWN0IHRoZSBjb25kaXRpb25zIGZvciB0aGUgV0hFUkUgY2xhdXNlCiAgICBteSBAQ29uZGl0aW9uczsKICAgIG15IEBCaW5kUGFyYW1ldGVyOwoKICAgICMgaWYgd2UgZ290IENvbmZpZ0l0ZW1JRHMgbWFrZSBzdXJlIHdlIGp1c3QgaGF2ZSBudW1lcmljIGlkcywKICAgICMgZXh0cmFjdCB0aG9zZSBhbmQgdXNlIGl0IGZvciB0aGUgcXVlcnkKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9IGdyZXAgeyAkXyA9fiBtL15cZCskLyB9IEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9OwogICAgICAgIHB1c2ggQENvbmRpdGlvbnMsICdjb25maWdpdGVtX2lkIElOICgnIC4gKCBqb2luICcsICcsIEBDb25maWdJdGVtSURzICkgLiAnKSc7CiAgICB9CgogICAgaWYgKCAkUGFyYW17T2xkZXJEYXRlfSAmJiAkUGFyYW17T2xkZXJEYXRlfSA9fiBtL15cZHs0fVwtXGR7Mn1cLVxkezJ9XCBcZHsyfVw6XGR7Mn06XGR7Mn0kLyApIHsKICAgICAgICBwdXNoIEBDb25kaXRpb25zLCAgICAnY3JlYXRlX3RpbWUgPCA/JzsKICAgICAgICBwdXNoIEBCaW5kUGFyYW1ldGVyLCBcJFBhcmFte09sZGVyRGF0ZX07CiAgICB9CgogICAgIyBidWlsZCBzcWwKICAgIG15ICRTUUwgPSA8PCdFTkRfU1FMJzsKU0VMRUNUIGlkLCBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KRU5EX1NRTAoKICAgIGlmIChAQ29uZGl0aW9ucykgewogICAgICAgICRTUUwgLj0gJ1dIRVJFICcgLiBqb2luICcgQU5EICcsIEBDb25kaXRpb25zOwogICAgfQoKICAgICMgc2V0IGxpbWl0CiAgICBpZiAoICRQYXJhbXtMaW1pdH0gKSB7CiAgICAgICAgJFBhcmFte0xpbWl0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJFBhcmFte0xpbWl0fSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgaWYgKEBCaW5kUGFyYW1ldGVyKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgID0+IFxAQmluZFBhcmFtZXRlciwKICAgICAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlUmVzdWx0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlc3VsdHN7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSB7CiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUm93WzFdLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRSb3dbMl0gIHx8ICcnLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRSb3dbM10gIHx8ICcnLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICRSb3dbNF0gIHx8ICcnLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+ICRSb3dbNV0gIHx8ICcnLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRSb3dbNl0gIHx8ICcnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRSb3dbN10gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICRSb3dbOF0gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+ICRSb3dbOV0gIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgID0+ICRSb3dbMTBdIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VCeSAgICAgID0+ICRSb3dbMTFdIHx8ICcnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIFwlUmVzdWx0czsKfQoKPWhlYWQyIFZlcnNpb25MaXN0KCkKCnJldHVybiB0aGUgbGlzdCBvZiBjb25maWcgaXRlbSB2ZXJzaW9uIElEcyBvZiB0aGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtIGFzIGFuIGFycmF5IHJlZmVyZW5jZS4KVGhlIElEcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15IEBWZXJzaW9uTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RDb2xBcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8KICBPUkRFUiBCWSBpZApFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25OYW1lR2V0KCkKCnJldHVybnMgdGhlIG5hbWUgb2YgYSB2ZXJzaW9uIG9mIGEgY29uZmlnIGl0ZW0uCgogICAgbXkgJFZlcnNpb25OYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25OYW1lR2V0KAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICApOwoKb3IKCiAgICBteSAkVmVyc2lvbk5hbWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbk5hbWVHZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbk5hbWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQgb3IgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRQYXJhbXtWZXJzaW9uSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VmVyc2lvbklEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSBjb25maWdpdGVtX2lkID0gPyBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVZlcnNpb247CiAgICB3aGlsZSAoIG15ICggJElkLCAkTmFtZSApID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmVyc2lvbntWZXJzaW9uSUR9ID0gJElkOwogICAgICAgICRWZXJzaW9ue05hbWV9ICAgICAgPSAkTmFtZTsKICAgIH0KCiAgICAjIGNoZWNrIHZlcnNpb24KICAgIGlmICggISRWZXJzaW9ue1ZlcnNpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyBzdWNoIGNvbmZpZyBpdGVtIHZlcnNpb24hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBjYWNoZSBmb3IgVmVyc2lvbklEIChhbHdheXMpCiAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRWZXJzaW9ue1ZlcnNpb25JRH07CiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwkVmVyc2lvbntOYW1lfSwKICAgICk7CgogICAgIyBzZXQgY2FjaGUgZm9yIENvbmZpZ0l0ZW1JRCAob25seSBpZiBjYWxsZWQgd2l0aCBDb25maWdJdGVtSUQpCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdWZXJzaW9uTmFtZUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCRWZXJzaW9ue05hbWV9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9ue05hbWV9Owp9Cgo9aGVhZDIgVmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgpCgpyZXR1cm4gdGhlIGNvbmZpZyBpdGVtIGlkIG9mIGEgdmVyc2lvbgoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQ29uZmlnSXRlbUlER2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfTsKCiAgICAjIGdldCBjb25maWcgaXRlbSBpZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBjb25maWdpdGVtX2lkIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1ZlcnNpb25JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJElkOwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyAkUGFyYW17VmVyc2lvbklEfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIFZlcnNpb25BZGQoKQoKYWRkcyBhIG5ldyB2ZXJzaW9uIHRvIGVpdGhlciBhbiBleGlzdGluZyBjb25maWcgaXRlbS4KT3IgYWRkcyB0aGUgaW5pdGlhbCB2ZXJzaW9uIHRvIGFuIGNvbmZpZyBpdGVtIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLAogICAgICAgIExhc3RWZXJzaW9uSUQgICAgID0+IDEyMywKICAgICAgICBMYXN0VmVyc2lvbiAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBDb25maWdJdGVtSUQgb3IgTGFzdFZlcnNpb24oSUQpIGlzIG1hbmRhdG9yeQogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ1RoZSBOYW1lJywgICAgIyBvcHRpb25hbAogICAgICAgIFZlcnNpb25TdHJpbmcgICAgID0+ICdUaGUgVmVyc2lvbicsICMgb3B0aW9uYWwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gNCwgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlc2NyaXB0aW9uICAgICAgID0+ICdBQkNEJywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGRfTmFtZSA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRMYXN0VmVyc2lvbiA9ICRQYXJhbXtMYXN0VmVyc2lvbn0gfHwgJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRQYXJhbXtMYXN0VmVyc2lvbklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICVWZXJzaW9uID0gKAogICAgICAgICRMYXN0VmVyc2lvbi0+JSosCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENvbmZpZ0l0ZW1JRCBOYW1lIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEKSkgewogICAgICAgIGlmICggISRWZXJzaW9ueyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJENsYXNzTGlzdCBlcSAnSEFTSCc7CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFZlcnNpb257Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbntDbGFzc30hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGEgYmFja2VuZCBvYmplY3QKICAgICAgICAkTmFtZU1vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKTsKCiAgICAgICAgIyBvdmVycmlkZSBwb3NzaWJsZSBpbmNvbWluZyBuYW1lCiAgICAgICAgJFZlcnNpb257TmFtZX0gPSAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVDcmVhdGUoJVBhcmFtKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9ue0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRWZXJzaW9ue05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICMgYnVpbGQgYSBzdHJpbmcgb2YgYWxsIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgIG15ICREdXBsaWNhdGVzID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgIyB3cml0ZSBhbiBlcnJvciBsb2cgbWVzc2FnZSBjb250YWluaW5nIGFsbCB0aGUgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIG5hbWUgJFZlcnNpb257TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3Q7CiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkVmVyc2lvblN0cmluZ01vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OiRWZXJzaW9uU3RyaW5nTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb257VmVyc2lvblN0cmluZ30gPSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdC0+VmVyc2lvblN0cmluZ0dldCgKICAgICAgICAgICAgVmVyc2lvbiAgICA9PiBcJVZlcnNpb24sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgbmV3IHZlcnNpb25zIGFyZSBhbHdheXMgYWRkZWQgd2l0aCB0aGUgbmV3ZXN0IGRlZmluaXRpb24KICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkVmVyc2lvbntDbGFzc0lEfSwKICAgICk7CgogICAgaWYgKCAhJERlZmluaXRpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIERlZmluaXRpb24hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBpbnNlcnQgbmV3IHZlcnNpb24KICAgIG15ICRJbnNlcnRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fdmVyc2lvbiAoCiAgICBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CikKVkFMVUVTICgKICAgID8sID8sID8sID8sID8sID8sID8sCiAgIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPwopCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFwkVmVyc2lvbntOYW1lfSwKICAgICAgICAgICAgXCRWZXJzaW9ue1ZlcnNpb25TdHJpbmd9LAogICAgICAgICAgICBcJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVzY3JpcHRpb259LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRJbnNlcnRTdWNjZXNzOwoKICAgICMgZ2V0IGlkIG9mIG5ldyB2ZXJzaW9uCiAgICBteSAoJFZlcnNpb25JRCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIGlkCiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkIERFU0MKRU5EX1NRTAogICAgICAgIEJpbmQgID0+IFsgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIHZlcnNpb24gaWQKICAgIGlmICggISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIG5ldyB2ZXJzaW9uIGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAkU2VsZi0+X1VwZGF0ZUN1ckF0dHIoCiAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVWZXJzaW9uLAogICAgICAgIExhc3RWZXJzaW9uID0+ICRMYXN0VmVyc2lvbiwKICAgICAgICBWZXJzaW9uSUQgICA9PiAkVmVyc2lvbklELAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRob3V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgREZEYXRhICAgICAgID0+IDAsCiAgICAgICAgKSwKICAgICk7CgogICAgIyB0cmlnZ2VyIFZlcnNpb25DcmVhdGUgZXZlbgogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkTGFzdFZlcnNpb24tPntDdXJEZXBsU3RhdGV9LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15IEBVcGRhdGVkRHluYW1pY0ZpZWxkczsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFkZWZpbmVkICRWZXJzaW9ueyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnTGVucycgJiYgISRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSwKICAgICAgICApOwoKICAgICAgICAjIG9ubHkgdGhyb3cgZXZlbnRzIGZvciBmaWVsZHMgY2hhbmdlZCBmcm9tIHRoZSBsYXN0IHZlcnNpb24gLSBjaGVja2VkIGJ5IENvbmZpZ0l0ZW1VcGRhdGUoKQogICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQFVwZGF0ZWREeW5hbWljRmllbGRzLCAkRHluYW1pY0ZpZWxkLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB2ZXJzaW9uIGRhdGEgd2l0aCBhY3R1YWwgZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgICAgICAjIGltcG9ydGFudCBpbiBjYXNlIG9mIHJlZmVyZW5jZSBmaWVsZHMKICAgICAgICBpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW1wb3J0U2VhcmNoQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFZlcnNpb257ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRoIGR5bmFtaWMgZmllbGRzCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICApOwogICAgICAgIG15ICRSZWFkYWJsZU9sZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJExhc3RWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIGR5bmFtaWMgZmllbGQgdXBkYXRlIGV2ZW50LgogICAgICAgICMgVGhpcyBtaWdodCB1cGRhdGUgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4KICAgICAgICAjIEFsc28gcGFzcyBpbiB0aGUgbGFzdCB2ZXJzaW9uIGluIG9yZGVyIHRvIGFsbG93IGZvciBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gdGhlIGxhc3QgdmVyc2lvbiBpcyBjaGFuZ2VkLgogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXycgLiAkTmFtZSwKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgRmllbGROYW1lICAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIE9sZFZhbHVlICAgICAgICAgICAgICAgID0+ICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSAgICAgICAgICAgPT4gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBSZWFkYWJsZU9sZFZhbHVlICAgICAgICA9PiAkUmVhZGFibGVPbGRWYWx1ZS0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxhc3RWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW1zCiAgICBpZiAoJFJlY2FsY0N1ckluY2lTdGF0ZSkgewogICAgICAgICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uSUQ7Cn0KCj1oZWFkMiBWZXJzaW9uVXBkYXRlKCkKCnVwZGF0ZSBhIHZlcnNpb24KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25VcGRhdGUoCiAgICAgICAgVmVyc2lvbklEICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBWZXJzaW9uSUQgb3IgVmVyc2lvbiBpcyBtYW5kYXRvcnkKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICA9PiAxMjMsICAgICAgICAgICAjIG9wdGlvbmFsLCBJRCBvZiB0aGUgZGVmaW5pdGlvbiB3aGljaCB3YXMgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIGlucHV0CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnVGhlIE5hbWUnLCAgICAjIG9wdGlvbmFsCiAgICAgICAgVmVyc2lvblN0cmluZyAgICAgICAgICA9PiAnVGhlIFZlcnNpb24nLCAjIG9wdGlvbmFsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICA9PiA0LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICA9PiAnQUJDRCcsICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkXzwkREZOYW1lPiA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsLCBvbmUgcGFyYW1ldGVyIGZvciBlYWNoIGR5bmFtaWMgZmllbGQgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWQKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWZXJzaW9uID0gJFBhcmFte1ZlcnNpb259IHx8ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFZlcnNpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFZlcnNpb24gb3IgVmVyc2lvbklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICROYW1lTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpOwoKICAgICAgICAjIFRPRE86IEltcHJvdmUgYmVoYXZpb3VyIG9mIG1vZHVsZXMgd2hpY2ggYWxsb3cgbmFtZSByZXVzYWdlIGFuZCBkbyBub3QgYWx3YXlzIGRlbGV0ZSBhbmQgcmVjcmVhdGUgbmFtZXMKICAgICAgICAjIEluIGNhc2Ugd2UgaGF2ZSBhIG5hbWUgbW9kdWxlIHdoaWNoIGNyZWF0ZXMgbmFtZXMgaW5jcmVtZW50YWxseSwgd2UgY3VycmVudGx5IGhhdmUgdG8gZGVsZXRlIGZpcnN0IGFuZCByZWNyZWF0ZSB0aGVuCiAgICAgICAgaWYgKCAkTmFtZU1vZHVsZU9iamVjdC0+Y2FuKCdDb25maWdJdGVtTmFtZURlbGV0ZScpICkgewogICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVEZWxldGUoICRWZXJzaW9uLT57TmFtZX0gKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgJFZlcnNpb24tPiUqLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgJiYgJFBhcmFte05hbWV9IG5lICRWZXJzaW9uLT57TmFtZX0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkVmVyc2lvbi0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdDsKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6JFZlcnNpb25TdHJpbmdNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSA9ICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0LT5WZXJzaW9uU3RyaW5nR2V0KAogICAgICAgICAgICBWZXJzaW9uID0+IHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT4lKiwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDYWNoZU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgIGlmICggYW55IHsgZGVmaW5lZCAkUGFyYW17JF99IH0gcXcvTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlZmluaXRpb25JRCBEZXNjcmlwdGlvbi8gKSB7CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9OYW1lIFZlcnNpb25TdHJpbmcgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgRGVmaW5pdGlvbklEIERlc2NyaXB0aW9uLykgewogICAgICAgICAgICAkUGFyYW17JEF0dHJpYnV0ZX0gfHw9ICRWZXJzaW9uLT57JEF0dHJpYnV0ZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSBleGlzdGluZyB2ZXJzaW9uCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClVQREFURSBjb25maWdpdGVtX3ZlcnNpb24KICBTRVQgbmFtZSA9ID8sIHZlcnNpb25fc3RyaW5nID0gPywgZGVmaW5pdGlvbl9pZCA9ID8sIGRlcGxfc3RhdGVfaWQgPSA/LCBpbmNpX3N0YXRlX2lkID0gPywgZGVzY3JpcHRpb24gPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgV0hFUkUgaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFBhcmFte05hbWV9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyAkVXBkYXRlU3VjY2VzczsKCiAgICAgICAgIyBUaGUgY29uZmlnIGl0ZW0gaXMgb25seSBhZmZlY3RlZCB3aGVuIHRoZSBsYXN0IHZlcnNpb24gd2FzIG1vZGlmaWVkCiAgICAgICAgaWYgKCAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gZXEgJFZlcnNpb24tPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gJFNlbGYtPl9VcGRhdGVDdXJBdHRyKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgYmFzZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+IDAsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdHJpZ2dlciBWZXJzaW9uVXBkYXRlIGV2ZW50CiAgICAgICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnVmVyc2lvblVwZGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFZlcnNpb24tPntDbGFzc0lEfSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSBAVXBkYXRlZER5bmFtaWNGaWVsZHM7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICVQYXJhbSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJEF0dHJpYnV0ZSA9fiBtL15EeW5hbWljRmllbGRfKC4rKS87CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskMX07CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JDF9OwoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9LAogICAgICAgICk7CgogICAgICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICAgICBwdXNoIEBVcGRhdGVkRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZC0+e05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdmVyc2lvbiBkYXRhIHdpdGggYWN0dWFsIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgIyBpbXBvcnRhbnQgaW4gY2FzZSBvZiByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICYmICREeW5hbWljRmllbGQtPntDb25maWd9e0ltcG9ydFNlYXJjaEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFteyRBdHRyaWJ1dGV9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgZHluYW1pYyBmaWVsZHMsIHRvbwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICA9PiAxLAogICAgICAgICksCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUmVhZGFibGVPbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyROYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIHRoZSBkeW5hbWljIGZpZWxkIHVwZGF0ZSBldmVudC4KICAgICAgICAjIFRoaXMgbWlnaHQgdXBkYXRlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuCiAgICAgICAgIyBBbHNvIHBhc3MgaW4gdGhlIGxhc3QgdmVyc2lvbiBpbiBvcmRlciB0byBhbGxvdyBmb3Igc3BlY2lhbCBoYW5kbGluZyB3aGVuIHRoZSBsYXN0IHZlcnNpb24gaXMgY2hhbmdlZC4KICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8nIC4gJE5hbWUsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIEZpZWxkTmFtZSAgICAgICAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFBhcmFteyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgT2xkVmFsdWUgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgICAgICAgICAgID0+ICRSZWFkYWJsZVZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICAgICAgUmVhZGFibGVPbGRWYWx1ZSAgICAgICAgPT4gJFJlYWRhYmxlT2xkVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUmVjYWxjQ3VySW5jaVN0YXRlKSB7CgogICAgICAgICMgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgYWxsIGxpbmtlZCBjb25maWcgaXRlbXMKICAgICAgICAkU2VsZi0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWZXJzaW9uRGVsZXRlKCkKCmRlbGV0ZSBhbiBleGlzdGluZyB2ZXJzaW9uIG9yIHZlcnNpb25zCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSURzID0+IFsgMSwgMiwgMywgNCBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQsIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZlcnNpb25MaXN0ID0gW107CiAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCAkUGFyYW17VmVyc2lvbklEfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZlcnNpb25JRHN9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCBAeyAkUGFyYW17VmVyc2lvbklEc30gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICRWZXJzaW9uTGlzdCA9ICRTZWxmLT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIXNjYWxhciBAeyRWZXJzaW9uTGlzdH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gaWQgZm9yIHZlcnNpb24gKG5lZWRlZCBmb3IgZXZlbnQgaGFuZGxpbmcpCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyB0byBzdG9yZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzIGlmIHRoZXJlIGFyZSB2ZXJzaW9ucyBmcm9tIGRpZmZlcmVudCBjb25maWcgaXRlbXMKICAgIG15ICVDb25maWdJdGVtSURzOwoKICAgIG15ICRTdWNjZXNzOwogICAgZm9yIG15ICRWZXJzaW9uSUQgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZ2l0ZW0gaWQgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSB8fCAkUGFyYW17VmVyc2lvbklEc30gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkU2VsZi0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdW5pcXVlIGNvbmZpZyBpdGVtIGlkcwogICAgICAgICRDb25maWdJdGVtSURzeyRDb25maWdJdGVtSUR9ID0gMTsKCiAgICAgICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0gdmVyc2lvbgogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGRlbGV0ZSB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJERlbGV0aW9uU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gVmVyc2lvbiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIiRWZXJzaW9uSUQuIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZmlsZXMhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvciB0aGlzIHZlcnNpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKS0+T2JqZWN0VmFsdWVzRGVsZXRlKAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIE9iamVjdElEICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB2ZXJzaW9uCiAgICAgICAgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHRyaWdnZXIgVmVyc2lvbkRlbGV0ZSBldmVudCB3aGVuIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICAgICAgRXZlbnQgPT4gJ1ZlcnNpb25EZWxldGUnLAogICAgICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcwogICAgICAgICAgICBmb3IgbXkgJERGRGF0YSAocXcoMCAxKSkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICAgICBERkRhdGEgICAgPT4gJERGRGF0YQogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyRWZXJzaW9uSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBkZWxldGUgYWZmZWN0ZWQgY2FjaGVzIGZvciBDb25maWdJdGVtSUQgKG1vc3QgcmVjZW50IHZlcnNpb24gbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQpCiAgICAgICAgZm9yIG15ICRERkRhdGEgKHF3KDAgMSkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgICAgID0+ICRERkRhdGEKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiBqb2luKCAnOjonLCAnVmVyc2lvbk5hbWVHZXQnLCBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgVmVyc2lvblNlYXJjaCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25TZWFyY2goCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaGUgTmFtZScsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgOSwgOCwgNywgNiBdLCAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCgogICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLCAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0NvbmZpZ0l0ZW1JRCcsICdOdW1iZXInIF0sICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdDb25maWdJdGVtSUQnIF0KICAgICAgICAjIChDb25maWdJdGVtSUQsIE5hbWUsIE51bWJlciwgQ2xhc3NJRCwgRGVwbFN0YXRlSUQsIEluY2lTdGF0ZUlECiAgICAgICAgIyBDcmVhdGVUaW1lLCBDcmVhdGVCeSwgQ2hhbmdlVGltZSwgQ2hhbmdlQnkpCgogICAgICAgICMgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgT3JkZXJCeToKICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRpY2VzLgoKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJ1VwJywgJ0Rvd24nIF0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ1VwJyBdCiAgICAgICAgIyAoRG93biB8IFVwKQoKICAgICAgICBMaW1pdCAgICAgICAgICA9PiAxMjIsICAjIChvcHRpb25hbCkKICAgICAgICBVc2luZ1dpbGRjYXJkcyA9PiAwLCAgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlcwogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewogICAgICAgICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gPSAxOwogICAgfQoKICAgICMgdmVyaWZ5IHRoYXQgYWxsIHBhc3NlZCBhcnJheSBwYXJhbWV0ZXJzIGNvbnRhaW4gYW4gYXJyYXlyZWYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgICAgIE9yZGVyQnkKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbgogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IG9yZGVyIGFuZCBvcmRlciBkaXJlY3Rpb24KICAgIGlmICggIUB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewogICAgICAgICRQYXJhbXtPcmRlckJ5fSA9IFsnQ29uZmlnSXRlbUlEJ107CiAgICB9CiAgICBpZiAoICFAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gPSBbJ1VwJ107CiAgICB9CgogICAgIyBkZWZpbmUgb3JkZXIgdGFibGUKICAgIG15ICVPcmRlckJ5VGFibGUgPSAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICd2ci5jb25maWdpdGVtX2lkJywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ3ZyLm5hbWUnLAogICAgICAgIE51bWJlciAgICAgICA9PiAnY2kuY29uZmlnaXRlbV9udW1iZXInLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnY2kuY2xhc3NfaWQnLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAndnIuZGVwbF9zdGF0ZV9pZCcsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICd2ci5pbmNpX3N0YXRlX2lkJywKICAgICAgICBDcmVhdGVUaW1lICAgPT4gJ2NpLmNyZWF0ZV90aW1lJywKICAgICAgICBDcmVhdGVCeSAgICAgPT4gJ2NpLmNyZWF0ZV9ieScsCgogICAgICAgICMgdGhlIGNoYW5nZSB0aW1lIG9mIHRoZSBDSSBpcyB0aGUgc2FtZSBhcyB0aGUgY3JlYXRlIHRpbWUgb2YgdGhlIHZlcnNpb24hCiAgICAgICAgQ2hhbmdlVGltZSA9PiAndnIuY3JlYXRlX3RpbWUnLAoKICAgICAgICBDaGFuZ2VCeSA9PiAnY2kuY2hhbmdlX2J5JywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSAkQ291bnQgPSAwOwogICAgbXkgQE9yZGVyQnlTZWxlY3RDb2x1bW5zOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAgICAgICAgICAgIiRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICREaXJlY3Rpb24iOwogICAgICAgIHB1c2ggQE9yZGVyQnlTZWxlY3RDb2x1bW5zLCAkT3JkZXJCeVRhYmxleyRPcmRlckJ5fTsKCiAgICB9CiAgICBjb250aW51ZSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgbXkgJExpa2VFc2NhcGVTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTGlrZUVzY2FwZVN0cmluZycpOwoKICAgICMgYWRkIG5hbWUgdG8gc3FsIHdoZXJlIGFycmF5CiAgICBteSBAU1FMV2hlcmU7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICYmICRQYXJhbXtOYW1lfSBuZSAnJyApIHsKCiAgICAgICAgIyBkdXBsaWNhdGUgdGhlIG5hbWUKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtOYW1lfTsKCiAgICAgICAgIyBxdW90ZQogICAgICAgICROYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCROYW1lKTsKCiAgICAgICAgaWYgKCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewoKICAgICAgICAgICAgIyBwcmVwYXJlIGxpa2Ugc3RyaW5nCiAgICAgICAgICAgICRTZWxmLT5fUHJlcGFyZUxpa2VTdHJpbmcoIFwkTmFtZSApOwoKICAgICAgICAgICAgcHVzaCBAU1FMV2hlcmUsICJMT1dFUih2ci5uYW1lKSBMSUtFIExPV0VSKCckTmFtZScpICRMaWtlRXNjYXBlU3RyaW5nIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQFNRTFdoZXJlLCAiTE9XRVIodnIubmFtZSkgPSBMT1dFUignJE5hbWUnKSI7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGFycmF5IHBhcmFtcwogICAgbXkgJUFycmF5UGFyYW1zID0gKAogICAgICAgIENsYXNzSURzICAgICA9PiAnY2kuaWQgPSB2ci5jb25maWdpdGVtX2lkIEFORCBjaS5jbGFzc19pZCcsCiAgICAgICAgRGVwbFN0YXRlSURzID0+ICd2ci5kZXBsX3N0YXRlX2lkJywKICAgICAgICBJbmNpU3RhdGVJRHMgPT4gJ3ZyLmluY2lfc3RhdGVfaWQnLAogICAgKTsKCiAgICBBUlJBWVBBUkFNOgogICAgZm9yIG15ICRBcnJheVBhcmFtICggc29ydCBrZXlzICVBcnJheVBhcmFtcyApIHsKCiAgICAgICAgbmV4dCBBUlJBWVBBUkFNIGlmICEkUGFyYW17JEFycmF5UGFyYW19OwoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFycmF5UGFyYW19IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJyYXlQYXJhbSBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBuZXh0IEFSUkFZUEFSQU0gaWYgIUB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfTsKCiAgICAgICAgIyBxdW90ZSBhcyBpbnRlZ2VyCiAgICAgICAgZm9yIG15ICRPbmVQYXJhbSAoIEB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfSApIHsKICAgICAgICAgICAgJE9uZVBhcmFtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkT25lUGFyYW0sICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiBxeywgfSwgQHsgJFBhcmFteyRBcnJheVBhcmFtfSB9OwoKICAgICAgICBwdXNoIEBTUUxXaGVyZSwgIiRBcnJheVBhcmFtc3sgJEFycmF5UGFyYW0gfSBJTiAoJEluU3RyaW5nKSI7CiAgICB9CgogICAgIyBhZGQgcHJldmlvdXMgdmVyc2lvbiBwYXJhbQogICAgaWYgKCAhJFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gKSB7CiAgICAgICAgcHVzaCBAU1FMV2hlcmUsICdjaS5sYXN0X3ZlcnNpb25faWQgPSB2ci5pZCc7CiAgICB9CgogICAgIyBjcmVhdGUgd2hlcmUgc3RyaW5nCiAgICBteSAkV2hlcmVTdHJpbmcgPSBAU1FMV2hlcmUgPyAnIFdIRVJFICcgLiBqb2luIHF7IEFORCB9LCBAU1FMV2hlcmUgOiAnJzsKCiAgICAjIHNldCBsaW1pdCwgcXVvdGUgYXMgaW50ZWdlcgogICAgaWYgKCAkUGFyYW17TGltaXR9ICkgewogICAgICAgICRQYXJhbXtMaW1pdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICRQYXJhbXtMaW1pdH0sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICMgYWRkIHRoZSBvcmRlciBieSBjb2x1bW5zIGFsc28gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMKICAgIG15ICRPcmRlckJ5U2VsZWN0U3RyaW5nID0gJyc7CiAgICBpZiAoQE9yZGVyQnlTZWxlY3RDb2x1bW5zKSB7CiAgICAgICAgJE9yZGVyQnlTZWxlY3RTdHJpbmcgPSBqb2luICcsICcsIEBPcmRlckJ5U2VsZWN0Q29sdW1uczsKICAgICAgICAkT3JkZXJCeVNlbGVjdFN0cmluZyA9ICcsICcgLiAkT3JkZXJCeVNlbGVjdFN0cmluZzsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICJTRUxFQ1QgRElTVElOQ1QgdnIuY29uZmlnaXRlbV9pZCAkT3JkZXJCeVNlbGVjdFN0cmluZyAiCiAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtIGNpLCBjb25maWdpdGVtX3ZlcnNpb24gdnIgJwogICAgICAgIC4gJFdoZXJlU3RyaW5nOwoKICAgICMgYWRkIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIGlmIChAU1FMT3JkZXJCeSkgewogICAgICAgICRTUUwgLj0gJyBPUkRFUiBCWSAnOwogICAgICAgICRTUUwgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkU1FMIC49ICcgJzsKICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtTGlzdCwgJElkOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgVmVyc2lvbkF0dGFjaG1lbnRBZGQoKQoKYWRkcyBhbiBhdHRhY2htZW50IHRvIGEgY29uZmlnIGl0ZW0KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICBWZXJzaW9uSUQgICAgPT4gMSwKICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2ZpbGVuYW1lJywKICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJ2NvbnRlbnQnLAogICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uSUQgRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgd3JpdGUgdG8gdmlydHVhbCBmcwogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPldyaXRlKAogICAgICAgIEZpbGVuYW1lICAgID0+ICJDb25maWdJdGVtVmVyc2lvbi8kUGFyYW17VmVyc2lvbklEfS8kUGFyYW17RmlsZW5hbWV9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAnYmluYXJ5JywKICAgICAgICBDb250ZW50ICAgICA9PiBcJFBhcmFte0NvbnRlbnR9LAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJFBhcmFte0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW5ub3QgYWRkIGF0dGFjaG1lbnQgZm9yIGNvbmZpZyBpdGVtIHZlcnNpb24gJFBhcmFte1ZlcnNpb25JRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywgICAgICAgICAgICAgICAjIHVzZWQgaW4gZXZlbnQgaGFuZGxpbmcsIGUuZy4gZm9yIGxvZ2dpbmcgdGhlIGhpc3RvcnkKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ1Byb2plY3RwbGFuLnBkZicsICMgaWRlbnRpZmllcyB0aGUgYXR0YWNobWVudCAodG9nZXRoZXIgd2l0aCB0aGUgVmVyc2lvbklEKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGRlbGV0ZSBmaWxlCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RGVsZXRlKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgZXJyb3IKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGRlbGV0ZSBhdHRhY2htZW50ICRGaWxlbmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudEdldCgpCgpUaGlzIG1ldGhvZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBzcGVjaWZpYyBhdHRhY2htZW50LgoKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgIFZlcnNpb25JRCA9PiA0LAogICAgICAgIEZpbGVuYW1lICAgICA9PiAndGVzdC50eHQnLAogICAgKTsKCnJldHVybnMKCiAgICB7CiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBBbGxQcmVmZXJlbmNlcyA9PiAndGVzdCcsCiAgICAgICAgfSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAndGVzdC50eHQnLAogICAgICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgRmlsZXNpemUgICAgPT4gMTIzNDg0MDksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgfQoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZlcnNpb25JRCBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgaWYgKCAhQEF0dGFjaG1lbnRzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5SZWFkKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBNb2RlICAgICA9PiAnYmluYXJ5JywKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJbmZvID0gewogICAgICAgICVBdHRhY2htZW50RGF0YSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntDb250ZW50VHlwZX0sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgIEZpbGVzaXplICAgID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntGaWxlc2l6ZVJhd30sCiAgICB9OwoKICAgIHJldHVybiAkQXR0YWNobWVudEluZm87Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudExpc3QoKQoKUmV0dXJucyBhbiBhcnJheSB3aXRoIGFsbCBhdHRhY2htZW50cyBvZiB0aGUgZ2l2ZW4gY29uZmlnIGl0ZW0uCgogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICBAQXR0YWNobWVudHMgPSAoCiAgICAgICAgJ2ZpbGVuYW1lLnR4dCcsCiAgICAgICAgJ290aGVyX2ZpbGUucGRmJywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkF0dGFjaG1lbnRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBmaW5kIGFsbCBhdHRhY2htZW50cyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSBAQXR0YWNobWVudHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkZpbmQoCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgcmVtb3ZlIGV4dHJhIGluZm9ybWF0aW9uIGZyb20gZmlsZW5hbWUKICAgICAgICAkRmlsZW5hbWUgPX4gc3sgXEEgQ29uZmlnSXRlbVZlcnNpb24gLyBcZCsgLyB9e314bXM7CiAgICB9CgogICAgcmV0dXJuIEBBdHRhY2htZW50czsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RXhpc3RzKCkKCkNoZWNrcyBpZiBhIGZpbGUgd2l0aCBhIGdpdmVuIGZpbGVuYW1lIGV4aXN0cy4KCiAgICBteSAkRXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50RXhpc3RzKAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC50eHQnLAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhGaWxlbmFtZSBWZXJzaW9uSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSA9PiAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfVXBkYXRlQ3VyQXR0ciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDdXJJbmNpU3RhdGVJRDsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgICMgaWYgdGhlIGxhc3QgdmVyc2lvbiBkb2VzIG5vdCB5ZXQgaGF2ZSBhIEN1ckluY2lTdGF0ZUlEIHlldCB0aGUgQ29uZmlnSXRlbSBpcyBuZXcKICAgICMgc2V0IGN1cnJlbnQgSW5jaVN0YXRlSUQ7IHJlY2FsY3VsYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAobm8gbGlua3MgY2FuIGV4aXN0IHlldCkKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgIH0KCiAgICAjIGlmIHRoZSBjb25maWcgaXRlbSB1cGRhdGUgZG9lcyBub3QgY2hhbmdlIHRoZSBJbmNpU3RhdGVJRAogICAgIyB3ZSBqdXN0IGtlZXAgdGhlIEN1ckluY2lTdGF0ZUlEOyBubyByZWNhbGN1bGF0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtWZXJzaW9ufXtJbmNpU3RhdGVJRH0gZXEgJFBhcmFte0xhc3RWZXJzaW9ufXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH07CiAgICB9CgogICAgIyBpZiB0aGUgaW5jaWRlbnQgc3RhdGUgY2hhbmdlcywgd2Ugc3RhcnQgdGhlIHJlY2FsY3VsYXRpb24KICAgICMgd2UgZG8gbm90IHRlc3QgZm9yIGNhc2VzIGxpa2Ugc2FtZSBJbmNpU3RhdGVUeXBlLCBvciBuZXcgSW5jaVN0YXRlIGVxIGxhc3QgQ3VySW5jaVN0YXRlCiAgICBlbHNlIHsKICAgICAgICAkQ3VySW5jaVN0YXRlSUQgICAgID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gMTsKICAgIH0KCiAgICAjIFVwZGF0ZSBsYXN0IHZlcnNpb24sIGN1cl9pbmNpX3N0YXRlX2lkLCBjdXJfZGVwbF9zdGF0ZV9pZCBvZiB0aGUgY29uZmlnIGl0ZW0uCiAgICAjIGN1cl9pbmNpX3N0YXRlX2lkIGlzIG5lZWRlZCBieSBDdXJJbmNpU3RhdGVSZWNhbGMoKS4KICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKVVBEQVRFIGNvbmZpZ2l0ZW0KICBTRVQKICAgIGxhc3RfdmVyc2lvbl9pZCAgID0gPywKICAgIGN1cl9pbmNpX3N0YXRlX2lkID0gPywKICAgIGN1cl9kZXBsX3N0YXRlX2lkID0gPywKICAgIGNoYW5nZV90aW1lICAgICAgID0gY3VycmVudF90aW1lc3RhbXAsCiAgICBjaGFuZ2VfYnkgICAgICAgICA9ID8KICBXSEVSRSBpZCA9ID8KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFwkQ3VySW5jaVN0YXRlSUQsCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgY3VycmVudCBhdHRyaWJ1dGVzIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRSZWNhbGNDdXJJbmNpU3RhdGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/Incremental.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6SW5jcmVtZW50YWw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsIC0gVXNpbmcgYSBjb3VudGVyIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSBpZiAoICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSAmJiAhJFBhcmFte1ZlcnNpb25BZGR9ICk7CgogICAgIyBleHBlY3RlZCBwYXJhbXM6IFZlcnNpb24KICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uTGlzdFJlZik7CgogICAgbXkgJEluaXRpYWxWZXJzaW9uU3RyaW5nID0gKCBzY2FsYXIga2V5cyAkVmVyc2lvbkxpc3RSZWYtPnsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gfS0+JSogKSArIDE7CiAgICBteSAkVmVyc2lvblN0cmluZzsKICAgIHdoaWxlICggIWRlZmluZWQgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgaWYgKCBncmVwIHsgJF8tPntWZXJzaW9uU3RyaW5nfSBlcSAkSW5pdGlhbFZlcnNpb25TdHJpbmcgfSB2YWx1ZXMgJFZlcnNpb25MaXN0UmVmLT57ICRQYXJhbXtWZXJzaW9ufXtDb25maWdJdGVtSUR9IH0tPiUqICkgewogICAgICAgICAgICAkSW5pdGlhbFZlcnNpb25TdHJpbmcrKzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nID0gJEluaXRpYWxWZXJzaW9uU3RyaW5nOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFZlcnNpb25TdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/TemplateToolkit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0IC0gRXZhbHVhdGluZyBhIFRlbXBsYXRlOjpUb29sa2l0IGV4cHJlc3Npb24gZm9yIHRoZSB2ZXJzaW9uIHN0cmluZwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgpteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1ZlcnNpb259ICk7CiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfTsKCiAgICAjIGZldGNoIGV4cHJlc3Npb24gZnJvbSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgcHJlZmVyZW5jZXMKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfSwKICAgICk7CiAgICByZXR1cm4gdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSggJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ0V4cHJlc3Npb259ICk7CgogICAgIyBldmFsdWF0ZSBleHByZXNzaW9uIGRlZmluZWQgaW4gc3lzY29uZmlnCiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdFeHByZXNzaW9ufVswXSwKICAgICAgICBEYXRhICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJFZlcnNpb25TdHJpbmc7CgogICAgIyByZW1vdmUgbmV3bGluZXMgYW5kIGNhcnJpYWdlIHJldHVybnMgdG8gZW5hYmxlIG1hdGNoaW5nIHdpdGggZWRpdCBmaWVsZCB2YWx1ZQogICAgJFZlcnNpb25TdHJpbmcgPX4gcy8oXG58XHIpLy9nOwoKICAgICMgaWYgcHJldmlvdXMgdmVyc2lvbnMgZXhpc3QsIGNoZWNrIGlmIHN0cmluZyBpcyB0YWtlbgogICAgIyBmZXRjaCB2ZXJzaW9ucwogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICBpZiAoIGdyZXAgeyAkXy0+e1ZlcnNpb25TdHJpbmd9IGVxICRWZXJzaW9uU3RyaW5nIH0gdmFsdWVzICRWZXJzaW9uTGlzdFJlZi0+eyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSB9LT4lKiApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ImportExport/ObjectBackend/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgRW5jb2RlOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QgcGFpcndpc2UpOwp1c2UgTUlNRTo6QmFzZTY0ICAgcXcoZGVjb2RlX2Jhc2U2NCBlbmNvZGVfYmFzZTY0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc1N0cmluZ1dpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzQXJyYXlSZWZXaXRoRGF0YSBJc1Bvc2l0aXZlSW50ZWdlcik7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbSAtIGltcG9ydC9leHBvcnQgYmFja2VuZCBmb3IgSVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucyB0byBpbXBvcnQgYW5kIGV4cG9ydCBJVFNNIGNvbmZpZyBpdGVtcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgT2JqZWN0QXR0cmlidXRlc0dldCgpCgpnZXQgdGhlIG9iamVjdCBhdHRyaWJ1dGVzIG9mIGFuIG9iamVjdCBhcyBhIHJlZiB0byBhbiBhcnJheSBvZiBoYXNoIHJlZmVyZW5jZXMKCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RBdHRyaWJ1dGVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0CiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDbGFzc0lEJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdDbGFzcycpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICczJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4U2V0T3V0ZXInLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBWYWx1ZURlZmF1bHQgPT4gJzAnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBSZWdleCAgICAgICAgPT4gcXJ7IFxBIFxkKiBceiB9eG1zLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIE1heExlbmd0aCAgICA9PiA1LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ291bnRNYXhTZXRJbm5lcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0VtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNsdWRlQXR0YWNobWVudHMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCmdldHMgdGhlIG1hcHBpbmcgYXR0cmlidXRlcyBvZiBhbiBvYmplY3QgYXMgcmVmZXJlbmNlIHRvIGFuIGFycmF5IG9mIGhhc2ggcmVmZXJlbmNlcy4KCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5NYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkQXR0cmlidXRlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIERhdGEgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOdW1iZXIiLCBWYWx1ZSA9PiAiTnVtYmVyIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOYW1lIiwgVmFsdWUgPT4gIk5hbWUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBLZXkgPT4gIkRlcGxTdGF0ZSIsIFZhbHVlID0+ICJEZXBsb3ltZW50IFN0YXRlIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJJbmNpU3RhdGUiLCBWYWx1ZSA9PiAiSW5jaWRlbnQgU3RhdGUiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjEiLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjoyIiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjozIiwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjMiLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICAgICAgICAgIFR5cGUgPT4gIlNlbGVjdGlvbiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJLZXkiLAogICAgICAgICAgICBOYW1lICA9PiAiS2V5IiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSW5wdXQgPT4geyBUeXBlID0+ICJDaGVja2JveCIgfSwKICAgICAgICAgICAgS2V5ICAgPT4gIklkZW50aWZpZXIiLAogICAgICAgICAgICBOYW1lICA9PiAiSWRlbnRpZmllciIsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uIGZvciB0aGUgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIG5vIGVycm9yIGhhbmRsaW5nCiAgICByZXR1cm4gdW5sZXNzICREZWZpbml0aW9uOwogICAgcmV0dXJuIHVubGVzcyByZWYgJERlZmluaXRpb24gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50cyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uIFN0cmluZycpLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGRlc2NyaXB0aW9uIGlmIGRlZmluZWQKICAgIG15ICRIYXNEZXNjcmlwdGlvbiA9ICggZ3JlcCB7ICRfLT57VHlwZX0gJiYgJF8tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nIH0gdmFsdWVzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9LT4lKiApID8gMSA6IDA7CiAgICBpZiAoJEhhc0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgcHVzaCBARWxlbWVudHMsIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXNjcmlwdGlvbicpLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZWxlbWVudHMKICAgIHB1c2ggQEVsZW1lbnRzLCAkU2VsZi0+X01hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIER5bmFtaWNGaWVsZFJlZiAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sICAgICMgcGFnZSBsYXlvdXQgaXMgaWdub3JlZCBoZXJlCiAgICAgICAgQ291bnRNYXhMaW1pdCAgICAgICAgID0+ICRPYmplY3REYXRhLT57Q291bnRNYXh9ICAgICAgICAgfHwgMywKICAgICAgICBDb3VudE1heFNldE91dGVyTGltaXQgPT4gJE9iamVjdERhdGEtPntDb3VudE1heFNldE91dGVyfSB8fCAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAkT2JqZWN0RGF0YS0+e0NvdW50TWF4U2V0SW5uZXJ9IHx8IDAsCiAgICApOwoKICAgIHJldHVybiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnS2V5JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdLZXknKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxARWxlbWVudHMsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJZGVudGlmaWVyJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJZGVudGlmaWVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIFNlYXJjaEF0dHJpYnV0ZXNHZXQoKQoKZ2V0IHRoZSBzZWFyY2ggb2JqZWN0IGF0dHJpYnV0ZXMgb2YgYW4gb2JqZWN0IGFzIGFycmF5L2hhc2ggcmVmZXJlbmNlCgogICAgbXkgJEF0dHJpYnV0ZUxpc3QgPSAkT2JqZWN0QmFja2VuZC0+U2VhcmNoQXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uCiAgICBteSAkRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJE9iamVjdERhdGEtPntDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkRGVmaW5pdGlvbjsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICREZWZpbml0aW9uIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIFtdIHVubGVzcyByZWYgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IGFuZCBpbmNpZGVudCBzdGF0ZSBsaXN0cywgaWdub3JpbmcgZXJyb3JzCiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICREZXBsU3RhdGVMaXN0OwoKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICRJbmNpU3RhdGVMaXN0OwoKICAgIG15IEBBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTnVtYmVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDgwLAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDE5MSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTGltaXQnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0xpbWl0JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlcwogICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICk7CgogICAgcmV0dXJuIFxAQXR0cmlidXRlczsKfQoKPWhlYWQyIEV4cG9ydERhdGFHZXQoKQoKZ2V0IGV4cG9ydCBkYXRhIGFzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5IGZvciBhcnJheSByZWZlcmVuY2VzLCB0aGF0IGlzIGEgQzwyRC10YWJsZT4KCiAgICBteSAkUm93cyA9ICRPYmplY3RCYWNrZW5kLT5FeHBvcnREYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZW1wbGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRJbXBvcnRFeHBvcnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7CgogICAgIyBnZXQgb2JqZWN0IGRhdGEKICAgIG15ICRPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIG9iamVjdCBkYXRhCiAgICBpZiAoICEkT2JqZWN0RGF0YSB8fCByZWYgJE9iamVjdERhdGEgbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAkUGFyYW17VGVtcGxhdGVJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBmcm9tIHRoZSB0ZW1wbGF0ZQogICAgewogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRDbGFzc0xpc3Q7CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIGNsYXNzIGlkIGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIElEcyBmb3IgdGhlIG1hcHBpbmcgaW4gdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gdmFsaWQgbWFwcGluZyBsaXN0IGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgdGhlIG1hcHBpbmcgb2JqZWN0IGxpc3QKICAgIG15IEBNYXBwaW5nT2JqZWN0TGlzdDsKICAgIGZvciBteSAkTWFwcGluZ0lEICggJE1hcHBpbmdJRHMtPkAqICkgewoKICAgICAgICAjIGdldCBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgbXkgJE1hcHBpbmdPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFHZXQoCiAgICAgICAgICAgIE1hcHBpbmdJRCA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKCAhJE1hcHBpbmdPYmplY3REYXRhIHx8IHJlZiAkTWFwcGluZ09iamVjdERhdGEgbmUgJ0hBU0gnICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICRQYXJhbXtUZW1wbGF0ZUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBNYXBwaW5nT2JqZWN0TGlzdCwgJE1hcHBpbmdPYmplY3REYXRhOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBkYXRhCiAgICBteSAkU2VhcmNoRGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkU2VhcmNoRGF0YTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRTZWFyY2hEYXRhIGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QsIGZvciB0cmFuc2xhdGluZyB0aGUgbnVtZXJpYyBJRHMgaW50byByZWFkYWJsZSBuYW1lcwogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0LCBmb3IgdHJhbnNsYXRpbmcgdGhlIG51bWVyaWMgSURzIGludG8gcmVhZGFibGUgbmFtZXMKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdCB8fCByZWYgJEluY2lTdGF0ZUxpc3QgbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGdldCB0aGUgZ2VuZXJhbCBjYXRhbG9nIGxpc3QgSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjdXJyZW50IGRlZmluaXRpb24gb2YgdGhpcyBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRPYmplY3REYXRhLT57Q2xhc3NJRH0sCiAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAjIGFkZCBudW1iZXIgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TnVtYmVyfSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e051bWJlcn07CiAgICB9CgogICAgIyBhZGQgbmFtZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCAkU2VhcmNoRGF0YS0+e05hbWV9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TmFtZX0gPSBkZWxldGUgJFNlYXJjaERhdGEtPntOYW1lfTsKICAgIH0KCiAgICAjIGFkZCBkZXBsb3ltZW50IHN0YXRlIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBpZiAoICRTZWFyY2hEYXRhLT57RGVwbFN0YXRlSURzfSApIHsKICAgICAgICBteSBARGVwbFN0YXRlSURzID0gc3BsaXQgLyMjIyMjLywgJFNlYXJjaERhdGEtPntEZXBsU3RhdGVJRHN9OwogICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbFN0YXRlSURzOwogICAgICAgIGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0RlcGxTdGF0ZUlEc307CiAgICB9CgogICAgIyBhZGQgaW5jaWRlbnQgc3RhdGUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntJbmNpU3RhdGVJRHN9ICkgewogICAgICAgIG15IEBJbmNpU3RhdGVJRHMgPSBzcGxpdCAvIyMjIyMvLCAkU2VhcmNoRGF0YS0+e0luY2lTdGF0ZUlEc307CiAgICAgICAgJFNlYXJjaFBhcmFtc3tJbmNpU3RhdGVJRHN9ID0gXEBJbmNpU3RhdGVJRHM7CiAgICAgICAgZGVsZXRlICRTZWFyY2hEYXRhLT57SW5jaVN0YXRlSURzfTsKICAgIH0KCiAgICAjIGFkZCBsaW1pdCB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJFNlYXJjaERhdGEtPntMaW1pdH0gKSApIHsKICAgICAgICAkU2VhcmNoUGFyYW1ze0xpbWl0fSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0xpbWl0fTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZHluYW1pYyBmaWVsZCBkYXRhIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkU2VsZi0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICBTZWFyY2hEYXRhICAgICAgPT4gJFNlYXJjaERhdGEsCiAgICApOwogICAgQFNlYXJjaFBhcmFtc3sga2V5cyAlREZTZWFyY2hQYXJhbXMgfSA9IHZhbHVlcyAlREZTZWFyY2hQYXJhbXM7CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRPYmplY3REYXRhLT57Q2xhc3NJRH0gXSwKICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICApOwoKICAgICMgSlNPTiBzdXBwb3J0IG1pZ2h0IGJlIG5lZWRlZCBmb3IgU2V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgbXkgJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXR0ZXJDYW5IYW5kbGVSZWZlcmVuY2VzKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15IEBSb3dzOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtLCBpbmNsdWRpbmcgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIHVubGVzcyByZWYgJENvbmZpZ0l0ZW0gZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCBkYXRhIHRvIHRoZSBleHBvcnQgZGF0YSBhcnJheQogICAgICAgIG15IEBSb3dJdGVtczsKICAgICAgICBNQVBQSU5HT0JKRUNUOgogICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdCAoQE1hcHBpbmdPYmplY3RMaXN0KSB7CgogICAgICAgICAgICAjIGV4dHJhY3Qga2V5CiAgICAgICAgICAgIG15ICRLZXkgPSAkTWFwcGluZ09iamVjdC0+e0tleX07CgogICAgICAgICAgICAjIGhhbmRsZSBlbXB0eSBrZXkKICAgICAgICAgICAgaWYgKCAhJEtleSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ051bWJlcicgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgY3VycmVudCBjb25maWcgaXRlbSBuYW1lCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGRlcGxveW1lbnQgc3RhdGUKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfHw9ICdEVU1NWSc7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlcGxTdGF0ZUxpc3QtPnsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IHx8PSAnRFVNTVknOwogICAgICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRJbmNpU3RhdGVMaXN0LT57ICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IH07CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGhhbmRsZSBkZXNjcmlwdGlvbgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ0Rlc2NyaXB0aW9uJyApIHsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufTsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZGVzY3JpcHRpb24gaW5saW5lIGltYWdlcyBmb3IgZXhwb3J0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHJlcGxhY2UgY29udGVudCBpZCBpbiBkZXNjcmlwdGlvbiB3aXRoIGJhc2U2NC1lbmNvZGVkIGF0dGFjaG1lbnQgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudElEfSA9ICRBdHRhY2htZW50LT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57JEtleX0gPSBFbmNvZGU6OmVuY29kZSggJ1VURi04JywgJEF0dGFjaG1lbnQtPnskS2V5fSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50SUQgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gQ29udGVudCBDb250ZW50QWx0ZXJuYXRpdmUgKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkQXR0YWNobWVudFN0cmluZyA/ICcjIyMnIDogJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkS2V5IC4gJyMjIycgLiBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICREZXNjcmlwdGlvbiA9fiBzLyg/PG9wZW4+c3JjPSIpKGNpZDopKD88Y2lkPiRBdHRhY2htZW50LT57Q29udGVudElEfSkoPzxjbG9zZT4iICkvJCt7b3Blbn0kQXR0YWNobWVudFN0cmluZyQre2Nsb3NlfS9nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlc2NyaXB0aW9uOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgdmVyc2lvbiBzdHJpbmcKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBbGwgb3RoZXIgYXR0cmlidXRlcyBpbmRpY2F0ZSBkeW5hbWljIGZpZWxkcy4KICAgICAgICAgICAgIyBUaGlzIGdldHMgd2hhdGV2ZXIgQ29uZmlnSXRlbUdldCgpIHB1dHMgaW50byB0aGUgb2JqZWN0LiBFLmcuIGZvciBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICAjIHdlIGdldCB0aGUgaXRlbSBJRCBpbnRvIHRoZSBnZW5lcmFsIGNhdGFsb2cuIFRoaXMgaXMgZmluZSBmb3IgSW1wb3J0L0V4cG9ydCwgYnV0IG5vdCByZWFsbHkgaHVtYW4gcmVhZGFibGUuCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoaW5ncyBsaWtlIHRoZSBpbmNpZGVudCBzdGF0ZSBhcmUgbG9va2VkIHVwLgoKICAgICAgICAgICAgIyBUaGUgS2V5IGVuY29kZXMgc29tZSBleHRyYSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGluZGV4ZXMgc3RhcnQgYXQgMSBpbiB0aGUga2V5IG5hbWVzCiAgICAgICAgICAgIG15ICggJERGRnVsbE5hbWUsICRJbmRleCwgJElubmVyREYsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkS2V5OwogICAgICAgICAgICBteSAkREZOYW1lOwogICAgICAgICAgICBpZiAoICRERkZ1bGxOYW1lID1+IC9eRHluYW1pY0ZpZWxkXyguKikvICkgewogICAgICAgICAgICAgICAgJERGTmFtZSA9ICQxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgaWdub3JlIHVuZXhwZWN0ZWQgaW5kZXhlcywgYnV0IHN0aWxsIGN1dCB0aGUgJzo6JwogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEluZGV4ICYmICRJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJEluZGV4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5uZXJJbmRleCAmJiAkSW5uZXJJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJElubmVySW5kZXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRDb25maWdJdGVtLT57JERGRnVsbE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoZSBmb3JtYXR0aW5nIGRlcGVuZHMgb24gdGhlIGNvbmZpZyBvZiB0aGUgZHluYW1pYyBmaWVsZCwgd2hpY2ggaXMgbm90IHJlYWxseSBuaWNlLgogICAgICAgICAgICBteSAkSXNNdWx0aVZhbHVlID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9ID8gMiA6IDA7CiAgICAgICAgICAgIG15ICRJc1NldCAgICAgICAgPSAoICRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gLy8gJycgKSBlcSAnU2V0JzsKCiAgICAgICAgICAgICMgaGFuZGxlIHNwZWNpYWwgY2FzZXMKICAgICAgICAgICAgbXkgJEFjdHVhbFZhbHVlID0gZXZhbCB7CgogICAgICAgICAgICAgICAgIyBhIHNwZWNpZmljIGluZGV4IHdhcyByZXF1ZXN0ZWQKICAgICAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSAmJiAkSW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRWYWx1ZS0+WyAkSW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBGb3IgU2V0IHNpbmdsZSBhbmQgbXVsdGl2YWx1ZSBmaWVsZHMgYmVoYXZlIHRoZSBzYW1lIHdheS4KICAgICAgICAgICAgICAgICMgTm8gbmVlZCB0byBzaGF2ZSBvZmYgYSBsZXZlbC4KICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUgaWYgJElzU2V0OwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpcnN0IGVsZW1lbnQgZm9yIHNpbmdsZSB2YWx1ZSBmaWVsZHMKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUtPlswXSAvLyAnJyBpZiAoICEkSXNNdWx0aVZhbHVlICYmIHJlZiAkVmFsdWUgZXEgJ0FSUkFZJyApOwoKICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWU7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBzZXQtaW5uZXIgZmllbGQKICAgICAgICAgICAgaWYgKCRJbm5lckRGKSB7CgogICAgICAgICAgICAgICAgIyBmZXRjaCBhbmQgc2V0IGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJElubmVyRmllbGRJdGVtICAgPSBmaXJzdCB7ICRfLT57REZ9IGVxICRJbm5lckRGIH0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZENvbmZpZyA9ICRJbm5lckZpZWxkSXRlbS0+e0RlZmluaXRpb259OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJElubmVyRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgc2V0IHZhbHVlCiAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9ICRBY3R1YWxWYWx1ZS0+eyRJbm5lckRGfTsKCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkICRJbm5lclZhbHVlICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgVGhlIGZvcm1hdHRpbmcgZGVwZW5kcyBvbiB0aGUgY29uZmlnIG9mIHRoZSBkeW5hbWljIGZpZWxkLCB3aGljaCBpcyBub3QgcmVhbGx5IG5pY2UuCiAgICAgICAgICAgICAgICBteSAkSW5uZXJJc011bHRpVmFsdWUgPSAkSW5uZXJGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gPyAyIDogMDsKCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBzcGVjaWFsIGNhc2VzCiAgICAgICAgICAgICAgICBteSAkQWN0dWFsSW5uZXJWYWx1ZSA9IGV2YWwgewoKICAgICAgICAgICAgICAgICAgICAjIGEgc3BlY2lmaWMgaW5kZXggd2FzIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWUtPlsgJElubmVySW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGdldCBmaXJzdCBlbGVtZW50IGZvciBzaW5nbGUgdmFsdWUgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRJbm5lclZhbHVlLT5bMF0gLy8gJycgaWYgKCAhJElubmVySXNNdWx0aVZhbHVlICYmIHJlZiAkSW5uZXJWYWx1ZSBlcSAnQVJSQVknICk7CgogICAgICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWU7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJEFjdHVhbFZhbHVlID0gJEFjdHVhbElubmVyVmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhpcyBpcyByZWxldmFudCBmb3IgZS5nLiB0aGUgQ1NWIGJhY2tlbmQgd2hpY2ggY2FuJ3QgdHJhbnNwYXJlbnRseSBzZXJpYWxpemUgZGF0YSBzdHJ1Y3R1cmVzLgogICAgICAgICAgICAjIFJlZmVyZW5jZXMgYXJlIEpTT05pZmllZC4gVGhpcyBoYXBwZW5zIHdoZW46CiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgZmllbGQgZ2l2ZXMgYW4gYXJyYXkgcmVmZXJlbmNlCiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgU2V0IGZpZWxkIGdpdmVzIGFuIGFycmF5IHJlZmVyZW5jZSB3aXRoIGFycmF5IHJlZmVyZW5jZXMgaW5zaWRlCiAgICAgICAgICAgICMgLSBhIHNpbmdsZXZhbHVlIFNldCBmaWVsZCBnaXZlcyBhbiBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgaWYgKCAhJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgJiYgcmVmICRBY3R1YWxWYWx1ZSApIHsKCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEpTT05PYmplY3QtPkVuY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiAkQWN0dWFsVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgU29ydEtleXMgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZSByZWd1bGFyIGNhc2UKICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRBY3R1YWxWYWx1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkT2JqZWN0RGF0YS0+e0luY2x1ZGVBdHRhY2htZW50c30gKSB7CiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSA9IEVuY29kZTo6ZW5jb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRJRCBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiBDb250ZW50IENvbnRlbnRBbHRlcm5hdGl2ZSApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmcgLj0gJEF0dGFjaG1lbnRTdHJpbmcgPyAnIyMjJyA6ICcnOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nIC49ICRLZXkgLiAnIyMjJyAuIGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1c2ggQFJvd3MsIFxAUm93SXRlbXM7CiAgICB9CgogICAgcmV0dXJuIFxAUm93czsKfQoKPWhlYWQyIEltcG9ydERhdGFTYXZlKCkKCmltcG9ydHMgYSBzaW5nbGUgZW50aXR5IG9mIHRoZSBpbXBvcnQgZGF0YS4gVGhlIEM8VGVtcGxhdGVJRD4gcG9pbnRzIHRvIHRoZSBkZWZpbml0aW9uCm9mIHRoZSBjdXJyZW50IGltcG9ydC4gQzxJbXBvcnREYXRhUm93PiBob2xkcyB0aGUgZGF0YS4gQzxDb3VudGVyPiBpcyBvbmx5IHVzZWQgaW4KZXJyb3IgbWVzc2FnZXMsIGZvciBpbmRpY2F0aW5nIHdoaWNoIGl0ZW0gd2FzIG5vdCBpbXBvcnRlZCBzdWNjZXNzZnVsbHkuCgpUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBjb25maWcgaXRlbSB3aWxsIG5ldmVyIGJlIGRlbGV0ZWQuIFdoZW4gdGhlcmUgYXJlIG5vCmNoYW5nZXMgaW4gdGhlIGRhdGEsIHRoZSBpbXBvcnQgd2lsbCBiZSBza2lwcGVkLiBXaGVuIHRoZXJlIGlzIG5ldyBvciBjaGFuZ2VkIGRhdGEsCnRoZW4gYSBuZXcgY29uZmlnIGl0ZW0gb3IgYSBuZXcgdmVyc2lvbiBpcyBjcmVhdGVkLgoKSW4gdGhlIGNhc2Ugb2YgY2hhbmdlZCBkYXRhLCB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtIHdpbGwgY29udGFpbiB0aGUKYXR0cmlidXRlcyBvZiB0aGUgQzxJbXBvcnREYXRhUm93PiBwbHVzIHRoZSBvbGQgYXR0cmlidXRlcyB0aGF0IGFyZQpub3QgcGFydCBvZiB0aGUgaW1wb3J0IGRlZmluaXRpb24uClRodXMgSW1wb3J0RGF0YVNhdmUoKSBndWFyYW50ZWVzIHRvIG5vdCBvdmVyd3JpdGUgdW5kZWNsYXJlZCBhdHRyaWJ1dGVzLgoKVGhlIGJlaGF2aW9yIHdoZW4gaW1wb3J0ZWQgYXR0cmlidXRlcyBhcmUgZW1wdHkgZGVwZW5kcyBvbiB0aGUgc2V0dGluZyBpbiB0aGUgb2JqZWN0IGRhdGEuCldoZW4gQzxFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzPiBpcyBub3Qgc2V0LCB0aGVuIGVtcHR5IHZhbHVlcyB3aWxsIHdpcGUgb3V0CnRoZSBvbGQgZGF0YS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4gV2hlbiBDPEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXM+IGlzIHNldCwKdGhlbiBlbXB0eSB2YWx1ZXMgd2lsbCBsZWF2ZSB0aGUgb2xkIHZhbHVlcy4KClRoZSBkZWNpc2lvbiB3aGF0IGNvbnN0aXR1dGUgYW4gZW1wdHkgdmFsdWUgaXMgYSBiaXQgaGFpcnkuCkhlcmUgYXJlIHRoZSBydWxlcy4KRmllbGRzIHRoYXQgYXJlIG5vdCBldmVuIG1lbnRpb25lZCBpbiB0aGUgSW1wb3J0IGRlZmluaXRpb24gYXJlIGVtcHR5LiBUaGVzZSBhcmUgdGhlICdub3QgZGVmaW5lZCcgZmllbGRzLgpFbXB0eSBzdHJpbmdzIGFuZCB1bmRlZmluZWQgdmFsdWVzIGNvbnN0aXR1dGUgZW1wdHkgZmllbGRzLgpGaWVsZHMgd2l0aCB3aXRoIG9ubHkgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSBub3QgZW1wdHkuCkZpZWxkcyB3aXRoIHRoZSBkaWdpdCAnMCcgYXJlIG5vdCBlbXB0eS4KCiAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAxMjMsCiAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiAkQXJyYXlSZWYsCiAgICAgICAgQ291bnRlciAgICAgICA9PiAzNjcsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKCkFuIGVtcHR5IEM8Q29uZmlnSXRlbUlEPiBpbmRpY2F0ZXMgZmFpbHVyZS4gT3RoZXJ3aXNlIGl0IGluZGljYXRlcyB0aGUKbG9jYXRpb24gb2YgdGhlIGltcG9ydGVkIGRhdGEuCkM8UmV0Q29kZT4gaXMgZWl0aGVyICdDcmVhdGVkJywgJ1VwZGF0ZWQnIG9yICdTa2lwcGVkJy4gJ0NyZWF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcKY29uZmlnIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZC4gJ1VwZGF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcgdmVyc2lvbiBoYXMgYmVlbiBhZGRlZCB0bwphbiBleGlzdGluZyBjb25maWcgaXRlbS4gJ1NraXBwZWQnIG1lYW5zIHRoYXQgbm8gbmV3IHZlcnNpb24gaGFzIGJlZW4gY3JlYXRlZCwKYXMgdGhlIG5ldyBkYXRhIGlzIGlkZW50aWNhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0uCgpObyBjb2RlcyBoYXZlIHlldCBiZWVuIGRlZmluZWQgZm9yIHRoZSBmYWlsdXJlIGNhc2UuCgo9Y3V0CgpzdWIgSW1wb3J0RGF0YVNhdmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBJbXBvcnREYXRhUm93IENvdW50ZXIgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpbXBvcnQgZGF0YSByb3cKICAgIGlmICggcmVmICRQYXJhbXtJbXBvcnREYXRhUm93fSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06IEltcG9ydERhdGFSb3cgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhLCB0aGF0IGlzIHRoZSBjb25maWcgb2YgdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE9iamVjdERhdGEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJE9iamVjdERhdGEgfHwgcmVmICRPYmplY3REYXRhIG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMganVzdCBmb3IgY29udmVuaWVuY2UKICAgIG15ICRFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0gJE9iamVjdERhdGEtPntFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzfTsKCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBvZiB0aGUgdGVtcGxhdGUgY29uZmlnCiAgICB7CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQ2xhc3NMaXN0IHx8IHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkNsYXNzIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJObyBjbGFzcyBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICckUGFyYW17VGVtcGxhdGVJRH0nIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIG1hcHBpbmcgbGlzdAogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJObyB2YWxpZCBtYXBwaW5nIGxpc3QgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIHRoZSBtYXBwaW5nIG9iamVjdCBsaXN0CiAgICAjIFRPRE86IHdoeSBpcyB0aGlzIGNhbGxlZCBmb3IgZXZlcnkgcm93IG9mIHRoZSBpbXBvcnQgZmlsZSA/CiAgICBteSBATWFwcGluZ09iamVjdExpc3Q7CiAgICBmb3IgbXkgJE1hcHBpbmdJRCAoICRNYXBwaW5nSURzLT5AKiApIHsKCiAgICAgICAgIyBnZXQgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIG15ICRNYXBwaW5nT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhR2V0KAogICAgICAgICAgICBNYXBwaW5nSUQgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICggISRNYXBwaW5nT2JqZWN0RGF0YSB8fCByZWYgJE1hcHBpbmdPYmplY3REYXRhIG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiTm8gbWFwcGluZyBvYmplY3QgZGF0YSBmb3VuZCBmb3IgdGhlIG1hcHBpbmcgaWQgJyRNYXBwaW5nSUQnIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHB1c2ggQE1hcHBpbmdPYmplY3RMaXN0LCAkTWFwcGluZ09iamVjdERhdGE7CiAgICB9CgogICAgIyBjaGVjayBhbmQgcmVtZW1iZXIgdGhlIElkZW50aWZpZXJzCiAgICAjIHRoZSBJZGVudGlmaWVycyBpZGVudGlmeSB0aGUgY29uZmlnIGl0ZW0gdGhhdCBzaG91bGQgYmUgdXBkYXRlZAogICAgbXkgJUlkZW50aWZpZXI7CiAgICB7CiAgICAgICAgbXkgJFJvd0luZGV4ID0gMDsKICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVERBVEEgdW5sZXNzICRNYXBwaW5nT2JqZWN0RGF0YS0+e0lkZW50aWZpZXJ9OwoKICAgICAgICAgICAgIyBjaGVjayBpZiBpZGVudGlmaWVyIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgIGlmICggJElkZW50aWZpZXJ7ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gfSApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICInJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fScgaGFzIGJlZW4gdXNlZCBtdWx0aXBsZSB0aW1lcyBhcyBhbiBpZGVudGlmaWVyIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBpZGVudGlmaWVyIHZhbHVlCiAgICAgICAgICAgICRJZGVudGlmaWVyeyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gPSAkUGFyYW17SW1wb3J0RGF0YVJvd30tPlskUm93SW5kZXhdOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUREFUQSBpZiAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9ICYmICRQYXJhbXtJbXBvcnREYXRhUm93fS0+WyRSb3dJbmRleF07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGQgaXMgZW1wdHkiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRSb3dJbmRleCsrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsb29rdXAgdGFibGUgZm9yIGdldHRpbmcgdGhlIElEIGZvciBkZXBsb3ltZW50IHN0YXRlIG5hbWVzCiAgICBteSAlRGVwbFN0YXRlTGlzdFJldmVyc2U7CiAgICB7CiAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgbG9va3VwIHRhYmxlIGZvciBnZXR0aW5nIHRoZSBJRCBmb3IgaW5jaWRlbnQgc3RhdGUgbmFtZXMKICAgIG15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZTsKICAgIHsKICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJEluY2lTdGF0ZUxpc3QgfHwgcmVmICRJbmNpU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkSW5jaVN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uIG9mIHRoaXMgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbiBkYXRhCiAgICBpZiAoICEkRGVmaW5pdGlvbiB8fCByZWYgJERlZmluaXRpb24gbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzIGlkICRPYmplY3REYXRhLT57Q2xhc3NJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNvbmZpZyBpdGVtIGlkIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGlkZW50aWZpZXIKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoJUlkZW50aWZpZXIpIHsKCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAgICAgIyBhZGQgbnVtYmVyIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCAkSWRlbnRpZmllcntOdW1iZXJ9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze051bWJlcn0gPSBkZWxldGUgJElkZW50aWZpZXJ7TnVtYmVyfTsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5hbWUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgICAgICBpZiAoICRJZGVudGlmaWVye05hbWV9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze05hbWV9ID0gZGVsZXRlICRJZGVudGlmaWVye05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgZGVwbG95bWVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7RGVwbFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXsgJElkZW50aWZpZXJ7RGVwbFN0YXRlfSB9IHx8ICcnOwoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIlRoZSBkZXBsb3ltZW50IHN0YXRlICckSWRlbnRpZmllcntEZXBsU3RhdGV9JyBpcyBpbnZhbGlkIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gPSBbJERlcGxTdGF0ZUlEXTsKICAgICAgICAgICAgZGVsZXRlICRJZGVudGlmaWVye0RlcGxTdGF0ZX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBpbmNpZGVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7SW5jaVN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBpbmNpZGVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkSW5jaVN0YXRlTGlzdFJldmVyc2V7ICRJZGVudGlmaWVye0luY2lTdGF0ZX0gfSB8fCAnJzsKCiAgICAgICAgICAgIGlmICggISRJbmNpU3RhdGVJRCApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRJZGVudGlmaWVye0luY2lTdGF0ZX0nIGlzIGludmFsaWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7SW5jaVN0YXRlSURzfSA9IFskSW5jaVN0YXRlSURdOwogICAgICAgICAgICBkZWxldGUgJElkZW50aWZpZXJ7SW5jaVN0YXRlfTsKICAgICAgICB9CgogICAgICAgICMgdGhlIHJlbWFpbmluZyBpdGVtcyBpbiAlSWRlbnRpZmllciBhcmUgYWxsIGZvciBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVERkltcG9ydFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICApOwogICAgICAgIEBTZWFyY2hQYXJhbXN7IGtleXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zOwoKICAgICAgICAjIHNlYXJjaCBleGlzdGluZyBjb25maWcgaXRlbSB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXJzCiAgICAgICAgKCAkQ29uZmlnSXRlbUlELCBteSBAT3RoZXJDb25maWdJdGVtSURzICkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaFBhcmFtcywKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJE9iamVjdERhdGEtPntDbGFzc0lEfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgICAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFF1ZXJ5Q29uZGl0aW9uICAgICAgICA9PiAwLAogICAgICAgICk7CgogICAgICAgIGlmIChAT3RoZXJDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGRzIE5PVCB1bmlxdWUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdmVyc2lvbiBkYXRhIG9mIHRoZSBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25EYXRhID0ge307CiAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewoKICAgICAgICAjIGdldCBsYXRlc3QgdmVyc2lvbgogICAgICAgICRWZXJzaW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVNYXBwaW5nT2JqZWN0S2V5RGF0YSA9IG1hcCB7ICRfLT57S2V5fSA9PiAxIH0gQE1hcHBpbmdPYmplY3RMaXN0OwoKICAgICMgYnVpbGQgbGlzdCBvZiBkeW5hbWljIGZpZWxkcyB0byBpbmNsdWRlIGZpZWxkcyBvZiBkZWZpbml0aW9uIGFuZCBvZiBpbmNsdWRlZCBzZXQgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIENoZWNrIGlmIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiB0aGlzIGNsYXNzIGhhcyByZXF1aXJlZCBhdHRyaWJ1dGUgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0LgogICAgREZfTkFNRToKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+eyRERk5hbWV9OwoKICAgICAgICAjIHNldCBmaWVsZCBuYW1lcyB0byBkaWZmZXJlbnRpYXRlIGR5bmFtaWMgZmllbGRzIGZyb20gc3RhbmRhcmQgYXR0cmlidXRlcwogICAgICAgICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9ID0gJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICAgICAgIyBUT0RPOiBpcyB0aGUgc3BlY2lhbCBjYXNlIGZvciBTZXQgbmVlZGVkID8KICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkREYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdHsgJEluY2x1ZGVkREYtPntERn0gfSA9ICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn07CgogICAgICAgICAgICAgICAgIyBhc3N1bWluZyB0aGF0IGRmIHNldHMgYXJlIG5vdCBuZXN0ZWQgZGVlcGVyIHRoYW4gdHdvIHN0YWdlcwogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXN0ZWRJbmNsdWRlZERGICggJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufXtDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3R7ICROZXN0ZWRJbmNsdWRlZERGLT57REZ9IH0gPSAkTmVzdGVkSW5jbHVkZWRERi0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBvbmx5IHJlcXVpcmVkIGF0dHJpYnV0ZXMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntSZXF1aXJlZH07CgogICAgICAgIG15ICRLZXkgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgIG5leHQgREZfTkFNRSBpZiAkTWFwcGluZ09iamVjdEtleURhdGF7IkR5bmFtaWNGaWVsZF8kS2V5In07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJBdHRyaWJ1dGUgJyRLZXknIGlzIHJlcXVpcmVkLCBidXQgZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0ISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IHVwIGZpZWxkcyBpbiBWZXJzaW9uRGF0YSBhbmQgaW4gdGhlIFhNTCBhdHRyaWJ1dGVzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAlREZIYXNoOyAgICAjIG1hcCBmaWVsZCBuYW1lLCBpbmNsdWRpbmcgdGhlIHByZWZpeCAnRHluYW1pY0ZpZWxkXycsIHRvIHRoZSB2YWx1ZQogICAgbXkgJFJvd0luZGV4ID0gMDsKICAgIE1BUFBJTkdfT0JKRUNUX0RBVEE6CiAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgICAgIG15ICRLZXkgICA9ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX07CiAgICAgICAgbXkgJFZhbHVlID0gJFBhcmFte0ltcG9ydERhdGFSb3d9LT5bJFJvd0luZGV4XTsKCiAgICAgICAgaWYgKCAkS2V5IGVxICdOdW1iZXInICkgewoKICAgICAgICAgICAgIyBEbyBub3RoaW5nLiBUaGUgSW1wb3J0IG1heSBub3Qgb3ZlcnJpZGUgdGhlIGNvbmZpZyBpdGVtIG51bWJlci4KICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdOYW1lJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIG5hbWUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4dHJhY3QgZGVwbG95bWVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlTGlzdFJldmVyc2V7JFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIGRlcGxveW1lbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0RlcGxTdGF0ZUlEfSA9ICREZXBsU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICRJbmNpU3RhdGVJRCA9ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskVmFsdWV9IHx8ICcnOwogICAgICAgICAgICBpZiAoICEkSW5jaVN0YXRlSUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnRGVzY3JpcHRpb24nICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgZGVzY3JpcHRpb24gJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0cmlldmUgYW5kIHN0b3JlIGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMgZm9yIGltcG9ydAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSBARGVzY3JpcHRpb25BdHRhY2htZW50czsKCiAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnRzIGFyZSBzdG9yZWQgaW4gdGhlIHNyYyBhdHRyaWJ1dGUgb2YgdGhlaXIgaW1nIHRhZyBhcyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcKICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50U3RyaW5ncyA9ICRWYWx1ZSA9fiAvc3JjPVwiKC4rPylcIiAvZ3M7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnRTdHJpbmcgKEBBdHRhY2htZW50U3RyaW5ncykgewogICAgICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9ICRBdHRhY2htZW50eyRLZXl9IGVxICcnID8gJycgOiBkZWNvZGVfYmFzZTY0KCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyggRmlsZW5hbWUgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gKSkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVzY3JpcHRpb25BdHRhY2htZW50cywgXCVBdHRhY2htZW50OwoKICAgICAgICAgICAgICAgICAgICAjIGVzY2FwZSBiYXNlNjQgc3BlY2lhbCBjaGFyYWN0ZXJzICcvJyBhbmQgJysnCiAgICAgICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID0gJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID1+IHMvXC8vXFxcLy9nOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nRXNjYXBlZCA9fiBzL1wrL1xcXCsvZzsKCiAgICAgICAgICAgICAgICAgICAgIyByZXBsYWNlIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBpbiBkZXNjcmlwdGlvbiB3aXRoIGNvbnRlbmQgaWQKICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gcy8kQXR0YWNobWVudFN0cmluZ0VzY2FwZWQvY2lkOiRBdHRhY2htZW50e0NvbnRlbnRJRH0vZ3M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gPSBcQERlc2NyaXB0aW9uQXR0YWNobWVudHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIHZlcnNpb24gc3RyaW5nICckVmFsdWUnIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskS2V5fSA9ICRWYWx1ZTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSA9fiBtL15EeW5hbWljRmllbGRfKD88REZOYW1lV2l0aEluZGV4Pi4rKS8gKSB7CgogICAgICAgICAgICBpZiAoJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMpIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIGlmICFkZWZpbmVkICRWYWx1ZTsKCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFZhbHVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQSBpZiAkVmFsdWUgZXEgJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhlIGtleSBtaWdodCBlbmNvbXBhc3MgYW4gaW5kZXgsIGluZGljYXRlZCBieSAnOjonLgogICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGUgIGluZGV4ZXMgYXJlIDEtYmFzZWQuCiAgICAgICAgICAgIG15ICggJERGTmFtZSwgJEluZGV4LCAkSW5uZXJERk5hbWUsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkK3tERk5hbWVXaXRoSW5kZXh9OwoKICAgICAgICAgICAgIyBpZ25vcmUgdW5leHBlY3RlZCBpbmRleGVzLCBidXQgc3RpbGwgY3V0IHRoZSAnOjonCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5kZXggJiYgJEluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5kZXg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRJbm5lckluZGV4ICYmICRJbm5lckluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5uZXJJbmRleDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkREZLZXkgPSAiRHluYW1pY0ZpZWxkXyRERk5hbWUiOwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9OwoKICAgICAgICAgICAgIyBza2lwIGltcG9ydCB3aGVuIHRoZSBkeW5hbWljIGZpZWxkIGlzIG5vdCBmb3VuZAogICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBoYW5kbGUgc2V0LWlubmVyIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIGlmICgkSW5uZXJERk5hbWUpIHsKICAgICAgICAgICAgICAgIG15ICRJbm5lckRGQ29uZmlnID0gJER5bmFtaWNGaWVsZExpc3R7JElubmVyREZOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJbm5lckRGQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gLy89IFtdOwogICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSAvLz0gW107CgogICAgICAgICAgICAgICAgaWYgKCByZWYgJFZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBNdWx0aXZhbHVlIGZpZWxkcyBhcmUgZXhwb3J0ZWQgYXMgSlNPTiBzdHJpbmdzIGluIHRoZSBjYXNlIG9mIENTViBleHBvcnRzLgogICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aVZhbHVlID0gJElubmVyREZDb25maWctPntDb25maWd9e011bHRpVmFsdWV9OwoKICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlCiAgICAgICAgICAgICAgICBpZiAoJElubmVySXNNdWx0aVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGtlZXAgdGhlIHZhbHVlIGFzIGlzLCBmb3Igc2luZ2xlIHZhbHVlLCBub24tc2V0CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX1bICRJbmRleCAtIDEgXXskSW5uZXJERk5hbWV9ID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZlcmVuY2VzIGFyZSBuZXZlciB1bnBhY2tlZAogICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkVmFsdWU7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE11bHRpdmFsdWUgZmllbGRzIGFyZSBleHBvcnRlZCBhcyBKU09OIHN0cmluZ3MgaW4gdGhlIGNhc2Ugb2YgQ1NWIGV4cG9ydHMuCiAgICAgICAgICAgIG15ICRJc011bHRpVmFsdWUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9OwogICAgICAgICAgICBteSAkSXNTZXQgICAgICAgID0gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSAvLyAnJyApIGVxICdTZXQnOwoKICAgICAgICAgICAgIyBGb3IgaW5kZXhlZCBhY2Nlc3Mgb25seSBTZXRzIGFyZSBKU09OIGVuY29kZWQKICAgICAgICAgICAgaWYgKCAkSXNNdWx0aVZhbHVlICYmICRJbmRleCApIHsKICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fSAvLz0gW107CiAgICAgICAgICAgICAgICBpZiAoJElzU2V0KSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9LT5bICRJbmRleCAtIDEgXSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0tPlsgJEluZGV4IC0gMSBdID0gJFZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlIGFuZCBzZXRzCiAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSB8fCAkSXNTZXQgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMga2VlcCB0aGUgdmFsdWUgYXMgaXMsIGZvciBzaW5nbGUgdmFsdWUsIG5vbi1zZXQKICAgICAgICAgICAgJERGSGFzaHskREZLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgIyBza2lwIHRoaXMgbWFwcGluZyB3aGVuIGl0IGNvdWxkIG5vdCBiZSBoYW5kbGVkCiAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgfQogICAgY29udGludWUgewogICAgICAgICRSb3dJbmRleCsrOwogICAgfQoKICAgICMgaWYgZW1wdHkgZmllbGRzIGltcGx5IHRoYXQgb2xkIHZhbHVlcyBzaG91bGQgYmUgcHJlc2VydmVkLAogICAgIyAgIHdlIHRpZHkgdGhlIGltcG9ydGVkIGR5bmFtaWMgZmllbGQgZGF0YSBvZiBlbXB0eSBvciB1bmRlZmluZWQgdmFsdWVzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlREZIYXNoICkgewogICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkREZIYXNoeyRLZXl9IHx8ICRERkhhc2h7JEtleX0gZXEgJycgKSApIHsKICAgICAgICAgICAgZGVsZXRlICRERkhhc2h7JEtleX07CiAgICAgICAgfQogICAgfQoKICAgIG15ICVOZXdWZXJzaW9uRGF0YSA9ICVERkhhc2g7CgogICAgIyBjaGVjayBpZiB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICBpZiAoCiAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57TmFtZX0gKQogICAgICAgICYmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJE9iamVjdERhdGEtPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgIC4gIk5hbWU6ICRWZXJzaW9uRGF0YS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIgLiAkQ29uZmlnSXRlbUlEIHx8ICdORVcnIC4gJyknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQgfHwgJ05FVycsCiAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb25EYXRhLT57TmFtZX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgJFZlcnNpb25EYXRhLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgIC4gJE5hbWVEdXBsaWNhdGVzU3RyaW5nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHJldHVybiBjb2RlIHRvIGFsc28gaW5jbHVkZSB0aGUgZHVwbGljYXRlIG5hbWUKICAgICAgICAgICAgIyByZXR1cm4gdW5kZWYgZm9yIHRoZSBjb25maWcgaXRlbSBpZCBzbyBpdCB3aWxsIGJlIGNvdW50ZWQgYXMgJ0ZhaWxlZCcKICAgICAgICAgICAgcmV0dXJuIHVuZGVmLCAiRHVwbGljYXRlTmFtZSAnJFZlcnNpb25EYXRhLT57TmFtZX0nIjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICAgICAgfQogICAgfQoKICAgICMgZXh0cmFjdCB0aGUgZGF0YSB0aGF0IGNvbmNlcm5zIGR5bmFtaWMgZmllbGRzCiAgICBteSAlREZWZXJzaW9uRGF0YSA9CiAgICAgICAgbWFwICB7ICRfID0+ICROZXdWZXJzaW9uRGF0YXskX30gfQogICAgICAgIGdyZXAge20vXkR5bmFtaWNGaWVsZC99CiAgICAgICAga2V5cyAlTmV3VmVyc2lvbkRhdGE7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHRoZSBzcGVjaWZpZWQgY29uZmlnIGl0ZW0gYWxyZWFkeSBleGlzdHMKICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gJFZlcnNpb25EYXRhLT57RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJFZlcnNpb25EYXRhLT57VmVyc2lvblN0cmluZ30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVERkhhc2gsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJFcnJvciB3aGVuIGFkZGluZyB0aGUgbmV3IGNvbmZpZyBpdGVtIHZlcnNpb24uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZmV0Y2ggdXBkYXRlZCBkYXRhIHRvIGdldCB2ZXJzaW9uIGlkCiAgICAgICAgbXkgJFVwZGF0ZWRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFZlcnNpb25BdHRhY2htZW50U3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFVwZGF0ZWRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKCiAgICAgICAgIyBpZiBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIGlzIGZhbHNlLCBjbGVhciBhbGwgYXR0YWNobWVudHMKICAgICAgICBpZiAoICEkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyApIHsKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRDbGVhclN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJE9iamVjdERhdGEtPntJbmNsdWRlQXR0YWNobWVudHN9ICYmIEBBdHRhY2htZW50cyApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50U3RyaW5nIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIGtleXMgJUF0dGFjaG1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnR7JEtleX0gPSAkQXR0YWNobWVudHskS2V5fSBlcSAnJyA/ICcnIDogZGVjb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnR7JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBLRVk6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gRW5jb2RlOjpkZWNvZGUoICdVVEYtOCcsICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlcwogICAgICAgICAgICAgICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnR7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmIGR1cGxpY2F0ZSBleGlzdHMsIGRlbGV0ZSBpdCB0byBvdmVyd3JpdGUgd2l0aCB0aGUgaW1wb3J0ZWQgYXR0YWNobWVudAogICAgICAgICAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudHtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGF0dGFjaG1lbnQgZGVsZXRlIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBDb3VsZG4ndCBjbGVhbiB1cCBleGlzdGluZyBmaWxlICRBdHRhY2htZW50e0ZpbGVuYW1lfSEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAlQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgYXR0YWNobWVudCBhZGQgc3VjY2VzcwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2l0aCBpbXBvcnRpbmcgYW4gYXR0YWNobWVudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRDogQWRkaW5nIGZpbGUgJEF0dGFjaG1lbnR7RmlsZW5hbWV9IGZhaWxlZCEiLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBDb25maWdJdGVtVXBkYXRlIHN1Y2NlZWRlZCwgd2UgY29uc2lkZXIgdGhlIGRhdGEgYXMgY2hhbmdlZCByZWdhcmRsZXNzIHdoZXRoZXIgZGF0YSB3YXMgZGlmZmVyZW50CiAgICAgICAgbXkgJFJldENvZGUgPSBUcmFuc2xhdGFibGUoJ0NoYW5nZWQnKTsKCiAgICAgICAgcmV0dXJuICRDb25maWdJdGVtSUQsICRSZXRDb2RlOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgbm8gY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCBzbyBhZGQgbmV3IGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAkVmVyc2lvbkRhdGEtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nICA9PiAkVmVyc2lvbkRhdGEtPntWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICVERlZlcnNpb25EYXRhLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgdGhlIG5ldyBjb25maWcgaXRlbSBpZAogICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIkVycm9yIHdoZW4gYWRkaW5nIHRoZSBuZXcgY29uZmlnIGl0ZW0uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKCiAgICAgICAgICAgICMgZ2V0IGxhdGVzdCB2ZXJzaW9uIGlkCiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIHx8IFtdOwogICAgICAgICAgICBteSAkTGF0ZXN0VmVyc2lvbklEID0gJFZlcnNpb25MaXN0LT5bLTFdIC8vIDA7CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbkF0dGFjaG1lbnRzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkVmVyc2lvbkF0dGFjaG1lbnRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkTGF0ZXN0VmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKICAgICAgICBpZiAoICRPYmplY3REYXRhLT57SW5jbHVkZUF0dGFjaG1lbnRzfSAmJiBAQXR0YWNobWVudHMgKSB7CiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudFN0cmluZyAoQEF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICBteSAlQXR0YWNobWVudCA9IHNwbGl0KCAvIyMjLywgJEF0dGFjaG1lbnRTdHJpbmcsIC0xICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnR7JEtleX0gZXEgJycgPyAnJyA6IGRlY29kZV9iYXNlNjQoICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRBdHRhY2htZW50eyRLZXl9OwoKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBhdHRhY2htZW50IGFkZCBzdWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBBZGRpbmcgZmlsZSAkQXR0YWNobWVudHtGaWxlbmFtZX0gZmFpbGVkISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRCwgVHJhbnNsYXRhYmxlKCdDcmVhdGVkJyk7CiAgICB9Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoKQoKcmVjdXJzaXZlIGZ1bmN0aW9uIGZvciBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpLgpEZWZpbml0aW9ucyBmb3Igb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHBhc3NlZCBpbiBDPER5bmFtaWNGaWVsZFJlZj4uClRoZSBuZXcgb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkLgpDPENvdW50TWF4TGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cy4KQzxDb3VudE1heFNldE91dGVyTGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cyBvZiBTZXQgZHluYW1pYyBmaWVsZHMuCkM8Q291bnRNYXhTZXRJbm5lckxpbWl0PiBsaW1pdHMgdGhlIG1heCBsZW5ndGggb2YgaW1wb3J0YWJsZSBhcnJheXMgb2YgU2V0IGR5bmFtaWMgZmllbGQgY29udGVudCBmaWVsZHMuCgogICAgcHVzaCBARWxlbWVudHMsICRPYmplY3RCYWNrZW5kLT5fTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmICAgICAgID0+ICRIYXNoUmVmLAogICAgICAgIENvdW50TWF4TGltaXQgICAgICAgICA9PiAzLAogICAgICAgIENvdW50TWF4U2V0T3V0ZXJMaW1pdCA9PiAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAwLAogICAgKTsKCj1jdXQKCnN1YiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtcwogICAgZm9yIG15ICRDb3VudE1heEF0dHIgKHF3KENvdW50TWF4TGltaXQgQ291bnRNYXhTZXRPdXRlckxpbWl0IENvdW50TWF4U2V0SW5uZXJMaW1pdCkpIHsKICAgICAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJFBhcmFteyRDb3VudE1heEF0dHJ9OwogICAgICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXskQ291bnRNYXhBdHRyfSBlcSAnJzsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50czsKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKICAgICAgICBteSAkREZEZXRhaWxzICAgICAgICAgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ307CgogICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgIyAgIGRlc3BpdGUgZm9yIFNldCBmaWVsZHMsIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgQ291bnRNYXhTZXRPdXRlckxpbWl0CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBuZSAnU2V0JyB8fCAkUGFyYW17Q291bnRNYXhTZXRPdXRlckxpbWl0fSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgTGltaXQgdGhlIGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cywgZXZlbiBpZiBtb3JlIGVsZW1lbnRzIGNhbiBiZSBzZXQgdmlhIHRoZSBHVUkuCiAgICAgICAgbXkgJElzTXVsdGkgID0gJERGRGV0YWlscy0+e011bHRpc2VsZWN0fSB8fCAkREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgbXkgJENvdW50TWF4ID0gMDsKICAgICAgICBpZiAoJElzTXVsdGkpIHsKCiAgICAgICAgICAgICMgdXNlIFNldE91dGVyIGxpbWl0IGZvciBTZXQgZmllbGRzIHRoZW1zZWx2ZXMKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICRDb3VudE1heCA9ICRQYXJhbXtDb3VudE1heFNldE91dGVyTGltaXR9IC8vIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdXNlIG5vcm1hbCBsaW1pdCBmb3IgZXZlcnl0aGluZyBlbHNlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvdW50TWF4ID0gJFBhcmFte0NvdW50TWF4TGltaXR9IC8vIDM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uICRDb3VudE1heCApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICMgaW4gY2FzZSBvZiBTZXQsIGl0ZXJhdGUgaW5uZXIgZmllbGRzIGFzIHdlbGwKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKCiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZHMgPSAkREZEZXRhaWxzLT57SW5jbHVkZX07CgogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJElubmVyRmllbGRzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkSXRlbSAoICRJbm5lckZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyAgICA9ICRGaWVsZEl0ZW0tPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyREZEZXRhaWxzID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRERk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJFBhcmFte0tleVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBrZXkgc3RyaW5nLCBpbmNsdWRpbmcgYSBwb3RlbnRpYWwgcHJlZml4IGFuZCBhIHBvdGVudGlhbCBjb3VudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyVmFsdWUgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBFbGVtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJElubmVyS2V5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aSAgPSAkSW5uZXJERkRldGFpbHMtPntNdWx0aXNlbGVjdH0gfHwgJElubmVyREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb3VudElubmVyTWF4ID0gJElubmVySXNNdWx0aSA/ICggJFBhcmFte0NvdW50TWF4U2V0SW5uZXJMaW1pdH0gLy8gMCApIDogMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ291bnRJbm5lciAoIDEgLi4gJENvdW50SW5uZXJNYXggKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRJbm5lcktleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudElubmVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRJbm5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCByb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJLZXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiRHluYW1pY0ZpZWxkXyRJbm5lclZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBARWxlbWVudHM7Cn0KCj1oZWFkMiBfREZTZWFyY2hBdHRyaWJ1dGVzR2V0KCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiBmb3IgU2VhcmNoQXR0cmlidXRlc0dldCgpCgogICAgJE9iamVjdEJhY2tlbmQtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQXJyYXlSZWYsCiAgICAgICAgQXR0cmlidXRlTGlzdCA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICBteSBAQXR0cmlidXRlczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkS2V5ID0gam9pbiAnOjonLAogICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUgbmFtZSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkTmFtZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17TmFtZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlLCBpZiBtYXJrZWQgYXMgc2VhcmNoYWJsZQoKICAgICAgICAjIFRPRE86IGRldGVybWluZSB3aGV0aGVyIERGIGlzIHNlYXJjaGFibGU6ICREeW5hbWljRmllbGRDb25maWctPntTZWFyY2hhYmxlfQogICAgICAgICMgVE9ETzogdXNlIHNlYXJjaCBmaWVsZCBmcm9tIGR5bmFtaWMgZmllbGQgZHJpdmVyCiAgICAgICAgaWYgKDEpIHsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1RleHQnIHx8ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdUZXh0QXJlYScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntJbnB1dH0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57U2l6ZX0gfHwgNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57TWF4TGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgbGlzdAogICAgICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLCAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogZGV0ZXJtaW5lIHdoZXRoZXIgaXRlbXMgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lucHV0fS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgS2V5UHJlZml4ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWVQcmVmaXggICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBAQXR0cmlidXRlczsKfQoKPWhlYWQyIF9ERlNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2lvbiBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBleHBvcnQgWE1MIHNlYXJjaCBwYXJhbXMKCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkT2JqZWN0QmFja2VuZC0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRSZWYsCiAgICAgICAgU2VhcmNoRGF0YSAgICAgID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBfREZTZWFyY2hEYXRhUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkUGFyYW17U2VhcmNoRGF0YX0gZXEgJ0hBU0gnOwoKICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleQogICAgICAgIG15ICRLZXkgPSAkUGFyYW17UHJlZml4fSA/ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA6ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgbmV4dCBERl9OQU1FIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX0tPnskS2V5fTsgICAgIyAnIyMjIyMnIHNlcGFyYXRlZAoKICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kS2V5In0gPSB7IEVxdWFscyA9PiBbIHNwbGl0IC8jIyMjIy8sICRQYXJhbXtTZWFyY2hEYXRhfS0+eyRLZXl9IF0gfTsKCiAgICAgICAgIyBUT0RPOiBzdXBwb3J0IFNldHMKICAgICAgICBuZXh0IERGX05BTUUgaWYgISREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgV2hhdCAgICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgICAgPT4gJFBhcmFte1NlYXJjaERhdGF9LAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRLZXksCiAgICAgICAgKTsKICAgICAgICBAREZTZWFyY2hQYXJhbXN7IGtleXMgJVNldFNlYXJjaFBhcmFtcyB9ID0gdmFsdWVzICVTZXRTZWFyY2hQYXJhbXM7CiAgICB9CgogICAgcmV0dXJuICVERlNlYXJjaFBhcmFtczsKfQoKPWhlYWQyIF9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBpbXBvcnQgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCgogICAgbXkgJURGSW1wb3J0U2VhcmNoUGFyYW1zID0gJE9iamVjdEJhY2tlbmQtPl9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwgICAgIyBwYXNzZWQgb25seSBpbiB0aGUgcmVjdXJzaW9uIGNhc2UKICAgICk7Cgo9Y3V0CgpzdWIgX0RGSW1wb3J0U2VhcmNoRGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0lkZW50aWZpZXJ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0lkZW50aWZpZXJ9IGVxICdIQVNIJzsKCiAgICBteSAlREZTZWFyY2hQYXJhbXM7CiAgICBERl9OQU1FOgogICAgZm9yIG15ICRERk5hbWUgKCBzb3J0IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUga2V5CiAgICAgICAgbXkgJEtleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICRQYXJhbXtJZGVudGlmaWVyfS0+eyJEeW5hbWljRmllbGRfJEtleSJ9OwoKICAgICAgICAjIFRPRE86IHRoaXMgaXMgYnJva2VuIGZvciBtdWx0aXZhbHVlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgJERGU2VhcmNoUGFyYW1zeyJEeW5hbWljRmllbGRfJEtleSJ9ID0geyBFcXVhbHMgPT4gWyBzcGxpdCAvIyMjIyMvLCAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifSBdIH07CgogICAgICAgICMgY2hlY2sgaWYgdmFsdWUgdHJhbnNmb3JtYXRpb24gaXMgbmVjZXNzYXJ5CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICAgICAgbXkgJElzUmVmZXJlbmNlRmllbGQgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnLAogICAgICAgICk7CiAgICAgICAgaWYgKCRJc1JlZmVyZW5jZUZpZWxkKSB7CgogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifTsKCiAgICAgICAgICAgIG5leHQgREZfTkFNRSB1bmxlc3MgJFZhbHVlOwoKICAgICAgICAgICAgIyBUT0RPIHNraXBwaW5nIG11bHRpdmFsdWUgZmllbGRzCiAgICAgICAgICAgIG5leHQgREZfTkFNRSBpZiByZWYgJFZhbHVlOwoKICAgICAgICAgICAgIyBwZXJmb3JtIHNlYXJjaCBiYXNlZCBvbiB2YWx1ZSBhbmQgcHJldmlvdXNseSBmZXRjaGVkIGRhdGEKICAgICAgICAgICAgbXkgQE9iamVjdElEcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hPYmplY3RzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBUZXJtICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLCAgICAjIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQYXJhbU9iamVjdCkKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBPYmplY3RJRHMgPT0gMSApIHsKICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRLZXkifSA9IHsgRXF1YWxzID0+IFsgc3BsaXQgLyMjIyMjLywgJE9iamVjdElEc1swXSBdIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRDb25maWctPntTdWJ9LAogICAgICAgICAgICBJZGVudGlmaWVyICAgICAgPT4gJFBhcmFte0lkZW50aWZpZXJ9LAogICAgICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwKICAgICAgICApOwogICAgICAgIEBERlNlYXJjaFBhcmFtc3sga2V5cyAlU2V0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJVNldFNlYXJjaFBhcmFtczsKICAgIH0KCiAgICByZXR1cm4gJURGU2VhcmNoUGFyYW1zOwp9CgoxOwo=</File>
        <File Location="Kernel/System/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gTGlua09iamVjdCBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRMaW5rT2JqZWN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW0nKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBMaW5rTGlzdFdpdGhEYXRhKCkKCmZpbGwgdXAgdGhlIGxpbmsgbGlzdCB3aXRoIGRhdGEKCiAgICAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0QmFja2VuZC0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBMaW5rTGlzdCA9PiAkSGFzaFJlZiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rTGlzdFdpdGhEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExpbmtMaXN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0gfSApIHsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0gfSApIHsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBpZCBmcm9tIGhhc2ggaWYgY29uZmlnIGl0ZW0gY2FuIG5vdCBnZXQKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtIHx8IHJlZiAkQ29uZmlnSXRlbSBuZSAnSEFTSCcgfHwgISV7JENvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdFBlcm1pc3Npb24oKQoKY2hlY2tzIHJlYWQgcGVybWlzc2lvbiBmb3IgYSBnaXZlbiBvYmplY3QgYW5kIFVzZXJJRC4KCiAgICAkUGVybWlzc2lvbiA9ICRMaW5rT2JqZWN0LT5PYmplY3RQZXJtaXNzaW9uKAogICAgICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgb2YgY29uZmlnaXRlbSB6b29tIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tJyk7CgogICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgbXkgJEFjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICApOwoKICAgIHJldHVybiAkQWNjZXNzOwp9Cgo9aGVhZDIgT2JqZWN0RGVzY3JpcHRpb25HZXQoKQoKcmV0dXJuIGEgaGFzaCBvZiBvYmplY3QgZGVzY3JpcHRpb25zCgogICAgJURlc2NyaXB0aW9uID0gJExpbmtPYmplY3QtPk9iamVjdERlc2NyaXB0aW9uR2V0KAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNvbmZpZ0l0ZW0jIDEyMzQ0NTUiLAogICAgICAgIExvbmcgICA9PiAiQ29uZmlnSXRlbSMgMTIzNDQ1NTogVGhlIENvbmZpZyBJdGVtIFRpdGxlIiwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgTG9uZyAgID0+ICdDb25maWdJdGVtJywKICAgICk7CgogICAgcmV0dXJuICVEZXNjcmlwdGlvbiBpZiAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdUZW1wb3JhcnknOwoKICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbTsKICAgIHJldHVybiBpZiByZWYgJENvbmZpZ0l0ZW0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmICEleyRDb25maWdJdGVtfTsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IiwKICAgICAgICBMb25nICAgPT4gIkNvbmZpZ0l0ZW0jICRDb25maWdJdGVtLT57TnVtYmVyfTogJENvbmZpZ0l0ZW0tPntOYW1lfSIsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb247Cn0KCj1oZWFkMiBPYmplY3RTZWFyY2goKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHRoZSBzZWFyY2ggcmVzdWx0cwoKICAgICRTZWFyY2hMaXN0ID0gJExpbmtPYmplY3RCYWNrZW5kLT5PYmplY3RTZWFyY2goCiAgICAgICAgU3ViT2JqZWN0ICAgID0+ICcyNScsICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTZWFyY2hQYXJhbXMgPT4gJEhhc2hSZWYsICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFNlYXJjaExpc3QgPSB7CiAgICAgICAgQzxOT1RMSU5LRUQ+ID0+IHsKICAgICAgICAgICAgU291cmNlID0+IHsKICAgICAgICAgICAgICAgIDEyICA9PiAkRGF0YU9mSXRlbTEyLAogICAgICAgICAgICAgICAgMjEyID0+ICREYXRhT2ZJdGVtMjEyLAogICAgICAgICAgICAgICAgMzMyID0+ICREYXRhT2ZJdGVtMzMyLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIE9iamVjdFNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zCiAgICAkUGFyYW17U2VhcmNoUGFyYW1zfSB8fD0ge307CgogICAgIyBzZXQgZm9jdXMKICAgIG15ICVTZWFyY2g7CiAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lKSkgewogICAgICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICRTZWFyY2h7JEVsZW1lbnR9ID0gJyUnIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gLiAnJSc7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRQYXJhbXtTdWJPYmplY3R9ICkgewoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgICAgIG15ICREZWZhdWx0U3Vib2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0JykgfHwge307CgogICAgICAgICMgZXh0cmFjdCBkZWZhdWx0IGNsYXNzIG5hbWUKICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPntJVFNNQ29uZmlnSXRlbX0gfHwgJyc7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJENsYXNzTGlzdDsKICAgICAgICByZXR1cm4gaWYgcmVmICRDbGFzc0xpc3QgbmUgJ0hBU0gnOwoKICAgICAgICAjIGxvb2t1cCB0aGUgY2xhc3MgaWQKICAgICAgICBteSAlQ2xhc3NMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskQ2xhc3NMaXN0fTsKICAgICAgICAkUGFyYW17U3ViT2JqZWN0fSA9ICRDbGFzc0xpc3RSZXZlcnNleyREZWZhdWx0Q2xhc3N9IHx8ICcnOwogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte1N1Yk9iamVjdH07CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAleyAkUGFyYW17U2VhcmNoUGFyYW1zfSB9LAogICAgICAgICVTZWFyY2gsCiAgICAgICAgQ2xhc3NJRHMgICAgICAgPT4gWyAkUGFyYW17U3ViT2JqZWN0fSBdLAogICAgICAgIFVzaW5nV2lsZGNhcmRzID0+IDEsCiAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICBPcmRlckJ5ICAgICAgICA9PiBbJ1VwJ10sCiAgICAgICAgTGltaXQgICAgICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgPT4gJ0FSUkFZJywKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgIyBnZXQgbGFzdCB2ZXJzaW9uIGRhdGEKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJENvbmZpZ0l0ZW07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgcmVmICRDb25maWdJdGVtIG5lICdIQVNIJzsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJXskQ29uZmlnSXRlbX07CgogICAgICAgICMgYWRkIHZlcnNpb24gZGF0YQogICAgICAgICRTZWFyY2hMaXN0e05PVExJTktFRH0tPntTb3VyY2V9LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aGVhZDIgTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rQWRkUHJlIHsKICAgIHJldHVybiAxOyAgICAjIG5vdGhpbmcgdG8gZG8KfQoKPWhlYWQyIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHBvc3QgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtBZGRQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZG8gbm90IHVwZGF0ZSBjb25maWdpdGVtX2xpbmsgdGFibGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgZW1pdCB0aGUgTGlua0FkZCBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBTeW5jIHRoZSBuZXcgbGluayB0byB0aGUgY29uZmlnaXRlbV9saW5rIHRhYmxlLgogICAgIyBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcy4KICAgICMgV2hlbiBhIGxpbmsgaXMgYWRkZWQgdGhlbiBMaW5rQWRkUG9zdCgpIGlzIGNhbGxlZCB0d2ljZS4gQnV0IG9ubHkKICAgICMgb25lIG9mIHRoZSBjYWxscyBoYXMgdG8gYmUgY29uc2lkZXJlZCBoZXJlLCBhcyBvbmx5IG9uZSBlbnRyeSBpbiAnY29uZmlnaXRlbV9saW5rJwogICAgIyBpcyBuZWVkZWQuCiAgICBpZiAoICRQYXJhbXtUYXJnZXRLZXl9ICYmICggJFBhcmFte1RhcmdldE9iamVjdH0gLy8gJycgKSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5BZGRDb25maWdJdGVtTGluaygKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgU291cmNlQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBUYXJnZXRDb25maWdJdGVtSUQgPT4gJFBhcmFte1RhcmdldEtleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgQ0kgZm9yIGxpbmtzIHRvIHNlcnZpY2VzCiAgICAjIFRoaXMgd2lsbCBpbXBsaWNpdGx5IHVwZGF0ZSB0aGUgc2VydmljZSBpbmNpZGVudCBzdGF0ZQogICAgIyBDb25maWdJdGVtTGlua3Mgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBDb25maWdJdGVtTGluayBvYmplY3QKICAgIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyaWdnZXIgTGlua0FkZCBldmVudCwgdGhlIGNvbW1lbnQgaXMgYSBraW5kIG9mIGhpZGRlbiBjaGFubmVsCiAgICBteSAkQ29tbWVudCA9IGpvaW4gJyUlJywKICAgICAgICAoICRQYXJhbXtUYXJnZXRLZXl9ICAgIHx8ICRQYXJhbXtTb3VyY2VLZXl9ICksCiAgICAgICAgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSB8fCAkUGFyYW17U291cmNlT2JqZWN0fSApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnTGlua0FkZCcsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ29tbWVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rRGVsZXRlUHJlKCkKCmxpbmsgZGVsZXRlIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQcmUgewogICAgcmV0dXJuIDE7ICAgICMgbm90aGluZyB0byBkbwp9Cgo9aGVhZDIgTGlua0RlbGV0ZVBvc3QoKQoKbGluayBkZWxldGUgcG9zdCBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0RlbGV0ZVBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBub3Qgbm90ZSB1cGRhdGUgY29uZmlnaXRlbV9saW5rIHRhYmxlIGZvciB0ZW1wb3JhcnkgbGlua3MKICAgICMgZG8gbm90IG5vdGUgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW4gaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgdHJpZ2dlciBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBzeW5jIHRoZSBkZWxldGVlIGxpbmsgdG8gdGhlIGNvbmZpZ2l0ZW1fbGluayB0YWJsZS4KICAgICMgVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3Igb25lIGRpcmVjdGlvbi4KICAgIGlmICggJFBhcmFte1RhcmdldEtleX0gJiYgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAnJyApIGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICBTb3VyY2VDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIFRhcmdldENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VGFyZ2V0S2V5fSwKICAgICAgICApOwogICAgfQoKICAgICMgVE9ETzogVXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHVubGlua2VkIHNlcnZpY2VzCiAgICAjIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICMgfQoKICAgICMgdHJpZ2dlciBMaW5rRGVsZXRlIGV2ZW50LCB0aGUgY29tbWVudCBpcyBhIGtpbmQgb2YgaGlkZGVuIGNoYW5uZWwKICAgIG15ICRDb21tZW50ID0gam9pbiAnOjonLAogICAgICAgICggJFBhcmFte1RhcmdldEtleX0gICAgfHwgJFBhcmFte1NvdXJjZUtleX0gKSwKICAgICAgICAoICRQYXJhbXtUYXJnZXRPYmplY3R9IHx8ICRQYXJhbXtTb3VyY2VPYmplY3R9ICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdMaW5rRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb21tZW50LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtQWRkIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1RoZSBudW1iZXIgKHJlcXVpcmVkIGlmIG5vIG51bWJlciBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKHJlcXVpcmVkIGlmIG5vIG5hbWUgbW9kdWxlIGlzIGNvbmZpZ3VyZWQpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ1ZlcnNpb25TdHJpbmcnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnVGhlIHZlcnNpb24gc3RyaW5nIChyZXF1aXJlZCBpZiBubyB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQSBjbGFzcyAocmVxdWlyZWQpJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdBIGRlcGxveW1lbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQW4gaW5jaWRlbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdEeW5hbWljRmllbGRfPE5hbWU+IChyZXBsYWNlIDxOYW1lPiknLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQSB2YWx1ZScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdMaW5rQXMnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQWx0ZXJuYXRpdmUgdG98RGVwZW5kcyBvbnxSZWxldmFudCB0bycsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdOYW1lWCAobmFtZSBvZiBEeW5hbWljRmllbGQgaG9sZGluZyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgQ29uZmlnSXRlbSBpbiB0aGUgb3JpZ2luYWwgdGlja2V0KScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdVc2VySUQnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnMSAoY2FuIG92ZXJ3cml0ZSB0aGUgbG9nZ2VkIGluIHVzZXIpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gQFBhcmFtczsKfQoKPWhlYWQyIFJ1bigpCgogICAgUnVuIERhdGEKCiAgICBteSAkQ29uZmlnSXRlbUNyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlQWN0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgID0+IDEyMywKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgPT4gXCVUaWNrZXQsICAgIyByZXF1aXJlZAogICAgICAgIFByb2Nlc3NFbnRpdHlJRCAgICAgICAgICA9PiAnUDEyMycsCiAgICAgICAgQWN0aXZpdHlFbnRpdHlJRCAgICAgICAgID0+ICdBMTIzJywKICAgICAgICBUcmFuc2l0aW9uRW50aXR5SUQgICAgICAgPT4gJ1QxMjMnLAogICAgICAgIFRyYW5zaXRpb25BY3Rpb25FbnRpdHlJRCA9PiAnVEExMjMnLAogICAgICAgIENvbmZpZyAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gcmVxdWlyZWQ6CiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ0NsYXNzIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgPT4gJ1NvbWUgRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgPT4gJ1NvbWUgSW5jaWRlbnQgU3RhdGUnLAoKICAgICAgICAgICAgIyBjb25maWcgaXRlbSBvcHRpb25hbDoKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU29tZSBDb25maWcgSXRlbSBOYW1lJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJUNsYXNzMklETWFwICAgICA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApLT4lKjsKICAgIG15ICVEZXBsU3RhdGUySURNYXAgPSByZXZlcnNlICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnICktPiUqOwogICAgbXkgJUluY2lTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnICktPiUqOwoKICAgIG15ICVDb25maWdJdGVtUGFyYW07CgogICAgZm9yIG15ICRPcHRpb25hbEF0dHJpYnV0ZSAocXcvTmFtZSBOdW1iZXIgVmVyc2lvblN0cmluZy8pIHsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtUGFyYW17JE9wdGlvbmFsQXR0cmlidXRlfSA9ICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX07CiAgICAgICAgfQogICAgfQoKICAgICRDb25maWdJdGVtUGFyYW17Q2xhc3NJRH0gICAgID0gJENsYXNzMklETWFweyAkUGFyYW17Q29uZmlnfXtDbGFzc30gfTsKICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgJENvbmZpZ0l0ZW1QYXJhbXtJbmNpU3RhdGVJRH0gPSAkSW5jaVN0YXRlMklETWFweyAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9IH07CgogICAgZm9yIG15ICROZWVkZWQgKHF3L0NsYXNzIERlcGxTdGF0ZSBJbmNpU3RhdGUvKSB7CiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXsgJE5lZWRlZCAuICdJRCcgfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZCBub3QgcmV0cmlldmUgJE5lZWRlZCIgLiAiSUQgZnJvbSAnJFBhcmFte0NvbmZpZ317ICROZWVkZWQgfScgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgbXkgJEZpZWxkTmFtZTsKCiAgICAgICAgaWYgKCAkQ29uZmlnUGFyYW0gPX4gL15EeW5hbWljRmllbGRfKC4rKS8gKSB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPSAkMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgQ09ORklHUEFSQU07CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CgogICAgICAgICMgZm9yIHNldCBmaWVsZHMgd2UgbmVlZCB0byBtYXAgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkcwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZCAmJiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyAmJiByZWYgJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfSApIHsKICAgICAgICAgICAgU0VUVkFMVUU6CiAgICAgICAgICAgIGZvciBteSAkU2V0VmFsdWUgKCAkUGFyYW17Q29uZmlnfXskQ29uZmlnUGFyYW19LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgU0VUVkFMVUUgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyRmllbGQgKCBrZXlzICRTZXRWYWx1ZS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2V0TWFwcGluZy0+eyRJbm5lckZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVlLT57ICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9IH0gPSBkZWxldGUgJFNldFZhbHVlLT57JElubmVyRmllbGR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXskQ29uZmlnUGFyYW19ID0gJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICVDb25maWdJdGVtUGFyYW0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgY3JlYXRlIE5ldyBDb25maWdJdGVtIGZyb20gVGlja2V0OiAiCiAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIGNyZWF0ZWQgQ29uZmlnSXRlbUlECiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57U3RvcmVDb25maWdJdGVtSUREeW5hbWljRmllbGR9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0NvbmZpZ30tPntTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZENvbmZpZyB8fCAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgZ2V0IER5bmFtaWNGaWVsZCAkUGFyYW17Q29uZmlnfS0+e1N0b3JlQ29uZmlnSXRlbUlERHluYW1pY0ZpZWxkfSBmb3IgVGlja2V0ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9LiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2YWx1ZQogICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCBzZXQgRHluYW1pY0ZpZWxkIFZhbHVlIG9uICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfToiCiAgICAgICAgICAgICAgICAgICAgLiAiIGZvciBUaWNrZXQ6ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbGluayB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ICkgewoKICAgICAgICAjIGdldCBsaW5rIG9iamVjdAogICAgICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGFsbCB0eXBlcwogICAgICAgIG15ICVDb25maWd1cmVkVHlwZXMgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRTZWxlY3RlZFR5cGU7CiAgICAgICAgbXkgJFNlbGVjdGVkRGlyZWN0aW9uOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlndXJlZFR5cGVzICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gbmUgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntTb3VyY2VOYW1lfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxlY3RlZFR5cGUgICAgICA9ICRUeXBlOwogICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnU291cmNlJzsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gZXEgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntUYXJnZXROYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZERpcmVjdGlvbiA9ICdUYXJnZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgVFlQRTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWxlY3RlZFR5cGUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiTGlua0FzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBpcyBpbnZhbGlkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNvdXJjZU9iamVjdElEICAgPSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRTb3VyY2VPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICBteSAkVGFyZ2V0T2JqZWN0SUQgICA9ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9OwogICAgICAgIG15ICRUYXJnZXRPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgaWYgKCAkU2VsZWN0ZWREaXJlY3Rpb24gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgJFRhcmdldE9iamVjdFR5cGUgPSAnSVRTTUNvbmZpZ0l0ZW0nOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICRTb3VyY2VPYmplY3RUeXBlLAogICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFNvdXJjZU9iamVjdElELAogICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJFRhcmdldE9iamVjdFR5cGUsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0T2JqZWN0SUQsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkU2VsZWN0ZWRUeXBlLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC4gIkNvdWxkbid0IExpbmsgVGlja2V0cyAkU291cmNlT2JqZWN0SUQgd2l0aCAkVGFyZ2V0T2JqZWN0SUQgYXMgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtVXBkYXRlIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW1JRCAocmVxdWlyZWQgaWYgbm8gTnVtYmVyIGlzIGdpdmVuKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQ29uZmlnSXRlbSBOdW1iZXIgKHJlcXVpcmVkIGlmIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKGNhbiBvbmx5IGJlIGNoYW5nZWQgaWYgbm8gbmFtZSBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdUaGUgdmVyc2lvbiBzdHJpbmcgKG9ubHkgaWYgbm8gdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgYW5kIGEgdmVyc2lvbiBpcyBhZGRlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1NldCBhIG5ldyBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdTZXQgYSBuZXcgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRHluYW1pY0ZpZWxkXzxOYW1lPiAocmVwbGFjZSA8TmFtZT4pJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0EgdmFsdWUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTGlua0FzJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0FsdGVybmF0aXZlIHRvfERlcGVuZHMgb258UmVsZXZhbnQgdG8nLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVXNlcklEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJzEgKGNhbiBvdmVyd3JpdGUgdGhlIGxvZ2dlZCBpbiB1c2VyKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCj1oZWFkMiBSdW4oKQoKICAgIFJ1biBEYXRhCgogICAgbXkgJENvbmZpZ0l0ZW1VcGRhdGVSZXN1bHQgPSAkQ29uZmlnSXRlbVVwZGF0ZUFjdGlvbk9iamVjdC0+UnVuKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgID0+IFwlVGlja2V0LCAgICMgcmVxdWlyZWQKICAgICAgICBQcm9jZXNzRW50aXR5SUQgICAgICAgICAgPT4gJ1AxMjMnLAogICAgICAgIEFjdGl2aXR5RW50aXR5SUQgICAgICAgICA9PiAnQTEyMycsCiAgICAgICAgVHJhbnNpdGlvbkVudGl0eUlEICAgICAgID0+ICdUMTIzJywKICAgICAgICBUcmFuc2l0aW9uQWN0aW9uRW50aXR5SUQgPT4gJ1RBMTIzJywKICAgICAgICBDb25maWcgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIHJlcXVpcmVkOgogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICdJRCBvZiB0aGUgQ29uZmlnIEl0ZW0nLAogICAgICAgICAgICAjIE9SCiAgICAgICAgICAgIE51bWJlciAgICAgICAgPT4gJ051bWJlciBvZiB0aGUgQ29uZmlnSXRlbScsCgogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIG9wdGlvbmFsOgogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdTb21lIENvbmZpZyBJdGVtIE5hbWUnLAogICAgICAgICAgICBEZXBsU3RhdGUgICAgID0+ICdTb21lIERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICBJbmNpU3RhdGUgICAgID0+ICdTb21lIEluY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJURlcGxTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScgKS0+JSo7CiAgICBteSAlSW5jaVN0YXRlMklETWFwID0gcmV2ZXJzZSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScgKS0+JSo7CgogICAgbXkgJUNvbmZpZ0l0ZW1QYXJhbTsKCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgZm9yIHRoZSBwcm9jZXNzZXMgbW9zdGx5IHRoZSBDb25maWdJdGVtcyB3aWxsIGNvbWUgZnJvbSByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCByZWYgJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ID0gJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfVswXTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnfXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17Q29uZmlnfXtOdW1iZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIG15ICRNaXNzaW5nID0gJFBhcmFte0NvbmZpZ317TnVtYmVyfSA/ICJObyBDb25maWdJdGVtIHdpdGggTnVtYmVyICckUGFyYW17Q29uZmlnfXtOdW1iZXJ9JyEiCiAgICAgICAgICAgIDogIk5lZWQgQ29uZmlnSXRlbUlEIG9yIE51bWJlciEiOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgIC4gIkNvdWxkIG5vdCB1cGRhdGUgQ0kgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgIC4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0gLiAiISAkTWlzc2luZyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAuICJObyBDb25maWdJdGVtIHdpdGggSUQgJyRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSc7IGZhaWxlZCBpbiBUaWNrZXQ6IgogICAgICAgICAgICAgICAgLiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSAuICIhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgZm9yIG15ICRPcHRpb25hbEF0dHJpYnV0ZSAoIHF3L05hbWUgTnVtYmVyIFZlcnNpb25TdHJpbmcvICkgewogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ317ICRPcHRpb25hbEF0dHJpYnV0ZSB9ICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte05hbWV9ID0gJFBhcmFte0NvbmZpZ317ICRPcHRpb25hbEF0dHJpYnV0ZSB9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0RlcGxTdGF0ZX0gJiYgJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9ICkgewogICAgICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9ICYmICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfSApIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAkQ29uZmlnUGFyYW0gIX4gL15EeW5hbWljRmllbGRfKC4rKS87CgogICAgICAgIG15ICRGaWVsZE5hbWUgICAgPSAkMTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGQgKTsKCiAgICAgICAgIyBmb3Igc2V0IGZpZWxkcyB3ZSBuZWVkIHRvIG1hcCB0aGUgbmFtZSBvZiB0aGUgaW5uZXIgZmllbGRzCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkICYmICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICYmIHJlZiAkUGFyYW17Q29uZmlnfXsgJENvbmZpZ1BhcmFtIH0gKSB7CiAgICAgICAgICAgIFNFVFZBTFVFOgogICAgICAgICAgICBmb3IgbXkgJFNldFZhbHVlICggJFBhcmFte0NvbmZpZ317ICRDb25maWdQYXJhbSB9LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyRmllbGQgKCBrZXlzICRTZXRWYWx1ZS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2V0TWFwcGluZy0+eyAkSW5uZXJGaWVsZCB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2V0VmFsdWUtPnsgJFNldE1hcHBpbmctPnsgJElubmVyRmllbGQgfSB9ID0gZGVsZXRlICRTZXRWYWx1ZS0+eyAkSW5uZXJGaWVsZCB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXsgJENvbmZpZ1BhcmFtIH0gPSAkUGFyYW17Q29uZmlnfXsgJENvbmZpZ1BhcmFtIH07CiAgICB9CgogICAgIyB1cGRhdGUgY29uZmlnIGl0ZW0KICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgJUNvbmZpZ0l0ZW1QYXJhbSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgdXBkYXRlIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9IGZyb20gVGlja2V0OiAiCiAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxpbmsgdGlja2V0CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TGlua0FzfSApIHsKCiAgICAgICAgIyBnZXQgbGluayBvYmplY3QKICAgICAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBhbGwgdHlwZXMKICAgICAgICBteSAlQ29uZmlndXJlZFR5cGVzID0gJExpbmtPYmplY3QtPlR5cGVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkU2VsZWN0ZWRUeXBlOwogICAgICAgIG15ICRTZWxlY3RlZERpcmVjdGlvbjsKCiAgICAgICAgVFlQRToKICAgICAgICBmb3IgbXkgJFR5cGUgKCBzb3J0IGtleXMgJUNvbmZpZ3VyZWRUeXBlcyApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57U291cmNlTmFtZX0KICAgICAgICAgICAgICAgICYmICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBuZSAkQ29uZmlndXJlZFR5cGVzeyRUeXBlfS0+e1RhcmdldE5hbWV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgVFlQRTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VsZWN0ZWRUeXBlICAgICAgPSAkVHlwZTsKICAgICAgICAgICAgJFNlbGVjdGVkRGlyZWN0aW9uID0gJ1NvdXJjZSc7CiAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IGVxICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnVGFyZ2V0JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IFRZUEU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZWN0ZWRUeXBlICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC4gIkxpbmtBcyAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gaXMgaW52YWxpZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRTb3VyY2VPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRTb3VyY2VPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICBteSAkVGFyZ2V0T2JqZWN0SUQgICA9ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9OwogICAgICAgIG15ICRUYXJnZXRPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgaWYgKCAkU2VsZWN0ZWREaXJlY3Rpb24gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICAgICAkVGFyZ2V0T2JqZWN0VHlwZSA9ICdJVFNNQ29uZmlnSXRlbSc7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJFNvdXJjZU9iamVjdFR5cGUsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlT2JqZWN0SUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAkVGFyZ2V0T2JqZWN0VHlwZSwKICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRUYXJnZXRPYmplY3RJRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRTZWxlY3RlZFR5cGUsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgTGluayBUaWNrZXRzICRTb3VyY2VPYmplY3RJRCB3aXRoICRUYXJnZXRPYmplY3RJRCBhcyAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/Service/PreferencesDB.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL1N5c3RlbS9TZXJ2aWNlL1ByZWZlcmVuY2VzREIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTo6UHJlZmVyZW5jZXNEQjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQic7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICAjIHByZWZlcmVuY2VzIHRhYmxlIGRhdGEKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gICAgICAgICAgPSAnc2VydmljZV9wcmVmZXJlbmNlcyc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVLZXl9ICAgICAgID0gJ3ByZWZlcmVuY2VzX2tleSc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVWYWx1ZX0gICAgID0gJ3ByZWZlcmVuY2VzX3ZhbHVlJzsKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0gPSAnc2VydmljZV9pZCc7CgogICAgIyBjcmVhdGUgY2FjaGUgcHJlZml4CiAgICAkU2VsZi0+e0NhY2hlUHJlZml4fSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQicKICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfQogICAgICAgIC4gJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBTZXJ2aWNlUHJlZmVyZW5jZXNTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhTZXJ2aWNlSUQgS2V5IFZhbHVlKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIG9sZCBkYXRhCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGV9IFdIRVJFICIKICAgICAgICAgICAgLiAiJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8gQU5EICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0gPSA/IiwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9LCBcJFBhcmFte0tleX0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgbmV3IGRhdGEKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gIklOU0VSVCBJTlRPICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gKCRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0sICIKICAgICAgICAgICAgLiAiICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSkgIgogICAgICAgICAgICAuICIgVkFMVUVTICg/LCA/LCA/KSIsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSwgXCRQYXJhbXtLZXl9LCBcJFBhcmFte1ZhbHVlfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgU2VydmljZVByZWZlcmVuY2VzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciAocXcoU2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KIyAtLS0KIyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAtLS0KIwojICAgICMgY2hlY2sgaWYgc2VydmljZSBwcmVmZXJlbmNlcyBhcmUgYXZhaWxhYmxlCiMgICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NlcnZpY2VQcmVmZXJlbmNlcycpOwojIC0tLQoKICAgICMgcmVhZCBjYWNoZQogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiAkQ2FjaGU7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcHJlZmVyZW5jZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSAiCiAgICAgICAgICAgIC4gIiBGUk9NICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gV0hFUkUgJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8iLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntDYWNoZVByZWZpeH0gLiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKMTsK</File>
        <File Location="Kernel/System/Stats/Dynamic/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgR2V0T2JqZWN0TmFtZSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIHJldHVybiAnSVRTTUNvbmZpZ0l0ZW0nOwp9CgpzdWIgR2V0T2JqZWN0QmVoYXZpb3VycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVCZWhhdmlvdXJzID0gKAogICAgICAgIFByb3ZpZGVzRGFzaGJvYXJkV2lkZ2V0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAlQmVoYXZpb3VyczsKfQoKc3ViIEdldE9iamVjdEF0dHJpYnV0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgIyBnZXQgY3VycmVudCB0aW1lIHRvIGZpeCBidWcjMzgzMAogICAgbXkgJFRpbWVTdGFtcCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub1N0cmluZygpOwoKICAgICMgY3JlYXRlIG9iamVjdCBhdHRyaWJ1dGUgYXJyYXkKICAgIG15IEBPYmplY3RBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiAgICA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBMYW5ndWFnZVRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbmNpZGVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ3JlYXRlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDcmVhdGVUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ2hhbmdlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDaGFuZ2VUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFRpbWVTdG9wICAgICAgICAgPT4gJFRpbWVTdGFtcCwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ0NvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIHRoZSB4bWwgZGF0YQogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewoKICAgICAgICAjIGdldCB4bWwgZGVmaW5pdGlvbiBoYXNoCiAgICAgICAgbXkgJFhNTERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgISRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgJFNlbGYtPl9YTUxBdHRyaWJ1dGVBZGQoCiAgICAgICAgICAgIE9iamVjdEF0dHJpYnV0ZXMgPT4gXEBPYmplY3RBdHRyaWJ1dGVzLAogICAgICAgICAgICBYTUxEZWZpbml0aW9uICAgID0+ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJ1hNTDo6JyAuICRDbGFzc0lELAogICAgICAgICAgICBQcmVmaXhOYW1lICAgICAgID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdEF0dHJpYnV0ZXM7Cn0KCnN1YiBfWE1MQXR0cmlidXRlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17T2JqZWN0QXR0cmlidXRlc307CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7CgogICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAkUGFyYW17UHJlZml4fSAuPSAnOjonOwogICAgfQogICAgaWYgKCAkUGFyYW17UHJlZml4TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte1ByZWZpeE5hbWV9IC49ICc6Oic7CiAgICB9CgogICAgJFBhcmFte0xldmVsfSAgICAgIHx8PSAwOwogICAgJFBhcmFte1ByZWZpeH0gICAgIHx8PSAnJzsKICAgICRQYXJhbXtQcmVmaXhOYW1lfSB8fD0gJyc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U2VhcmNoYWJsZX0gJiYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBjcmVhdGUga2V5IGFuZCBuYW1lCiAgICAgICAgbXkgJEtleSAgPSAkUGFyYW17UHJlZml4fSAuICRJdGVtLT57S2V5fTsKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtQcmVmaXhOYW1lfSAuICRJdGVtLT57TmFtZX07CgogICAgICAgICMgYWRkIGF0dHJpYnV0ZQogICAgICAgIG15ICRBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MU3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgICAgIEtleSAgPT4gJEtleSwKICAgICAgICAgICAgSXRlbSA9PiAkSXRlbSwKICAgICAgICAgICAgTmFtZSA9PiAkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IElURU0gaWYgISRBdHRyaWJ1dGU7CiAgICAgICAgbmV4dCBJVEVNIGlmIHJlZiAkQXR0cmlidXRlIG5lICdBUlJBWSc7CiAgICAgICAgbmV4dCBJVEVNIGlmICFzY2FsYXIgQHskQXR0cmlidXRlfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlcyB0byBvYmplY3QgYXJyYXkKICAgICAgICBwdXNoIEB7ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSB9LCBAeyRBdHRyaWJ1dGV9OwoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICRTZWxmLT5fWE1MQXR0cmlidXRlQWRkKAogICAgICAgICAgICBPYmplY3RBdHRyaWJ1dGVzID0+ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiAgICA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIExldmVsICAgICAgICAgICAgPT4gJFBhcmFte0xldmVsfSArIDEsCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgUHJlZml4TmFtZSAgICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnRQcmV2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICggaW50IHJhbmQgNTAwICkgKyAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBsaW1pdAogICAgJFBhcmFte0xpbWl0fSA9IDFfMDAwXzAwMDsKCiAgICAjIGV4dHJhY3QgYWxsIHhtbCBwYXJhbSBrZXlzIGZyb20gdGhlIHBhcmFtIGhhc2gKICAgIG15IEBYTUxQYXJhbXMgPSBncmVwIHsgJF8gPX4gbXtcQSBYTUw6On14bXMgfSBzb3J0IGtleXMgJVBhcmFtOwoKICAgIGlmIChAWE1MUGFyYW1zKSB7CiAgICAgICAgcmV0dXJuICdZb3UgbXVzdCBkZWZpbmUgYSBjbGFzcyBpbiBvbmUgYXhpcy4nIGlmICEkUGFyYW17Q2xhc3NJRHN9OwogICAgICAgIHJldHVybiAnWW91IG11c3QgZGVmaW5lIGEgY2xhc3MgaW4gb25lIGF4aXMuJyBpZiByZWYgJFBhcmFte0NsYXNzSURzfSBuZSAnQVJSQVknOwogICAgfQoKICAgICMgdG8gY29sbGVjdCBkYXRlIGZpZWxkcyBzZXBhcmF0ZWx5CiAgICBteSAlWE1MUGFyYW1zRGF0ZUZpZWxkczsKCiAgICBteSAlWE1MQ2xhc3NJRHM7CiAgICBQQVJBTUtFWToKICAgIGZvciBteSAkUGFyYW1LZXkgKEBYTUxQYXJhbXMpIHsKCiAgICAgICAgIyBleHRyYWN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBteSAkU2VhcmNoVmFsdWVzID0gJFBhcmFteyRQYXJhbUtleX07CgogICAgICAgICMgcHJlcGFyZSBwYXJhbSB2YWx1ZQogICAgICAgIGlmICggIXJlZiAkU2VhcmNoVmFsdWVzICkgewogICAgICAgICAgICAkU2VhcmNoVmFsdWVzID0gWyRTZWFyY2hWYWx1ZXNdOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBQQVJBTUtFWSBpZiAhQHskU2VhcmNoVmFsdWVzfTsKCiAgICAgICAgIyBzcGxpdCBwYXJhbSBrZXkKICAgICAgICBteSAoICRDbGFzc0lELCAkU2VhcmNoS2V5ICkgPSAkUGFyYW1LZXkgPX4gbXsgXEEgWE1MOjogKCBcZCsgKSA6OiAoLispIFx6IH14bXM7CgogICAgICAgICMgcHJlcGFyZSBzZWFyY2gga2V5CiAgICAgICAgJFNlYXJjaEtleSA9fiBzWyA6OiBdWyd9WyVdeyddeG1zZzsKCiAgICAgICAgIyBBZGQgY2xhc3MgaWQgdG8geG1sIGNsYXNzIGlkIGhhc2gKICAgICAgICAkWE1MQ2xhc3NJRHN7JENsYXNzSUR9ID0gMTsKCiAgICAgICAgIyBjb2xsZWN0IGRhdGUgZmllbGRzIHNlcGFyYXRlbHkgKGUuZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlTmV3ZXJEYXRlKQogICAgICAgIGlmICggJFNlYXJjaEtleSA9fiBteyAoLispICggTmV3ZXJEYXRlIHwgT2xkZXJEYXRlICkgXHogfXhtcyApIHsKICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JDF9LT57JDJ9ID0gJFNlYXJjaFZhbHVlcy0+WzBdOwoKICAgICAgICAgICAgbmV4dCBQQVJBTUtFWTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHNlYXJjaCBoYXNoCiAgICAgICAgbXkgJFNlYXJjaEhhc2ggPSB7CiAgICAgICAgICAgICdbMV17XCdWZXJzaW9uXCd9WzFde1wnJyAuICRTZWFyY2hLZXkgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gJFNlYXJjaFZhbHVlcywKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICAjIGJ1aWxkIHNlYXJjaCBoYXNoIGZvciBkYXRlIGZpZWxkcwogICAgZm9yIG15ICREYXRlRmllbGROYW1lICggc29ydCBrZXlzICVYTUxQYXJhbXNEYXRlRmllbGRzICkgewoKICAgICAgICBteSAkU2VhcmNoSGFzaCA9IHsKICAgICAgICAgICAgJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCcnIC4gJERhdGVGaWVsZE5hbWUgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gewogICAgICAgICAgICAgICAgJy1iZXR3ZWVuJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JERhdGVGaWVsZE5hbWV9LT57TmV3ZXJEYXRlfSwKICAgICAgICAgICAgICAgICAgICAkWE1MUGFyYW1zRGF0ZUZpZWxkc3skRGF0ZUZpZWxkTmFtZX0tPntPbGRlckRhdGV9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICBpZiAoJVhNTENsYXNzSURzKSB7CiAgICAgICAgbXkgQEV4aXN0cyA9IGdyZXAgeyAkWE1MQ2xhc3NJRHN7JF99IH0gQHsgJFBhcmFte0NsYXNzSURzfSB9OwoKICAgICAgICByZXR1cm4gMCBpZiAhQEV4aXN0czsKICAgIH0KCiAgICAjIHN0YXJ0IGNvbmZpZyBpdGVtIGV4dGVuZGVkIHNlYXJjaAogICAgbXkgJEFtb3VudE9mQ0lzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgJVBhcmFtLAogICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgKTsKCiAgICByZXR1cm4gJEFtb3VudE9mQ0lzOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgoxOwo=</File>
        <File Location="Kernel/System/SysConfig/ValueType/Entity/ConfigItemClass.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5OjpDb25maWdJdGVtQ2xhc3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHk6OkNvbmZpZ0l0ZW1DbGFzcyAtIFN5c3RlbSBjb25maWd1cmF0aW9uIGNvbmZpZyBpdGVtIGNsYXNzIGVudGl0eSB0eXBlIGJhY2tlbmQuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpDcmVhdGUgYW4gb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRFbnRpdHlUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHk6OkNvbmZpZ0l0ZW1DbGFzcycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgRW50aXR5VmFsdWVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW1DbGFzc2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgQFJlc3VsdDsKCiAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICRDb25maWdJdGVtQ2xhc3Nlcy0+JSogKSB7CiAgICAgICAgcHVzaCBAUmVzdWx0LCAkQ29uZmlnSXRlbUNsYXNzZXMtPnskSUR9OwogICAgfQoKICAgIHJldHVybiBAUmVzdWx0Owp9CgpzdWIgRW50aXR5TG9va3VwRnJvbVdlYlJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtQ2xhc3NJRCcgKSAvLyAnJzsKCiAgICByZXR1cm4gaWYgISRDbGFzc0lEOwoKICAgIG15ICRJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgKTsKCiAgICByZXR1cm4gJEl0ZW0tPntOYW1lfTsKfQoKMTsK</File>
        <File Location="Kernel/System/Ticket/Event/TicketStatusLink.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIHJldHVybiAxIGlmICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rJyk7CgogICAgIyBnZXQgdGlja2V0IGlkIGRlcGVuZGluZyBvbiBldmVudAogICAgbXkgJFRpY2tldElEOwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIENvbW1lbnQpKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUeXBlIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbGluayBldmVudCBjb25jZXJucyBhIHRpY2tldAogICAgICAgIHJldHVybiAxIHVubGVzcyAkUGFyYW17RGF0YX0tPntDb21tZW50fSA9fiBteyBcQSAoIFxkKyApICUlVGlja2V0IFx6IH14bXM7CgogICAgICAgICRUaWNrZXRJRCA9ICQxOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57VGlja2V0SUR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldElEID0gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9OwogICAgfQoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAlVGlja2V0ICAgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKICAgIHJldHVybiAxIGlmICElVGlja2V0OwoKICAgICMgY2hlY2sgaWYgdGlja2V0IHR5cGUgaXMgcmVsZXZhbnQgKG9wdGlvbmFsIGZ1bmN0aW9uYWxpdHkpCiAgICBteSAkT2xkVGlja2V0VHlwZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFR5cGVSZWxldmFudDsKICAgIG15ICRUaWNrZXRUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJyk7CiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHRpY2tldCB0eXBlcyBhcmUgbm90IHVzZWQsIGNoYW5nZXMgZG9uJ3QgYWZmZWN0IENJIGluY2lkZW50IHN0YXRlcwogICAgICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKTsKCiAgICAgICAgIyBkZXRlcm1pbmUgdHlwZSBvZiB0aWNrZXQgYmVmb3JlIGxhc3QgdXBkYXRlCiAgICAgICAgbXkgJE9sZFRpY2tldFR5cGU7CiAgICAgICAgbXkgQEhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIExJTkU6CiAgICAgICAgZm9yIG15ICRMaW5lICggcmV2ZXJzZSBASGlzdG9yeUxpbmVzICkgewogICAgICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUtPntIaXN0b3J5VHlwZX0gbmUgJ1R5cGVVcGRhdGUnOwogICAgICAgICAgICBteSBAQ29tbWVudFBhcnRzID0gc3BsaXQgLyUlLywgJExpbmUtPntOYW1lfTsKICAgICAgICAgICAgJE9sZFRpY2tldFR5cGUgPSAkQ29tbWVudFBhcnRzWzNdOwogICAgICAgICAgICBsYXN0IExJTkU7CiAgICAgICAgfQogICAgICAgIGlmICggISRPbGRUaWNrZXRUeXBlICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRm91bmQgbm8gcHJldmlvdXMgdGlja2V0IHR5cGUgZm9yIHRpY2tldCBpZCAkVGlja2V0SUQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBvbmx5IGNoYW5nZXMgcmVsZXZhbnQtPmlycmVsZXZhbnQgYW5kIGlycmVsZXZhbnQtPnJlbGV2YW50IGFyZSBvZiBpbnRlcmVzdAogICAgICAgICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgPSAxIGlmIGdyZXAgeyAkXyBlcSAkT2xkVGlja2V0VHlwZSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICAkTmV3VGlja2V0VHlwZVJlbGV2YW50ID0gMSBpZiBncmVwIHsgJF8gZXEgJFRpY2tldHtUeXBlfSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICByZXR1cm4gMSBpZiAoICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKSBlcSAoICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKTsKICAgIH0KCiAgICAjIHNob3J0Y3V0IGZvciBvdGhlciBldmVudHMgKGNoZWNrIGlmIHRpY2tldCB0eXBlIGlzIGluIHNjb3BlKQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKSApIHsKICAgICAgICByZXR1cm4gMSBpZiAhJFRpY2tldHtUeXBlfTsKICAgICAgICByZXR1cm4gMSBpZiAhZ3JlcCB7ICRfIGVxICRUaWNrZXR7VHlwZX0gfSBAeyRUaWNrZXRUeXBlc307CiAgICB9CgogICAgIyBjaGVjayBpZiB0aWNrZXQgc3RhdGUgaXMgcmVsZXZhbnQKICAgIG15ICRPbGRUaWNrZXRTdGF0ZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQ7CiAgICBteSBAT3BlblN0YXRlVHlwZXMgPSAoICduZXcnLCAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJywgJ3BlbmRpbmcgYXV0bycgKTsKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnICkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBPbGRUaWNrZXREYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgb25seSBjaGFuZ2VzIG9wZW4tPmNsb3NlIGFuZCBjbG9zZS0+b3BlbiBhcmUgb2YgaW50ZXJlc3QKICAgICAgICAkTmV3VGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRUaWNrZXR7U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICAkT2xkVGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9LT57U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICByZXR1cm4gMSBpZiAoICROZXdUaWNrZXRTdGF0ZVJlbGV2YW50IHx8ICcnICkgZXEgKCAkT2xkVGlja2V0U3RhdGVSZWxldmFudCB8fCAnJyApOwogICAgfQoKICAgICMgc2hvcnRjdXQgZm9yIG90aGVyIGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IHN0YXRlIGlzIGluIHNjb3BlKQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIDEgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgdGlja2V0IGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IGhhcyBhbnkgcG90ZW50aWFsbHkgcmVsZXZhbnQgbGlua3MpCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFN0YXRlVXBkYXRlJyB8fCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRUeXBlVXBkYXRlJyApIHsKICAgICAgICBteSAlTGlua0tleUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgS2V5MSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU3RhdGUgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgaW5jaWRlbnQgc3RhdGVzIGFuZCByZWxldmFudCBsaW5rIHR5cGVzIHBlciBpbmNpZGVudCBzdGF0ZQogICAgbXkgJEluY2lkZW50U3RhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6SW5jaWRlbnRTdGF0ZXMnKTsKICAgIG15ICRMaW5rVHlwZXMgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkxpbmtUeXBlcycpOwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJExpbmtUeXBlcykgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIGNvbmZpZ3VyYXRpb24gZm9yICdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6TGlua1R5cGVzJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZTsKCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0xpbmtBZGQnICkgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgaWYgKCAkTGlua1R5cGUgZXEgJFBhcmFte0RhdGF9LT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRMaW5rVHlwZXNCeUluY2lkZW50U3RhdGV7ICRMaW5rVHlwZXMtPnskTGlua1R5cGV9IH0gfSwgJExpbmtUeXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAxIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkTGlua1R5cGVzQnlJbmNpZGVudFN0YXRleyAkTGlua1R5cGVzLT57JExpbmtUeXBlfSB9IH0sICRMaW5rVHlwZTsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgYWRkZWQgb3IgcmVtb3ZlZCBsaW5rcwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfTsKICAgICAgICBteSAkVmVyc2lvbiAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgb3B0aW9uYWw6IGNoZWNrIGlmIENJIGRlcGxveW1lbnQgc3RhdGUgaXMgcmVsZXZhbnQKICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkRlcGxveW1lbnRTdGF0ZXMnKTsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbG95bWVudFN0YXRlcykgKSB7CiAgICAgICAgICAgIHJldHVybiAxIGlmICFncmVwIHsgJF8gZXEgJFZlcnNpb24tPntEZXBsU3RhdGV9IH0gQHskRGVwbG95bWVudFN0YXRlc307CiAgICAgICAgfQoKICAgICAgICAjIHJhaXNlIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrUmFpc2VJbmNpZGVudFN0YXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICAgID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZXMgICAgICAgICAgID0+ICRJbmNpZGVudFN0YXRlcywKICAgICAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGxvd2VyIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrTG93ZXJJbmNpZGVudFN0YXRlKAogICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgIEluY2lkZW50U3RhdGVzICAgICAgICAgICA9PiAkSW5jaWRlbnRTdGF0ZXMsCiAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICApOwogICAgfQoKICAgICMgaGFuZGxlIHRpY2tldCBjbG9zdXJlL3JlLW9wZW4gYW5kIHJlbGV2YW50L2lycmVsZXZhbnQgdHlwZSBjaGFuZ2UKICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnIHx8ICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHJlbGV2YW50IHRpY2tldCBzdGF0ZSBhbmQgdHlwZSB1cGRhdGVzIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheQogICAgICAgICMgYm90aCBtZWFuIGEgdGlja2V0IGlzIHJlbGV2YW50IGZvciBDSSBpbmNpZGVudCBzdGF0ZSBjaGFuZ2VzIG9yIG5vdAogICAgICAgICMgdGlja2V0IHJlLW9wZW4gb3IgY2hhbmdlIHRvIHJlbGV2YW50IHR5cGUgPSBtaWdodCBoYXZlIHRvIHJhaXNlIGluY2lkZW50IHN0YXRlIG9mIENJcwogICAgICAgICMgdGlja2V0IGNsb3N1cmUgb3IgY2hhbmdlIHRvIGlycmVsZXZhbnQgdHlwZSA9IG1pZ2h0IGhhdmUgdG8gbG93ZXIgaW5jaWRlbnQgc3RhdGUgb2YgQ0lzCiAgICAgICAgbXkgJFJlbGV2YW50Tm93OwogICAgICAgIGlmICgKICAgICAgICAgICAgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRTdGF0ZVVwZGF0ZScgJiYgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQgKQogICAgICAgICAgICB8fCAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICYmICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkUmVsZXZhbnROb3cgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBsb29wIHRocm91Z2ggYWxsIGxpbmsgdHlwZXMgYW5kIGNoZWNrIGxpbmtzIHRvIHNlZSBpZiB0aGVyZSBhcmUgcG9zc2libHkgYWZmZWN0ZWQgQ0lzCiAgICAgICAgbXkgJERlcGxveW1lbnRTdGF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJyk7CiAgICAgICAgSU5DSURFTlRTVEFURToKICAgICAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyRJbmNpZGVudFN0YXRlc30gKSB7CiAgICAgICAgICAgIExJTktUWVBFOgogICAgICAgICAgICBmb3IgbXkgJExpbmtUeXBlICggQHsgJExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZXskSW5jaWRlbnRTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgIG15IEBMaW5rZWRDSXMgPSAkU2VsZi0+X0NoZWNrVGlja2V0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICFATGlua2VkQ0lzOwoKICAgICAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChATGlua2VkQ0lzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFZlcnNpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbDogY2hlY2sgaWYgQ0kgZGVwbG95bWVudCBzdGF0ZSBpcyByZWxldmFudAogICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCREZXBsb3ltZW50U3RhdGVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIWdyZXAgeyAkXyBlcSAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gfSBAeyREZXBsb3ltZW50U3RhdGVzfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB2cyBzdGF0ZSBjYXVzZWQgYnkgbGluawoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgbG93ZXIgdGhhbiBjYXVzZWQgYnkgbGluayAtPiBzZXQKICAgICAgICAgICAgICAgICAgICBpZiAoJFJlbGV2YW50Tm93KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gaGlnaGVzdCBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGVzLT5bMF07CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gc2FtZSBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIENJIGlzIGluIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgIFRNUElOQ0lERU5UU1RBVEU6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkVG1wSW5jaWRlbnRTdGF0ZSAoIEB7JEluY2lkZW50U3RhdGVzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBmdXJ0aGVyIGluY2lkZW50IHN0YXRlcyBhcmUgbG93ZXIgdGhhbiBjdXJyZW50IG9uZSAtPiBzZXQgbmV3IHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFRNUElOQ0lERU5UU1RBVEUgaWYgJFRtcEluY2lkZW50U3RhdGUgZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRUbXBJbmNpZGVudFN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNldCBuZXcgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgc2FtZSBhcyBjYXVzZWQgYnkgbGluayAtPiByZS1jYWxjdWxhdGUKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgYWxyZWFkeSBpbiBsb3dlc3QgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRJbmNpZGVudFN0YXRlcy0+Wy0xXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgbm90IGluIHNhbWUgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IG5lICRJbmNpZGVudFN0YXRlOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBleGFjdGx5CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT5fQ2hlY2tMb3dlckluY2lkZW50U3RhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlcyAgICAgICAgICAgPT4gJEluY2lkZW50U3RhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlID0+IFwlTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1bmtub3duL2lycmVsZXZhbnQgZXZlbnQKICAgIGVsc2UgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxOwp9CgojIFJhdGlvbmFsZToKIyBTdGFydCBhdCBoaWdoZXN0ICh3b3JzdCkgaW5jaWRlbnQgc3RhdGUgYW5kIGxvb3AgZG93biB0byBjdXJyZW50IGluY2lkZW50IHN0YXRlLAojICAgY2hlY2tpbmcgZm9yIGxpbmtzIG9uIGFsbCB0eXBlcyBjb25maWd1cmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBpbmNpZGVudCBzdGF0ZS4KIyBJZiBhbnkgbGluayBmb3IgYSBoaWdoZXIgaW5jaWRlbnQgc3RhdGUgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgZm91bmQsCiMgICBzZXQgdGhpcyBzdGF0ZSBhbmQgZXhpdC4KIyBEdWUgdG8gdG9wLXRvLWJvdHRvbSBtZXRob2QsIG5vIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBjYW4gb2NjdXIgbGF0ZXIuCnN1YiBfQ2hlY2tSYWlzZUluY2lkZW50U3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFZlcnNpb24gSW5jaWRlbnRTdGF0ZXMgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlIFRpY2tldElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9vcCB0aHJvdWdoIHRhcmdldCBzdGF0ZXMgYW5kIGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIGNoYW5nZWQKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgQ0kgYWxyZWFkeSBpbiB0YXJnZXQgc3RhdGUgLSBub3RoaW5nIHRvIGRvCiAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQgbGVhZCB0byBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0IC0gc2V0IGluY2lkZW50IHN0YXRlIGFuZCBleGl0CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKIyBSYXRpb25hbGU6CiMgU2hvcnRjdXQgaWYgQ0kgaXMgYWxyZWR5IGluIGxvd2VzdCAoYmVzdCkgaW5jaWRlbnQgc3RhdGUgPSBjYW4ndCBoYXZlIGNoYW5nZWQgYWZ0ZXIgbGluayBkZWxldGUuCiMgU3RhcnQgYXQgaGlnaGVzdCAod29yc3QpIGluY2lkZW50IHN0YXRlIGFuZCBsb29wIGRvd24gdG8gY3VycmVudCBpbmNpZGVudCBzdGF0ZSwKIyAgIGNoZWNraW5nIGZvciBsaW5rcyBvbiBhbGwgdHlwZXMgY29uZmlndXJlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgaW5jaWRlbnQgc3RhdGVzLgojIElmIGEgbGluayBmb3IgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgZm91bmQsIGV4aXQgaW1tZWRpYXRlbHkgKG5vIGNoYW5nZSkuCiMgT3RoZXJ3aXNlIHNldCBpbmNpZGVudCBzdGF0ZSBmb3IgZmlyc3Qgb2NjdXJhbmNlIG9mIGEgbGluaywgdGhlbiBleGl0LgojIElmIG5vIGxpbmsgaXMgZm91bmQsIHNldCB0aGUgbG93ZXN0IHN0YXRlLgojIER1ZSB0byB0b3AtdG8tYm90dG9tIG1ldGhvZCwgZmlyc3QgcmVtZW1iZXJlZCBpbmNpZGVudCBzdGF0ZSBpcyB0aGUgaGlnaGVzdCBwb3NzaWJsZS4Kc3ViIF9DaGVja0xvd2VySW5jaWRlbnRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbiBJbmNpZGVudFN0YXRlcyBMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgbG93ZXN0IGxldmVsCiAgICByZXR1cm4gMSBpZiAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9IGVxICRQYXJhbXtJbmNpZGVudFN0YXRlc30tPlstMV07CgogICAgIyBsb29wIHRocm91Z2ggdGFyZ2V0IHN0YXRlcyBhbmQgY2hlY2sgaWYgaXQgbmVlZHMgdG8gYmUgY2hhbmdlZAogICAgbXkgJExvd2VySW5jaWRlbnRTdGF0ZTsKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgc2tpcCBsZXZlbCBpZiBjdXJyZW50IENJIGluY2lkZW50IHN0YXRlIGlzIG5vdCBvbiB0aGlzIG9yIGFueSBoaWdoZXIgbGV2ZWwKICAgICAgICBuZXh0IElOQ0lERU5UU1RBVEUgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBuZSAkSW5jaWRlbnRTdGF0ZSAmJiAhJExvd2VySW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQga2VlcCBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0CgogICAgICAgICAgICAjIGtlZXAgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHNldCBuZXcgKGxvd2VyKSBpbmNpZGVudCBzdGF0ZSBhbmQgZXhpdAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAkSW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhhdCBzdGF0ZSBuZWVkcyB0byBiZSBjaGFuZ2VkICg9IGN1cnJlbnQgbGV2ZWwgaXNuJ1QganVzdGlmaWVkIGJ5IGxpbmtzIGFueW1vcmUpCiAgICAgICAgJExvd2VySW5jaWRlbnRTdGF0ZSA9IDE7CiAgICB9CgogICAgIyBubyByZWxldmFudCBsaW5rcyBoYXZlIGJlZW4gZm91bmQsIGJ1dCBDSSB3YXNuJ3QgaW4gbG93ZXN0IGluY2lkZW50IHN0YXRlIGJlZm9yZSAtIHNldCBpdCBub3cgYW5kIGV4aXQKICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgIEluY2lkZW50U3RhdGUgPT4gJFBhcmFte0luY2lkZW50U3RhdGVzfS0+Wy0xXSwKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICApOwp9CgojIHNldCBDSSB0byBhIHNwZWNpZmllZCBpbmNpZGVudCBzdGF0ZSBhbmQgbG9nIGNoYW5nZSBpbiBjb3JyZXNwb25kaW5nIHRpY2tldApzdWIgX1NldENJU3RhdHVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uIEluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpZGVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW5jaWRlbnRTdGF0ZUxpc3QpOwoKICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgaXMgdmFsaWQKICAgIG15ICVSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3QgPSByZXZlcnNlICV7JEluY2lkZW50U3RhdGVMaXN0fTsKICAgIGlmICggISRSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3R7ICRQYXJhbXtJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSGF2ZSBpbnZhbGlkIGluY2lkZW50IHN0YXRlICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBhZGQgYSBuZXcgdmVyc2lvbiB3aXRoIHRoZSBuZXcgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkFkZCgKICAgICAgICAleyAkUGFyYW17VmVyc2lvbn0gfSwKICAgICAgICBJbmNpU3RhdGVJRCA9PiAkUmV2ZXJzZUluY2lkZW50U3RhdGVMaXN0eyAkUGFyYW17SW5jaWRlbnRTdGF0ZX0gfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhJFZlcnNpb25JRDsKCiAgICAjIGxvZyBjaGFuZ2UgaW4gdGlja2V0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPkhpc3RvcnlBZGQoCiAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICBOYW1lICAgICAgICAgPT4gIlVwZGF0ZWQgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW0gJyRQYXJhbXtWZXJzaW9ufS0+e051bWJlcn0nIHRvICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nLiIsCiAgICAgICAgQ3JlYXRlVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IENJcyBhcmUgbGlua2VkIHRvIGEgdGlja2V0CnN1YiBfQ2hlY2tUaWNrZXRMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgVHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsaW5rIHR5cGUgbG9va3VwCiAgICBteSAkTGlua1R5cGVMb29rdXAgPSAkU2VsZi0+X0xpbmtUeXBlTG9va3VwR2V0KCk7CgogICAgbXkgJUxpbmtLZXlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgIE9iamVjdDIgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntOYW1lfSwKICAgICAgICBEaXJlY3Rpb24gPT4gJExpbmtUeXBlTG9va3VwLT57ICRQYXJhbXtUeXBlfSB9LT57RGlyZWN0aW9ufS0+e1RpY2tldH0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApOwogICAgcmV0dXJuICggc29ydCBrZXlzICVMaW5rS2V5TGlzdCApOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IG9wZW4gdGlja2V0cyBhcmUgbGlua2VkIHRvIGEgQ0kKc3ViIF9DaGVja0NvbmZpZ0l0ZW1MaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGluayB0eXBlIGxvb2t1cAogICAgbXkgJExpbmtUeXBlTG9va3VwID0gJFNlbGYtPl9MaW5rVHlwZUxvb2t1cEdldCgpOwoKICAgIG15ICVMaW5rS2V5TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtLZXlMaXN0KAogICAgICAgIE9iamVjdDEgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZUxvb2t1cC0+eyAkUGFyYW17VHlwZX0gfS0+e05hbWV9LAogICAgICAgIERpcmVjdGlvbiA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntEaXJlY3Rpb259LT57SVRTTUNvbmZpZ0l0ZW19LAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKCiAgICAjIGxpc3Qgb2YgcmVsZXZhbnQgc3RhdGUgdHlwZXMKICAgIG15IEBPcGVuU3RhdGVUeXBlcyA9ICggJ25ldycsICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInLCAncGVuZGluZyBhdXRvJyApOwoKICAgICMgdXNlIHRpY2tldCB0eXBlIGNoZWNrPwogICAgbXkgJFRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMnKTsKICAgIG15ICRDaGVja1RpY2tldFR5cGVzOwogICAgJENoZWNrVGlja2V0VHlwZXMgPSAxIGlmIElzQXJyYXlSZWZXaXRoRGF0YSgkVGlja2V0VHlwZXMpOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBUSUNLRVRJRDoKICAgIGZvciBteSAkVGlja2V0SUQgKCBzb3J0IGtleXMgJUxpbmtLZXlMaXN0ICkgewogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICAgICAgaWYgKCRDaGVja1RpY2tldFR5cGVzKSB7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRUaWNrZXR7VHlwZX07CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1R5cGV9IH0gQHskVGlja2V0VHlwZXN9OwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICByZXR1cm47Cn0KCiMgY29tcGlsZSBsaXN0IG9mIGludGVybmFsIGxpbmsgdHlwZSBuYW1lcyBhbmQgZGlyZWN0aW9ucyB0byB1c2UgZm9yIExpbmtLZXlMaXN0CnN1YiBfTGlua1R5cGVMb29rdXBHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHdlIGhhdmUgZ2VuZXJhdGVkIGxvb2t1cCBiZWZvcmUKICAgIHJldHVybiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfSBpZiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfTsKCiAgICBteSAlTGlua1R5cGVMb29rdXA7CiAgICBteSAlVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5UeXBlTGlzdCgpOwogICAgZm9yIG15ICRUeXBlTmFtZUludGVybmFsICggc29ydCBrZXlzICVUeXBlTGlzdCApIHsKICAgICAgICBteSAkU291cmNlTmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntTb3VyY2VOYW1lfTsKICAgICAgICBteSAkVGFyZ2V0TmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntUYXJnZXROYW1lfTsKICAgICAgICAkTGlua1R5cGVMb29rdXB7JFNvdXJjZU5hbWV9ID0gewogICAgICAgICAgICBOYW1lICAgICAgPT4gJFR5cGVOYW1lSW50ZXJuYWwsCiAgICAgICAgICAgIERpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGlja2V0ICAgICAgICAgPT4gJFNvdXJjZU5hbWUgZXEgJFRhcmdldE5hbWUgPyAnQm90aCcgOiAnU291cmNlJywKICAgICAgICAgICAgfSwKICAgICAgICB9OwogICAgICAgICRMaW5rVHlwZUxvb2t1cHskVGFyZ2V0TmFtZX0gPSB7CiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkVHlwZU5hbWVJbnRlcm5hbCwKICAgICAgICAgICAgRGlyZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+ICRTb3VyY2VOYW1lIGVxICRUYXJnZXROYW1lID8gJ0JvdGgnIDogJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CgogICAgIyByZW1lbWJlciByZXN1bHQKICAgICRTZWxmLT57TGlua1R5cGVMb29rdXB9ID0gXCVMaW5rVHlwZUxvb2t1cDsKCiAgICByZXR1cm4gXCVMaW5rVHlwZUxvb2t1cDsKfQoKMTsK</File>
        <File Location="Kernel/System/UnitTest/ITSMConfigItemHelper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0ZGFkZTgxZTdlMDQ0MzNjYjJhZWQzNmFmMGM4NzI3ZDgyMmExYzYxIC0gS2VybmVsL1N5c3RlbS9Vbml0VGVzdC9IZWxwZXIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIFRlc3QyOjpBUEkgcXcvY29udGV4dCBydW5fc3VidGVzdC87CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OllBTUwnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXIgLSB1bml0IHRlc3QgaGVscGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIENNREIKCj1oZWFkMiBERVNDUklQVElPTgoKVG8gYmUgdXNlZCBpbiB0ZXN0IHNjcmlwdHMuIENsZWFudXAgd2lsbCBiZSB0cmlnZ2VyZWQgaW4gdGhlIEVORCBibG9jay4KCj1oZWFkMSBNRVRIT0RTCgo9aGVhZDIgbmV3KCkKCmNvbnN0cnVjdCBhIGhlbHBlciBvYmplY3QuCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiAgICAjIERvIG5vdCBjYWxsIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXItPm5ldygpLAogICAgIyBpbnN0ZWFkIHBhc3MgcGFyYW1zIHZpYSB0aGUgT2JqZWN0TWFuYWdlci4KICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicgPT4gewogICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwgICAgIyBydW5zIHRoZSB0ZXN0IGluIGEgdHJhbnNhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCByb2xsIGl0IGJhY2sgaW4gdGhlIGRlc3RydWN0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URTogUm9sbGJhY2sgZG9lcyBub3Qgd29yayBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlcyBpbiB0aGUgZGF0YWJhc2UgbGF5b3V0LiBJZiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2FudCB0byBkbyB0aGlzIGluIHlvdXIgdGVzdHMsIHlvdSBjYW5ub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoaXMgb3B0aW9uIGFuZCBtdXN0IGhhbmRsZSB0aGUgcm9sbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgeW91cnNlbGYuCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKClZhbGlkIHBhcmFtZXRlcnMgYXJlOgoKPW92ZXIgNAoKPWl0ZW0gU2tpcFNTTFZlcmlmeQoKVW5zZXQgQzwkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9PiB3aGlsZSB0aGlzIGluc3RhbmNlIGV4aXN0cy4KCj1pdGVtIFVzZVRtcEFydGljbGVEaXIKCj1pdGVtIFJlc3RvcmVEYXRhYmFzZQoKPWl0ZW0gRGlzYWJsZUFzeW5jQ2FsbHMKCj1iYWNrCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGZpbmQgb3V0IHdoZXRoZXIgbG9hZGVyIGZpbGVzIGFyZSBzdG9yZWQgaW4gUzMgb3IgaW4gdGhlIGZpbGUgc3lzdGVtCiAgICAkU2VsZi0+e1MzQWN0aXZlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3RvcmFnZTo6UzM6OkFjdGl2ZScpID8gMSA6IDA7CgogICAgIyBSZW1vdmUgYW55IGxlZnRvdmVyIGN1c3RvbSBmaWxlcyBmcm9tIGFib3J0ZWQgcHJldmlvdXMgcnVucy4KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkN1c3RvbUZpbGVDbGVhbnVwKCk7CgogICAgIyBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGlmIG5lZWRlZAogICAgaWYgKCAkUGFyYW17U2tpcFNTTFZlcmlmeX0gKSB7CgogICAgICAgICMgcmVtZW1iZXIgb3JpZ2luYWwgdmFsdWUsIHNvIHRoYXQgaXQgY2FuIGJlIHJlc2V0IGluIERFU1RST1koKQogICAgICAgICRTZWxmLT57UEVSTF9MV1BfU1NMX1ZFUklGWV9IT1NUTkFNRX0gPSAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9OwoKICAgICAgICAjIHNldCBlbnZpcm9ubWVudCB2YWx1ZSB0byAwCiAgICAgICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSA9IDA7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlJlcXVpcmVMb2NhbGl6ZWRQdW5jdHVhdGlvblZhcnMpCgogICAgICAgICRTZWxmLT57UmVzdG9yZVNTTFZlcmlmeX0gPSAxOwogICAgfQoKICAgICMgc3dpdGNoIGFydGljbGUgZGlyIHRvIGEgdGVtcG9yYXJ5IG9uZSB0byBhdm9pZCBjb2xsaXNpb25zCiAgICBpZiAoICRQYXJhbXtVc2VUbXBBcnRpY2xlRGlyfSApIHsKICAgICAgICAkU2VsZi0+VXNlVG1wQXJ0aWNsZURpcigpOwogICAgfQoKICAgIGlmICggJFBhcmFte1Jlc3RvcmVEYXRhYmFzZX0gKSB7CiAgICAgICAgJFNlbGYtPntSZXN0b3JlRGF0YWJhc2V9ID0gMTsKICAgICAgICAkU2VsZi0+QmVnaW5Xb3JrKCk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGlzYWJsZUFzeW5jQ2FsbHN9ICkgewogICAgICAgICRTZWxmLT5EaXNhYmxlQXN5bmNDYWxscygpOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFRlc3RDb25maWdJdGVtQ2xhc3NDcmVhdGUoKQoKY3JlYXRlcyBhIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCBpbiB0ZXN0cy4gUmV0dXJucwp0aGUgY2xhc3MgaWQgb2YgdGhlIG5ldyBjb25maWcgaXRlbSBjbGFzcy4KCiAgICBteSAkVGVzdENJQ2xhc3NOYW1lID0gJEhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DbGFzc0NyZWF0ZSgKICAgICAgICBOYW1lICAgICAgICAgICAgICAgID0+ICdTb21lQ2xhc3NOYW1lJywgICAgICMgb3B0aW9uYWwsIHJhbmRvbWx5IGdlbmVyYXRlZCBpZiBub3QgZ2l2ZW4KICAgICAgICBWZXJzaW9uU3RyaW5nTW9kdWxlID0+ICwgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIGRlZmF1bHQgaXMgJ0luY3JlbWVudGFsJwogICAgICAgIFZlcnNpb25UcmlnZ2VyICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAnJwogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlZmluaXRpb24gICAgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBUZXN0Q29uZmlnSXRlbUNsYXNzQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRleHQgPSBjb250ZXh0KCk7CgogICAgIyBjcmVhdGUgcmFuZG9tIHN1ZmZpeAogICAgbXkgJFRlc3RDbGFzc0lEOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBHZXQgY29uZmlnIGl0ZW0gZ3JvdXAgaWQKICAgIG15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgYmFpbF9vdXQoIkdvdCBubyBncm91cCBpZCBmb3IgZ3JvdXAgbmFtZSAnaXRzbS1jb25maWdpdGVtJyIpIHVubGVzcyAkQ29uZmlnSXRlbUdyb3VwSUQ7CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGUgPSBbKCRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA/ICRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA6ICdJbmNyZW1lbnRhbCcpXTsKICAgIG15ICRDb2RlID0gc3ViIHsKCiAgICAgICAgQ09VTlQ6CiAgICAgICAgZm9yICggMSAuLiAxMCApIHsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQogICAgICAgICAgICBteSAkVGVzdENsYXNzTmFtZSA9ICRQYXJhbXtOYW1lfSB8fCAoJ1VuaXRUZXN0JyAuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkdldFJhbmRvbUlEKCkpOwoKICAgICAgICAgICAgIyBhZGQgYm90aCB1bml0dGVzdCBjb25maWcgaXRlbSBjbGFzc2VzCiAgICAgICAgICAgICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFRlc3RDbGFzc05hbWUsCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRUZXN0Q2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbm90ZSgiU2V0IGNvbmZpZyBpdGVtIGNsYXNzIFBlcm1pc3Npb24gdG8gaXRzbS1jb25maWdpdGVtIik7CgogICAgICAgICAgICAgICAgIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkVmVyc2lvblN0cmluZ01vZHVsZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgVmVyc2lvblN0cmluZ01vZHVsZSB0byBJbmNyZW1lbnRhbCIpOwoKICAgICAgICAgICAgICAgICMgc2V0IGNhdGVnb3J5CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ0NhdGVnb3JpZXMnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbJ0RlZmF1bHQnXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcmllcyB0byBEZWZhdWx0Iik7CgogICAgICAgICAgICAgICAgIyBTZXQgdmVyc2lvbiB0cmlnZ2Vycy4KICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJyBdLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgICAgICAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBldmFsICRQYXJhbXtEZWZpbml0aW9ufSwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmFpbF9vdXQoJ0NvdWxkIG5vdCBhZGQgZGVmaW5pdGlvbiBmb3IgdGVzdCBjb25maWcgaXRlbSBjbGFzcycpIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgICAgICAgICAgICAgbGFzdCBDT1VOVDsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIGJhaWxfb3V0KCdDb3VsZCBub3QgY3JlYXRlIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MnKSB1bmxlc3MgJFRlc3RDbGFzc0lEOwogICAgICAgIHBhc3MoIkNyZWF0ZWQgdGVzdCBjb25maWcgaXRlbSBjbGFzcyAkVGVzdENsYXNzSUQiKTsKCiAgICAgICAgIyBSZW1lbWJlciBVc2VySUQgb2YgdGhlIHRlc3QgdXNlciB0byBsYXRlciBzZXQgaXQgdG8gaW52YWxpZAogICAgICAgICMgICBpbiB0aGUgZGVzdHJ1Y3Rvci4KICAgICAgICAkU2VsZi0+e1Rlc3RDb25maWdJdGVtQ2xhc3Nlc30gfHw9IFtdOwogICAgICAgIHB1c2goIEB7ICRTZWxmLT57VGVzdENvbmZpZ0l0ZW1DbGFzc2VzfSB9LCAkVGVzdENsYXNzSUQgKTsKICAgIH07CgogICAgcnVuX3N1YnRlc3QoCiAgICAgICAgJ1Rlc3RDb25maWdJdGVtQ2xhc3MnLAogICAgICAgICRDb2RlLAogICAgICAgIHsKICAgICAgICAgICAgYnVmZmVyZWQgICAgICA9PiAxLAogICAgICAgICAgICBpbmhlcml0X3RyYWNlID0+IDEKICAgICAgICB9CiAgICApOwoKICAgICRDb250ZXh0LT5yZWxlYXNlKCk7CgogICAgcmV0dXJuICRUZXN0Q2xhc3NJRDsKfQoKc3ViIFRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SGVscGVyT2JqZWN0fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGVscGVyT2JqZWN0IScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb250ZXh0ID0gY29udGV4dCgpOwoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgIyBwcmVsaW1pbmFyeSBjcmVhdGUgbmVlZGVkIG5hbWVzcGFjZXMgdG8gbm90IGludGVyZmVyZSB3aXRoIHN5c2NvbmZpZyBhZnRlcndhcmRzCiAgICAkUGFyYW17SGVscGVyT2JqZWN0fS0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgIEtleSAgID0+ICdEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnLAogICAgICAgIFZhbHVlID0+IFsKICAgICAgICAgICAgJ0NvbXB1dGVyJywKICAgICAgICAgICAgJ0hhcmR3YXJlJywKICAgICAgICAgICAgJ0xvY2F0aW9uJywKICAgICAgICAgICAgJ05ldHdvcmsnLAogICAgICAgICAgICAnU29mdHdhcmUnLAogICAgICAgIF0sCiAgICApOwoKICAgICMgVE9ETyBpbXBvcnQgY2xhc3NlcyBjb21iaW5lZCBmcm9tIG9uZSB5YW1sIGZpbGUgYXMgYXJyYXkgb2YgY2xhc3NlcwogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3NjcmlwdHMvdGVzdC9zYW1wbGUvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50L0xlZ2FjeUNsYXNzZXMueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG15ICREZWZpbml0aW9uUmF3ID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkeyRDb250ZW50fSwKICAgICk7CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgPT4gJERlZmluaXRpb25SYXcsCiAgICApOwoKICAgICRDb250ZXh0LT5yZWxlYXNlKCk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="doc/itsm-configuration-management-database.dia" Permission="660" Encode="Base64">H4sIAAAAAAACA+1d3W/jNhJ/37/CcF9awMuQlPihdXeL6wJ3V6CLHrrbl74Ysq04usqSIcvJpg/3tx8pOx/6smRJ1NrJZLFB4ow5HJm/4ZCc+fHHn76ug9GtF2/9KHw/JgiPR164iJZ+uHo//uPLP9/K8U8f3vy49N136v8qdtcj9Y5wq397P75Jks27q6u7uzsU3G/dJIpR4O/Q1rv6nxsE7pUSuhp/eDMaPW9g6Saufu3wqpsksT/fJd4odNfe+/HcXfy1iqNduBzvpQ5yiyiI4tGtG7wff3edfo2vDs1cZdo50vbGXXnz2HP/qm4aqy/HadP0xovzza430dZXIsn9piBS0Y7+/kzmILVVQuHqw3f/IN/tu3R44amtso5WKknWbrzyw6Ie9WyC/YOgSFJK1cNgjnSwsAV5eCanq5sPqy4YVl08rDp/O9tEcRK7flJUOY+iwHPDvdZrN9h67RVtF26gxtgxuzBi1JKEYYtJbZ6waHt9136SRD2ZtH/5EYCngnkV+8vjWM5IVLRy5y+Tm9nXmgfY/oHt27831v6tv/XngVdmgR8mewWke/P3/TSf/4RSp/709o4jYt9a5ayxlB7z2OmzxmrnL71tzVDLylS0dHMQu6p76nm5pg9m/1JuDk9VBO69Fx+a//lp9h4dPmA13cQ7bzxyF4l/+/Dbs2cSzf/rLZKDsZ8TN1y68XL0dvTF+5qMn8Um45G/fD/+DWefVt4+1Zryj4XHtYkexxSbEJo3v+hAqtqez/NNx6r3brgKvMfmMVIxBJtSG0kplTbECWmnMdHPoGag52SqvHkaMGTkcrHFb19+/zzio3+qj9e7i+K/KiKNIziscuxRmJQp1q+Prt21H9yr/rnhdjzaJvd6wKgodP/Wf3vBrZf4C/f5uD69Bzeev7op7cPzOZrjzBfppjM7COsHYhsdWa9U4ZvEtf7XTZGKBFbh2iv/HL1wtz5MNw21lPqc05Bxm3Ypj42nrlg1gNu/uPc9DZzRz97fvhf/6ofeM5eEDy6JdHVJGFHKyIRbSGJmGXROGBFiCS4nb9VPmAgyZSL9Qet2COftdM+9v2epOW2MLEracsLkMQHGEZYOnzCKBMf8qKiY4HZGLaI49OKZHgrb6nGGC8pL/3aKYhV1e7M8tIshh6v/ddCQho/F8fIUOlJc6RBPVpY69uqn2HJCXrrbm8ALV8fsoP06gj/91Z/uKucIHmIT2tURCKrQKJwJZcgSbR94I0+Q0zTtR3OsFiS1jqBS1TcXPdnWKPazk2JuXJNm3uHY+07pk7tLIhV8J9lIr3YZ3QcuKqJ1qysiuH34rGzTiHjUZCEhGJk+08wovoAA/pUF7FjFEdkv23TEXjkYjQXve8MgeDfhm+zOvompNeMwvulB04NvetIMvgl809HBCL7p7HzTH59+VW7pY+ButyXbCayrX5J4Qk1ucQoHOWxCifo+JZghQiY2QZi1U+kF3nq2X2ybsSlVULPaVUsBzJznXx10FTxEThmRKKPKabntkjsrzjjcRRRe+yuFgXWp6z1FzTbxYi/SI7dKWWcVCrHrkoVUb+27c/Ved5F0XhVVPaLdZhN72+3s8Q9b46qijRe7ifIcxlQ9nNA1NCo92OmkqKFJ3RUdxpuxJ3cXu5sBPqBUjXut8Dlb3LgF9/m0odp6CzR9TLN0C698o603HYm7WvWxb9Fpy5P0uOVZu4Obj59O0XDtB0G9hmye1OmrA7M2hFG8doNZLqIvRvOLaBf7+oTZuysG9R/3f2y5X3aYFr5lHzZRcL+O4s2Nv6jvxjoKo+3GXXg9d2KhQ1H941l8GmfRmwe/VNuFxovNltioDyePnFx3GYkNFFvZONbpAYYNtMo+BnmtHtrrKDal7vkwNWZSZfyX3y7arYNH4fpto0Kuay7s95e9bRvlVi8FVXO1VgqT3tSpp73zBtkPK66czOlKo2c/8JP7fnZrmi/WGmaDtnh8GqSz7SIqHx6t1VVsRA0Cm6el/0x9JHMvHgxFt26s1yHfqzD6B8ASYOkFYCm1acCJCGYhQM6LQI4yKZkdzjZmEMkBhgBDp88+u3i29DbBbJu4iQfTEEAIINQCQn648AFCACGAUDsIxZ6GTuKvvcHAs1QaAT2AnheDnvk9TDwAHYDOSdC5ccMVTDyAHkBPe/TAxAPQeUHQOSmZ/SkB86om1229UdDzTCUfPrS/zTLEdC1g4l0LBQjBZslQUgUYYTElNkUpF4rtnH+10i9fPn/6mJ6i7/YD6JMbuitPuwlgRTFcx5Qfk8CLcrG8KKI7LwpJKUMYojanRnlRMHGEza0Jt5HgnEyZgwiWXHkvTRbgGOVFKTeyhMvEmdQIiInENS0og4APBfhQDNdWy86hiYIks+VEEIVHyyQn0oMm7iBpWdaUckQtR2mmiLK2moeMVv7lKVy6wUc3cYNoBQGK6QClamRCpHKxkYrT2V3ZDrI5mUiBOG9bB9GMX1IiStiBwY0z6Uy1bsbpxMFI2JbBSKXSyBKKJS11NBKhE0KOSnAMzG0QqQzE3EY608raYiJsg7i3uSZdsCwVlEylnoKUutacC82I2nImlRGp1QuoHh8le5Q4J9I7CVtDorW+nECfJGyP3iMM1WjQO5kFv/Lwl9GNGuk6ClNDOolSGpHR01816USR8znXaq+AIhcCKIL4hQFKxZ11gMqIAKDMAIoPC6jO5KI2nlBsEFBWSgtE9PcDoCyOmFlAZU0qY8WqF9C9rANURgQAZQRQRX4ns4CyLhBQDhIXACinfoZyYIYyD6jeZ6j/RMF9FQl+ZzpNmxiGk9T3cVANKG5JOk0565RKZHEi21NmNAAVqcGM5bS23AuXMzeOo7sjS3TaselZ3Uodt50dn1TU7mmwQc4tSGfyRb2g0IPK5NIl1aGGMSWUTS2hhrNIB7LAlJ3/ecVuq5766Ht/+cMrO6sgg59VlAxGoIO9QKpqwntwS3rzwbRbUjqsvVuybcSI1ngZTmm1P0SdLfanqOCeBnJP+UEJ7umc3dOx+L9ztpc+Uze64cv28b/yUPv4Xx42fY3H/7JmV9fmrS2H+L833nXSPWlJX6QmjOZTp4cWnKfU6zbV1OtCLWeNUq93ser8uNcpMsq2Plt6137o6y0WIF4H4nUgXgfidSBeB+J1IF4H4nUgXgfidSBeB+J1IF4Huk6gDQCyaCDcAOQAck7cPzMBoyAKV/MgmgOWAEuXj6XDuQZMQgAcAA7w3AJ6AD3AcwvQAegA3WCH3JjODBkSTxgxmBoj0mIphnVmjCOQtCYCty7nbZYY08GkJnkxRCAhezheaJYXI1H2RMFslsyxRQqkyECKDKTIQIoMpMhAigykyECKDKTIQIoMpMhAigykyMBWF2x1vZiDfkAQIAgQdDKC9N8HA86tG+vF+/eU4R8APgCfy4fPU3oZJGoCfAA+J8NnE8BV6gAfgE+7XYNw4QN8AD4AH8jQBPQAeiBDE6AD0LmYu9Rh4gH0AHraogcmHoAOlAa8uNIAivugzWTcKDX1gThTabHYlFgCMcz0Xd/UOHNme8MacWdiZDP2LL+KGqwREEhmk7mE0RqBRbQLEy+GGgGoEYAaAagRgBoBqBGAGgGoEYAaAagRgBoBqBE4/xoB4AOEbS/YMW5XJpAu/We67cGTnSHXGVD0klAEAAIAwenLxZ6+NL3PnpIeKJooQ5ZJkiahT2GUEvpwoz1j6hWTN9oXjCqKCNlERPe05lb7rAjcat/tVntcfqu9LFha8l5yeC9xsm8mhWdR6FKvmKRdMeloErAJc5BJ7jStxNJKMJsSItJrMTGyjOKyzLCyE1TSSEZ397iMyMkAOvtBZwFh7CR8ykpwDwFP6+zvrN1PmBLZDxOmsFuzGjYDZu1ttYLWC6ges5rJMisCcOwGR1I+WRI6LKDszoAShgGV5gHZLL1A9zDVGUeU6AFRNj8+v1kNJNRMKupmyazMOcLyNcGZ4m86P7LLmB8HhrM8EzgLcnxFmga95NyXpK8Jzvlwd+jlKO+MZxW3YYN4tlIWb6K/H+JdzhAzC+esSUUBzuoFdC9r4t2sCMS7PSEqt/ykAwe84gIRJZG4AETJ47GqRpQ891D1RSCKD4soeUmIeog5peHd0l4gpXtZGy9K2CQdIO7rZx1XU5jldC/MIgiTCWFIYM6Mlmdh5HCtiDOuUEUdRNUCh2pYccMlWt1NbHSZi0SEdao2q80rpcjsnS03/lah6R7qsaAeC+qxoB4L6rGgHgvqsaAeC+qxoB4L6rGgHgvubIEbJyAL/sXe2TKDS1sAQgChdhDSbUIhMAAHgHP63JN4PQ7m5hceMahhBAS9HNZvoC4G9AB6gDMfoAPQgeL5QtaZ1Z3EGDOEuekC+lQLmVCMWJooo7NX9kqNpp+VGlcmJhG2WHM5jHgm66YyP6cg+Voy05rnJvRRW++cUrtLzdTWH09qs0gPbOPIIRPLRoRLs0ltAkmeKiJSYdVWoLUnDKvxLE3Tjne2sBH5OEUswwhuknxcZ+j1cTh4WrJbNQMZZLxBxhtkvEHGG2S8QcYbZLxBxhtkvEHGG2S8Qcbba814g31r2Ld+EUc+qrP+EpJ1ADmAnBORo/8OmToAH4BPy1y3/ZYaQAggBBCCZDdAD6AHkt0AOgCdC4DOjRuuYOIB9AB62qMHJh6ADmRZv+Qs687XIWlmQMLphFJEDVMSak0k1UTSVGubIOZMLIFY6/TNhsnWVTaWiOpO2SdIqu7bmZzQMkmMbKcoCRnXvWRcF7KmrVNyri1SmbA9ADevZfXEKEoFwmbhy23kOI5IaXqpkI+VEpqul5uFb4WJZWUQHDF2gqQ2Rgh5nOYXYftgd0YUqHwN4XfYK1ksu6f6B5t18e/NapU4soUa3xw5lk1SrmyHa8XGZ9AKEyuARdkpotocaZM6UVkmCiDsB4T5aXBoELK+QCgRN12ExNREsB/gz0EokRgIhHkTyyQVTrg8SVSZUwdCJYoP0H6VIDQcyOYx2P/NK1+8r0kZ+ngfq0gpnQnBGFnEMbyK1JocBwlqT58rtrnTvq6gLo00J1NZlxZnB5G57aRcEnjHRPA2PSik9pbWr8hc/YrdTWl2HJ40FtttEGarTRpVnLTatgv8VVi1F3n65mAPO2i3aZeqnXRdVX5Pvkl0900CEVt5DKFmaGaUS+BBE9PBqr0vUGZ84khEHUbP3zn99uX3z+/e/fLl86cRf2WOiurpw7ZVSOfYWKpPUZj3UxXjEvzUJfop2YufctLIhnPzfkpr0rcBMUv5KUetZVLNjtN2i2tIP6U91MeUWmC3P+T55Ibuylv3SWx4GW6LIMEtqb6oCneY+k4HcVtlwxTc1iW6LacPt8WcfbjtGD5AfNJkMTIlFkGWJdXvRF8Fdv5ui2Ii3mL51sKwChzCTZUOS3BT39RN7X8P3Hsv/vBm/4v6v4rd9Yc3/wd0vu/aPXUBAA==</File>
        <File Location="doc/itsm-configuration-management-database.png" Permission="660" Encode="Base64">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b8uWLXFxcT179pS+NpmA3adPn0GDBm3dutWCbdBqtRasDR2OlUJLBoNBEARSlgAAkC1atEgUxZqamuTk5MDAQFs3B4ANcHMMwPJ+/PHHqVOnNmuTadOmbdu2zSJ7r6mp+cc//vH+++9bpDZ0UNKAOCcnC4/7JrQEAAAAmODmGLBzJoPR5K/79++Pjo52dXXt2rWr/DoPg8GwcOHCbt26+fr6PvfccxUVFfJWK1asCA8Pl3rU9W5r7OTJk8OGDau709ra2pkzZ3bp0iUoKGjZsmXGm9x33331jupvlpqams8++yw0NPS1116bPn16K2tDh2alrCUpBY/QEgAAACBjGm/AQT3zzDOrVq165JFHbt269fe///35558XBOGTTz756aefDhw44OPj89prr82fP/+jjz6S1v/555+PHTsWEhLS0LbG8vPzg4OD6+508eLFGRkZ586dE0Xx2WefNV4UEhKSm5vb4sOprq5evXp1YmJidXW1VqudNm1aVFRUi2uDHSBrqRF5eXlMbQYAxry9vbt06WLrVgBAR0VoCXBQTk5Oubm5BQUFERERcuZRUlLSDz/80K1bN0EQli9fPmTIEDm0tHLlSimu1NC2xhqaXOnrr7/etm1baGioIAiffvpp//79LXIsJ0+efOSRRzQajdzt37Fjh6+vr7S0qqqqurraIjsC7IOvr685r6AGAAdRXV39l7/85ZNPPrF1QwCgoyK0BDioH3744f3331+wYIGvr+/KlSvHjx8vCEJWVlafPn3kdYxTMyIiIhrf1lhwcHBubm6PHj1MynNycuRkIpOlubm59SY6mWPQoEE7dux45513fvnlF51Op1AoZsyY8corr0hLNRrN119/3cjmHh4ezs7OLds12idRFEtKSgRBkCOMllJSUiKKopeXl8XzodrM+++/37VrVzPfQg0AjmDRokUajcbWrQCADqyj3hkDMFPnzp0rKyvd3NwEQcjPz5fLo6Ojk5OTRVFMSUl57rnn8vLyBEGIiIjYtWtX165d69ZjPGdTvdsaGzRo0OHDh+uGlkJDQ69evdq3b19BEK5cuWK86PDhw7GxsS0+zJiYmF27dv3rX/965513du3alZSUtGDBAk9PT0EQoqKihgwZ0uKa0RHV1tZmZWUplcru3btbtubMzExRFLt27dpxw5HMcA8AkCUnJyckJHh4eNx7770H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Y8cmTZrEFv78889Go7GsrGzq1KncLtzWFwqFmzdvvnXrVkdHx1dffdVnXslT/FKp9ODBgwaD4ccff/zVr37ldGtXrlzxfrkln56zp/sCGDWcdqv0tPuk1WrNycmZMmXK5MmTX3/9dXZeKne0juux97suetpNklTr6OhYt25dWFhYdnY2N1ovRyw6def00u2ul5765dmdk6Kob775xul+fW2fVVhYuGjRoj5vzWw2k7wSRVFz587ljjydP3/+vn37+mwBxo6xnlpqaWlpampqa2vr6upis0gCgYBkkZRKJckiJSYmJiYmxsfHR0dHK5XKsLCw4OBgrLcNAAAAAADgJXb3yZs3b0qlUnb3yTfffDM2NraqqurGjRuxsbHsZCtuktf1mOy6SIb+kXLSoGvum+wmabFYamtr58+fz6ZaSJ0VK1akpKRotdrHHnuMG603CXRSbc6cORUVFeRlRUXFQw89xF6Yl5dXVVXV0dGRk5OzfPly/n49PR+ivLy8qqqKe7++ts86derUvffeyy0JCQkhCSlu6qqurs7TXU+dOtXvS93BiDaatzu1WCw6nY6iqNjYWE91dDqd2WwW/5JQKBzCMAEAAIaOSCR6+umn9+/fH+hA/E8ulxsMBrvdHuhAAuDZZ59NTk7OysoKdCAwAhw6dOjIkSPHjx8PdCDg3qRJk44cOTJt2rT+XR4dHX3hwoWAbBbEMIxAIDAYDFKplLtbJUF2q9RoNOzuk1zR0dHXr18fN24cRVHt7e333XcfO42OOzvV12NWREQEN00TFRXV0tLC1u/u7h7gSianTp3avXv36dOnKYpauHDh66+/vnDhQspl18vz589z43Tt19PzIfWtViuZNMPeo6/ts+RyuVardXv2zp07EydOJAPHnB4m92VXV9f48eM7Ojp8elCDbcmSJc8880xGRkagAxmLRvC4G5vN1tvby7N7K03TRqOxt7eXp5GoqKi4uDi1Ws2ORUJeCQAAAMB7arWadqFWqxEPwJil1WqdJoGS/St5dp/sc8RDP1brZyfWJScnc2eqsnklYuAr5C5atKi3t/f8+fPnz583mUwkr0RRVEZGxrx583766aeOjo7PPvvM6SrXfvl353RdjMXX9lk8T3v8+PE8b7G5n9+M4kEq0A8jILXkcDjY3dlaWlq0Wu3PP/9cU1Nz69at+vp6T4u0URQlEonUajXPkCUAAAAAGKDm5mbGhetiT2M2HgBgedp9cs2aNYWFheR/6759+55++mn2ErKLYmNj4yuvvOJNF37cTdKn3SHfeuutLVu2bNmy5a233mILeXa9dMvX3Tl9bZ81YcIE7rCylJSULVu2kA3QS0tLxWIxKQ8JCWEn+l2+fDk8PJx9gPX19VjDG7iGUWqJYRir1Wo0Gjs7O1tbWxsbG+vq6m7evFlbW8tdV9toNFqtVoZhyERQnqXyaZoODw8PCQkZyrsAAAAAAAAAymW3yvz8/I6ODpVKdf/99584cYLdffKdd97R6XTx8fHx8fFtbW3vvPMOe0lJScmqVauWLVv2/PPPU5z9Ft1+pe7uuqhQKIqKiri7Sep0upSUFKVSuXjx4h07dpBy9lqnZb8Ju93u/cCc+fPnOxwOhmEeffRRtpDseqlUKnNyctasWeMas1O/np6Pp/v1tX3WokWLrl+/zr4sLS29fft2cnIyTdOZmZnsbp6HDh16+OGHaZqOiop64oknPv/8czbrdP369cWLF3v5cGAsCPxaS0ajsbW11Waz8SyOIBQKxS6wOxsAAICvsNbSqIS1lsB7WGtpmBsday0Nfe/gkxs3brz//vt79+7tdwsvvvjiq6++OtwGLmGtpQAa9OxMb2+vxWIJDQ1lE5xOaJo2m83ssWsKSSwW8wxNAgAAAAAAAAAvTZ48mSya3m9KpXK45ZUgsPyQWiJz0zyd1ev1RqNRrVZ7Si0FBQVFR0djazYAABi5urq69Hp9aGio08h/AAAAgGFo27ZtA7n8z3/+s78igdHBh9SSw+GwWq02m81qtXIPBAJBQkKCp6tCQkJomuaZvCYQCMLCwnyLGgAAYDghWwKzO9EAwCBxu634kHVNYUckAAAAd9xkfKx3kfWP2GNPv0rJcmWeBi4plUp/xgsAADD8kJG5PJv1AgwxjUbT2Ng4wEaMRmNoaKiXlcPCwjzt2+uvdigfMzs+9dsn/nH6LH89BwAAgBHkX6ml1tZWNqPEsyOjQCAQiURkCW3uV6yFBAAAYxlJLdlsNofDIRAMo91XYcxqamrivjSZTJs2bfrLX/4iEAjy8vK2b99+48YN6u5InPb29ldfffWzzz7793//d7IhkU6nS0tL+/7771Uq1VNPPbVr1y42J/LSSy+dOnWqvr5+PB9PXgAAIABJREFU7ty5ubm5jzzyCEVRSqXSYDCwfxCyCSCedtzy1A5FUWVlZUuWLOEWkmrvvffeli1bvvrqq59++umVV1756KOP0tPT+fslu4lfunSpz8fY09Pz4osvHj16dNKkSR9//DH31KA+B4CR6/bt29ihGwLFaDTabLZARzFG/Su1ZDAYuJ+1CoVCkUhEMkfcFBLWQgIAAHAlFAqFQiEZ6hsUFBTocACc5ebmWiyWq1evymSykydP6vV6Uk5G4qxYsWLNmjV79uy5fPkyKc/Ozs7Pz587d67ZbD59+nR2dja7kVBeXl5BQYHVaj137tzy5cvJCB29Xu92qhpPO255aoeiqLS0NKdxQ+Sl3W7fv3//kiVL1q5du3///szMTIvFwt+v90OfNm3apNFo9Hp9V1dXYWEh99SgPgeAkYh8599///2BDgTGtGnTpv3ud78LdBRj0b9++XV2djIMwyaS8IkrAACAT+rq6kwmk0ajkclkgY6Fj0gkevrpp/fv3x/oQPxPLpcbDAa73R7oQALg2WefTU5OzsrKio2NbWho4J6KiYnRarUajebatWtulymgabq7u9vp+zYiIoJNP1EUFRUV1dLSQlFUdXX1xo0bKyoqzGbz9OnTz58/zx1D5JpS8dQOD/7VlJzOsi+dDvrRr1tKpbKmpoY8t7a2tsjISNLLEDyHwXPo0KEjR44cP348UAEAv0mTJh05cmTatGn9uzw6OvrChQtJSUn+jcobDMMIBAKDwSCVSoe+dwCKopYsWfLMM89kZGQEOpCx6F8pJLlcPm7cOKlUKpFIkFcCAADwFZkTh5W8IbC0Wi3DMCS1QQ60Wi1FUfwTBFzzocnJyQwHmwfJyMiYN2/eTz/91NHR8dlnn3lqkP2P4KkdL/X7P9QA++0zmCF+DgAAAMMcskgAAAB+IJFIKKzkDcPVypUr8/PzKYrS6XSlpaWrV6/mr5+amlpUVFRfX++0BKdWq50xY0Z4eHhlZeUHH3zAPSUWi0tLS61Wa3l5+YIFC/jb4eG2HV/x9ztr1iyy3FKfVq1a9e6771qt1oaGhp07d7LlQ/AcAAAARhA3O8QBAACAr7BJHAwrKpWK+zI/Pz87O5sUpqWlkbW6qbsrYbsuO/3yyy/v2rUrJSWlvb199uzZjzzySE5ODkVR+/btW7duXUtLy8MPP/zee+/l5eWx879KSkoyMzMlEsnixYuLi4v52+Hhth1ukOSAXXfJdU5cn/3a7XYvB+nv3r37hRdeUCgUSUlJH3/88fvvv096GYLnADBCPfDAA9jiCQKlqanpmWeeCXQUYxTfbHYAAADwkslkqqurEwqFiYmJgY6FD9ZaGpXYtZYCHQiMAFhraZgbuWstURR15cqVgPQLwEpMTFQoFIGOYizCqCUAAAA/IBvD2e12u92ODVUBAGAMSk5ODnQIABAYWGsJAADAD2iaFolEFFbyBgAAAIAxBqklAAAA/yAreSO1BMBPrVbTLtRqdaDjAgAAgH7ChDgAAAD/kEgkRqMRqSUAfs3NzYEOAQAAAPwJqSWvMAzDrnfucDjYjUjI3Ae3TCaTw+EICgrytOKG3W7v7e3td0hCoTAkJMTT2d7eXoZhgoODvdwABQAABg6jlgAAAABgDBp5qSWHw0FRFMMwDoeDP7ljMBisVmtoaChZWtWV1WptbGwkx2zyiLTsVOhWcHBwfHy8p7M6nc5kMmk0GplM5raC2Wxme+8HqVTKk1pqbm62Wq3x8fHBwcFuK3R3dzc1NbEvuRkogUDA3d+XpmlSwhIIBMHBweHh4Z56N5vNFEVJJBLsPAoAYwpSSwAAAAAwBgU4tcQwTFdXF8ng2O12ckCGBTkcDvaAfel0uUgkSkhI8NR4d3e3wWCIiorylFpiGIYkQfodPM9ZiUTCMAzPJkFCoTA0NLTfvXu6KbZ3kgbysjXus3V9zm7xpJbq6uoYhrnnnnvEYrHbCgaDobOzU3AXTdNCoZAkrbiF3GMvbwQAIIBIaslmszkcDgwaBQAAAIAxwofUkuMuNg1EXsrlck+XtLa2dnZ2KhQKpVLptgLDMC0tLT5Hzbmc5ywZ1OMpu0FRlEgk0mg05JhNxJCMhjeF/PpcjTIoKCg2NrbPdvonJiaGv4JMJktKSqJ+OUqLe8CO4WKzeyyHw8EzYIqiKIFAwDAMz9sqi8ViNBq9vx2SexIIBORreHi4p7FgAAABJBQKhUKh3W63Wq38HwAAAAAAAIwaIoqiurq6HC5I/ohnxBArPDycJ9XicDjsdrunswKBQCaTcadcscNV3BZSnOlafX4gPG7cuHHjxvFUIL3zNzJacRNkPEOr+icxMZG/QmhoqFAo5A5M4zmgKIphGJvNxl7Ok9iy2Wy3bt0SCoU8MZABBSKRCGMKAMDvJBJJb2+vxWJBagnAV+QvE/4PDv3Y19B0BAAAMBaIKIpqbW3lyf5wuZ2yxDCMp9SSUqmUy+X8b+DZcUMwdgQHB3taBMoVSTORRCc54LmWTUXxNNjW1tbV1UXdHQzVJ1/uDADGOja1FOhAYKzTaDQDWdKRMBqN3k/eDwsL6+7uHkg7PH9S+p33eSWe+wIAAABCQFFUWFhYeHi4XC5XKBSRkZFRUVFqtVqj0cTGxsbHx48fP/6ee+5JSkqaOHHixIkTExMT77nnnvHjx8fFxcXGxmo0Gp7MkUAgEIvFeHMOAyEQCEQiUVBQUEhIiFQqDQ8PJ6uZuCWRSBITEydMmMDTIDsCjgyGMpvNRqOxu7u7o6Ojra2tpaWlsbGxvr7+9u3bN2/erKmpuXXrVl1dXUNDQ0tLS1tbm9Vq9f9NAsBoERQUJBaLsUIcBBx3sw6Kokwm04YNG8gfeAcOHJg8eTIpJ6OYOzo61q1bFxYWlp2dTcp1Ot3MmTOlUqlarc7KyuJOY3/ppZemTJkilUoXLlx49uxZUqhUKg0GA7vjB1uZpx1P7ty5M2fOHIVC8dxzz/X09HDjLCsroyiqrKyMpmnuViqzZs2aNWuWl0+GXO70n5SUFBQUxMXFSSSS0tJS/vsCAAAALhFFUVFRUYEOA8Bv+kxlqlQqlUpFpnz2iaSfuNPxQkNDPS3gZbVae3p6JBLJQBZoB4ARTS6X8yxBOEw0NDScOXMm0FH4n81mYxhmVN5an5qbm/kr5ObmWiyWq1evymSykydP6vV6Uk4GCq1YsWLNmjV79uy5fPkyKc/Ozs7Pz587d67ZbD59+nR2dvbevXvJqby8vIKCAqvVeu7cueXLl5MRPXq93u0UM552PDlw4MDRo0dDQ0O3bt36+uuvk/oXL178wx/+kJaWRlFUamrqjBkziouL2Ut8mtqWlpbmOjyKlDQ0NFRWVn799deZmZlk7KGn+wIAAAAu/LIE8Iikn2w2G0kzkQOFQiESuV//vqurq7m5OTQ0lGeBdovFgnl2ABBAEolEpVJFR0cHOhD/++GHH+x2e3JycqADCYCmpqacnJysrKzY2NiGhgbuqZiYGK1Wq9Forl275nZbFZqmu7u7nVafjIiIYNNPFEVFRUWRfVeqq6s3btxYUVFhNpunT59+/vx59i9JtykYT+14QtN0fX09+TWq1+unTp3K1l+xYsXq1atXrFhx9OjRY8eOffrpp309FT6u0XJLPB2PDocOHTpy5Mjx48cDHQi4N2nSpCNHjkybNq1/l0dHR1+4cIFs1wMAMGR82CEOYKyhaVokEnlKJLkSiURhYWH8a/dqtVqbzUbTtFgsFolE5Cv3AOPtAWBQhYSEvPDCC7m5uYEOxP/kcrnBYPj+++8DHUgAPPvss+RAq9WSA6eECHf4rSvXXU2Sk5NPnTrlWjMjI2PVqlXFxcVKpbK1tdXTipkWi4XMXvfUjjccDgd31YXt27evXLlyyZIlb7/99rFjx/rX5gCx9wUAAABc2CELwG9CQ0Ojo6MVCoWnCtw97ywWi9Fo7OzsbGtra25urq+v//nnn2tqan7++WetVtvS0tLe3m4wGMxmM8/+jAAAAN5YuXJlfn4+RVE6na60tHT16tX89VNTU4uKiurr651+B2m12hkzZoSHh1dWVn7wwQfcU2KxuLS01Gq1lpeXL1iwgL8dHoWFhfX19e3t7du2bcvIyGDLp06d+tBDDy1btmz27NmTJk3iXuLTWku+cntfAAAAwIXUEsDQoWk6KSkpMTFx/PjxGo0mKipq3LhxMpksODiYHRtltVpJyqm1tbWxsfHOnTu1tbU3b96sq6vjn0QAAADAUqlU3Jf5+fkdHR0qler+++8/ceLE7t27STkZKuu6TPXLL7+s0+lSUlKUSuXixYt37NhByvft27du3TqlUpmTk7NmzRq2BYqiSkpKMjMzFQpFUVERuxCSp3bcIk2tXbt2xYoViYmJBoPBqf7mzZvPnTu3ZcsWpwvJ2ohePhn2Trm3zJY4ffV0XwAAAMA12maPA4xcDMNY77LZbOwx+0mvRCLh2fzOZrMJBAKeHRsBACiKksvlmzZtGsUT4ux2e6ADCYBnn302OTk5Kysr0IEMroKCgps3b+7ZsyfQgYxsWGtpmMNaSwAwEmGtJYDhgqZpiUTiuoiD3W4nOSb+ZZiampp6e3s1Go3rkhkAAAAjHftLEKklAACA4QapJYDhjuwoFxwczF/NarVSFCUWiz1VsNlsZP1R7xcmBwAAGCYw0B4AAGDYwjtMgFEiISHBbrcLhUJPFXp6eshqTWR4VBAHptEBAMCQUavVrqsHqlSq5ubmgMQDAAAAA4TUEsDowZNXIsRisc1mYxjGbDabzWa2XCQScTNNPEOfAMAbbW1tXV1dSqVSLpcHOhaAYQcpJAAAgFEGqSWAsUIul8vlcoZhbDabmcN2V09PD6kpEAi4w5okEgmGNQH4hP2PFuhAAAAAAAAGHVJLAGMLTdNisVgsFrOrfTscDm6myWKxOBwOk8lkMpnYq8RisVqtDgkJCVDUACOMXC6XyWSuq/IDAAAAAIw+SC0BjHUCgSAkJIRNGzEMY7VauckmskVdn7PtAIBFEriBjgIAAAAAYCggtQQAv0AW+ZZIJGFhYaTEbrebzWae8RcGg8FoNMpkstDQ0KEKEwAA/ICmaWpEbb5G03Sgoh1xzwoAAGDIYP0UAOiDUCjkzxkZDIbOzk7uBDoAAAgsjUbjTbWhSZQYjUbvK7MfbLjlU8A+9dsnL7vmid+/8QAAAAwfSC0BwECFhYUpFAqe9BPDMBaLZShDAgAY45qamrgvTSbThg0b1Gq1RqM5cODA5MmTuWe/+eabuLg4iURSWlrKFr700ktTpkyRSqULFy48e/YsKaRpmqbpgoICp/pGo/H3v/+9QqGYPn16VVUVqUZRlE6nmzlzplQqVavVWVlZfeZWlEqlwWCg7+KeKisrcyokL/fs2RMWFlZRUVFcXBwWFkZC4u931qxZs2bN8uYx9vT0rF27ViaTPfjgg1evXuWecvt8PMXv63MAAAAYWTAhDgAGSiqVSqVSngpGo7GhoUEgEAQHBwcHB5OlnZzeMwAAwODJzc21WCxXr16VyWQnT57U6/Xcs+Xl5VVVVadOncrMzGQ/CcjLyysoKLBarefOnVu+fHl3dzdFUQzD0DTd0NBQWVn59ddfs/U3bdqkVCqbmppsNltRURF1d4xPdnZ2fn7+3LlzzWbz6dOns7Oz9+7dyxOnXq/3NOUtLS2N9M6WkJd2u33//v1LlixZu3bt/v37SUj8/Xo/9GnTpk0ajUav13d1dRUWFnJPuX0+nuL39TkAjEQMw2zevDnQUQAMLw899NDjjz8e6CiGQsDmqwPA2NHZ2anT6bg/bUiaieSYgoODkWYCGDJyuXzTpk25ubmBDsT/5HK5wWCw2+2BDiQAnn322eTk5KysrNjY2IaGBu6pmJgYrVar0WiuXbumVCpdr6Vp2mq1ikQiirOSUXV19caNGysqKsxm8/Tp08+fP8/+DOemTthjlUp1/fp10r5Op1OpVKQ8IiKCm8aKiopqaWnhvxf+1ZSczrIvnQ760a9bSqWypqaG3FdbW1tkZKRPz4flr3j84tChQ0eOHDl+/HigAgB+kyZNOnLkyLRp0/p3eXR09IULF5KSkvwblTcYhhEIBBs3bsRGFgDEd99998ADDxQUFAQ6kKGAUUsAMOjkcnl4eLjJZOrt7SVfHQ6H0WgkMwJomiY5ptDQ0KCgIKSZAAD6TavVkgOnBIfNZuO5iuSVuDIyMlatWlVcXKxUKltbW/tcuclpMBF7nJycfOrUKS+Dd2WxWHg2keAxwH49BcMee/l82PgHIx6A4entt9/mH8wOMHbs2LGD/b086mGtJQAYCiR/pFQqY2JikpKSJkyYoFKpwsLCRCIRwzBGo7Gtra2uru7mzZsNDQ3t7e1msznQIQMAjB4rV67Mz8+nKEqn05WWlq5evZq/vlarnTFjRnh4eGVl5QcffNBn+5mZmXv27HE4HAaDgUyII1JTU4uKiurr6x0Oh5ehisXi0tJSq9VaXl6+YMECL69ywt+v92strVq16t1337VarQ0NDTt37mTLeZ6P2/j78RwAAABGEKSWACAAJBKJXC6Pjo5OSEggaSaZTCYUCh0OR09PT2tr6507d2praxsbGzs6OvCHOIxQvb29LS0tZAUWgCGmUqm4L/Pz8zs6OlQq1f3333/ixIndu3eTcjLayPXrvn371q1bp1Qqc3Jy1qxZw1OTfN2xY0dTU1NkZOS8efOWLVvG9vvyyy/rdLqUlBSlUrl48eIdO3b0GXlJSUlmZqZCoSgqKiouLmbL2YWxuQcUZ8AUd+QUf792u93LFSF2795dX1+vUChSU1Ofe+65Pp+Pp/j78RwAAABGEKy1BADDiNVqNd7FZpQSExOFQmFgAwPoh/b29tbWVplM5uU28EMDay2NSuxaS4EOhLJarSdPnnzzzTevXbsW6FjAPay1NMyN9LWWDAYDJsQBEGRC3BhZawmjlgBgGBGLxXK5XKPRJCYmxsXFKZXK8PBw5JVghAoKCqIoCrM7YYx44403aJqWyWQfffTRN998E+hwAAD8ZiArgY61VUQD9azG2nMehpBaAoDhiKzNFBERoVareap1dnb29PRg9CUMTyS1ZLVaMakTxoJt27YxDGM2m0tLS/l/dAMADCulpaUSiUQsFsfFxT322GOBDmeIsJOLfTI2nxV4A6klABipGIZpbW1taGjAqBAYnoRCIdl4C9+iAFxqtZp2gWwUAARKZmZmSUmJ1Wqtr6//8ssvXSsM5FNMT9fGxMT0u02/6N9NDdtnhU+aA855r1kAgJHC4XCEhYWZzebg4OBAxwLgXlBQkM1mM5lMISEhgY4FYLhobm4OdAgAAP+f1WpNT08f4k4bGxv5K5jNZjL8eYjx9zs8nxUMBxi1BAAjlVAoVKlU8fHxPHWsVis+xIAAInlPk8kU6EAAAABGqqqqqieffFKhUISEhKSkpHz99deTJ09mz/70009PPPFEbGxsbGzsihUrqqqq2FNkUKTBYHjiiSckEolEIiktLeW2PGHCBO7WkzRNP/LII9wK1dXVniaO/fWvf500aZJMJlu9erXRaHSt5unaiRMnOnXqVKekpCQ2NjY4OFgmky1evPjKlSvc2/nwww/DwsIqKiq2b98ulUqd7ojfiRMn7r333rCwsNWrVxsMBqeznvod4LPq819hIM+K51pqYN8b4CuklgBgNGtoaKitrW1oaOjq6sJ6NzD0kFoCAAAYiJ9++umxxx577LHHrl271tXV9emnn1ZXV+v1evbsM888s2fPHq1Wq9Vq33vvvbVr17IZBPL5YnZ29quvvmo2m0tKSjIzM7mN3759m9Rh7jp79iy3wqRJk9x+SPndd9/98Y9/PHLkSFtbW1ZW1tatWymXOVmerq2pqXHqlFvt7NmzH3300cmTJ41GY1NTU25u7osvvvj999+z7VdXVx84cODxxx9vbW396KOPnO6Ix9/+9rc//vGPn332WUtLy7PPPvvaa69xz/L0O8Bn1ee/Qr+fFf+1A/zeAJ8xAACjlM1mq62tvXFXTU1NY2OjwWBwOByBDg3GCrvdTr79yAC64SA8PJwstzz6hIeHCwSCQEcRGGvXri0oKAh0FDAyfPLJJ48//nigowCPJk6c+I9//KPfl6vVavJufOiRz/AMBoN/m12+fPnBgwc9nV22bFlZWRm3pKysjPsdTlHUZ599xn3p2kifb4pdKyxevPjLL79kXx47dsxTI76W/+Y3v7l16xa35J///OeCBQvYqzo7O8lBV1eXN8GzFi1adObMGfbliRMnuNfy99tn2PwVvPlX6Ec5fx2/fG8MUF5eXlZWlt+bHZ6w1hIAjFpCoTAhIaG3t9dgMBgMBrvd3t3d3d3dLRAIpFKpTCaTSqXYqRQGlUAgkEgkFovFbDaTJb0BAADAe2fPni0qKuI5e+DAAW7JrFmznIafPPXUU36P6vvvv589ezb78re//a2/Wr506VJCQoJTYWhoKHscHh5ODsLCwnxq+eLFi8nJyezLefPm+dTvAA3GvwK/QH1vjFn4MxcARjOapkNDQ0NDQ1UqFZtjstlsbI5JJpOFhYX58RcngJPg4GCLxWIymaRSaaBjAXBG0uvM8FiTbiiDoWl6mNw1APCz2+38HwS6/l8e0f+7Q0JCfvrpp3vuuWeM9DuoRtn3xjCHtZYAYKwICQmJiopKSEiIj49XKBQSicThcHR1dWm12lu3bul0OiyIA4OBbLOC7y4YYhqNxptqQ/NHttFo9KbaUP7F731fvo4LAAD/euihh/77v//b09lHHnnku+++45ZcvHhx/vz5gx3VjBkzLl++zL48c+bMABs0m83kYMmSJYcOHRpga27NmTOHu3bSt99+yz07eP36Hfus+AXqe2PMQmoJAMac4ODgyMjICRMmTJgwQalUisVim83W0dFRV1dHckxe/sYC8AZZyRvfVDDEmpqauC9NJtOGDRvUarVGozlw4AB3cyWKor755pu4uDin/XFeeumlKVOmSKXShQsXsmu1ki11CgoKnOobjcbf//73CoVi+vTpVVVV7GY9Op1u5syZUqlUrVZnZWV5k2O6c+fOnDlzFArFc88919PTw+23rKyMoqiysjKaprnbg86aNWvWrFlePhlyudMgCE/3pVQqDQaDp22JAGAIbN++/Y9//CNZJKi3t7eqqqqoqOi5554jZ3fu3Pnmm29WVFTYbDabzVZRUbFly5adO3cOdlRbt2597bXXyFqKFRUVf/vb33xtQSwWkx81jY2NBQUFc+fOJeV5eXmFhYXvvPPOzz//bLVa9Xr9V199tWTJkoHHnJubu3Hjxv/7v//r7e39+uuvy8vLuWcHr9+B8/Ss+AXqe2PMQmoJAMYuiUQSERExYcKEmJgYmUxG0zTJMd25c6eurs5mswU6QBgNgoKCaJq22+1WqzXQscDYlZuba7FYrl69evPmTalUym6uRJSXl1dVVTntj5OXl1dVVdXR0ZGTk7N8+XJSSAb7NDQ0VFZWcutv2rRJqVQ2NTWdP3/+yy+/pDib7+Tn51ssltra2vnz52dnZ/cZ6oEDB44ePVpbWyuTyV5//XVSePHixTlz5qSlpVEUlZqaOmPGjC+++IK9hCwg6uWjSEtL8zRFwvW+yINi1yj1sgsA8KNZs2aVlpbu3LlToVDExMQ8/fTTJpPpP//zP8nZe++99/Dhwzt27FAoFAqFYufOnZ9++umUKVPIWXbfercvKYr65z//6bS3Pfk5w9Zn08pOKeY5c+Zs2bIlLS1t3LhxBQUFrgkLnmsJ8qNGIBDMnj27pqbm5MmTpDwuLu7ChQs1NTUzZ86UyWRz585l1wxyeztOd8Tj4Ycf3rp168qVK6Oiov7rv/5r165d3Gt5+h3gs+rzX6Hfz4r/2gF+b4CvMM8cAOBfGIbp6enp6uoyGo1kCfBARwSjRF1dnclkio6OHg4za+RyOZkZGuhA/O9//ud/7Hb72BzrXltbu3HjxqysrNjY2IaGBu6pmJgYrVar0WiuXbumVCpdr6Vp2mq1kmXm6bsrEFVXV2/cuLGiosJsNk+fPv38+fPsX4w0Z5Ui9lilUl2/fp20r9PpVCoVKY+IiOCmsaKiolpaWnhuhKbp+vr62NhYiqL0ev3UqVPZ+itWrFi9evWKFSuOHj167NixTz/9tH/PyvUueO7Lbc2R7tChQ0eOHDl+/HigAwH3Jk2adOTIkWnTpvXv8ujo6AsXLiQlJfk3Km8wDCMQCAwGwxhcW1Cn0yUlJXV1dQU6EBheduzYodVqCwoKAh3IUMAy3gAA/0LTtEwmk8lkNpvNYrEEOhwYPYKDg00mk8lkGg6ppfHjxz/++OO//vWvAx2I/124cMFut69fvz7QgQTAvn37yIFWqyUHTgkR/mGYrtsXZmRkrFq1qri4WKlUtra29rlyE/eTXm6/ycnJp06d8uIO3HA4HALB/x9fv3379pUrVy5ZsuTtt98m+3wPPYvFIpFIAtI1AAxbDQ0Nb731ljejMgFGMaSWAACciUQi7BMPfkRW8h4myy3J5fKUlJTFixcHOhD/e/75581m89jcSJgsQsRj5cqV+fn527dv1+l033777bFjxz755BOe+lqtdsaMGeHh4ZWVlX/5y1/6DCAzM3PPnj1vvfWW0WjkbhOemppaVFT02GOPxcTEcPNEPAoLC59//nmpVLpt27aMjAy2fOrUqQ899NCyZctmz549adIk7iVkoaVLly55076vyBofS5cuPXPmTF5e3rlz5wajFwAYcXbt2rVp0yaKoqKiorZs2ZKVlRXoiAACCWstAQD4xmq1/vzzz04rlQDwICt5m0ymUTatBoYzlUrFfZmfn9/R0aFSqe6///4TJ07s3r2blHNXl+B+3bdv37p165RKZU5Ozpo1a3hqkq87duxoamqKjIycN2/esmXL2H5ffvllnU6XkpKiVCoXL168Y8dkGct+AAAgAElEQVQOnphJU2vXrl2xYkViYqLBYHCqv3nz5nPnzm3ZssXpQrvd7v1/LqdVOfifA3V3jQ+FQlFUVFRcXOxlLwAw6r3++utkFbaWlhbklQDwsTwAgG+6urqsVmtvb2+gA4ERQyKRCIVCu91uMplCQkICHQ6MCc3NzdyXUqn0ww8//PDDD52qcTMy3OP09PT09HTXU57qh4aGFhYWFhYWWq3WkydP3nfffaRcKBRu3rx58+bN3sTMNuhp/NEXX3zxH//xH9y94YgrV654075r2G4LnSqkp6djijQADH8TJky4c+eO21Pjx4+/ffv2EMcDYw1SSwAAvlEqlRKJBDPmwCchISEGgwGpJRjF3njjje3bt0skkrS0tG+++cbv7bPDiPbs2eP3xgEARjokjyCwMCEOAMA3NE2HhYUhQQA+CQ4Opmna4XAEOhCAwbJt2zaGYcxmc2lpqVqt9nv7zF1+bxkAAAAGCJ+6AwD4mdlsdjgcyD0Bl1wuHzduHHcXLYAxS61Wt7S0OBWqVCqnSXwAMBI9//zzGNkNQFy7di0xMTHQUQwR/LcHAPCztra2np6e4ODgcePGyWQyZBOAoigv98YCGAuQQgIYlcigwo6ODqFQGOhYAIaF3t7ezs7OQEcxRJBaAgDwM6FQSNO0yWRqamoSiURyuVwul+PPLAAYPB0dHWfOnDEajYEOBEaAH374Yey81YGhRD5LO3r0qFQqDXQsAMPCjh07tFptoKMYIkgtAQD4mVqtjoyM7Ozs7OzstNlsbW1t7e3t4eHhCoUCQ8QBYDA0NjY2Nzc3NTUFOhAYAdra2oKDgwMdBQAAjCp4kwMA4H9CoVCpVCoUip6envb2dpPJ1NHR0dnZSRJMYrE40AECwKhy7733rl69OisrK9CBwAhw6NChI0eOBDoKAAAYVZBaAgAYLDRNy2QymUxmMpn0en1PTw8ZyiSVSpVKJT40BgAAAACAUQCpJQCAQRccHBwTE2M2m9vb27u7u3t6enp6ekJCQpRKZWhoaKCjA4DRoLe3t729PdBRwAjQ09MT6BAAKJqmybLfbk9RdxcF97XNPi/k6dcv9QHGLKSWAACGSFBQUHR0tEKh0Ov1BoOht7dXq9WGhoYqlcqQkJBARwcAI1hoaGheXl5eXl6gA4GRITU1NdAhwFih0WgaGxtdy3nyNQzD9G93XW8u9DVP5H39sLCw7u5unxoHGE2QWgIAGFJBQUEajcZisZARTEaj0Wg0hoSEREZGYorcGNHvP5oBPNm7d+/evXsDHQUAgDPX7QXKysqWLFlC/TJr09PT8+KLLx49enTSpEkff/yx0yWzZs2iKOrSpUve9Hjnzp2MjIyqqqr09PSCggJ2uzq3/RqNxg0bNhw9ejQhIeHTTz+dOnUqW8FtffLr+4MPPti5c2dLS0tJSUl6ejpFUUql0mAwsL/cMdAJxiBBoAOAkWTr1q1bt24NdBR9GylxwlgmkUjUavU999wjl8tpmu7t7a2rq9Pr9YGOCwaXw+Goq6urra11OByBjgUAACAA0tLSXDMvmzZt0mg0er3+9OnTn3/+udNZhmG8T9YcOHDg6NGjtbW1Mpns9ddf77NfpVLZ1NR0/vz5L7/8kuJkhdzWJyUNDQ2VlZUlJSWZmZmknPwJx9zlZagAowlGLfmHyWS6cuVKTU2NTqfr7e0NCgqKioqaPHlycnLyWBiGYLPZfvzxxxs3bjQ2NhqNRrI31uTJk2fNmsV+UAAArkQikUqlUiqVer2+q6tLJpMFOiIYXAKBwG63MwxjMpmwzBYAALj129/+VigU9u/azs7O5ORkgSDAAwhiY2MbGhrIMRnLExMTo9VqPdU/fPhwTU2NRCKJjIxcv359bm4u9+zly5e973rdunWxsbEURW3dunXq1Kn8IzpLSkquX78eFBQUFBT0u9/97pVXXvGmCzL7OD093Wq1eh8YwOiG1JIfVFdX//Wvf+3t7WVLjEbj7du3b9++ff78+bS0tF/96lcBDG+w1dfXHzlypLOzky2x2WyNjY2NjY0XL15MS0ubNm2aTw2SAUcYdgRjB5tgEonwM3n0U6vVIpFILBYHOhAAABiOvv/++4GMbJ0yZcqXX36ZkJDgx5C8xDBMREQEOWazSP1YBttisfglHofD0WeKjTs/3Y+jjSwWi0Qi8VdrACMC3sYMVE1NzeHDhxmGSUhImDVrVlxcXGhoqMViaW1traqqunLlyl//+tdRnFqqr68/cOCAzWaLiYmZPXv2hAkTZDKZzWbT6/U3bty4fPny8ePHfU0tAYxNyCuNEViyHQAAeMjl8oFcLhAI5HK5QqHwVzzeG0hqZtWqVe++++7WrVt1Ot2uXbuczvq01lJhYeHzzz8vlUq3bduWkZHBXzkzM3PPnj1vvfWW0WgsKirqX/CEWCwuLS1dunTpmTNn8vLyzp07N5DWAEYcrLU0IFartbS0lGGY3/72t88888y9994bFhYmFApDQkLi4+MXLFiwYcOGUZxXstvtR48etdlsM2bMeP7553/961+PGzdOJBKRfdYffvjhDRs2IK8EAAAAADA2qVQqpxKapslYIfaAoqjdu3fX19crFIrU1NTnnnuO+uV4IjKXvM++yCVr165dsWJFYmKiwWDYsWMHf787duxoamqKjIycN2/esmXL+oyTLXH6SlEUWXpJoVAUFRUVFxd793gARg98SD4gP/zwQ09Pz/jx4x955BG3FYKDg1esWOFa3t7eXlFRUVtb29XVJRKJNBrN7NmzyZYELHZe2I8//vj3v/9dp9MJBILx48fPnz8/Ojq63w3+6U9/unLlyv/+7/+2trZardY//elPFEVptdoffvjh559/bm9vp2laLpdPmTJl3rx5/J+u//Of/+zo6IiOjk5LS3M73FQikTzxxBPsS296YefBcSfEscf9i5Ooq6urqKioq6vr7e0NCQkZP3783Llz4+LinKpVV1dfuHChsbGRYZjIyMjk5OTk5GTM0YPAMhqNOp0uKioKq/MAAADACNLc3OxU4jZJJJVKDx48ePDgQbd1rly54k1f7FVuxze57Tc0NLSwsLCwsNBqtZ48efK+++7jr88tdKqQnp7ur6l8ACMRUksDUl1dTVHUzJkzfbqqtra2pKSE/dFjs9lu3bp169at3/zmN48++qhT5a+++urixYvcHm/fvv1v//Zv7ExmXxv84osvvv/+e6fCwsJC7svW1tbW1tbKysrf//73PG9lq6qqKIqaM2eOlysF9q8Xv7Rw+fLlsrIy9heAwWCorKz86aefli5dmpyczFb77rvvyN4QRENDQ0NDg+ueqQBDTK/XWyyWnp4epJYAAAAA/OiNN97Yvn27RCJJS0v75ptvAh0OwEiF1NKAkKRDfHy895d0dXV99tlnFovlgQcemDt3bkRERG9v77Vr186ePXvu3LmkpKQJEyZw6//9739PSUl58MEHZTJZU1PTiRMn2trazp8/z44G8rXBK1euzJ07d/r06Uqlkk0J3XPPPcnJyePHj5fJZBaLpaGh4ZtvvtFqtefPn1+8eLGne2lsbKQoyql9Ht70snXrVp4hQv2Ls6mpqby8nGGYBx98cN68eePGjevo6Dh//vwPP/xQVlYWHx9PRuo2NTWdOnWKoqiZM2fOnTs3PDy8q6uroqLCpz0pAAaDRqNpb28PyLoJAAAAAKPYtm3btm3bFugoAEY8pJYGxGg0UhTlul+4a1qELfnuu+/MZvOvf/3r9PR0UiKRSObOnSsUCsvLyy9duuSUqUlJSWFn240fP37JkiUfffTRzz//zFbwtcGZM2cuWrTIKby1a9eyxyEhIUlJSZGRkXv27Llx4wZPyqanp4eiqLCwME8V/NLLwFv4+9//7nA4Jk+e/Pjjj5OSiIiIJ554wmAw1NTUfPfdd8uXL6co6tKlSw6H47777luyZAmpplAolixZ0tPTU1lZ6eU9AgwGoVAYGRkZ6CgAAAAAAADcQGppqNXU1FAUNXv2bKfy+++/v7y8vK6uzqn8/7F373FO1Xf+x78n15lkMplkJnMfEFRAsbYi4KVQragUXF1FFLyxCNtu64qsPAqioo+fXURcsLayu5YVqn10qw9a25Fa0WqrVipW6rVFFAVUmMx9ksxMkklOkpPfH2eJMTPJZK4nmXk9/5hH8j0n3+/nZGrJvPP9fk/KNtg1NTVCiO7u7kF3OHPmzN5VqdNzjh496vP5khcJd3Z2ZnFN2Rr6KIPr4fPPPxdCzJkzJ6V97ty5hw8fTuR06oPzzz8/5bTzzjuPaAkAAAAAgD4RLQ2JxWLp6urq7u5OWajS5xbUKq/XK4RQ723Zex84dR5QspKSkuSnZrNZCBGLxQbdYe81NW1tbT/96U97enp6X2A0Gu3dmGC1Wjs7O3tffp8GPcrQe+jq6hJCuFyulHZ1HVwip1NPS97ESsVsEeQ+RVGy3PIMAAAAAIYX0dKQVFVVdXV1ff7559nvgaImPoqi9Hk0OTNSJd93c1g6NBqNKS1/+MMfenp6ampq5s2bV1FRUVhYqNPpotHoxo0bMw9dVVXV2dmZ5eUPepRh7AEYkzo7Oz0eT3l5udVq1boWZCsajba3t0ej0d73qQQAAADyC9HSkEydOvXQoUNvvvnmmWeemeWUAbvd3tHRsWrVqt6zYwZn6B2qC8EWL16cnBB1dHT0+8KpU6d+9NFHf/nLX7K5/EGPMvQeiouLPR5PW1vbhAkTkttbW1tF0l5R6mkdHR0pf+m1t7dnXyQw+jo7O6PRaGNjo81mc7lcer1e64rQP51O5/f74/F4JBLpnfgDAAAAeYQFFENy5plnFhcXNzU17dmzJ928oRRTpkwRQrz++uvDVcPQO1RnNhkMX8oZ9+3b1+8LzzzzzJKSkubm5nSXL8vyM888M9BR1HPC4fBw1aluZN77Lfrzn/8shDjppJPUp+qD3h2+8cYb/Q4BaKiurs7pdEqS1N3d/dlnn/l8Pq0rQv90Op26wFm9HQQAAACQv4iWhsRgMFxzzTV6vf6tt976n//5n3feeaejoyMSiSiKEgwGjx49unv37pSXnH/++RaL5Z133nnqqaeOHDnS3d2tKEooFGpsbNy3b9/27dsHWsPQO6yoqBBC7N69u62tLRKJtLa27t69+/333+/3hXq9fvHixQaD4a233tqxY8ff/va3zs7OWCwWDoebmpr+9Kc//fjHP37vvfcGOordbhdCvPvuu8kbdQ+lznPOOUen0x06dOjZZ5/1eDyxWMzj8ezevfuTTz7R6/WJHdBnz56t0+kOHjy4Z88er9cbi8W8Xu+ePXvYwxs5TpKk0tLSurq6goICRVHa2toaGhpS/vNBDrJYLIJoCQCAEyRJ6nczkJEbOsOhoVel1XUBo4YFcUNVV1e3fPnyp59+urm5+be//W3vE2w228KFC5OfXn/99bt27Tp06NChQ4eGXsDQO7zwwguffPLJw4cPqzebU82ePXv//v39vra2tnb58uW/+tWvGhsbf/Ob36QcNZlMV1555UBHOf300/fu3fvCCy+88MILaou6Ffqg66ysrFywYMGePXvefvvtt99+O9EuSdLChQvVxEo97ZJLLvn973+/f//+5D5nzpz51ltvscgIOc5sNtfW1nq9Xo/H09PTc/z48dLS0pT7ACCnWK1Wj8dDtAQAGMOqqqqampqyPDkej2sVwSTfDan3oaFXlaH/FDabLflu4EC+YNbSMKirq1u1atUVV1wxderU4uJig8FgNBrtdvtpp5125ZVXrl69+rTTTks+v7a29pZbbpk3b15tbW1BQYFOpysoKKipqbnwwgtvueWWQRQwxA5PPfXU66+/vq6uzmAwmEymmpqaK664IjkO63f0VatWXX755VOmTFEv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iRMlSYpEIosWLUqZPLJnz57e00mCweC3v/1th8MxY8aMQ4cOJZ/Q5/lOp9Pv90snJNrb2tpmzZpltVorKipuvfVWNQNSz3n44YdtNtu+fft27txps9kSpfYpEAgsX768qKjorLPOOnDgQOb+B3G96d63gV5vuvMH+vtSzZ49e/bs2Rneln4NdNwMv/djx46de+65DodjxYoV/e4FkW7cgfYzthEtAQAAAABG3F133SXL8oEDB44ePWq1Wj0ej9q+YcOGmpqaQ4cOffzxxzU1NRs2bFDb1YkhjY2NBw8e3LVr15IlS9T2zz//XD0UPyExxMKFC3tPJ7njjjucTmdzc/PevXtfeOEFkTTlpM/z1cJ6d7527dqtW7fKsnzkyJF58+atXbs20VUsFnv88ccvu+yyAwcOPP7444lS+3THHXdUVVV5PJ6XXnrp2Wefzdz/IK433fs20OtNd/5Af1+Jo0Oc6TPQcTP83p944omnn376yJEjRUVF69atG9y4A+1nbJOYxwVgdEjSaP8fznCNuGnTpn379v3ud7/LZqyFCxd+4xvfWL9+/dDHBUbCnDlz7rnnnvnz52tdyPCz2+1+vz8Wi2ldCACMR/F4XKfT+f1+q9VaU1PT2NiYfLS6utrtdldVVX3wwQdOpzPltZWVlR999FFJSYkQwuv1nn766U1NTeqh5I9zKR/tMnzSSzlUXl7+0UcfqeO2tbWVl5envLB3V312XlpamojDhBAul6u1tTX55N4P+uR0Og8fPqzW09HRUVZWpp6crv+BXq/I+L5lf73pjg7u9zUIQxw33e9dkqSGhoaamhohhMfjmTZtWvL7nP24/fazefNmt9u9bdu2obwJ+YJZSwCQSSAQePjhhx9++GH1ab/b9f3whz/84Q9/2NPTM/KljSq+hwAAAFlyu92JKSrqA7fbLYSIRqPpXjKinzSSP78NYqDEAqizzz47niQlRxic5NVVI9H/EEtKR6tPhgMaN5vfu6Io2Wwz2u+4WfYzho3riweQp0bzdgy/+c1vzj///FNPPVV92u+/K9OmTZs5c+bu3btHrqT29vaurq6R6783RVEaGho6OjpGc1AAADDGLF68eOvWrUKItra2+vr6G2+8UW1ftmzZY489puYp27dvv+mmm4Z33CVLljz88MOKovj9/h07dmTzEqPRWF9fH4lEnn/++YsvvlhtXLBgwY4dOxoaGhRFGUo9S5cufeihhyKRSGNj44MPPphoH67+B6HP601ncL+voe+1NNBxM/zeH3vssYaGBq/Xe//991977bWDHndA/YxtREsAkMmzzz57zTXXDOgl11577W9/+9uRKMbj8dx5551XX3115rt4DLtAIBAKhTwej1bfngEAgHxUXl6e/HTr1q0+n6+8vHz69Om7d+/esmWL2r5x48a2tra6urq6urqOjo6NGzeq7eq3ib1/qntLixP7Nyd/6Zh4mty+efPm5ubmsrKyOXPmXH755ckl9Xm+EELdssfhcOzYsWPnzp1q42233dbW1jZ37lyn0zl//vzNmzenFCay+wZ0y5YtDQ0NDodjwYIFK1asSLyqz/4Hcb3p3reBXm+68wf6+1LFYrHs5xwNy7h9/t7VQ8uXL1+0aNHkyZP9fn/ifR7QuJn7GY/iAMa6UCj03e9+1+l0VlRUqF+MqO2xWOzf//3fTzrpJIfDcfPNN/v9frVdCPHoo49OnDixoKDg3HPP/fvf/97v+T/84Q9ra2vVZcmHDh26+uqrnU5ncXHxVVdd1dbWljgtQ5GRSOSee+6ZMGFCSUnJ1q1b1cY+u+r9/2D9jpi4HUlFRcXq1atDoVDmdybZpEmTDh8+nHiaOCccDt9yyy3qa//jP/4j+bUff/zxySefnPF3MmDt7e3f//73zWazEOKZZ54Z3s6z0dXV9cknn3z88cdut1tRlNEvAMPl61//+gsvvKB1FSOiuLhYp9NpXQUAjFPqRJvE58PcJMvyb37zm9NPP13rQjCqtPq9P/DAA7feeusoD6oVw+gGWQA0sHHjxs8///zvf/+7EOLmm29OtP/oRz969dVXX3755ZKSkttuu+3ee+996KGH1EO///3vX331VZfL9dBDD333u9/985//nPn8P/3pT2+++WZ1dbUQ4pprrvnRj37085//XJblDRs23HnnnY899li/RT744IN79+59+eWXnU7nD37wA7Wxz67i8XjK1nr9jnj//fd/8MEHb731lhBi2bJlmzZtuu+++zK8M8mam5urqqp6t2/atOnjjz/+29/+Fo/Hly1blnyouro6ZevKoWhvb9+0adN///d/CyHC4fDEiRNramrefvtt9eivfvWrzs7OdK+NRCI+n2+4KonFYmoqZzAYCgoKhqtbjLKPPvpo48aN2fxXmXfG3h5nAIDhcvfdd2/atMlkMi1cuPDll1/WuhyMEn7vo4Y7xAFj38knn/zcc89NmzZNCHHw4MHp06er/+GfdtppzzzzzNSpU4UQLS0t55xzzmeffSaEkCSpqampsrJSCBEMBsvKyoLBYObzP/vss4kTJ/Yeuqura/r06cePHxf93STi1FNPra+vP+OMM9KdkGVXfZ528sknP/vss6effroQ4sCBA1deeeXhw4czvDPJCgsLOzo6LBaL+jTR5w3v4zQAACAASURBVCmnnPLb3/420edXvvKVxGsDgYDL5VLftCHy+/2LFy/+/e9/rz41mUwWiyX5viqffvop/zcOJJhMpnA4rHUVADAexZPuEKd1LUBOGFd3iCNaAsa+wsJCn8+nrqUKhUKFhYXqf/gWiyX5S36dTqfetFtKc2PXDOcripJYjfzWW2/dcccd7777rtfrFULo9Xr1biCZo6XCwkKv15syFybLrvo9LbnzUCjkcDjUC0n3ziSbPHnyiy++eMopp6S8Gyl9Jr/2k08++da3vnXkyJFMv5WBePnll++8886DBw8Gg0Gr1drU1KThh7ZQKNTY2BiLxUwmU01NjcHA7Ndh1t3d3dzcbDQaTzrppJHof86cOffcc8/8+fNHonMAwLhFtJSioqKi9yaV5eXlLS0tmtSD0TeuoiW28QbGvurq6k8//VR9fPTo0UT7hAkT1DkvKjUnyiDD+clb9C1duvSf/umfDh8+HI1GOzo6+u1WVVdXp84kSpauq5T9Efsdsbq6OnHhhw8frqmpSbT3+c4kmzlz5uuvv967vaamJvGSlBTp9ddfH+L9L1JcdNFFb7755rPPPnv22Wd3d3c/+uijw9j5QBUUFNTW1hoMBlmW3W53lr9fZM9qtdrt9oqKCq0LAQAAg9fS0tJ7PxpyJYxVREvA2HfdddetWbOmsbGxsbFxzZo1ifbvfe973/72tz/88ENZlv/+978vXbo0cz9Znh8IBIqLi61W6+eff/6d73wnyyKXL1++atWqo0ePer3e22+/PXNXZWVlH374YfYjXnfddatXr25oaGhoaFi9evV1112XaO/znUl2+eWXP/30073br7/++ttvv93tdrvd7n/7t39LPvT000+n3HxkWFx44YX79+9/9dVX9+/fPyyr7QbNZDLV1dUZjUZZlo8fP67OEcNw0el05eXlhYWFWhcCAAAAZIVoCRj7NmzYUFdXd8YZZ5x11llf//rXjUaj2r5q1aorrrhi0aJFxcXFN9xwQyJwSSfL83fu3Ll+/XqbzfbNb37zggsuyLLItWvXnn/++RdccMHJJ588YcKEzF2tX7/+/PPPT8xd6nfEDRs2nHbaaTNnzpw5c+b06dPvvvvuzO9Msquvvvovf/nLxx9/nNJ+9913T548+Stf+cqMGTMuvfTSRPuhQ4f2799/1VVXZXnhA3XBBRf88pe/7LPU0WQwGGpra41GYyQSaWhoIF0CAAAAxi32WgLGl7/97W9XXnllusVf41mGd+aBBx7485///Nxzz2XTz2WXXTZ37tz169cPd4G5KBqNNjQ0RCIRo9GorpLTuiL0j72WAAAjgb2WgBTstQRgrLn99tubm5s///zzNWvWXHnllVqXk0OyeWfuvPPOLHMlIcRzzz03TnIlcWLuksFgYO4SAAAAMG4RLQHjwkknnTRr1qzZs2dPnjx548aNGlYi9UXDenLnnclTyemS2+0mXQIAAJrT6uOlth9rAQ2xeAEYF1avXr169WqtqxBCiFxbhJs770z+MhqN1dXVbrdbluWmpqaamhqdju8tAACAqKqqampqyvLkYDBosViGZVytPnBmP67NZuvu7h7RYoDRxKd/AMBQmc3mmpoavV4fCoWamppyLUAEAACaaG5uTjxOma6e/LStrW3WrFlWq7WiouLWW29N3AlXPcHn861cudJms61du1Ztr6+vN5lMkiQVFxfPmTNnypQpiVH27NnTe1J8JBJZv3791KlTp0yZsm7dOlmWk/vftm1bbW2tyWSqr69PftXs2bNnz56d5ZX2OW66/p1Op9/vz4X5+8BwIVoCAAwDs9lcXV2t0+mCwaDH49G6HAAAkFvi8fi55567b98+9em+ffvOO+889euotWvXbt26VZblI0eOzJs3LxEhqUcXLVo0d+5ct9v9rW99S21ftmzZP/zDP0Qikebm5u9///s+ny8xysKFC3t/xbVhw4aamppDhw59/PHHNTU1GzZsSO6/sbHx4MGDu3btWrJkSUrB2X9b1ue46fpXPynFT8hyCCCXcYc4AMCwCQQCPp+vqqqKNXHDoqury+v1lpSU2O324eqTO8QBAEZC8h3iampqGhsbk4+qa+dffPHFLVu2vPTSS0KISy65ZN26dZdccokQorS0NPl7KZfL1draqj6WJKm7u7uoqCi5t2efffbqq6+ORCJlZWUul+tnP/vZrFmzkk+QpC/9nVtZWfnRRx+VlJQIIbxe7+mnn55Yppd8ZsqrBqF3D+n6H/pYyH3cIQ4AgMFQP02SKw2XWCwmy3JXV5fWhQAAMAButzsxH0d94Ha7hRCXXnppT0/P3r179+7dGwqF1FxJCHH22WfHkyRyJVVKriSEuPzyy2VZ9vv977zzzk033XTppZf2W1Iu5ziJBXpA/uLTPwAAOaq4uFiSpFAoxIdOAMDYcN99991777333nvvfffdl2hcsGDBjh07GhoaFEXJphOXy7V//36dTldXVzdt2rRAIJD5/GXLlj322GNqbrV9+/abbropm1EGtNfSQBmNxvr6+kgk8vzzz1988cUjNAowaoiWAADIUXq9Xr1XDhOXAAD5qLy8PKVl3rx5iqLE4/GLLroo0Xjbbbe1tbXNnTvX6XTOnz9/8+bNaru6xXXv7a4nTZr03nvvTZkyRZKkJUuW7Nq1K3EocWbySzZu3NjW1lZXV1dXV9fR0bFx48aU/lN+qmKxWPZznfocN0P/6tZLDodjx44dO3fuzHIUIGexwhMAgNzl9/ubmpoMBsOkSZOGpUP2WgIAjITkvZa0rgXICey1BAAAcoLVatXr9dFoNHEnZgAAACCnEC0BAEYc99YdNEmSbDabYE0cAAAAchXREgBgZEWj0YaGhpS7vSB7arTk9/uz3NwUAAAAGE1ESwCAkSXLcigUCgQC0WhU61ryUkFBgclkisfjTFwCAABADiJaAgCMLIvFUllZWVdXZzAYtK4lX9ntdiFEZ2en1oUAAAAAqYiWAAAjzmazGY1GravIY8XFxTqdTpblnp4erWsBAAAAvoRoCQCAXKfT6YqKigQTlwAAAJB7iJYAAMgD6po4v98fi8W0rgUAAAD4AtESAAB5oKCgwGw2s5k3AACakyRJw6E1HB1Ih2gJAID8wGbeAID8UlVVNfROgsFg9ifbbLaR7kcIEY/Hs+9qQOP2K8uhh+t9ALJEtAQA0MyAPpnBZrPpdLpIJMKHQgBAXmhubk5+GgqFVq9eXVFRUVVV9cQTT0yZMkVtV2fi+Hy+lStX2my2tWvXqu1tbW2zZs2yWq0VFRW33npr8j9/q1atmjp1qtVqveSSS1555RW10el0+v1+6YTEyRn66VO6foQQe/bsSWlUnz788MM2m23fvn07d+602Wz19fX9jjt79uzZs2dn8zYGAoHly5cXFRWdddZZBw4cSD40ou8DkD2iJQCABhRFaW5uTvnEicx0Op36JSQTlwAA+eiuu+6SZfnAgQNHjx61Wq0ej0dtV79qWrRo0dy5c91u97e+9S21fe3atVu3bpVl+ciRI/PmzUtETkKIBx544NChQz6fb/369VdccYXaqHYYPyFxcoZ++pSuHyHEwoULU1rUp7FY7PHHH7/ssssOHDjw+OOPL1mypN9xe3eezh133FFVVeXxeF566aVnn302+dCIvg9A9iS+MQYAjL5QKNTQ0BCPx10uV0lJidbl5I1wOHzs2DFJkiZOnGg0GgfRw5w5c+6555758+cPe20AgPEsHo/rdDq/32+1WmtqahobG5OPVldXu93uqqqqDz74wOl09n65JEnd3d3q7VATSktLE/GTEMLlcrW2tgohPvnkkzVr1uzbty8cDs+YMWPv3r2Jv2olqY+/cNP1k0Gf/aQ7mnia8mAQ4/bJ6XQePnxYfd86OjrKysrUUUbhfcBQbN682e12b9u2TetCRgOzlgAAGigoKCgtLRVCtLe3h0IhrcvJG2az2WKxxONxn8+ndS0AAPTN7XYn5suoD9xutxAiGo1meFVKriSEOPvss+NJEjnItddeO2fOnA8//NDn8/3yl79M16Esy5n7yVKin4Ea4rj9FjPK7wOQAdESAEAbDofDarXG4/Hm5mam0GavpKREr9cPbsoSAAAaWrx48datW4UQbW1t9fX1N954Y+bzFyxYsGPHjoaGBkVRktvdbvfMmTOLi4sPHjz4yCOPJB8yGo319fWRSOT555+/+OKLM/eTQZ/9DFTmcbPfa2np0qUPPfRQJBJpbGx88MEHE+2j8D4AWSJaAgBoprKy0mAwRCKRtrY2rWvJG1arddKkSawiBADkvvLy8uSnW7du9fl85eXl06dP371795YtW9R2davp3ttO33bbbW1tbXPnznU6nfPnz9+8ebPavn379pUrVzqdzvXr1y9btizRgxBi165dS5YscTgcO3bs2LlzZ+Z+Muizn0SRKQ+SC8imflUsFsvyq7UtW7Y0NDQ4HI4FCxasWLEiMcoovA9AlthrCQCgpWAwqE6Sr66utlqtWpcz9rHXEgBgJCTvtaR1LUBOYK8lAABGicViUSfgtLa2xmIxrcsBAAAAMDBESwAAjZWVlZlMpmg0yrI4AAAAIO8QLQEANCZJUmVlpXrXYb/fr3U5AABg7KuoqJB6qaio0LouIC8ZtC4AAABhNpsdDofH42ltbS0sLNTr9VpXBAAAxrKWlhatSwDGDmYtAQBygtPpNJvNsVistbVV61oAAAAAZItoCQCQExKz0P1+fyAQ0LocAAAAAFkhWgIA5Ap1WZwQorW1VVEUrcvJA/F4vKOj49NPP+XmegAAANAK0RIAIIeUlpYajcZoNNrR0aF1LXlAkqRgMBiNRru6urSuBQAAAOMU0RIAIIdIkuRyuYQQPp8vHA5rXU4eKC0traqqUmd7AQCAIVJvFTdqY43OQMBII1oCAOQWq9VaVFQkuHVLdiwWi/p2AQCQa6qqqobeSTAYzP5km802xH7i8Xj2ww1R9mNluC4gFxAtAQByjsvl0ul04XDY5/NpXQsAABik5ubm5KehUGj16tUVFRVVVVVPPPHElClT1HZ1opDP51u5cqXNZlu7dq3a3tbWNmvWLKvVWlFRceuttyZnQ6tWrZo6darVar3kkkteeeUVtdHpdPr9fumExMkZ+knn2LFj5557rsPhWLFiReLuImq3e/bsEULs2bNHkqS6urrES2bPnj179uws3xn15SmzltSWbdu21dbWmkym+vr6zNcF5A6D1gUAAJDKYDA4nc729nZ2px4Jzc3NR48e1boKAMCYks0EnLvuukuW5QMHDhQVFf3ud7/zeDyJ10qStGjRomXLlj388MN//etf1fa1a9du3br1/PPPD4fDL7300tq1a//rv/5LPfTAAw9s27YtEom89tprV1xxRXd3txDC4/FIktS7kgz9pPPEE088/fTTFovl//2//7du3Tr1/DfeeOP2229fuHChEGLBggUzZ87cuXPngN6BhIULF6pXndyotjQ2Nh48ePCPf/zjkiVLZFnOcF1A7uB/oACAXBSPx2VZNpvNWhcy1ixYsODNN9/UugoAwBjk9Xr9fr/Vaq2pqWlsbEw+VF1d7Xa7q6qqPvjgA6fT2fu1kiR1d3enLPEuLS1NxE9CCJfL1draKoT45JNP1qxZs2/fvnA4PGPGjL179yb+qu0zgknXTzqSJDU0NNTU1AghPB7PtGnTEucvWrToxhtvXLRo0dNPP/3rX//6qaee6u9dyaR3tckt6R4jX2zevNntdm/btk3rQkYDs5YAALlIkiRypZHw/PPPa10CAGAMisfjOt3/bbfidrvVBymBSDQazdBD760Dzz777BdffLH3mddee+3SpUt37typznFOt6OTLMsmkylDP9lQFCVxXUKITZs2LV68+LLLLvvBD37w61//enB9DlHiuoDcwV5LAAAAAIARt3jx4q1btwoh2tra6uvrb7zxxsznL1iwYMeOHQ0NDYqiJLe73e6ZM2cWFxcfPHjwkUceST5kNBrr6+sjkcjzzz9/8cUXZ+4ng8cee6yhocHr9d5///3XXntton3atGnnnXfe5Zdffs4555x66qnJLxnQXksD1ed1AbmDaAkAAAAAMPzKy8uTn27dutXn85WXl0+fPn337t1btmxR29Uth3pvU33bbbe1tbXNnTvX6XTOnz9/8+bNavv27dtXrlzpdDrXr1+/bNmyRA9CiF27di1ZssThcOzYsSOxEVK6fvqkdrV8+fJFixZNnjzZ7/ennH/nnXe+9tpr9957b8oLY7FY9mvWEleafMmJlpSf6a4LyB2s2AQAYOyIRqNer7e0tDR59j4AACNNXRCn7rWkdS0ja9u2bUePHn344Ye1LgS5jr2WAABAXnK73bIs6/X6PjdJBQAAQ5GYRkS0BCTjK00AAMaO0tJSIYTX643FYlrXAgDAWBM/QetCgNxCtAQAyA/xeDwYDGpdRa4rKioym82Kovh8Pq1rAQAgd1VUVEi9VFRUaF0XkJeIlgAAeUBRlGPHjqmrvbSuJdepS+G8Xm/mezwDADCetbS0xHtpaWnRui4gL7HXEgAgD+h0OpPJFIvFIpGIyWTSupycVlRUZLFYgsFge3t7ZWWl1uUAAMaFeDxuNBqnTJmidSFArgiHw2eccYbWVYwSoiUAQH5wuVw6nY4bn2WjrKzs2LFj3d3dJSUlBQUFWpcDABj7JEmKRCIPPvig2WzWuhYgJzzzzDPjZ1suoiUAQH4wGPg3K1tms9lms3V3d7e3t9fW1mpdDgBgvLjqqqusVqvWVQA54ciRI263W+sqRgnf/QIAMAaVlZVJktTT0xMIBLSuBQAAAGMZ3wADADAGGQyGkpISr9fb3t5usVgkSdK6IgDA2HfvvfcajUatqwBywl/+8pevfOUrWlcxSpi1BADA2ORwOHQ6nSzL3d3dWtcCABj77rjjDnIlIOHcc8+9+OKLta5ilEjjZ1spAADGG3XWksFgmDhxIjugAwAAYCTwKRMAgDGrpKTEZDJFo9GOjg6tawEAAMDYRLQEAMhXTLztlyRJLpdLCOHz+cLhsNblAAAAYAwiWgIA5CWPx/Ppp58Sl/TLYrEUFRUJIdra2rSuBQAAAGMQ0RIAIC/JshyLxTwej9aF5AGXy6XT6Xp6etjPGwAAAMOOaAkAkJccDocQwu/3y7KsdS25zmAwqG9XW1uboihalwMAAIAxhWgJAJCXzGazxWIRQni9Xq1ryQMOh8NgMMRiMd4uAAAADC+iJQBAvnI6nUKI7u7uaDSqdS25LrGfN7tTAQAAYHhJ3F4HAJC/jh8/HgqFHA5HWVmZ1rXkgWAwqE71AgAAAIYLs5YAAHmspKRECNHZ2ckWQtkgVwIAAMCwI1oCAOQxm81mNBoVReHeZwAAAIAmiJYAAPlNnbjk8/m0LgQAAAAYj4iWAAD5rbi4WKfTybIcDAa1rgUAAAAYd4iWAAD5TafT2Ww2wcQlAAAAQAtESwCAvKeuiQsEApFIROtaAAAAgPGFaAkAkPdMJlNhYaEQorOzU+ta8kwgEPD7/VpXAQAAgDxGtAQAGAvUiUudnZ2KomhdS94IBAKNjY0tLS3RaFTrWgAAAJCviJYAAGOB1Wo1GAyKojAHJ3tWq7WwsLCkpESv12tdCwAAAPKVFI/Hta4BAIBh4PF4Ojo6CgsLa2trta4lb8TjcUmStK4CAAAAeYxZSwCAMcJut0uS1NPTI8uy1rXkDXIlAAAADBHREgBgjNDr9RaLRQjR1dWldS0AAADAeEG0BAAYO4qLi4UQXV1dLPcGAAAARodB6wIAABg2VqvVYrEUFRVpXQgAAAAwXrCNNwAAAAAAAAaJBXEAAOBLZFnmmycAAABkiWgJAAB8obOz89ixYx0dHVoXAgAAgPxAtAQAAL5gMBji8bjX6w0EAlrXAgAAgDxAtAQAAL5gtVrtdrsQoqWlJRqNal0OAAAAch3REgAA+BKXy2U2m2OxWFNTE5suAQAAIDOiJQAA8CWSJNXU1BgMhlAo1NzcrHU5AAAAyGlESwAAIJVer6+qqpIkye/3ezwercsBAABA7iJaAgCMTeFwuLm5mTudDVpBQYHL5RJCdHR0sKU3AAAA0iFaAgCMTZFIpLu7u6urS+tC8pjdble39G5ubpZlWetyAAAAkIuIlgAAY5PFYrHb7ZWVlVoXkt9cLldBQYGiKM3NzYqiaF0OAAAAco7EnV8AAEAG0Wj0+PHj0WjUYrFUV1dLkqR1RQAAAMghzFoCAACZGAyGmpoanU4XDAZbWlq0LgcAAAC5hWgJAAD0w2QyqfOVuru72RkdAAAAyYiWAABA/woLC8vLy4UQHo+ns7NT63IAAACQK4iWAABAVoqLi51OpxCitbU1EAhoXQ4AAAByAtESAADIVmlpaVFRkRCiubk5HA5rXQ4AAAC0R7QEAAAGoLKysrCwUFGUpqYm7jMLAAAAiQ+FAABgQBRFaWxsdDqdFotF61oAAACgMaIlAMDY5/F4/H5/TU2NXq/XuhYAAABgTGFBHABg7PP7/eFw2O/3a10IAAAAMNYQLQEAxj6r1SqECAaDWhcCAAAAjDVESwCAsU+9qVkwGGQZOAAAADC8iJYAAGOf2WzW6/WKooRCIa1rAQAAAMYUoiUAwLig3suMNXEjrbu7W1EUrasAAADA6CFaAgCMC+p2S4FAQOtCxjKfz9fc3Ox2u1l4CAAAMH4QLQEAxgV11lI4HI5Go1rXMmZZLBaDwVBUVCRJkta1AAAAYJQQLQEAxgW9Xm82mwVr4kaSyWSaMGGCw+HQuhAAAACMHqIlAMB4oa6JI1oaUXq9XusSAAAAMKqIlgAA40VhYaEgWgIAAACGFdESAGC8KCws1Ol0sVgsHA5rXQsAAAAwRhAtAQDGC0mS1IlLPT09WtcCAAAAjBFESwCAcYQ1cVrp6enxer1aVwEAAIDhZ9C6AAAARg+zljQRi8WamppisVgkEnG5XJIkaV0RAAAAhg2zlgAA40hBQYFOp1MUhe2WRpNery8tLZUkqbOzs6GhIRaLaV0RAAAAhg3REgBgfGFNnCbsdnt1dbVOpwuFQsePH5dlWeuKAAAAMDyIlgAA4wtr4rRisVhqa2sNBkMkEmloaOBXAAAAMDYQLQEAxpdEtBSPx7WuZdwxm811dXUFBQWxWKyhocHj8WhdEQAAAIaKaAkAML6w3ZK2DAZDbW2tzWYTQnR0dDQ2NiqKonVRAAAAGDyJ72wBAONNW1ubEMJut5tMJq1rGb+6u7tbWlri8bjBYKiqqiooKNC6IgAAAAwG0RIAANBGOBxuamqKRCKSJJWVlZWUlGhdEQAAAAaMaAkAAGgmFos1NzerN+yz2+0ul0uSJK2LAgAAwAAQLQEAAI11dHSoW3qbzebKykoWKgIAAOQRoiUAAKC9QCDQ0tISi8UkSXK5XHa7XeuKAAAAkBWiJQAAkBNisVhLS0sgEBBCWCyWiooKg8GgdVEAAADoh07rAgAAAIQQQq/XV1dXl5WVSZLU09MTi8W0rggAAAD9Y9YSAADILeFwWJZlm82mdSEAAADoH9ESAAAAAAAABoktDAAA41Q8Hg+Hw0KIgoICrWsBAAAA8hV7LQEAximfz3f8+HGv16t1IQAAAEAeI1oCAIxTBQUFer1ep+OfwnyiKEpLS0skEtG6EAAAAPwf9loCAAB5o7293ev1mkymiRMnal0LAAAAhGCvJQAAkEeKi4tDoZDD4dC6EAAAAPwfZi0BAAAAAABgkNhgAgAAAAAAAINEtAQAAAAAAIBBIloCAABjRCQSOXbsWCAQ0LoQAACAcYS9lgAAwBjR0tLS1dUlhLBYLKWlpQUFBVpXBAAAMPYRLQEAgDEiFot5PJ7Ozk71443Vai0tLTWbzVrXBQAAMJYRLQEAIOLxuCRJWleB4SHLssfj6e7uVp8SMAEAgBGiKErisU6XdsehUCikKIrZbNbr9X2eEI1Ge6/oj8fjvRObeDyePKjKbDbbbLZ0o7e3tyuK4nA4jEZjnyeEw+HEB6dBKCgoMAz6xQAAjAHhcLipqUmSpIkTJ2pdC4aHyWSqrKx0Op1qwBQIBAKBQFFRkdPpJGACAGDsSUQwGcIdv98fiUQsFku6DwORSKS1tVV9rChKItNJ5Dh9NiYUFBTU1dWlG72trS0UClVXV1ut1j5PkGU5MfogFBUVZYiWuru7o9FocXFxumhJlmWv1zvo0e12O9ESAGBc0+v1kUhECKEoSoaPI8g7KQGT3+/3+/1Wq9XhcBQWFmpdHQAA444aAEmSlG6quKIoHo9HnAhuEtNzEj/jJwghYrGY+HLEYzQaTzrppHSjd3V1BQKB8vLydNFSPB4PBoODvbh+mEymeDye4aOmXq8vKirK0INOp8swxT7zl2d2u11RFIMhbf5jNBrtdnuGHjIrLCxkQRwAYLw7evRoLBarq6tj1+exKmWJXGFhocPhSPe1IQAASFCjnFgspj5Q8x1FUfp8IISorKxM11Vra2tnZ6fT6SwtLe3zBEVRjhw5MuhS9Xr95MmT0x31er2hUMhut1sslnSjJz4qJOc4iTwo+8ZxiFlLAIDxzmw2B4PBcDhMtDRWqTOYSktLvV5vV1dXT09PT0+PyWRyOBw2m41ttgAA40QkEpFlWa/XZ/jM09DQoAZJiThpQENkiJbU5CVDh5IkqXNn1DPV1Cb5cUKfJ2QuzOFwZD5Bp9MNZebOOMesJQDAeNfe3u71eu12e3l5uda1YMRFo1Gfz9fZ2al+uWowGOx2u91uT7etJgAAuUDpJRaL9Tl7qLKyMt0/al6vt7293WazZQiA1NncKY2JECeR7KT8TDwoKSnhO5txiFlLAIDxzmQyCSFkWda6EIwGg8FQVlbmcDg6Ozt9Pl80Gu3o6Ojp6ampqdG6NADA2JdYU5Zh45v29nZZllMipOyHiMVi6aIlo9FoNpszDC2EVPF/5AAAIABJREFUqKqqEkLoTkhMCwIyIFoCAIx36saH4XBY60IwevR6vdPpdDgc3d3dnZ2dJSUlWlcEAMhLialD6gP1p81mSxffBAKBpqamzHcT6+npCYVCvdvVlEel1+uT0x+9Xp84miE5KioqyrxXtBCCm11gEIiWAADjnclkkiRJUZRoNJr5ezyMMZIkFRcXFxcXa10IACC3RCKRaDSavOiszwgp3WQik8mU7hOFOgMo8ywkp9Op3rg2BQvNkLP4AA0AGO8kSTIajbIsh8NhoiWkiEQi6jfDWhcCABgesViss7NTCOF0OtOd4/F4urq6su+z90yidGcWFhaefPLJmf9Z4R6myDt8gAYAQJhMJlmWZVnmwxxStLa29vT0VFRU2Gw2rWsBAPwfdcei5AlEsVgs+WlxcXG6lV/xeLyjo0OSpAzRkl6vNxgMyYFRcmyU0jKgG0GoO14P+IKB3Ea0BAAAO3mjb4lbL2e4STMAYCTIshwKhWInZLkSLcFsNqeLlvR6fVFRkV6vj8fj6VKesrKysrKyoV4DMG4QLQEAQLSEvkmSNGHChHA4bDQata4FAMaUjo6OWCxWWlqabspPMBhsa2vL0IO6a3XyBKLkn+o9OtK9UL0JGoDhQrQEAADREjLJ8PeJECIYDBoMBvV/QgAwrqhTO6PRaO9ZRbFYrLCw0OFwpHttZ2dnLBaz2+3poiWTyWS1WvVJeq9EG7ErAzAwREsAAHCTOAxec3NzLBYzmUxFRUVWq5WlcwDGDEVRwuGwmhOp+VEiNlKfxuPxzD1kiJbsdrsQIsMuRRaLxWKxDLp4AKOJT88AAHxxkzhZlomWkL1YLGY2m3t6emRZ9ng8Ho/HYDCoGVNhYSEbtQLIZT09PZFIpLCwMN2a33A43NDQ0G8/6jSi3tOLMk/nLC0tHWTdAHIPn54BABAi6SZxfEeK7On1+pqaGkVRAoGA3+8PBALRaNTn8/l8Pp1Op37lbrVaySsBjILEXdISRMZ5Q16vNxAIVFRUpIuW1NW+6ZKjhJG6HgD5gw86AAAIIYT6wZrtljAIOp3OZrPZbLZ4PB4MBtWMKRaL+f1+v98vTuwYYrFYmMoEYBDULY1SJBamJRKl3svT9Hp9hmjJbDbH4/EM2ZDRaJw4ceKwXQaAsYtoCQAAIdjJG8NBkiSr1Wq1WoUQ4XA4EAgEg8FQKKROiPN6vTqdrqCgQM2Y2JUJgBBCUZQM+U48Hj969KiiKFn2lrhpWjZTiliSBmC4EC0BACDEiWgpEoloXQjGCLPZbDabnU6noijBYFCNmaLRaDAYDAaDQgidTldZWanmUADGnsRUowx3mezo6PB4PHa7vby8vM8TEvMce2dGfa5N46ZpADRBtAQAgBAnoiV1ZQEfzTGMdDpdUVFRUVGREEKW5Z6enmAw2NPTE4vF0u1vAiDHZViVlnxIPXnSpEnpNlxTZxVlvs/axIkTdTod/zAByGVESwAACCGEulJJp9MRLWHkmEwmk8mk3nI7HA5nuH1Sv3duAjBqPB5POBxO2R47G5Ik6fX6DMvZ7Ha73W7PvAUb9wEAkPukzBk5AAAARl9LS0tXV5fT6WQzFGBEhcPhjo4OdYFqunMaGhp6enpSGlOWpBkMhj7vpDbC5QNATiACBwAAyDlms7mwsLCwsDDdCYqiRCIRk8nELecwzvW5Ei2lpaKiIt2+ZoqiBAKBzNMDS0pKbDZbSmw0MlcDAHmJWUsAAAD5JxgMut1uSZKMRqO6ZbjJZDKbzXq9nrAJY09PT08oFOozRcrmz5mKiori4uI+D8VisUAgYDAYLBbLcFcNAOMFs5YAAADyTywWU7cGk2VZluXu7u7EIaPRqG7qlHjADAvkMkVROjo6YrFYhiVpgUDA6/WmO6puaZRyu7TEY51Ol2FfM71eny51AgBkiVlLAAAA+SoajconhMNhWZb73DBY/dPamIS8CcMrHo8nVqIpipJ4oM4tikajRUVFJSUl6V57+PBhIcTkyZPT/c/S7/cHAoF0yRFbGgGAtoiWAAAAxoh4PB6JRCKRiCzLiZ/RaLT3mS6XK93f+UCfZFkOBoPJmVHyz37/prDb7eXl5emOdnR0SJJUUlJCSAQA+YgFcQAAAGOEJEnqCrjkHYvVDb/D4bCaOkWj0UgkkmHT4nA43NjYaDabq6urR6VqjIZ4PB6PxzMEN62trZFIxOVypVs7Fg6H29raMgwhSZI6k6jPnxmWpAkhuBMiAOQ1oiUAAICxTKfTqft8Z3l+NBqNRqOZl8u1tbVFIhF9L4k1SsNROFKp8ZC63ExdgKa2qA+UjOLxuMViqampSdd5T0+PLMvRaDRdBmQymdS7pKkL0HqHR0w4AoBxi2gJAAAAXygsLKyrq8u8vqmnpyccDmc4IRE3qDNZUhQXF4+f+Cl+gqIokiQZDGk/fnd1dcmybLPZ0uWAsiwfO3Zs0JX0uQ9XQmlpaTwezzC3yGw2Z9hmGwAwnhEtAQDwhc7OTo/HU1RU5HK5tK4F0IZOpysoKMh8TmlpaawXRVGi0aiaX6gzZdK93GazpTvk8/k6OjpsNluGfXna2tri8bgkSZIkqQUnHvR7dUIIu92e7lAwGAyHwwUFBYWFhX2eEI/H1UVhalQkTiRHQgh1ZlDi8hOJUvLLDQbDpEmT0o0eCAT8fr/RaEwXLakXmBzYJSd3faZ4KTK8LUVFRRmOAgCQAdESAABfou5Eo3UVQE5L3sspRfLKrMTNwpLFYrEMGUdi9VaG0bu6ujJPwMksQ7QUCAR8Pp/T6cwQLXV2dg5u3H7DHavVajAYMswbMhqNp5566uBGBwBg5BAtAQDwhaKiooKCggwrVgBkJknSULZbKi4utlqtmV/udDqFELFYTJxY5KU+Hjqz2VxUVJQh3JEkqaysLPE0OSpKzBtK/FQlHvc7enFx8RDrBwBAE1K/NwoFAAAAAAAA+sR9HAAAAAAAADBIREsAAAAAAAAYJKIlAAAAAAAADBLREgAAAAAAAAaJaAkAAAAAAACDRLQEAAAAAACAQSJaAgAAAAAAwCARLQEA8CXxeLyrq8vj8WhdCAAAAJAHDFoXAABAzmlpaRFCFBcXGwz8QwkAAABkwqwlAAC+RJIkNVGKRqNa1wIAAADkOqIlAABSGY1GIUQkEtG6EAAAACDXES0BAJCKaAkAAADIEtESAACpWBAHAAAAZIloCQCAVERLAAAAQJaIlgAASEW0BAAAAGSJaAkAgFRESwAAAECWiJYAAEilRkuxWCwej2tdCwAAAJDTiJYAAEil1+slSRJMXAIAAAD6Q7QEAEAfWBMHAAAAZINoCQCAPhAtAQAAANkgWgIAoA96vV4QLQEAAAD9IVoCAKAPzFoCAAAAskG0BABAH4iWAAAAgGwQLQEA0Ac1WorFYloXAgAAAOQ0oiUAAPrArCUAAAAgG0RLAAD0gWgJAAAAyAbREgAAfVCjpXg8zpo4AAAAIAOiJQAA+iBJkl6vF0xcAgAAADIyaF0AAAA5qqysTKfTGY1GrQsBAAAAcpcUj8e1rgEAAAAAAAB5iQVxAAAAAAAAGCSiJQAAAAAAAAwS0RIAAAAAAAAGiWgJAAAAAAAAg0S0BAAAAAAAgEEiWgIAAAAAAMAgES0BAAAAAABgkIiWAABIKxwOBwIBRVG0LgQAAADIUURLAACk1dzc3NjYGAqFtC4EAAAAyFEGrQsAACB3mc1mSZK0rgIAAADIXVI8Hte6BgAAAAAAAOQlFsQBAAAAAABgkIiWAAAAAAAAMEhESwAAAAAAABgkoiUAAAAAAAAMEtESAAAAAAAABoloCQAAAAAAAINEtAQAAAAAAIBBIloCAAAAAADAIBm0LgAAgJzW0tISCoXKy8sLCwu1rgUAAADIOcxaAgAgk0gkIstyNBrVuhAAAAAgFxEtAQCQicFgEELEYjGtCwEAAAByEdESAACZ6PV6IQSzlgAAAIA+ES0BAJCJGi0xawkAAADoE9ESAACZEC0BAAAAGRAtAQCQCdESAAAAkAHREgAAmbCNNwAAAJAB0RIAAJkwawkAAIyyDz/88JZbbpk2bVpRUZHVap06der3vve9Dz/8MOU0KQvpTrZardOnT1+zZk1zc3PvAnp6erZu3XreeeeVlJQYDIbS0tKvf/3rd9999/vvvz+4K0ouZkBlZ1lJ4oU33HBD79FvuOGG3j1n9vLLL1977bW1tbVms7mysnLp0qWvvfba4K59PJDi8bjWNQAAkLsURTly5IgQ4pRTTsn+4wgAAMDgPPjgg3fffXfvr7X0ev2mTZvWrVuXaMnmk0niT/50J1dUVLzxxhuTJk1KtLS2tl500UUffPBB5g4HRB1dfW32ZWdfidqnJElms7mpqamkpCRxyOfzVVVVhcNh9fx+61cU5dZbb3300Uczj4hkzFoCACATnU6nflhh4hIAABhpP/7xj9evX68oysqVK998883u7u5AILB///5//ud/VhTljjvueOSRRxInx78sQ2Pvl7S2tj7zzDOTJ09uaWnZsGFD8jnr1q374IMPampqHn/88ePHj4fDYZ/P98Ybb2zatOnMM88c+jVmX/ZAK7noootCodCTTz6Z3PiLX/wiFArNmzcvy/LuvvvuRx991GAwrFu37qOPPgqHwy0tLb/4xS/OOeecIVz0GMesJQAA+vHpp59Go9G6urqCggKtawEAAGPW8ePHTznlFFmWf/rTn958880pRx9//PEVK1aYTKYjR47U1tb2fnnyzKAsj77++utz5swpLy9vaWlJNJaWlno8njfeeOPcc88d4hVlU1uGQ9lXonby5JNPXn/99TNmzHj77bcTh2bMmPHuu+8+9dRT1113XbqBEj7++OPTTjtNUZQ+fwVIh1lLAAD0g+2WAADAKPjJT34iy/LixYv7DDVuvvnmq6++Wpbln/zkJ8M14le/+lUhRGdnZ3JjIBAQQpx66qn9vrzP3YsGtKVRZtlXolq0aJHT6XznnXfee+89teXdd9999913nU7nVVddlU0P27dvVxTl/PPPJ1caEKIlAAD6QbQEAABGwUsvvSSE+Pa3v53uBPXQH/7wh+Ea8Z133hFCpMyBOuuss4QQK1euPHz48HANNDgDrcRsNqvbeO/cuVNtUR/ceOONZrM5mx5effVVIcRNN900qHrHLxbEAQDQj+bm5u7u7rKyMofDoXUtAABgzHI6nV6vt6Ojw+l09nlCe3u7y+UqLS1tb2/vfXRAC+La29v37t27Zs2azz777N57773vvvsSZ+7du/fSSy8NhUJCiMmTJ3/ta18744wzvvGNb1x44YXq922ZR8y+sd9Dg6jk/fff/9rXvuZwOBobG4UQVVVVPp/v/fffP/PMMzO/PyqHw+Hz+d57771Dhw5t3br1wIEDBoPh9NNPX7p06b/+678a/397dxrU1PU+cPwELwGqKLIM1qLIOgpO3bWW6qh1GZeqVamFilq0Flu3jtVanKHTOv60tS9sa10Hp+rIWLVI3WVRpFJcwEGrlbrhigqyJhocQvJ7kf/v/jOBhEuwRvT7eeEk55z7nOcc3pgn5944O9u49mVGaQkAgAaUlJRUVFS0bdvW29vb0bkAAIAXlrOzs16vr6mp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</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/Delete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKbXkgJENvbW1hbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZScpOwoKIyBnZXQgaGVscGVyIG9iamVjdCwgZGF0YWJhc2UgY2hhbmdlcyBzaG91bGQgYmUgcmVzdG9yZWQKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiQWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIG9wdGlvbiAtLWFsbCBhbmQgYXJndW1lbnQgLS1hY2NlcHQgbiAoIGNhbmNlbCBkZWxldGluZyBhbGwgY29uZmlnIGl0ZW0pCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwnLCAnbicgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJPcHRpb24gJy0tYWxsJyBuIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdUZXN0Q2xhc3MnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdjbGFzcycgKGJ1dCBjbGFzcyAkUmFuZG9tQ2xhc3MgZG9lc24ndCBleGlzdCkgIiwKKTsKCiMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgpteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dJdGVtSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcywKICAgIFZhbGlkSUQgPT4gMSwKICAgIENvbW1lbnQgPT4gJ0NvbW1lbnQnLAogICAgVXNlcklEICA9PiAxLAopOwoKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCm9rKAogICAgJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgIlRlc3QgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0gaXMgY3JlYXRlZCAtICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCAiLAopOwoKIyBBZGQgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMKbXkgJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnRGVzY3JpcHRpb24nLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICB9LAogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgIH0KICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgfQogICAgfSwKfTsKCiMgZ2V0IENvbmZpZ0l0ZW0gb2JqZWN0Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwpteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGxpc3Qgb2YgYWxsIGluY2lkZW50IHN0YXRlcwpteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbU51bWJlcnM7Cm15ICRDb25maWdJdGVtSUQ7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgojIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCm15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgRGF0YSA9PiAkQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uLAopOwpvayggJFlBTUxEZWZpbml0aW9uLCAnZ290IHNvbWUgWUFNTCcgKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgRGVmaW5pdGlvbiA9PiAkWUFNTERlZmluaXRpb24sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwpvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKZm9yICggMSAuLiAxMCApIHsKCiAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgQ2xhc3NJRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICApOwoKICAgICMgYWRkIHRlc3QgQ29uZmlnSXRlbQogICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NJJyAuICRSYW5kb21JRCsrLAogICAgICAgIENsYXNzSUQgICAgICA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHtPcGVyYXRpb25hbH0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKCiAgICAjIGFkZCBuZXcgdmVyc2lvbnMgZm9yIHRoZSBsYXN0IGFkZGVkIGluIHByZXZpb3VzIGxvb3AKICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgIENPVU5UOgogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gNTAgKSB7CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICctJyAuICRDb3VudCwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UGxhbm5lZH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkUmV2ZXJzZUluY2lTdGF0ZUxpc3R7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uICRDb3VudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OYW1lIiwKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSB0aGUgZGF0ZSBpbnRvIHBhc3QgZm9yIHRoZSBmaXJzdCAyMCB2ZXJzaW9ucwogICAgICAgIG5leHQgQ09VTlQgaWYgJENvdW50ID4gMTA7CgogICAgICAgIG15ICRWZXJzaW9uVGVzdENyZWF0ZVRpbWUgPSAnMjAxMC0wMS0wMSAwMDowMDowMCc7CgogICAgICAgICMgaW5zZXJ0IG5ldyB2ZXJzaW9uCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fdmVyc2lvbgogICAgICAgICAgICAgICAgU0VUIGNyZWF0ZV90aW1lID0gPwogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFZlcnNpb25UZXN0Q3JlYXRlVGltZSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbklELAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBjb21tYW5kIHdpdGggYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBvcHRpb25zIChkZWxldGUgYWxsIHZlcnNpb25zIG9sZGVyIHRoYW4gb25lIGRheSkKICAgICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgMSApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIDEiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgNDEsCiAgICAgICAgIk51bWJlciBvZiByZW1haW5pbmcgdmVyc2lvbnMgYWZ0ZXIgcnVubmluZyBjb21tYW5kIHdpdGggT3B0aW9ucyAtLWFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgMSIsCiAgICApOwoKICAgICMgY2hlY2sgY29tbWFuZCB3aXRoIGFsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgMzAgdmVyc2lvbnMpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMnLCAzMCApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAzMCIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgcmVzdWx0IHNob3VsZCBvbmx5IGJlIDQwIHZlcnNpb25zIG5vdwogICAgaXMoCiAgICAgICAgc2NhbGFyIEB7JFZlcnNpb25MaXN0fSwKICAgICAgICAzMCwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgMzAiLAogICAgKTsKCiAgICAjIGNoZWNrIGNvbW1hbmQgd2l0aCBhbGwtb2xkLXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgb2xkIHZlcnNpb25zIGV4Y2VwdCB0aGUgbGFzdCBvbmUpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgnLS1hbGwtb2xkLXZlcnNpb25zJyk7CgogICAgaXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgIDAsCiAgICAgICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbC1vbGQtdmVyc2lvbnMiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgMSwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLW9sZC12ZXJzaW9ucyIsCiAgICApOwp9CgojIGNoZWNrIGNvbW1hbmQgd2l0aCBjbGFzcyBvcHRpb25zICgkUmFuZG9tQ2xhc3MgY2xhc3MpIGFuZCBkZXBsb3ltZW50LXN0YXRlICdQbGFubmVkJwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAkUmFuZG9tQ2xhc3MsICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jbGFzcyAkUmFuZG9tQ2xhc3MgLS1kZXBsb3ltZW50LXN0YXRlJyBQbGFubmVkIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNvbmZpZ2l0ZW0tbnVtYmVyIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS1jb25maWdpdGVtLW51bWJlcicsICRDb25maWdJdGVtTnVtYmVyc1swXSwgJy0tY29uZmlnaXRlbS1udW1iZXInLAogICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdCik7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb25zIC0tY29uZmlnaXRlbS1udW1iZXIiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY2xhc3Mgb3B0aW9ucyAoJFJhbmRvbUNsYXNzIGNsYXNzKQojIHRocmVlIGNvbmZpZyBJdGVtcyBvZiB0ZW4gY3JlYXRlZCBpbiB0ZXN0IHdlcmUgZGVsZXRlZCB3aXRoIHRoZSBwcmV2aW91cyBjb21tYW5kcwojIHdpdGggdGhlIG5leHQgY29tbWFuZCBvdGhlciBzZXZlbiB3aWxsIGJlIGRlbGV0ZWQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb24gLS1jbGFzcyAkUmFuZG9tQ2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBjbGFzcyBvcHRpb24KJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNvbmZpZ2l0ZW0tbnVtYmVyJywgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWNvbmZpZ2l0ZW0tbnVtYmVyIC0tY2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBkZXBsb3ltZW50IHN0YXRlIG9wdGlvbgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY29uZmlnaXRlbS1udW1iZXInLCAkQ29uZmlnSXRlbU51bWJlcnNbMF0sICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jb25maWdpdGVtLW51bWJlciAtLWRlcGxveW1lbnQtc3RhdGUiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucywgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIG1peGVkIHRvZ2V0aGVyLgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgKICAgICctLWFsbCcsICctLWFsbC1vbGQtdmVyc2lvbnMnLCAgICAgICAgICAgICAnLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycsCiAgICAyLCAgICAgICAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgJzEwJwopOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbCAtLWFsbC1vbGQtdmVyc2lvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAyIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyAxMCIsCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCiMgZ2V0IGNvbW1hbmQgb2JqZWN0Cm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBjaGVjayBjb21tYW5kIHdpdGhvdXQgYW55IG9wdGlvbnMKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiTm8gb3B0aW9ucyAtIGxpc3QgYWxsIGNvbmZpZyBpdGVtcyBpbiBwcm9kdWN0aXZlIHN0YXRlcyIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLWNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdOb25FeGlzdGluZ0NsYXNzJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJPcHRpb24gJ2NsYXNzJyAoYnV0IGNsYXNzICRSYW5kb21DbGFzcyBkb2Vzbid0IGV4aXN0KSAiLAopOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tQ2xhc3MgLiAnSGFyZHdhcmUnLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7CgokR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICBJdGVtSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlELAogICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCik7CgojIGFkZCB0ZXN0IGdlbmVyYWwgY2F0YWxvZyBpdGVtCm15ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcyAuICdTb2Z0d2FyZScsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dTb2Z0d2FyZUlELAogICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKKTsKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCiMgZ2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcwpteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIKbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgIENsYXNzSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKKTsKCm15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbQpteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0hhcmR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgZHVwbGljYXRlIENvbmZpZ0l0ZW0KJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgQ2xhc3NJRCAgICAgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKcHVzaCBAQ29uZmlnSXRlbUlELCAkQ29uZmlnSXRlbUlEOwoKIyBhZGQgdGhlIG5ldyBkdXBsaWNhdGUgQ29uZmlnSXRlbSBpbiBTb2Z0d2FyZSBjYXRhbG9nIGNsYXNzCiRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tY2xhc3MgSGFyZHdhcmUgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAiJHtSYW5kb21DbGFzc31IYXJkd2FyZSIgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdjbGFzcycgKCR7UmFuZG9tQ2xhc3N9SGFyZHdhcmUpICIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLXNjb3BlIG9wdGlvbnMgKGludmFsaWQgc2NvcGUpCm15ICRSYW5kb21TY29wZSA9ICdzY29wZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAkUmFuZG9tU2NvcGUgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdzY29wZScgKGJ1dCBwcm92aWRlZCBpbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJy0tc2NvcGUnIC0gJFJhbmRvbVNjb3BlICkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgY2xhc3Mgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAnY2xhc3MnICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAnc2NvcGUnIChjbGFzcykgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgZ2xvYmFsIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXNjb3BlJywgJ2dsb2JhbCcgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGdsb2JhbCkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tYWxsLXN0YXRlcyBvcHRpb25zCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCctLWFsbC1zdGF0ZXMnKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGFsbC1zdGF0ZXMpICIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJzZQoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGRlY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBUT0RPOiB0ZXN0IHRoZSBjb21tYW5kCiNteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEnKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QsIGRhdGFiYXNlIGNoYW5nZXMgc2hvdWxkIGJlIHJlc3RvcmVkCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlByb2hpYml0VW51c2VkVmFyc1N0cmljdGVyKQoKI215ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwojaXMoCiMgICAgJEV4aXRDb2RlLAojICAgIDEsCiMgICAgIkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKIyk7CgpteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiMgU2V0dXAgb2YgdGVzdCBkYXRhLCB3aGljaCBjb25mb3JtcyB0byB0aGUgT1RPQk8gMTAuMSBmb3JtYXQKCiMgdGFibGUgZ2VuZXJhbF9jYXRhbG9nCm15ICVDb25maWdJdGVtQ2xhc3NOYW1lMklEOwp7CiAgICAjIFRoZSBuYW1lcyBvZiB0aGUgY29uZmlnIGl0ZW0gY2xhc3NlcyBhcmUga2VwdCBpbiB0aGUgZ2VuZXJhbCBjYXRhbG9nLgogICAgIyBMZXQncyBhZGQgY2xhc3NlcyB3aXRoIG5hbWVzIHRoYXQgaGF2ZSB0aGUgcHJlZml4ICdUZXN0VXBncmFkZScsCiAgICAjIFRyeSB0byBub3cgbWVkZGxlIHdpdGggZXhpc3RpbmcgZGF0YS4KICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzID0gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJzsKICAgIG15ICRWYWxpZElEICAgICAgICAgICAgID0gMTsKICAgIG15IEBOYW1lcyAgICAgICAgICAgICAgID0gbWFwIHsgam9pbiAnXycsICdUZXN0VXBncmFkZScsICRfIH0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSk7CiAgICBteSAkTnVtUm93cyAgICAgICAgICAgICA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGdlbmVyYWxfY2F0YWxvZyAoCiAgICBnZW5lcmFsX2NhdGFsb2dfY2xhc3MsCiAgICBuYW1lLAogICAgdmFsaWRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieSwKICAgIGNoYW5nZV90aW1lLAogICAgY2hhbmdlX2J5CiAgKQogIFZBTFVFUyAoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsIDEsIGN1cnJlbnRfdGltZXN0YW1wLCAxKQpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLCBcQE5hbWVzLCAkVmFsaWRJRCBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBOYW1lcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gZ2VuZXJhbF9jYXRhbG9nJyApOwoKICAgICVDb25maWdJdGVtQ2xhc3NOYW1lMklEID0gJERCT2JqZWN0LT5TZWxlY3RNYXBwaW5nKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIG5hbWUsIGlkIEZST00gZ2VuZXJhbF9jYXRhbG9nIFdIRVJFIG5hbWUgTElLRSAiVGVzdFVwZ3JhZGVfJSInLAogICAgKTsKICAgIG15ICVFeHBlY3RlZENvbmZpZ0l0ZW1DbGFzc05hbWUySUQgPSBtYXAgeyAkXyA9PiBtYXRjaChxci9bMC05XSsvKSB9IEBOYW1lczsKICAgIGlzKAogICAgICAgIFwlQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICBcJUV4cGVjdGVkQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICAnY29uZmlnIGl0ZW0gbmFtZXMgd2VyZSBpbnNlcnRlZCcKICAgICk7Cn0KCiMgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCnsKICAgICMgYWRkIHNhbXBsZSBkYXRhIGZvciB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgICBteSAkUm93cyA9IEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cygpOwoKICAgICMgQWRkIHRoZSBjbGFzc19pZCBmb3IgdGhpcyBydW4gb2YgdGhlIHRlc3Qgc2NyaXB0CiAgICBteSBAQ2xhc3NJRHMgICAgPSBtYXAgeyAwICsgJENvbmZpZ0l0ZW1DbGFzc05hbWUySUR7ICRfLT57Y2xhc3NfbmFtZX0gfSB9ICRSb3dzLT5AKjsKICAgIG15IEBEZWZpbml0aW9ucyA9IG1hcCB7ICRfLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufSB9ICRSb3dzLT5AKjsKCiAgICBteSAkTnVtUm93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAoCiAgICBjbGFzc19pZCwKICAgIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwKICAgIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLAogICAgdmVyc2lvbiwKICAgIGNyZWF0ZV90aW1lLAogICAgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoID8sID8sICctLS0ge30nLCAxLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXEBDbGFzc0lEcywgXEBEZWZpbml0aW9ucyBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBDbGFzc0lEcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJyApOwoKICAgICMgcmV0cmlldmUgdGhlIGRlZmluaXRpb25zIGFzIGEgc2FuaXR5IGNoZWNrCiAgICBteSAkUGxhY2Vob2xkZXJzICAgICAgICAgPSBqb2luICcsICcsIG1hcCB7Jz8nfSBAQ2xhc3NJRHM7CiAgICBteSBAQmluZHMgICAgICAgICAgICAgICAgPSBtYXAgeyBcJF8gfSBAQ2xhc3NJRHM7CiAgICBteSBAUmV0cmlldmVkRGVmaW5pdGlvbnMgPSAkREJPYmplY3QtPlNlbGVjdENvbEFycmF5KAogICAgICAgIFNRTCA9PiA8PCJFTkRfU1FMIiwKU0VMRUNUIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbgogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgSU4gKCAkUGxhY2Vob2xkZXJzICkKICBPUkRFUiBCWSBjb25maWdpdGVtX2RlZmluaXRpb24KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICk7CiAgICBpcygKICAgICAgICBcQFJldHJpZXZlZERlZmluaXRpb25zLAogICAgICAgIFsgc29ydCBARGVmaW5pdGlvbnMgXSwKICAgICAgICAnaW5zZXJ0IGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJwogICAgKTsKfQoKc3ViIEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cyB7CgogICAgIyBUaGlzIGlzIGJhc2VkIG9uIHRoZSBKU09OIGR1bXAgb2YgY29uZmlnaXRlbV9kZWZpbml0aW9uIGZyb20gREJlYXZlci4KICAgICMgVGhlIGNsYXNzIG5hbWUgd2FzIGFkZGVkIG1hbnVhbGx5LCBiZWNhdXNlIHRoZSBjbGFzc19pZCBjaGFuZ2VzIGZvciBldmVyeSBydW4uCiAgICAjIFJlbWVtYmVyIHRoYXQgSlNPTiBkb2VzIG5vdCBhbGxvdyB0cmFpbGluZyBjb21tYXMuCiAgICBteSAkSlNPTiA9IDw8J0VORF9KU09OJzsKewoiY29uZmlnaXRlbV9kZWZpbml0aW9uIjogWwogICAgewogICAgICAgICJjbGFzc19uYW1lIiA6ICJUZXN0VXBncmFkZV9Db21wdXRlciIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCV1pXNWtiM0lLSUNCT1lXMWxPaUJXWlc1a2IzSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBMU1Bb2dJQ0FnSXlCRmVHRnRjR3hsSUdadmNpQkRTU0JoZEhSeWFXSjFkR1VnYzNsdWRHRjRJR05vWldOcklHWnZjaUIwWlhoMElHRnVaQ0IwWlhoMFlYSmxZU0JtYVdWc1pITUtJQ0FnSUNOU1pXZEZlRG9nWGtGQ1F5NHFDaUFnSUNBalVtVm5SWGhGY25KdmNrMWxjM05oWjJVNklGWmhiSFZsSUcxMWMzUWdjM1JoY25RZ2QybDBhQ0JCUWtNaENnb3RJRXRsZVRvZ1RXOWtaV3dLSUNCT1lXMWxPaUJOYjJSbGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0Nnb3RJRXRsZVRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JPWVcxbE9pQkVaWE5qY21sd2RHbHZiZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDZ290SUV0bGVUb2dWSGx3WlFvZ0lFNWhiV1U2SUZSNWNHVUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkhaVzVsY21Gc1EyRjBZV3h2WndvZ0lDQWdRMnhoYzNNNklFbFVVMDA2T2tOdmJtWnBaMGwwWlcwNk9rTnZiWEIxZEdWeU9qcFVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUVOMWMzUnZiV1Z5U1VRS0lDQk9ZVzFsT2lCRGRYTjBiMjFsY2lCRGIyMXdZVzU1Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nUTNWemRHOXRaWEpEYjIxd1lXNTVDZ290SUV0bGVUb2dUM2R1WlhJS0lDQk9ZVzFsT2lCUGQyNWxjZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlDZ290SUV0bGVUb2dVMlZ5YVdGc1RuVnRZbVZ5Q2lBZ1RtRnRaVG9nVTJWeWFXRnNJRTUxYldKbGNnb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFOXdaWEpoZEdsdVoxTjVjM1JsYlFvZ0lFNWhiV1U2SUU5d1pYSmhkR2x1WnlCVGVYTjBaVzBLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVOUVZRb2dJRTVoYldVNklFTlFWUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ1EyOTFiblJOWVhnNklERTJDZ290SUV0bGVUb2dVbUZ0Q2lBZ1RtRnRaVG9nVW1GdENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBeE1EQUtJQ0JEYjNWdWRFMWhlRG9nTVRBS0NpMGdTMlY1T2lCSVlYSmtSR2x6YXdvZ0lFNWhiV1U2SUVoaGNtUWdSR2x6YXdvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTVRBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJEWVhCaFkybDBlUW9nSUNBZ1RtRnRaVG9nUTJGd1lXTnBkSGtLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQWdJRk5wZW1VNklESXdDaUFnSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEFLQ2kwZ1MyVjVPaUJHVVVST0NpQWdUbUZ0WlRvZ1JsRkVUZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJRk5wZW1VNklEVXdDaUFnSUNCTllYaE1aVzVuZEdnNklERXdNQW9LTFNCTFpYazZJRTVKUXdvZ0lFNWhiV1U2SUU1bGRIZHZjbXNnUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF4Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJKVUc5MlpYSkVTRU5RQ2lBZ0lDQk9ZVzFsT2lCSlVDQnZkbVZ5SUVSSVExQUtJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCSFpXNWxjbUZzUTJGMFlXeHZad29nSUNBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNldXVnpUbThLSUNBZ0lDQWdWSEpoYm5Oc1lYUnBiMjQ2SURFS0lDQWdJQ0FnVW1WeGRXbHlaV1E2SURFS0lDQXRJRXRsZVRvZ1NWQkJaR1J5WlhOekNpQWdJQ0JPWVcxbE9pQkpVQ0JCWkdSeVpYTnpDaUFnSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnSUNCSmJuQjFkRG9LSUNBZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ0lDQlRhWHBsT2lBME1Bb2dJQ0FnSUNCTllYaE1aVzVuZEdnNklEUXdDaUFnSUNBZ0lGSmxjWFZwY21Wa09pQXhDaUFnSUNCRGIzVnVkRTFwYmpvZ01Bb2dJQ0FnUTI5MWJuUk5ZWGc2SURJd0NpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQkhjbUZ3YUdsalFXUmhjSFJsY2dvZ0lFNWhiV1U2SUVkeVlYQm9hV01nUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVDNSb1pYSkZjWFZwY0cxbGJuUUtJQ0JPWVcxbE9pQlBkR2hsY2lCRmNYVnBjRzFsYm5RS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFJCY21WaENpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXdDZ290SUV0bGVUb2dWMkZ5Y21GdWRIbEZlSEJwY21GMGFXOXVSR0YwWlFvZ0lFNWhiV1U2SUZkaGNuSmhiblI1SUVWNGNHbHlZWFJwYjI0Z1JHRjBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRVJoZEdVS0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ1dXVmhjbEJsY21sdlpFWjFkSFZ5WlRvZ01UQUtDaTBnUzJWNU9pQkpibk4wWVd4c1JHRjBaUW9nSUU1aGJXVTZJRWx1YzNSaGJHd2dSR0YwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUVSaGRHVUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdJQ0JaWldGeVVHVnlhVzlrVUdGemREb2dNakFLSUNBZ0lGbGxZWEpRWlhKcGIyUkdkWFIxY21VNklERXdDaUFnUTI5MWJuUk5hVzQ2SURBS0lDQkRiM1Z1ZEVSbFptRjFiSFE2SURBS0NpMGdTMlY1T2lCT2IzUmxDaUFnVG1GdFpUb2dUbTkwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NnPT0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0sCiAgICB7CiAgICAgICAgImNsYXNzX25hbWUiIDogIlRlc3RVcGdyYWRlX0hhcmR3YXJlIiwKICAgICAgICAiY2xhc3NfaWQiIDogbnVsbCwKICAgICAgICAiY29uZmlnaXRlbV9kZWZpbml0aW9uIiA6ICJMUzB0Q2kwZ1MyVjVPaUJXWlc1a2IzSUtJQ0JPWVcxbE9pQldaVzVrYjNJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUUxdlpHVnNDaUFnVG1GdFpUb2dUVzlrWld3S0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUVSbGMyTnlhWEIwYVc5dUNpQWdUbUZ0WlRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwUVhKbFlRb0tMU0JMWlhrNklGUjVjR1VLSUNCT1lXMWxPaUJVZVhCbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1IyVnVaWEpoYkVOaGRHRnNiMmNLSUNBZ0lFTnNZWE56T2lCSlZGTk5PanBEYjI1bWFXZEpkR1Z0T2pwSVlYSmtkMkZ5WlRvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklGTmxjbWxoYkU1MWJXSmxjZ29nSUU1aGJXVTZJRk5sY21saGJDQk9kVzFpWlhJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUF4TURBS0NpMGdTMlY1T2lCWFlYSnlZVzUwZVVWNGNHbHlZWFJwYjI1RVlYUmxDaUFnVG1GdFpUb2dWMkZ5Y21GdWRIa2dSWGh3YVhKaGRHbHZiaUJFWVhSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1JHRjBaUW9nSUNBZ1dXVmhjbEJsY21sdlpGQmhjM1E2SURJd0NpQWdJQ0JaWldGeVVHVnlhVzlrUm5WMGRYSmxPaUF4TUFvS0xTQkxaWGs2SUVsdWMzUmhiR3hFWVhSbENpQWdUbUZ0WlRvZ1NXNXpkR0ZzYkNCRVlYUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dSR0YwWlFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGbGxZWEpRWlhKcGIyUlFZWE4wT2lBeU1Bb2dJQ0FnV1dWaGNsQmxjbWx2WkVaMWRIVnlaVG9nTVRBS0lDQkRiM1Z1ZEUxcGJqb2dNQW9nSUVOdmRXNTBUV0Y0T2lBeENpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0Nnb3RJRXRsZVRvZ1RtOTBaUW9nSUU1aGJXVTZJRTV2ZEdVS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBRWEpsWVFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNCRGIzVnVkRTFwYmpvZ01Bb2dJRU52ZFc1MFRXRjRPaUF4Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTG9jYXRpb24iLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRHOWpZWFJwYjI0Nk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlFhRzl1WlRFS0lDQk9ZVzFsT2lCUWFHOXVaU0F4Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVUdodmJtVXlDaUFnVG1GdFpUb2dVR2h2Ym1VZ01nb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFWmhlQW9nSUU1aGJXVTZJRVpoZUFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVVdFRXRnBiQW9nSUU1aGJXVTZJRVV0VFdGcGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFRmtaSEpsYzNNS0lDQk9ZVzFsT2lCQlpHUnlaWE56Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRFRnlaV0VLQ2kwZ1MyVjVPaUJPYjNSbENpQWdUbUZ0WlRvZ1RtOTBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDaUFnSUNCU1pYRjFhWEpsWkRvZ01Rb2dJRU52ZFc1MFRXbHVPaUF3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTmV0d29yayIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRtVjBkMjl5YXpvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklFNWxkSGR2Y210QlpHUnlaWE56Q2lBZ1RtRnRaVG9nVG1WMGQyOXlheUJCWkdSeVpYTnpDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEFvZ0lDQWdVMmw2WlRvZ016QUtJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01UQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXhDaUFnVTNWaU9nb2dJQzBnUzJWNU9pQlRkV0p1WlhSTllYTnJDaUFnSUNCT1lXMWxPaUJUZFdKdVpYUWdUV0Z6YXdvZ0lDQWdTVzV3ZFhRNkNpQWdJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJQ0FnVTJsNlpUb2dNekFLSUNBZ0lDQWdUV0Y0VEdWdVozUm9PaUF5TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklESTFOUzR5TlRVdU1qVTFMakFLSUNBZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lFTnZkVzUwVFdsdU9pQXdDaUFnSUNCRGIzVnVkRTFoZURvZ01Rb2dJQ0FnUTI5MWJuUkVaV1poZFd4ME9pQXdDaUFnTFNCTFpYazZJRWRoZEdWM1lYa0tJQ0FnSUU1aGJXVTZJRWRoZEdWM1lYa0tJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNBZ0lGTnBlbVU2SURNd0NpQWdJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVRBS0lDQWdJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb0tMU0JMWlhrNklFNXZkR1VLSUNCT1lXMWxPaUJPYjNSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ1EyOTFiblJOYVc0NklEQUtJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lFTnZkVzUwUkdWbVlYVnNkRG9nTUFvPSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfU29mdHdhcmUiLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQldaVzVrYjNJS0lDQk9ZVzFsT2lCV1pXNWtiM0lLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTFNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQTFNQW9LTFNCTFpYazZJRlpsY25OcGIyNEtJQ0JPWVcxbE9pQldaWEp6YVc5dUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlUyOW1kSGRoY21VNk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlRaWEpwWVd4T2RXMWlaWElLSUNCT1lXMWxPaUJUWlhKcFlXd2dUblZ0WW1WeUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCTWFXTmxibU5sVkhsd1pRb2dJRTVoYldVNklFeHBZMlZ1WTJVZ1ZIbHdaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRWRsYm1WeVlXeERZWFJoYkc5bkNpQWdJQ0JEYkdGemN6b2dTVlJUVFRvNlEyOXVabWxuU1hSbGJUbzZVMjltZEhkaGNtVTZPa3hwWTJWdVkyVlVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUV4cFkyVnVZMlZMWlhrS0lDQk9ZVzFsT2lCTWFXTmxibU5sSUV0bGVRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0NpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUk5ZWGc2SURFd01Bb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb2dJRk4xWWpvS0lDQXRJRXRsZVRvZ1VYVmhiblJwZEhrS0lDQWdJRTVoYldVNklGRjFZVzUwYVhSNUNpQWdJQ0JKYm5CMWREb0tJQ0FnSUNBZ1ZIbHdaVG9nU1c1MFpXZGxjZ29nSUNBZ0lDQldZV3gxWlUxcGJqb2dNUW9nSUNBZ0lDQldZV3gxWlUxaGVEb2dNVEF3TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklERUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lDQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NpQWdMU0JMWlhrNklFVjRjR2x5WVhScGIyNUVZWFJsQ2lBZ0lDQk9ZVzFsT2lCRmVIQnBjbUYwYVc5dUlFUmhkR1VLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQkVZWFJsQ2lBZ0lDQWdJRkpsY1hWcGNtVmtPaUF4Q2lBZ0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ0lDQlpaV0Z5VUdWeWFXOWtSblYwZFhKbE9pQXhNQW9nSUNBZ1EyOTFiblJOYVc0NklEQUtJQ0FnSUVOdmRXNTBUV0Y0T2lBeENpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQk5aV1JwWVFvZ0lFNWhiV1U2SUUxbFpHbGhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTBNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQXlNQW9LTFNCTFpYazZJRTV2ZEdVS0lDQk9ZVzFsT2lCT2IzUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01Rb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bbz0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0KXX0KRU5EX0pTT04KCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkVGhhd2VkICAgICA9ICRKU09OT2JqZWN0LT5EZWNvZGUoIERhdGEgPT4gJEpTT04gKTsKCiAgICAjIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBhbmQgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24gYXJlIHN0b3JlZCBhcyBMT05HQkxPQgogICAgIyBpbiB0aGUgZGF0YWJhc2UuIER1bXBpbmcgdGhlIGJpbmFyeSBjb250ZW50IGJyZWFrcyB0aGUgSlNPTiBleHBvcnQsCiAgICAjIHRoZXJlZm9yZSB0aGVzZSBjb2x1bXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmFzZTY0LgogICAgZm9yIG15ICRSb3cgKCAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufS0+QCogKSB7CiAgICAgICAgJFJvdy0+e2NvbmZpZ2l0ZW1fZGVmaW5pdGlvbn0gICA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntjb25maWdpdGVtX2RlZmluaXRpb259ICk7CiAgICAgICAgJFJvdy0+e2R5bmFtaWNmaWVsZF9kZWZpbml0aW9ufSA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntkeW5hbWljZmllbGRfZGVmaW5pdGlvbn0gKTsKICAgIH0KCiAgICAjIHJldHVybiB0aGUgYXJyYXlyZWYKICAgIHJldHVybiAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Export.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgUGF0aDo6Q2xhc3MgcXcoZGlyIGZpbGUpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkV4cG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKb2soICRSYW5kb21JRCwgJ2dvdCBhIHJhbmRvbSBJRCcgKTsKZGlhZygiUmFuZG9tSUQ6ICRSYW5kb21JRCIpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgY3JlYXRlIGRlZmF1bHQgY29uZmlnIGl0ZW0gY2xhc3NlcwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyktPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyLAopOwoKIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElECm15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAopOwpyZWZfb2soICRDb25maWdJdGVtRGF0YVJlZiwgJ0hBU0gnLCAnQ29uZmlnSXRlbURhdGFSZWYnICk7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07Cm9rKCAkSGFyZHdhcmVDb25maWdJdGVtSUQsICdnb3QgYW4gSUQgZm9yIGNvbmZpZyBpdGVtIGNsYXNzIEhhcmR3YXJlJyApOwoKIyBnZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzCm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwpyZWZfb2soICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiwgJ0hBU0gnICk7Cm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwpvayggJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwgJ2dvdCBhbiBJRCBmb3IgZGVwbG95bWVudCBzdGF0ZSBQcm9kdWN0aW9uJyApOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbXMKbXkgQENvbmZpZ0l0ZW1JRHM7CnN1YnRlc3QgJ2NyZWF0ZSBzYW1wbGUgY29uZmlnIGl0ZW1zJyA9PiBzdWIgewogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMTAgKSB7CgogICAgICAgICMgY3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgIGRpYWcoIkNvbmZpZ0l0ZW1OdW1iZXI6ICckQ29uZmlnSXRlbU51bWJlciciKTsKICAgICAgICBvayggJENvbmZpZ0l0ZW1OdW1iZXIsICdnb3QgYSBjb25maWcgaXRlbSBudW1iZXInICk7CgogICAgICAgICMgYWRkIHNhbXBsZSBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiBqb2luKCAnXycsICdUZXN0Q29uZmlnSXRlbfCfjJ4nLCAkUmFuZG9tSUQsICRDb3VudCApLAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWcgaXRlbSBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1JRCIgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgIH0KfTsKCiMgZ2V0IEltcG9ydEV4cG9ydCBvYmplY3QKbXkgJEltcG9ydEV4cG9ydE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRUZW1wbGF0ZUlELCAiSW1wb3J0L0V4cG9ydCB0ZW1wbGF0ZSBpcyBjcmVhdGVkIiApOwpkaWFnKCJUZW1wbGF0ZUlEOiAkVGVtcGxhdGVJRCIpOwoKIyBnZXQgb2JqZWN0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKbXkgJVRlbXBsYXRlUmVmID0gKAogICAgJ0NsYXNzSUQnICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAnQ291bnRNYXgnID0+IDEwLAopOwpteSAkT2JqZWN0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRPYmplY3REYXRhU2F2ZVN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIGFkZGVkIiApOwoKIyBhZGQgdGhlIGZvcm1hdCBkYXRhIG9mIHRoZSB0ZXN0IHRlbXBsYXRlCm15ICVGb3JtYXREYXRhID0gKAogICAgQ2hhcnNldCAgICAgICAgICAgICAgPT4gJ1VURi04JywKICAgIENvbHVtblNlcGFyYXRvciAgICAgID0+ICdDb21tYScsCiAgICBJbmNsdWRlQ29sdW1uSGVhZGVycyA9PiAxLAopOwpteSAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgRm9ybWF0RGF0YSA9PiBcJUZvcm1hdERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzLCAiZm9ybWF0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwpteSAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+U2VhcmNoRGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgU2VhcmNoRGF0YSA9PiBcJVNlYXJjaERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzLCAic2VhcmNoIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIGFkZCBtYXBwaW5nIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKZm9yIG15ICRPYmplY3REYXRhVmFsdWUgKHF3KCBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUgKSkgewoKICAgIG15ICRNYXBwaW5nSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nQWRkKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IHsgS2V5ID0+ICRPYmplY3REYXRhVmFsdWUgfSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRIb21lICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKbXkgJFRlbXBEaXIgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGVtcERpcicpOwpteSAkRGVzdGluYXRpb25QYXRoID0gam9pbiAnLycsICRUZW1wRGlyLCAnSW1wb3J0RXhwb3J0JzsKbXkgJEV4cG9ydEZpbGVuYW1lICA9ICIkRGVzdGluYXRpb25QYXRoL1RlbXBsYXRlRXhwb3J0XyRSYW5kb21JRC5jc3YiOwpvayggIS1mICRFeHBvcnRGaWxlbmFtZSwgJ25vIGxlZnRvdmVyIGV4cG9ydCBmaWxlJyApOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPm1rcGF0aDsKb2soIC1kICREZXN0aW5hdGlvblBhdGgsICdleHBvcnQgZGlyIHdhcyBjcmVhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS10ZW1wbGF0ZS1udW1iZXInLCAkSGVscGVyLT5HZXRSYW5kb21OdW1iZXIsCiAgICAkRXhwb3J0RmlsZW5hbWUKKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJDb21tYW5kIHdpdGggd3JvbmcgdGVtcGxhdGUgbnVtYmVyIC0gZXhpdCBjb2RlIiwKKTsKb2soICEtZSAkRXhwb3J0RmlsZW5hbWUsICdubyBleHBvcnQgZmlsZSB3YXMgZ2VuZXJhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJObyBkZXN0aW5hdGlvbiBhcmd1bWVudCAtIGV4aXQgY29kZSIsCik7Cm9rKCAhLWUgJEV4cG9ydEZpbGVuYW1lLCAnbm8gZXhwb3J0IGZpbGUgd2FzIGdlbmVyYXRlZCcgKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQsICRFeHBvcnRGaWxlbmFtZSApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgZGVzdGluYXRpb24gYXJndW1lbnQiLAopOwpvayggLWUgJEV4cG9ydEZpbGVuYW1lLCAnZXhwb3J0IGZpbGUgd2FzIGZpbmFsbHkgZ2VuZXJhdGVkJyApOwoKIyBDb250ZW50IG9mIHRoZSBleHBvcnRlZCBmaWxlLCB3aXRoIGNvbnNpZGVyaW5nIHRoZSByYW5kb20gaWQgaW4gdGhlIGNvbmZpZyBpdGVtIG5hbWUKewogICAgbXkgJEV4cGVjdGVkUmVzdWx0RmlsZSA9IGRpcigkSG9tZSktPmZpbGUoJ3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdicpOwogICAgbXkgQEV4cGVjdGVkTGluZXMgICAgICA9IG1hcCB7cy88PFJBTkRPTV9JRD4+LyRSYW5kb21JRC9yfSAkRXhwZWN0ZWRSZXN1bHRGaWxlLT5zbHVycDsKICAgIGlzKCBzY2FsYXIgQEV4cGVjdGVkTGluZXMsIDExLCAnZ290IHNvbWUgZXhwZWN0ZWQgY29udGVudCcgKTsKICAgIGlzKAogICAgICAgIFsgZmlsZSgkRXhwb3J0RmlsZW5hbWUpLT5zbHVycCBdLAogICAgICAgIFxARXhwZWN0ZWRMaW5lcywKICAgICAgICAiQ29udGVudCBvZiAkRXhwb3J0RmlsZW5hbWUiCiAgICApOwp9CgojIHJlbW92ZSB0ZXN0IGRlc3RpbmF0aW9uIHBhdGgKZGlhZygiZGVsZXRpbmcgJERlc3RpbmF0aW9uUGF0aCIpOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPnJtdHJlZTsKb2soICEtZCAkRGVzdGluYXRpb25QYXRoLCAndGVzdCBkaXJlY3RvcnkgZGVsZXRlZCcgKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Import.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkltcG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkVGVtcGxhdGVJRCwgIkltcG9ydC9FeHBvcnQgdGVtcGxhdGUgaXMgY3JlYXRlZCAtICRUZW1wbGF0ZUlEIiApOwoKIyBjcmVhdGUgZGVmYXVsdCBjb25maWcgaXRlbSBjbGFzc2VzCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKS0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIsCik7CgojIGdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSUQKbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdIYXJkd2FyZScsCik7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBvYmplY3QgZGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZQpteSAlVGVtcGxhdGVSZWYgPSAoCiAgICAnQ2xhc3NJRCcgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICdDb3VudE1heCcgPT4gMTAsCik7Cm15ICRTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRTdWNjZXNzLCAiT2JqZWN0RGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZSBpcyBhZGRlZCIgKTsKCiMgYWRkIHRoZSBmb3JtYXQgZGF0YSBvZiB0aGUgdGVzdCB0ZW1wbGF0ZQpteSAlRm9ybWF0RGF0YSA9ICgKICAgIENoYXJzZXQgICAgICAgICAgICAgID0+ICdVVEYtOCcsCiAgICBDb2x1bW5TZXBhcmF0b3IgICAgICA9PiAnQ29tbWEnLAogICAgSW5jbHVkZUNvbHVtbkhlYWRlcnMgPT4gMSwKKTsKJFN1Y2Nlc3MgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXREYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBGb3JtYXREYXRhID0+IFwlRm9ybWF0RGF0YSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCm9rKCAkU3VjY2VzcywgIkZvcm1hdERhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwokU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgIFNlYXJjaERhdGEgPT4gXCVTZWFyY2hEYXRhLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKIyBhZGQgbWFwcGluZyBkYXRhIGZvciB0ZXN0IHRlbXBsYXRlCmZvciBteSAkT2JqZWN0RGF0YVZhbHVlIChxdyggTmFtZSBEZXBsU3RhdGUgSW5jaVN0YXRlICkpIHsKCiAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJU1hcHBpbmdPYmplY3REYXRhID0gKCBLZXkgPT4gJE9iamVjdERhdGFWYWx1ZSApOwogICAgbXkgJFN1Y2Nlc3MgICAgICAgICAgID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gXCVNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRTb3VyY2VQYXRoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAiL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdiI7CgojIHRlc3QgY29tbWFuZCB3aXRoIHdyb25nIHRlbXBsYXRlIG51bWJlcgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwgJFNvdXJjZVBhdGggLiAnVGVtcGxhdGVFeHBvcnQuY3N2JyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIgLSBleGl0IGNvZGUiLAopOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlEICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gU291cmNlIGFyZ3VtZW50IC0gZXhpdCBjb2RlIiwKKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlELCAkU291cmNlUGF0aCApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgU291cmNlIGFyZ3VtZW50IiwKKTsKCiMgZ2V0IG51bWJlciBvZiBjb25maWcgaXRlbSBJRHMKbXkgJE51bUNvbmZpZ0l0ZW1zSW1wb3J0ZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgIE5hbWUgICA9PiAnVGVzdENvbmZpZ0l0ZW0qJywKICAgIFJlc3VsdCA9PiAnQ09VTlQnLAopOwoKIyBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW1zIGFyZSBpbXBvcnRlZAojIDEwIGl0ZW1zIHNob3VsZCBiZSBleHBvcnRlZCwgYXMgdGhhdCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzYW1wbGUgZmlsZQppcygKICAgICROdW1Db25maWdJdGVtc0ltcG9ydGVkLAogICAgMTAsCiAgICAiVGhlcmUgYXJlIHRlbiBpbXBvcnRlZCBjb25maWcgaXRlbXMiCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/IncidentState/Recalculate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZScpOwoKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiQWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlIGV4aXQgY29kZSIsCik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemCreate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgU2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIENoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQuCmlzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0LgpteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CmlzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBTZXQgd2Vic2VydmljZSBuYW1lLgpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkV2Vic2VydmljZUlELCAiYWRkZWQgd2ViIHNlcnZpY2UiICk7CgojIEdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMuCm15ICRIb3N0ID0gJEhlbHBlci0+R2V0VGVzdEhUVFBIb3N0bmFtZTsKCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgVXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZy4KbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlVXBkYXRlLCAidXBkYXRlZCB3ZWIgc2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiApOwoKIyBEZWJ1Z2dlciBvYmplY3QuCm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgIERlYnVnZ2VyQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgV2Vic2VydmljZUlEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIENvbW11bmljYXRpb25UeXBlID0+ICdQcm92aWRlcicsCik7CmlzYV9vaygKICAgICREZWJ1Z2dlck9iamVjdCwKICAgIFsnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlciddLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlZCBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklELgojIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgpteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CmlzYV9vaygKICAgICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgQ3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdC4KbXkgJFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CnJlZl9vayggJFJlcXVlc3RlclNlc3Npb25SZXN1bHQsICdIQVNIJywgJ2dvdCByZXN1bHQgZnJvbSBTZXNzaW9uSUQnICk7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07Cmxpa2UoICROZXdTZXNzaW9uSUQsIHFyL1xBW1s6YWxudW06XV17MzJ9XHovLCAnc2FuZSBzZXNzaW9uIElEJyApOwoKIyBBY3R1YWwgdGVzdHMuCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRW1wdHkgUmVxdWVzdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHt9LAogICAgICAgIEV4cGVjdGVkRGF0YSAgID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbSBwYXJhbWV0ZXIgaXMgbWlzc2luZyBvciBub3QgdmFsaWQhJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gMSwgICAgIyBzaG91bGQgYmUgYSBoYXNocmVmCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIG5vdCB2YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgVG9kbyAgICAgICAgICAgPT4gJ21hbmRhdG9yeSBjaGVja3MgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EeW5hbWljRmllbGQtPk5JQy0+SVBvdmVyREhDUCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQ2xhc3MnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q2xhc3MgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5OYW1lIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EZXBsU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEluY2lTdGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5JbmNpU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNsYXNzIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+RGVwbFN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+SW5jaVN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPk5JQyBwYXJhbWV0ZXIgdmFsdWUgaXMgcmVxdWlyZWQgYW5kIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMtPklQb3ZlckRIQ1AgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+TklDIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMgcGFyYW1ldGVyIHZhbHVlIGlzIHJlcXVpcmVkIGFuZCBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBOSUMtPklwT3ZlckRIQ1AgR2VuZXJhbCBDYXRhbG9nIGluIEFycmF5IEhhc2gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBWZW5kb3IgTG9uZyBUZXh0ICcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdhJyB4IDUxLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPlZlbmRvciBwYXJhbWV0ZXIgdmFsdWUgZXhjZWRlcyB0aGUgbWF4aXVtIGxlbmd0aCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5XYXJyYW50eUV4cGlyYXRpb25EYXRlIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBPd25lciBDdXN0b21lcicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5Pd25lciBwYXJhbWV0ZXIgdmFsdWUgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5SYW0gcGFyYW1ldGVyIHJlcGV0aXRpb25zIGlzIGhpZ2hlciB0aGFuIHRoZSBtYXhpdW0gdmFsdWUhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQXR0YWNobWVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5BdHRhY2htZW50IHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnQgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5Db250ZW50VHlwZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBBdHRhY2htZW50LT5GaWxlbmFtZSBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgID0+ICdUaGlua3BhZCBYMzAwJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnNDAwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcyMDAwJywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiAnNTAwMDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBHcmFwaGljQWRhcHRlciAgICAgICAgID0+ICdBVEkgUmFkZW9uIDMwMCcsCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1pc28tODg1OS0xJywKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtIHdpdGhvdXQgWFNMRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0xvY2F0aW9uJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKKTsKCiMgU3RhcnQgdGVzdGluZy4KZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIHN1YnRlc3QgJFRlc3QtPntOYW1lfSA9PiBzdWIgewoKICAgICAgICBteSAkVG9kbyA9IGRlZmluZWQgJFRlc3QtPntUb2RvfSA/IHRvZG8oICRUZXN0LT57VG9kb30gKSA6IHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoVmFyaWFibGVzOjpQcm9oaWJpdFVudXNlZFZhcnNTdHJpY3RlcikKCiAgICAgICAgIyBDcmVhdGUgbG9jYWwgb2JqZWN0LgogICAgICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgKTsKICAgICAgICBpc2Ffb2soCiAgICAgICAgICAgICRMb2NhbE9iamVjdCwKICAgICAgICAgICAgWyJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Il0sCiAgICAgICAgICAgICJDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24uCiAgICAgICAgbXkgJENsb25lZFJlcXVlc3REYXRhID0gU3RvcmFibGU6OmRjbG9uZSggJFRlc3QtPntSZXF1ZXN0RGF0YX0gKTsKCiAgICAgICAgIyBTdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZSBsb2NhbGx5CiAgICAgICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIFJlc3RvcmUgY2xvbmVkIGRhdGEuCiAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0gPSAkQ2xvbmVkUmVxdWVzdERhdGE7CgogICAgICAgICMgQ2hlY2sgcmVzdWx0LgogICAgICAgIHJlZl9vaygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgogICAgICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgICAgIGlzYV9vaygKICAgICAgICAgICAgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAgICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgICAgICAgICAiQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAogICAgICAgICk7CgogICAgICAgICMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCiAgICAgICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayByZXN1bHQuCiAgICAgICAgcmVmX29rKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICAgICAgKTsKCiAgICAgICAgaXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAgICAgJFRlc3QtPntTdWNjZXNzUmVxdWVzdH0sCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQiLAogICAgICAgICk7CgogICAgICAgICMgVGVzdHMgc3VwcG9zZWQgdG8gc3VjY2VlZC4KICAgICAgICBpZiAoICRUZXN0LT57U3VjY2Vzc0NyZWF0ZX0gKSB7CgogICAgICAgICAgICAjIExvY2FsIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sICJMb2NhbCByZXN1bHQgZ290IENvbmZpZ0l0ZW1JRCIgKTsKICAgICAgICAgICAgb2soICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVxdWVzdGVyIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LCAiUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgb2soICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIlJlcXVlc3RlciByZXN1bHQgRXJyb3IgaXMgdW5kZWZpbmVkLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCB0aGUgQ29uZmlnSXRlbSBlbnRyeSAoZnJvbSBsb2NhbCByZXN1bHQpLgogICAgICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkTG9jYWxWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCBsb2NhbCB2ZXJzaW9uIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIGNvbmZpZyBpdGVtIGVudHJ5IChmcm9tIHJlcXVlc3RlciByZXN1bHQpLgogICAgICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCByZXF1ZXN0ZXIgY29uZmlnIGl0ZW0gc3RyY3R1cmUgd2l0aCBUcnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgdGVzdC4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSApIHsKCiAgICAgICAgICAgICAgICAjIFRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0LgogICAgICAgICAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAgICAgICAgICMgTWFrZSBhIGRlZXAgY29weSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgcmVzdWx0LgogICAgICAgICAgICAgICAgbXkgJENsb25lZFhNTERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgICAgICAgICAgbXkgJEZvcm1hdGVkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0Rm9ybWF0WE1MRGF0YSgKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhID0+ICRDbG9uZWRYTUxEYXRhLT5bMV0tPntWZXJzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0UmVwbGFjZVhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkRm9ybWF0ZWRYTUxEYXRhLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ29tcGFyZSBYTUwgZGF0YS4KICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICRSZXBsYWNlZFhNTERhdGEsCiAgICAgICAgICAgICAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0NJWE1MRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgImxvY2FsIENvbmZpZ0l0ZW0tPkNJWE1MRGF0YSBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgYXR0YWNobWVudHMuCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlTmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIE5leHQgaWYgbm90IGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudCk7CgogICAgICAgICAgICAgICAgICAgICMgQ29udmVydCBjb250ZW50IHRvIGJhc2U2NC4KICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnR9ID0gZW5jb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnQtPntDb250ZW50fSwgJycgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBEZWxldGUgbm90IG5lZWRlZCBhdHRpYnV0ZXMuCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFByZWZlcmVuY2VzIEZpbGVzaXplIFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICAgICAgaWYgKCByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntBdHRhY2htZW50fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUmVxdWVzdGVkQXR0YWNobWVudHMsICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBSZXF1ZXN0ZWRBdHRhY2htZW50cyA9IEB7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fSB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgIFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgXEBSZXF1ZXN0ZWRBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAibG9jYWwgQ29uZmlnSXRlbS0+QXR0YWNobWVudCBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUmVtb3ZlIGF0dHJpYnV0ZXMgdGhhdCBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSBsb2NhbCBhbmQgcmVxdWVzdGVyIHJlc3BvbnNlcy4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKAogICAgICAgICAgICAgICAgcXcoQ29uZmlnSXRlbUlEIE51bWJlciBDcmVhdGVUaW1lIFZlcnNpb25JRCBMYXN0VmVyc2lvbklEKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICJMb2NhbCBjb25maWcgaXRlbSByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgRGVsZXRlIHRoZSBjb25maWcgaXRlbXMuCiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICgKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGVsZXRlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrLgogICAgICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1EZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBUZXN0cyBzdXBwb3NlZCB0byBmYWlsLgogICAgICAgIGVsc2UgewogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgICAgICAuICc6ICcKICAgICAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbC4KICAgICAgICAgICAgIyBSZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQuCiAgICAgICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNhbml0eSBjaGVjay4KICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAhJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgICAgIC4gIiBsb2NhbCBhbmQgcmVtb3RlIHRlc3RzLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICAgICAiTG9jYWwgcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyBDbGVhbiB1cCB3ZWJzZXJ2aWNlLgpteSAkV2Vic2VydmljZURlbGV0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlRGVsZXRlKAogICAgSUQgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlRGVsZXRlLCAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiICk7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemDelete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkU2VsZjsKCiMgc2V0IFVzZXJJRCB0byByb290Cm15ICRVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgR2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcy4KbXkgJEhvc3QgPSAkSGVscGVyLT5HZXRUZXN0SFRUUEhvc3RuYW1lOwoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbURlbGV0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtRGVsZXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwoKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJFJlcXVlc3RlclNlc3Npb25SZXN1bHQgPSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdC0+UnVuKAogICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBJbnZva2VyICAgICAgPT4gJ1Nlc3Npb25DcmVhdGUnLAogICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgfSwKKTsKCm15ICROZXdTZXNzaW9uSUQgPSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdC0+e0RhdGF9LT57U2Vzc2lvbklEfTsKCiNDb25maWdJdGVtdHMgY29udGFpbmVyICh1c2VmdWxsIGZvciBsb29rdXAgY29tcGFyZSkKbXkgJUFkZGVkQ29uZmlnSXRlbXM7Cm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTItJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0zLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ0hhcmR3YXJlIFZlbmRvcicsCiAgICAgICAgICAgIE1vZGVsICAgICAgICA9PiAnSGFyZHdhcmUgTW9kZWwnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1Rlc2l0bmcgSGFucmR3YXJlJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdDYW1lcmEnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNhbWM0NTYnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnTG9jYXRpb24nLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgID0+ICdCdWlsZGluZycsCiAgICAgICAgICAgIFBob25lMSAgID0+ICcxMjMnLAogICAgICAgICAgICBQaG9uZTIgICA9PiAnNDU2JywKICAgICAgICAgICAgRmF4ICAgICAgPT4gJzc4OScsCiAgICAgICAgICAgICdFLU1haWwnID0+ICdzb2Vtb25lQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgQWRkcmVzcyAgPT4gJ1NvbWUgYWRkcmVzcycsCiAgICAgICAgICAgIE5vdGUgICAgID0+ICdUaGlzIGlzIGEgdGVzdCBsb2NhdGlvbicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdOZXR3b3JrJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS01LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnTmV0d29yayBDSSBmb3IgdGVzdGluZycsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdMQU4nLAogICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjEuMScsCiAgICAgICAgICAgICAgICAgICAgU3VibmV0TWFzayAgICAgPT4gJzI1NS4yNTUuMjU1LjAnLAogICAgICAgICAgICAgICAgICAgIEdhdGV3YXkgICAgICAgID0+ICcxOTIuMS4xLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+ICcxOTIuMS41MC4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjUwLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBOb3RlID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTctJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0Rvd25sb2FkJywKICAgICAgICAgICAgTm90ZSAgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS04LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICAjIFRPRE86IHN3aXRjaCB0byBDb25maWdJdGVtVXBkYXRlKCkgPz8/CiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgIG9rKCAkVmVyc2lvbklELCAiQWRkZWQgdmVyc2lvbiAkVmVyc2lvbklEIiApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtRGVsZXRlIG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtRGVsZXRlLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzBdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEIDEgKHdhcyBhbHJlYWR5IGRlbGV0ZWQgYmVmb3JlKScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbICRBZGRlZENvbmZpZ0l0ZW1JRHNbMV0gXSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1syXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbM10sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzVdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNy04JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBjcmVhdGUgbG9jYWwgb2JqZWN0CiAgICBteSAkTG9jYWxPYmplY3QgPSAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OiRUZXN0LT57T3BlcmF0aW9ufSItPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259IiwKICAgICAgICByZWYgJExvY2FsT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIGxvY2FsIG9iamVjdCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzRGVsZXRlfSApIHsKCiAgICAgICAgIyByZXF1ZXN0ZXIgcmVzdWx0cwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgaXMgbm90IHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgIG15ICRFeHBlY3RlZFJlc3VsdFR5cGUgPSByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9OwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEIHJlZmVyZW5jZS4iLAogICAgICAgICk7CgogICAgICAgIGlmICggJEV4cGVjdGVkUmVzdWx0VHlwZSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRCByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdGVzdHMgc3VwcG9zZWQgdG8gZmFpbAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvck1lc3NhZ2Ugd2l0aCB0cnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7Cgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKbXkgJFVzZXJJRCA9IDE7CgojIGhlbHBlciBvYmplY3QKIyBza2lwIFNTTCBjZXJ0aWNpYXRlIHZlcmlmaWNhdGlvbgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgY2hlY2sgaWYgU1NMIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZAokU2VsZi0+SXMoCiAgICAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9LAogICAgMCwKICAgICdEaXNhYmxlZCBTU0wgY2VydGl0aWNhdGVzIHZlcmlmaWNhdGlvbiBpbiBlbnZpcm9ubWVudCcsCik7CgojIGNyZWF0ZSBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgY3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0Cm15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBzZXQgd2Vic2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJFJhbmRvbUlEOwoKbXkgJFdlYnNlcnZpY2VJRCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgTmFtZSAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyA9PiB7CiAgICAgICAgRGVidWdnZXIgPT4gewogICAgICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIH0sCiAgICAgICAgUHJvdmlkZXIgPT4gewogICAgICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZUlELAogICAgIkFkZGVkIFdlYnNlcnZpY2UiLAopOwoKIyBnZXQgcmVtb3RlIGhvc3Qgd2l0aCBzb21lIHByZWNhdXRpb25zIGZvciBjZXJ0YWluIHVuaXQgdGVzdCBzeXN0ZW1zCm15ICRIb3N0OwpteSAkRlFETiA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwoKIyB0cnkgdG8gcmVzb2x2ZSBmcWRuIGhvc3QKaWYgKCAkRlFETiBuZSAneW91cmhvc3QuZXhhbXBsZS5jb20nICYmIGdldGhvc3RieW5hbWUoJEZRRE4pICkgewogICAgJEhvc3QgPSAkRlFETjsKfQoKIyB0cnkgdG8gcmVzb2x2ZSBsb2NhbGhvc3QgaW5zdGVhZAppZiAoICEkSG9zdCAmJiBnZXRob3N0YnluYW1lKCdsb2NhbGhvc3QnKSApIHsKICAgICRIb3N0ID0gJ2xvY2FsaG9zdCc7Cn0KCiMgdXNlIGhhcmRjb2RlZCBsb2NhbGhvc3QgaXAgYWRkcmVzcwppZiAoICEkSG9zdCApIHsKICAgICRIb3N0ID0gJzEyNy4wLjAuMSc7Cn0KCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yIENvbmZpZ0l0ZW0gQ29ubmVjdG9yIHVzaW5nIFNPQVAgdHJhbnNwb3J0IGJhY2tlbmQuJywKICAgIERlYnVnZ2VyID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgUHJvdmlkZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTBfMDAwXzAwMCwKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Nlc3Npb246OlNlc3Npb25DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgUmVxdWVzdGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCn07CgojIHVwZGF0ZSB3ZWJzZXJ2aWNlIHdpdGggcmVhbCBjb25maWcKbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKI0NvbmZpZ0l0ZW10cyBjb250YWluZXIgKHVzZWZ1bGwgZm9yIGxvb2t1cCBjb21wYXJlKQpteSAlQWRkZWRDb25maWdJdGVtczsKbXkgQEFkZGVkQ29uZmlnSXRlbUlEczsKCiMgQ29uZmlnSXRlbSBzZXR0aW5ncwpteSBAQ29uZmlnSXRlbXMgPSAoCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMS0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0xvMCcsCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUmVwYWlyJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ1dhcm5pbmcnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnTGVub3ZvJywKICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnRGVza3RvcCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgT3BlcmF0aW5nU3lzdGVtID0+ICdDZW50T1MgNi4wJywKICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAyMDAwLAogICAgICAgICAgICBdLAogICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiAnL2RldicsCiAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiA1MDAwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcxOTIuMTY4LjMwLjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBHcmFwaGljQWRhcHRlciA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICBJbnN0YWxsRGF0ZSAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgIE5vdGUgICAgICAgICAgID0+ICdUaGlzIGlzIGEgRGVtbyBDSScsCiAgICAgICAgfSwKICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0LnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0Mi50eHQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnSGFyZHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTMtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnSGFyZHdhcmUgVmVuZG9yJywKICAgICAgICAgICAgTW9kZWwgICAgICAgID0+ICdIYXJkd2FyZSBNb2RlbCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnVGVzaXRuZyBIYW5yZHdhcmUnLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0NhbWVyYScsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM2FtYzQ1NicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdMb2NhdGlvbicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNC0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0J1aWxkaW5nJywKICAgICAgICAgICAgUGhvbmUxICAgPT4gJzEyMycsCiAgICAgICAgICAgIFBob25lMiAgID0+ICc0NTYnLAogICAgICAgICAgICBGYXggICAgICA9PiAnNzg5JywKICAgICAgICAgICAgJ0UtTWFpbCcgPT4gJ3NvZW1vbmVAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBBZGRyZXNzICA9PiAnU29tZSBhZGRyZXNzJywKICAgICAgICAgICAgTm90ZSAgICAgPT4gJ1RoaXMgaXMgYSB0ZXN0IGxvY2F0aW9uJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ05ldHdvcmsnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTUtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdOZXR3b3JrIENJIGZvciB0ZXN0aW5nJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0xBTicsCiAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiAnMTkyLjEuMS4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjEuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjUwLjEnLAogICAgICAgICAgICAgICAgICAgIFN1Ym5ldE1hc2sgICAgID0+ICcyNTUuMjU1LjI1NS4wJywKICAgICAgICAgICAgICAgICAgICBHYXRld2F5ICAgICAgICA9PiAnMTkyLjEuNTAuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE5vdGUgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS02LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtR2V0IG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwgXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzNdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCA1JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1s0XSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEtNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFxAQWRkZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzR2V0fSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbSBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZSBpcyBub3QgZW1wdHkuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBteSAkRXhwZWN0ZWRSZXN1bHRUeXBlID0gcmVmICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB8fCAnSEFTSCc7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW0gcmVmZXJlbmNlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgbG9vcCBhbGwgQ29uZmlnSXRlbUlEcyBpbiB0aGUgcmVzcG9uc2UKICAgICAgICAgICAgZm9yIG15ICRDb3VudGVyICggMCAuLiBzY2FsYXIgQHsgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9IH0gLSAxICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LT5bJENvdW50ZXJdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1zeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW1JRH0tPlskQ291bnRlcl0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IG1hdGNoIENvbmZpZ0l0ZW0tPlskQ291bnRlcl0gJEF0dHJpYnV0ZSBjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgZGF0YS4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgdGhlIG9ubHkgMSByZXN1bHQKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfS0+WzBdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB9LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2ggQ29uZmlnSXRlbSAkQXR0cmlidXRlIGNyZWF0ZSBkYXRhLiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbWFrZSBSZXF1ZXN0ZXIgcmVzdWx0IGFuIGFycmF5IGZvciBlYXN5IGNvbXBhcmUKICAgICAgICAgICAgbXkgJFJlcXVlc3RlckNvbmZpZ0l0ZW0gPSBkZWxldGUgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbX07CiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ID0gWyRSZXF1ZXN0ZXJDb25maWdJdGVtXTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIGNvbmZpZyBpdGVtIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBmYWlsCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfQogICAgICAgICAgICAgICAgLiAnOiAnCiAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAuICIgb2YgRXJyb3JDb2RlIGFuZCBFcnJvck1lc3NhZ2Ugd2l0aGluIERhdGEgaGFzaC4iLAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgICAgICMgcmVzdWx0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBTT0FQIGNhbGwgcmVzdWx0CiAgICAgICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgICAgICB9CgogICAgICAgICMgc2FuaXR5IGNoZWNrCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvTWVzc2FnZSAob3V0c2lzZSBEYXRhIGhhc2gpIGdvdCByZW1vdmVkIHRvIGNvbXBhcmUiCiAgICAgICAgICAgICAgICAuICIgbG9jYWwgYW5kIHJlbW90ZSB0ZXN0cy4iLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJUFkZGVkQ29uZmlnSXRlbXMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVjawogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3NEZWxldGUsCiAgICAgICAgIlN1Y2Nlc3NEZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgU3RvcmFibGU7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKIyBUT0RPOiB3aHkgaXMgJFNlbGYtPntVc2VySUR9IHVzZWQgYXMgd2VsbD8KbXkgJFRlc3RVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIGdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMKbXkgJEhvc3Q7Cm15ICRGUUROID0gJENvbmZpZ09iamVjdC0+R2V0KCdGUUROJyk7CgojIHRyeSB0byByZXNvbHZlIGZxZG4gaG9zdAppZiAoICRGUUROIG5lICd5b3VyaG9zdC5leGFtcGxlLmNvbScgJiYgZ2V0aG9zdGJ5bmFtZSgkRlFETikgKSB7CiAgICAkSG9zdCA9ICRGUUROOwp9CgojIHRyeSB0byByZXNvbHZlIGxvY2FsaG9zdCBpbnN0ZWFkCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyB1c2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CgogICAgIyAgICBOYW1lID0+ICcnLAogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1TZWFyY2ggPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7Cm15ICRQYXNzd29yZCA9ICRVc2VyTG9naW47CgojIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07CgojQ29uZmlnSXRlbXRzIGNvbnRhaW5lciAodXNlZnVsbCBmb3IgbG9va3VwIGNvbXBhcmUpCm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0yLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdSZXBhaXInLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnQXBwbGUnLAogICAgICAgICAgICBNb2RlbCAgICAgICAgICAgPT4gJ2lNYWMnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ0FwcGxlIENvbXB1dGVyJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgT3duZXIgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ09TWCAxMC44LjMnLAogICAgICAgICAgICBDUFUgICAgICAgICAgICAgPT4gJ0ludGVsIENvcmUgaTMnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgIDIwMDAsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgIENhcGFjaXR5ID0+IDgwMDAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGUUROID0+ICdob3RzLmV4YW1wbGUuY29tJywKICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRW4wJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0VuMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ252aWRpYScsCiAgICAgICAgICAgIEluc3RhbGxEYXRlICAgID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgTm90ZSAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICB9LAogICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTEnLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMy0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0NELVJPTScsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCmZvciBteSAkQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1zKSB7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkQ29uZmlnSXRlbSA9IFN0b3JhYmxlOjpkY2xvbmUoJENvbmZpZ0l0ZW0pOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgICMgYWRkIG5ldyBDb25maWdJdGVtcwogICAgbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDbG9uZWRDb25maWdJdGVtLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIC0gJENyZWF0ZVJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgcHVzaCBAQWRkZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgfQp9CgojIGFjdHVhbCB0ZXN0cyBmb3IgQ29uZmlnSXRlbVNlYXJjaCBvcGVyYXRpb24KbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBUZXN0ID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtIGZvcm1hdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTm9uRXhpc3RpbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgPT4gJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+SW5jaVN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEIF0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZXMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5EZXBsU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+RGVwbFN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgPT4gWyAnUHJvZHVjdGlvbicsICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCBdLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5PcmRlckJ5IEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLldyb25nU3RydWN0dXJlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPk9yZGVyQnlEaXJlY3Rpb24gSEFTSCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+TGltaXQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgICAgICAgICAgICA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbmxpbWl0ZWQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhIEdlbmVyYWwgQ2F0YWxvZycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENJWE1MRGF0YSBUZXh0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnYScgeCA1MSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgTnVtYmVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciAgICAgPT4gJ2EnIHggNTAsCiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ID0+ICdOb3RFeGlzdGluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBObyBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSwgJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBTb2Z0d2FyZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSA9PiBbICczJywgJzQnIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzJdLCAkQWRkZWRDb25maWdJdGVtSURzWzNdIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkVGVzdC0+e1JlcXVlc3REYXRhfSApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXN0b3JlIGNsb25lZCBkYXRhCiAgICAkVGVzdC0+e1JlcXVlc3REYXRhfSA9ICRDbG9uZWRSZXF1ZXN0RGF0YTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzU2VhcmNofSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSURzIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc30gKSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgSXNOdW1iZXIoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBudW1iZXIgd2l0aCB0cnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2UgUmVxdWVzdGVyIHJlc3VsdCBhbiBhcnJheSBmb3IgZWFzeSBjb21wYXJlCiAgICAgICAgICAgIG15ICRSZXF1ZXN0ZXJDb25maWdJdGVtSURzID0gZGVsZXRlICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9OwogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSA9IFskUmVxdWVzdGVyQ29uZmlnSXRlbUlEc107CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaCBleHBlY3RlZCBkYXRhLiIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9ICAgICNlbmQgbG9vcAoKIyBjbGVhbiB1cAoKIyBjbGVhbiB1cCB3ZWJzZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBBZGRlZENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU3VjY2Vzc0RlbGV0ZSwKICAgICAgICAiU3VjY2Vzc0RlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICApOwp9CgojZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemUpdate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgZ2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcwpteSAkSG9zdDsKbXkgJEZRRE4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKCiMgdHJ5IHRvIHJlc29sdmUgZnFkbiBob3N0CmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgdHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQKaWYgKCAhJEhvc3QgJiYgZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JykgKSB7CiAgICAkSG9zdCA9ICdsb2NhbGhvc3QnOwp9CgojIHVzZSBoYXJkY29kZWQgbG9jYWxob3N0IGlwIGFkZHJlc3MKaWYgKCAhJEhvc3QgKSB7CiAgICAkSG9zdCA9ICcxMjcuMC4wLjEnOwp9CgojIHByZXBhcmUgd2Vic2VydmljZSBjb25maWcKbXkgJFJlbW90ZVN5c3RlbSA9CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKQogICAgLiAnL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8nCiAgICAuICRXZWJzZXJ2aWNlSUQ7CgpteSAkV2Vic2VydmljZUNvbmZpZyA9IHsKCiAgICAjICAgIE5hbWUgPT4gJycsCiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKIyBjcmVhdGUgYSBuZXcgY29uZmlnIGl0ZW0gd2l0aCB0aGUgYmFzaWMgb3B0aW9ucwpteSAkQ29uZmlnSXRlbSA9IHsKICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICBOSUMgPT4gewogICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgfSwKICAgIH0sCn07CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiAgPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgID0+ICRQYXNzd29yZCwKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgfSwKKTsKCm15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKJFNlbGYtPlRydWUoCiAgICAkQ29uZmlnSXRlbUlELAogICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCAtICRDcmVhdGVSZXN1bHQtPntEYXRhfS0+e051bWJlcn0iLAopOwoKIyBhY3R1YWwgdGVzdHMKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IDEsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtSUQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOYW1lJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5OSUMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQyBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgTklDLT5JcE92ZXJESENQIEdlbmVyYWwgQ2F0YWxvZyBpbiBIYXNoJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gQXJyYXkgSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIFZlbmRvciBMb25nIFRleHQgJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ2EnIHggNTEsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE93bmVyIEN1c3RvbWVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIEF0dGFjaG1lbnQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yICAgICAgICAgID0+ICdMZW5vdm8nLAogICAgICAgICAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ0NlbnRPUyA2LjAnLAogICAgICAgICAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJzQwMDAnLAogICAgICAgICAgICAgICAgICAgICAgICAnMjAwMCcsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gJzUwMDAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgICAgICAgICA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCik7CgojIHN0YXJ0IHRlc3RpbmcKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBkY2xvbmUoICRUZXN0LT57UmVxdWVzdERhdGF9ICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlc3RvcmUgY2xvbmVkIGRhdGEKICAgICRUZXN0LT57UmVxdWVzdERhdGF9ID0gJENsb25lZFJlcXVlc3REYXRhOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkTG9jYWxSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFVwZGF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkTmV3U2Vzc2lvbklELAogICAgICAgICAgICAleyAkVGVzdC0+e1JlcXVlc3REYXRhfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IiwKICAgICk7CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBzdWNjZWVkCiAgICBpZiAoICRUZXN0LT57U3VjY2Vzc1VwZGF0ZX0gKSB7CgogICAgICAgICMgbG9jYWwgcmVzdWx0cwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IEVycm9yIGlzIHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBDb25maWdJdGVtIGVudHJ5IChmcm9tIGxvY2FsIHJlc3VsdCkKICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJExvY2FsVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgbG9jYWwgdmVyc2lvbiBzdHJjdHVyZSB3aXRoIFRydWUuIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIGl0ZW0gZW50cnkgKGZyb20gcmVxdWVzdGVyIHJlc3VsdCkKICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkUmVxdWVzdGVyVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgcmVxdWVzdGVyIGNvbmZpZyBpdGVtIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSB0ZXN0CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0CiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIHJlc3VsdAogICAgICAgIG15ICRDbG9uZWRYTUxEYXRhID0gZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgIG15ICRGb3JtYXRlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydEZvcm1hdFhNTERhdGEoCiAgICAgICAgICAgIFhNTERhdGEgPT4gJENsb25lZFhNTERhdGEtPlsxXS0+e1ZlcnNpb259LAogICAgICAgICk7CgogICAgICAgIG15ICRSZXBsYWNlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydFJlcGxhY2VYTUxEYXRhKAogICAgICAgICAgICBYTUxEYXRhICAgID0+ICRGb3JtYXRlZFhNTERhdGEsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBjb21wYXJlIFhNTCBkYXRhCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkUmVwbGFjZWRYTUxEYXRhLAogICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT5DSVhNTERhdGEgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBhdHRhY2htZW50cwogICAgICAgIGlmICggZGVmaW5lZCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9ICkgewogICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkRmlsZU5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBuZXh0IGlmIG5vdCBhdHRhY2htZW50CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBiYXNlNjQKICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9LCAnJyApOwoKICAgICAgICAgICAgICAgICMgZGVsZXRlIG5vdCBuZWVkZWQgYXR0aWJ1dGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoUHJlZmVyZW5jZXMgRmlsZXNpemUgVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEF0dGFjaG1lbnQtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICBpZiAoIHJlZiAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJlcXVlc3RlZEF0dGFjaG1lbnRzLCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAUmVxdWVzdGVkQXR0YWNobWVudHMgPSBAeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgIFxAUmVxdWVzdGVkQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGxvY2FsIENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFZlcnNpb25EYXRhLAogICAgICAgICAgICAkUmVxdWVzdGVyVmVyc2lvbkRhdGEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9CgojIGNsZWFuIHVwIGNvbmZpZyBpdGVtcwpteSAkQ29uZmlnSXRlbURlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiMgc2FuaXR5IGNoZWNrCiRTZWxmLT5UcnVlKAogICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAiQ29uZmlnSXRlbURlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCik7CgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkVXNlck9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY3JlYXRlIG5lZWRlZCB1c2VycwpteSBAVXNlcklEczsKewoKICAgICMgZGlzYWJsZSBlbWFpbCBjaGVja3MgdG8gY3JlYXRlIG5ldyB1c2VyCiAgICBteSAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZyA9ICRDb25maWdPYmplY3QtPkdldCgnQ2hlY2tFbWFpbEFkZHJlc3NlcycpIHx8IDE7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwoKICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gMyApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHVzZXJzIGZvciB0aGUgdGVzdHMKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJ0lUU01Db25maWdJdGVtJyAuICRDb3VudGVyLAogICAgICAgICAgICBVc2VyTGFzdG5hbWUgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJ1VuaXRUZXN0LUlUU01Db25maWdJdGVtLScgLiAkQ291bnRlciAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAnVW5pdFRlc3QtSVRTTUNvbmZpZ0l0ZW0tJyAuICRDb3VudGVyIC4gJ0Bsb2NhbGhvc3QnLAogICAgICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgICAgIENoYW5nZVVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBVc2VySURzLCAkVXNlcklEOwogICAgfQoKICAgICMgcmVzdG9yZSBvcmlnaW5hbCBlbWFpbCBjaGVjayBwYXJhbQogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgICAgICBWYWx1ZSA9PiAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZywKICAgICk7Cn0KCm15ICRUZXN0SURTdWZmaXggPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpteSAkT3JkZXIgICAgICAgID0gMTAwMDA7CgpteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCiAgICBUZXN0MSA9PiB7CiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgPT4gJycsCiAgICAgICAgJ1JlZ0V4TGlzdCcgICAgPT4gW10sCiAgICAgICAgJ011bHRpVmFsdWUnICAgPT4gJzAnLAogICAgICAgICdMaW5rJyAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgID0+ICcnLAogICAgICAgICdMaW5rUHJldmlldycgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgID0+ICdUZXh0JwogICAgfSwKICAgIFRlc3QyID0+IHsKICAgICAgICAnTGluaycgICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICA9PiAnMScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgPT4gJzEnLAogICAgICAgICdEZWZhdWx0VmFsdWUnICAgICAgID0+ICcnLAogICAgICAgICdUcmFuc2xhdGFibGVWYWx1ZXMnID0+ICcwJywKICAgICAgICAnUG9zc2libGVWYWx1ZXMnICAgICA9PiB7CiAgICAgICAgICAgICdWQUxVRSAxJyA9PiAnVkFMVUUgMScsCiAgICAgICAgICAgICdWQUxVRSAyJyA9PiAnVkFMVUUgMicKICAgICAgICB9LAogICAgICAgICdUcmVlVmlldycgICAgPT4gJzEnLAogICAgICAgICdMaW5rUHJldmlldycgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICA9PiAnRHJvcGRvd24nCiAgICB9LAogICAgVGVzdDMgPT4gewogICAgICAgICdZZWFyc0luRnV0dXJlJyAgID0+ICc1JywKICAgICAgICAnRGF0ZVJlc3RyaWN0aW9uJyA9PiAnJywKICAgICAgICAnWWVhcnNQZXJpb2QnICAgICA9PiAnMCcsCiAgICAgICAgJ0xpbmtQcmV2aWV3JyAgICAgPT4gJycsCiAgICAgICAgJ1llYXJzSW5QYXN0JyAgICAgPT4gJzUnLAogICAgICAgICdNdWx0aVZhbHVlJyAgICAgID0+ICcwJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyAgICA9PiAwLAogICAgICAgICdMaW5rJyAgICAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgICAgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgICAgID0+ICdEYXRlJwogICAgfSwKICAgIFRlc3Q0ID0+IHsKICAgICAgICAnQ29scycgICAgICAgICA9PiAnJywKICAgICAgICAnUm93cycgICAgICAgICA9PiAnJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyA9PiAnJywKICAgICAgICAnUmVnRXhMaXN0JyAgICA9PiBbXSwKICAgICAgICAnTXVsdGlWYWx1ZScgICA9PiAnMCcsCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICAgPT4gJ1RleHRBcmVhJwogICAgfSwKICAgIFRlc3Q1ID0+IHsKICAgICAgICAnWWVhcnNJbkZ1dHVyZScgICA9PiAnNScsCiAgICAgICAgJ0RhdGVSZXN0cmljdGlvbicgPT4gJycsCiAgICAgICAgJ1llYXJzUGVyaW9kJyAgICAgPT4gJzAnLAogICAgICAgICdMaW5rUHJldmlldycgICAgID0+ICcnLAogICAgICAgICdZZWFyc0luUGFzdCcgICAgID0+ICc1JywKICAgICAgICAnTXVsdGlWYWx1ZScgICAgICA9PiAnMCcsCiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgICAgPT4gMCwKICAgICAgICAnTGluaycgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICA9PiAnJywKICAgICAgICAnRmllbGRUeXBlJyAgICAgICA9PiAnRGF0ZVRpbWUnCiAgICB9LAopOwoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgIG15ICRERk5hbWUgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7CiAgICBteSAkSXRlbUlEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkREZOYW1lLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJE9yZGVyKyssCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LAogICAgICAgIFJlb3JkZXIgICAgICAgPT4gMSwKICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7Cn0KCm15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKIyBkZWZpbmUgdGhlIGZpcnN0IHRlc3QgZGVmaW5pdGlvbiAoYmFzaWMgZGVmaW5pdGlvbiB3aXRob3V0IER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzBdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgc2Vjb25kIHRlc3QgZGVmaW5pdGlvbiAoZGVmaW5pdGlvbiB3aXRoIER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzFdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MSRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MiRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKfQoiOwoKIyBkZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiAoZXNwZWNpYWxseSBmb3Igc2VhcmNoIHRlc3RzIHdpdGggWE1MRGF0YSkKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMl0gPSAiCnsKICAgICAgICBQYWdlcyAgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50JywKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA9PiAyLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnIgMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24yJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDIkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VjdGlvbjIgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDMkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBmb3VydGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzNdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgZmlmdGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1s0XSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q1JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBzaXh0aCB0ZXN0IGRlZmluaXRpb24gKG9ubHkgZm9yIHNlYXJjaCB0ZXN0cykKCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzVdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAp9CiI7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgpteSBAQ29uZmlnSXRlbURlZmluaXRpb25zOwpmb3IgbXkgJFBlcmxEZWZpbml0aW9uIChAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucykgewogICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiBldmFsICRQZXJsRGVmaW5pdGlvbiwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICApOwogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25zLCAkWUFNTERlZmluaXRpb247Cn0KCiMgYWRkIGEgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICApOwoKICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXJzLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25UcmlnZ2VyJywKICAgICAgICBWYWx1ZSAgPT4gWyAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcgXSwKICAgICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ2xhc3NJRDsKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc2VzLCAgJENsYXNzTmFtZTsKCiAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAgICAgICdhZGRlZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbicgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBhIGRlZmluaXRpb24gSUQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9Owp9CgojIHRlc3QgRGVmaW5pdGlvbkxpc3QgZm9yIHRob3NlIHNpbXBsZSBjYXNlcwpteSAkQ291bnRlciA9IDA7CmZvciBteSAkQ2xhc3NJRCAoQENvbmZpZ0l0ZW1DbGFzc0lEcykgewogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25MaXN0KAogICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICApOwoKICAgICMgZXhwZWN0IGEgc2luZ2xlIGRlZmluaXRpb24gcGVyIGNvbmZpZyBpdGVtIGNsYXNzCiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyIEB7JERlZmluaXRpb25MaXN0UmVmfSwKICAgICAgICAxLAogICAgICAgICJEZWZpbml0aW9uTGlzdCgpIGZvciBjbGFzcyBpZCAkQ2xhc3NJRDogZ290IGEgc2luZ2xlIHJlc3VsdCIsCiAgICApOwoKICAgICMgZXhwZWN0IHRoZSByZW1lbWJlcmVkIGRlZmluaXRpb24gaWQgaW4gdGhlIGZpcnN0IGRlZmluaXRpb24KICAgICRTZWxmLT5JcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3RSZWYtPlswXS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWyRDb3VudGVyXSwKICAgICAgICAiRGVmaW5pdGlvbkxpc3QoKSBmb3IgY2xhc3MgaWQgJENsYXNzSUQ6IGdvdCBleHBlY3RlZCBkZWZpbml0aW9uIGlkIiwKICAgICk7CgogICAgJENvdW50ZXIrKzsKfQoKIyBjcmVhdGUgc29tZSByYW5kb20gbnVtYmVycwpteSBAQ29uZmlnSXRlbU51bWJlcnM7CmZvciAoIDEgLi4gMTAwICkgewogICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRIZWxwZXItPkdldFJhbmRvbU51bWJlcigpOwp9CgojIGdldCBjbGFzcyBsaXN0Cm15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKKTsKCiMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdApteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAopOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRDb25maWdJdGVtVGVzdHMgPSBbCgogICAgI0NvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIENvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWy0xXSArIDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgcmV0dXJuZWQgY29uZmlnIGl0ZW0gdmFsdWVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgbnVtYmVyIGF0dHJpYnV0ZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIHdpdGggdGhpcyBudW1iZXIgYWxyZWFkeSBleGlzdHMgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMyIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIGNvbmZpZyBpdGVtIHZhbHVlcyBhcmUgZ2l2ZW4gcGx1cyBub3QgZGVmaW5lZCBEeW5hbWljRmllbGRzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzM1XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAzNSIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1szNV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtVXBkYXRlIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpIChNaXNzaW5nIFVzZXJJRCkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBkZXBsb3ltZW50IHN0YXRlIGlkIGlzIGdpdmVuIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA1IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDUiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBpbmNpZGVudCBzdGF0ZSBpZCBpcyBnaXZlbiAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChnZW5lcmFsIGNoZWNrIHdpdGggdHdvIHZlcnNpb25zKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA3IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDkgVmVyc2lvbiAyIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDgiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIENvbmZpZ0l0ZW0gMTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0gLSA1MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSAtIDUxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDIiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTEgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUxIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cywgaW5jbHVkaW5nIER5bmFtaWNGaWVsZERhdGEKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSAtIDUzIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIENvbmZpZ0l0ZW0gNTMgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDEkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBmaWVsZCBUZXN0MScsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzVdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSBDb25maWdJdGVtIDUzIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s1XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBhcmVhIGZpZWxkIFRlc3Q0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzLCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkRGF0YQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9IC0gNTIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzJdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMsIGluY2x1ZGluZyBEeW5hbWljRmllbGREYXRhCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzgwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzRdIH0gLSA4MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gQ29uZmlnSXRlbSA4MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wMS0wMSAxMjowMDowMCcKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbODBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSBDb25maWdJdGVtIDgwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s0XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cwogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9IC0gNjAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbM10gQ29uZmlnSXRlbSA2MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBDb25maWdJdGVtIDYwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbM10sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCB0byBjaGVjayBoaXN0b3J5IGZ1bmN0aW9ucwogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNzAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSGlzdG9yeVRlc3QnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBIaXN0b3J5VGVzdCcsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UGxhbm5lZH0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUGxhbm5lZCcsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJlcHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhpc3RvcnlHZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiA2LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnNDE5NgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIEJ1Z2ZpeDQxOTYiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0MTk2JywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1BCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcyXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUEiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1CCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzczXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgpdOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHJ1biBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRUZXN0Q291bnQgPSAxOwpteSBAQ29uZmlnSXRlbUlEczsKClRFU1Q6CmZvciBteSAkVGVzdCAoIEB7JENvbmZpZ0l0ZW1UZXN0c30gKSB7CgogICAgIyBjaGVjayBTb3VyY2VEYXRhIGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntTb3VyY2VEYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VEYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBObyBTb3VyY2VEYXRhIGZvdW5kIGZvciB0aGlzIHRlc3QuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgIyBleHRyYWN0IHNvdXJjZSBkYXRhCiAgICBteSAkU291cmNlRGF0YSA9ICRUZXN0LT57U291cmNlRGF0YX07CgogICAgIyBhZGQgYSBuZXcgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gKSB7CgogICAgICAgICMgYWRkIHRoZSBuZXcgY29uZmlnIGl0ZW0KICAgICAgICAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICV7ICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENvbmZpZ0l0ZW1BZGQoKSAtIEFkZCBuZXcgY29uZmlnIGl0ZW0uIEluc2VydCBzdWNjZXNzLiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUlEOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUFkZCgpIC0gQWRkIG5ldyBjb25maWcgaXRlbS4gUmV0dXJuIGZhbHNlLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZGVmaW5lZCB2ZXJzaW9ucwogICAgbXkgQFZlcnNpb25JRHM7CiAgICBteSAlVmVyc2lvbklEc1NlZW47CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0gKSB7CgogICAgICAgIGZvciBteSAkVmVyc2lvbiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0tPkAqICkgewoKICAgICAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSBsYXN0IHZlcnNpb24gaWQgYmVmb3JlIENvbmZpZ0l0ZW1VcGRhdGUKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICV7JFZlcnNpb259LAogICAgICAgICAgICAgICAgRm9yY2VBZGQgPT4gMQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIGxhc3QgdmVyc2lvbiBpZCBhZnRlciBDb25maWdJdGVtVXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBpZiAoICRWZXJzaW9uSUQgbmUgJExhc3RWZXJzaW9uSUQgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbklEIGlmICEkVmVyc2lvbklEc1NlZW57JFZlcnNpb25JRH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkQ29uZmlnSXRlbURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gZ2V0IGNvbmZpZyBpdGVtIGRhdGEuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBhbGwgY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0gfSApIHsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57JEF0dHJpYnV0ZX0gPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0NvbmZpZ0l0ZW1HZXR9LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0tPnskQXR0cmlidXRlfSA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgYXR0cmlidXRlcwogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbURhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gJEF0dHJpYnV0ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSB2ZXJzaW9ucwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQFZlcnNpb25JRHMsCiAgICAgICAgICAgIHNjYWxhciBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfSwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbVVwZGF0ZSgpIC0gY29ycmVjdCBudW1iZXIgb2YgdmVyc2lvbnMiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1JRDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgIHNjYWxhciBAVmVyc2lvbklEcywKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIC0gbm8gdmVyc2lvbnMgZXhpdHMiLAogICAgICAgICk7CiAgICB9CgogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9OwogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH07CgogICAgbXkgJENvdW50ZXIgICAgICAgICAgID0gMDsKICAgIG15ICRMYXN0VmVyc2lvbklETXVzdCA9ICdVTkRFRi11bml0dGVzdCc7CgogICAgIyBSZWZyZXNoIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBjYWNoZSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBwcmV2aW91c2x5IGNhY2hlZCB2YWx1ZXMuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnLAogICAgKTsKCiAgICBWRVJTSU9OSUQ6CiAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKCiAgICAgICAgIyBnZXQgdGhpcyB2ZXJzaW9uCiAgICAgICAgbXkgJFZlcnNpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFZlcnNpb25EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSBnZXQgdmVyc2lvbiBkYXRhLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVkVSU0lPTklEOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGxhc3QgdmVyc2lvbiBpZAogICAgICAgICRMYXN0VmVyc2lvbklETXVzdCA9ICRWZXJzaW9uRGF0YS0+e1ZlcnNpb25JRH07CgogICAgICAgICMgY2hlY2sgYWxsIHZlcnNpb24gYXR0cmlidXRlcwogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntWZXJzaW9uR2V0fS0+WyRDb3VudGVyXSB9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBuZWVkZWQgYXR0cmlidXRlcwogICAgICAgICAgICBteSAkVmVyc2lvbkF0dHJpYnV0ZSAgID0gJFZlcnNpb25EYXRhLT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0tPlskQ291bnRlcl0tPnskQXR0cmlidXRlfTsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRWZXJzaW9uQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFJlZmVyZW5jZUF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGF0dHJpYnV0ZXMKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAkUmVmZXJlbmNlQXR0cmlidXRlLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSAkQXR0cmlidXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyBwcmVwYXJlIGxhc3QgdmVyc2lvbiBpZAogICAgbXkgJExhc3RWZXJzaW9uSURBY3R1YWwgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgaWYgKCAkQ29uZmlnSXRlbURhdGEtPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAkTGFzdFZlcnNpb25JREFjdHVhbCA9ICRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9OwogICAgfQoKICAgICMgY2hlY2sgbGFzdCB2ZXJzaW9uIGlkCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgJExhc3RWZXJzaW9uSURNdXN0LAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IGxhc3QgdmVyc2lvbiBpZCBpZGVudGljYWwiLAogICAgKTsKCiAgICAjIGNoZWNrIGhpc3RvcnkgZW50cmllcwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0gfQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkQ29tcGxldGVIaXN0b3J5ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbnIgb2YgaGlzdG9yeSBlbnRyaWVzCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0hpc3RvcnlHZXR9IH0sCiAgICAgICAgICAgIHNjYWxhciBAeyRDb21wbGV0ZUhpc3Rvcnl9LAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBuciBvZiBoaXN0b3J5IGVudHJpZXMiLAogICAgICAgICk7CgogICAgICAgICMgQ0hFQ0tOUjogZm9yIG15ICRDaGVja05yICggMCAuLiAkI3skQ29tcGxldGVIaXN0b3J5fSApIHsKICAgICAgICAjICAgICBteSAkQ2hlY2sgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0tPlskQ2hlY2tOcl07CiAgICAgICAgIyAgICAgbXkgJERhdGEgID0gJENvbXBsZXRlSGlzdG9yeS0+WyRDaGVja05yXTsKCiAgICAgICAgIyAgICAgbmV4dCBDSEVDS05SIGlmICEoICRDaGVjayAmJiAkRGF0YSApOwoKICAgICAgICAjICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRDaGVja30gKSB7CgogICAgICAgICMgICAgICAgICAjIGNoZWNrIGhpc3RvcnkgZGF0YQogICAgICAgICMgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgIyAgICAgICAgICAgICAkQ2hlY2stPnskS2V5fSwKICAgICAgICAjICAgICAgICAgICAgICREYXRhLT57JEtleX0sCiAgICAgICAgIyAgICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkS2V5IiwKICAgICAgICAjICAgICAgICAgKTsKICAgICAgICAjICAgICB9CiAgICAgICAgIyB9CiAgICB9Cn0KY29udGludWUgewogICAgJFRlc3RDb3VudCsrOwp9CgojIEZvbGxvd2luZyBzZWN0aW9uIGlzIHBlbmRpbmcgZm9yIGNoZWNrIGFmdGVyIG5vcm1hbGl6ZSBkZQojIEluY2lkZW50IHJlY2FsY3VsYXRpb24gZnVuY2lvbgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZm9yIGJ1Z2ZpeCA0Mzc3CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgewoKIyAgICAgbXkgJENJMSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAojICAgICApOwoKIyAgICAgbXkgJENJMiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAojICAgICApOwoKIyAgICAgIyBsaW5rIHRoZSBDSSB3aXRoIGEgQ0kKIyAgICAgbXkgJExpbmtSZXN1bHQgPSAkTGlua09iamVjdC0+TGlua0FkZCgKIyAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAojICAgICAgICAgU291cmNlS2V5ICAgID0+ICRDSTEsCiMgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKIyAgICAgICAgIFRhcmdldEtleSAgICA9PiAkQ0kyLAojICAgICAgICAgVHlwZSAgICAgICAgID0+ICdEZXBlbmRzT24nLAojICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMQojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQScsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTIKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgaXMgJ1dhcm5pbmcnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdXYXJuaW5nJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIHVwZGF0ZSBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgdG8gJ0luY2lkZW50JwojICAgICAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yIENJICRDSTIgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTIiLAojICAgICApOwoKIyAgICAgIyB1cGRhdGUgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIHRvICdPcGVyYXRpb25hbCcKIyAgICAgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAojICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKIyAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAojICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIHZlcnNpb24gY291bGQgYmUgYWRkZWQKIyAgICAgJFNlbGYtPlRydWUoCiMgICAgICAgICAkVmVyc2lvbklELAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIGZvciBDSSAkQ0kxIC0gU2V0IHRvICdPcGVyYXRpb25hbCciLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTEKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTEgaXMgJ1dhcm5pbmcnIChiZWNhdXNlIG9mIGxpbmtlZCBDSTIgaW4gc3RhdGUgJ2luY2lkZW50JykKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ1dhcm5pbmcnLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBDSSAkQ0kxIiwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMiB0byAnT3BlcmF0aW9uYWwnCiMgICAgICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQzNzcgLSBDSS1CJywKIyAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiMgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKIyAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiB2ZXJzaW9uIGNvdWxkIGJlIGFkZGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25JRCwKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSBmb3IgQ0kgJENJMiAtIFNldCB0byAnT3BlcmF0aW9uYWwnIiwKIyAgICAgKTsKCiMgICAgICMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgQ0kxCiMgICAgICRWZXJzaW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIGlzICdPcGVyYXRpb25hbCcKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnV2FybmluZycKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGZvciBidWdmaXggMTAzNTYKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyB7CgojICAgICBteSAkQ0kxID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiMgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1s3Ml0sCiMgICAgICk7CgojICAgICAjIGFkZCBhIHZlcnNpb24sIHNldCBpbmNpZGVudCBzdGF0ZSB0byBpbmNpZGVudAojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXgxMDM1NicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBkZWxldGUgdGhlIGxhc3QgdmVyc2lvbgojICAgICBteSAkVmVyc2lvbkRlbGV0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKIyAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvblJlZi0+e1ZlcnNpb25JRH0sCiMgICAgICAgICBVc2VySUQgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBkZWxldGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25EZWxldGVTdWNjZXNzLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkRlbGV0ZSgpIGZvciAkQ0kxJyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgaGlzdG9yeQojICAgICBteSAkSGlzdG9yeVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICBteSAkTGFzdEhpc3RvcnlFbnRyeSA9IHBvcCBAeyRIaXN0b3J5UmVmfTsKCiMgICAgICMgY2hlY2sgaWYgbGFzdCBoaXN0b3J5IGVudHJ5IGhhcyB0aGUgY29ycmVjdCBoaXN0b3J5IHR5cGUKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJExhc3RIaXN0b3J5RW50cnktPntIaXN0b3J5VHlwZX0sCiMgICAgICAgICAnVmVyc2lvbkRlbGV0ZScsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBIaXN0b3J5VHlwZSBvZiBsYXN0IHZlcnNpb24gb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBkZWZpbmUgZ2VuZXJhbCBjb25maWcgaXRlbSBzZWFyY2ggdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKbXkgQFNlYXJjaFRlc3RzID0gKAoKICAgICMgc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBudW1iZXIgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG51bWJlciBwYXJhbSB3aXRoIHdpbGRjYXJkcwogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE51bWJlciA9PiAnJScgLiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdIC4gJyUnLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbnVtYmVyIHBhcmFtIHdpdGggd2lsZGNhcmRzIGJ1dCB3aXRoIGludmFsaWQgQ29uZmlnSXRlbSBudW1iZXIKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJyVkdW1teW5hbWUlJywKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBSZXN1bHQgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgI3Rlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSBdLAogICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICN0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEwMCwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAzLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgID0+ICdVcCcKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGltaXQgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgTGltaXQgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAwLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMgdXNpbmcgdGhlIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgbmFtZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MiBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIGFuIHdpbGRjYXJkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ1VuaXRUZXN0IC0gKiAxJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0gd2l0aCBhbiB3aWxkY2FyZCBhbmQgYSBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSAqIDEnLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBuYW1lIHBhcmFtIHdpdGggd2lsZGNhcmRzCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIHdpbGRjYXJkcyBidXQgd2l0aCBkZWFjdGl2YXRlZCB3aWxkY2FyZCBmZWF0dXJlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGFzdCB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgUHJldmlvdXNWZXJzaW9uU2VhcmNoIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAxMDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDMsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyAgICAgICAgICA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICAgICAgID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgICAgICAgICAgPT4gWyAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9IF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgICAgICAgID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0IHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvcionIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlIChub3QgZXhpc3RpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdVbmtub3duIGRhdGEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgYXJlYSBmaWVsZCBUZXN0NCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0QXJlYSB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBsaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1M10sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkIHVzaW5nIGxpa2UgKG5vdCBleGlzdGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiB7IExpa2UgPT4gJ1Vua25vd24gZGF0YSonIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0MyRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTA5LTAxIDAwOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGUgdHlwZSBEeW5hbWljRmllbGQgKG5vdCBtYXRjaGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiB7IEVxdWFscyA9PiAnMjAyMy0wOS0xMiAwMDowMDowMCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBEYXRlVGltZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIChub3QgbWF0Y2hpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJzIwMjMtMDktMDEgMTI6MDA6MDAnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZVRpbWUgdHlwZSBEeW5hbWljRmllbGQgLSBCZXR3ZWVuCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDEgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDIgMDA6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIC0gQmV0d2VlbiBub3QgbWF0Y2hpbmcKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMiAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIGdlbmVyYWwgY29uZmlnIGl0ZW0gc2VhcmNoIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgJFNlYXJjaFRlc3RDb3VudCBwcm92aWRlcyBncm91cGluZyBvZiB0ZXN0IGNhc2VzCm15ICRTZWFyY2hUZXN0Q291bnQgPSAxOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAU2VhcmNoVGVzdHMpIHsKCiAgICAjIGNoZWNrIFNlYXJjaERhdGEgYXR0cmlidXRlCiAgICBpZiAoICEkVGVzdC0+e1NlYXJjaERhdGF9IHx8IHJlZiAkVGVzdC0+e1NlYXJjaERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6IE5vIFNlYXJjaERhdGEgZm91bmQgZm9yIHRoaXMgdGVzdC4iLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBpZiAoICEkVGVzdC0+e0Z1bmN0aW9ufSB8fCByZWYgJFRlc3QtPntGdW5jdGlvbn0gbmUgJ0FSUkFZJyB8fCAhQHsgJFRlc3QtPntGdW5jdGlvbn0gfSApIHsKICAgICAgICAkVGVzdC0+e0Z1bmN0aW9ufSA9IFsnQ29uZmlnSXRlbVNlYXJjaCddOwogICAgfQoKICAgIGZvciBteSAkRnVuY3Rpb24gKCBAeyAkVGVzdC0+e0Z1bmN0aW9ufSB9ICkgewoKICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgIG15ICRDb25maWdJdGVtTGlzdDsKCiAgICAgICAgaWYgKCAkRnVuY3Rpb24gZXEgJ0NvbmZpZ0l0ZW1TZWFyY2gnICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgPSBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+JEZ1bmN0aW9uKAogICAgICAgICAgICAgICAgICAgICV7ICRUZXN0LT57U2VhcmNoRGF0YX0gfSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDb25maWdJdGVtTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT4kRnVuY3Rpb24oCiAgICAgICAgICAgICAgICAleyAkVGVzdC0+e1NlYXJjaERhdGF9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbSBsaXN0CiAgICAgICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgJiYgcmVmICRDb25maWdJdGVtTGlzdCBlcSAnQVJSQVknLAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBMaXN0IGlzIGFuIGFycmF5IHJlZmVyZW5jZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUxpc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBSZXR1cm4gZmFsc2UuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1MaXN0OwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgZm91bmQgY29uZmlnIGl0ZW1zCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHskQ29uZmlnSXRlbUxpc3R9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9LAogICAgICAgICAgICAiU2VhcmNoVGVzdCAkU2VhcmNoVGVzdENvdW50OiAkRnVuY3Rpb24oKSAtIGNvcnJlY3QgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFJlZmVyZW5jZUxpc3Q7CiAgICAgICAgZm9yIG15ICROdW1iZXIgKCBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGZpbmQgaWQgb2YgdGhlIGl0ZW0KICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICIKICAgICAgICAgICAgICAgICAgICAuICJjb25maWdpdGVtX251bWJlciA9ICckTnVtYmVyJyAiCiAgICAgICAgICAgICAgICAgICAgLiAiT1JERVIgQlkgaWQgREVTQyIsCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQFJlZmVyZW5jZUxpc3QsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGFycmF5cwogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICBcQFJlZmVyZW5jZUxpc3QsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6ICRGdW5jdGlvbigpIC0gTGlzdCIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CiAgICAkU2VhcmNoVGVzdENvdW50Kys7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIGFkZGluZyBvZiBpbnZhbGlkIGRlZmluaXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKICAgICMgZGVmaW5lIHNvbWUgaW52YWxpZCBkZWZpbml0aW9ucwogICAgbXkgQEludmFsaWRDb25maWdJdGVtRGVmaW5pdGlvbnM7CgogICAgIyBEYXRhIHNjdHJ1Y3R1cmUgaGFzaCBlbGVtZW50cyBjb250YWluIG5vIGRhdGEuCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIjsKCiAgICAjIERhdGEgd2l0aCBTeW50YXggZXJyb3JzCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIFsKICAgIHsKICAgICAgICBQYWdlcyBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDIsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmciAxZnInCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQogICAgXSI7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAVGVzdENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgICAgICk7CgogICAgICAgIHB1c2ggQFRlc3RDb25maWdJdGVtRGVmaW5pdGlvbnMsICRZQU1MRGVmaW5pdGlvbjsKICAgIH0KCiAgICBmb3IgbXkgJERlZmluaXRpb24gKEBUZXN0Q29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGRlZmluaXRpb24gaWQsIG11c3QgYmUgZmFsc2UsIGJlY2F1c2UgYWxsIGRlZmluaXRpb25zIGhhdmUgZXJyb3JzCiAgICAgICAgb2soICEkUmVzdWx0LT57U3VjY2Vzc30sICJBcyBleHBlY3RlZCwgY291bGQgbm90IGFkZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbi4iICk7CiAgICB9Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIHN1cHBvcnQgZm9yIGF0dGFjaG1lbnRzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWzBdOwoKIyB2ZXJpZnkgdGhhdCBpbml0aWFsbHkgbm8gYXR0YWNobWVudCBleGlzdHMKbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgMCwKICAgICdObyBhdHRhY2htZW50cyBpbml0aWFsbHknLAopOwoKbXkgQFRlc3RGaWxlTGlzdCA9ICgKICAgIHsKICAgICAgICBGaWxlbmFtZSAgICA9PiAnZmlyc3QgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ0ZpcnN0IGF0dGFjaG1lbnQgZnJvbSBJVFNNQ29uZmlnSXRlbS50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICB9LAogICAgewogICAgICAgIEZpbGVuYW1lICAgID0+ICdzZWNvbmQgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ1NlY29uZCBhdHRhY2htZW50IGZyb20gSVRTTUNvbmZpZ0l0ZW0udCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgfSwKKTsKCm15ICRGaWxlQ291bnQ7CmZvciBteSAkVGVzdEZpbGUgKEBUZXN0RmlsZUxpc3QpIHsKCiAgICAkRmlsZUNvdW50Kys7CgogICAgbXkgJEFkZE9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICV7JFRlc3RGaWxlfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBZGRPaywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGFkZGVkIiwKICAgICk7CgogICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgICAgICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGFkZGluZyIsCiAgICApOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgbGFzdCBhZGRlZCBhdHRhY2htZW50IGlzIGluIHRoZSBsaXN0CiAgICBteSAlQXR0YWNobWVudExvb2t1cCA9IG1hcCB7ICRfID0+IDEgfSBAQXR0YWNobWVudExpc3Q7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudExvb2t1cHsgJFRlc3RGaWxlLT57RmlsZW5hbWV9IH0sCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogZmlsZW5hbWUgZnJvbSBDb25maWdJdGVtQXR0YWNobWVudExpc3QoKSIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBhdHRhY2htZW50CiAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEF0dGFjaG1lbnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoKSByZXR1cm5lZCB0cnVlIiwKICAgICk7CgogICAgIyBjaGVjayBhdHRhY2htZW50IGZpbGUgYXR0cmlidXRlcwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUpKSB7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAkVGVzdEZpbGUtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogJEF0dHJpYnV0ZSBmcm9tIENvbmZpZ0l0ZW1BdHRhY2htZW50R2V0IiwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZXhpc3RlbmNlIG9mIGF0dGFjaG1lbnQKICAgIG15ICRBdHRhY2htZW50RXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGV4aXN0cyIsCiAgICApOwoKfQoKIyBub3cgZGVsZXRlIHRoZSBhdHRhY2htZW50cwokRmlsZUNvdW50ID0gMDsKbXkgJE1heFRlc3RGaWxlcyA9IHNjYWxhciBAVGVzdEZpbGVMaXN0Owpmb3IgbXkgJFRlc3RGaWxlIChAVGVzdEZpbGVMaXN0KSB7CgogICAgJEZpbGVDb3VudCsrOwoKICAgIG15ICREZWxldGVPayA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJBdHRhY2htZW50ICRGaWxlQ291bnQ6IGF0dGFjaG1lbnQgZGVsZXRlZCIsCiAgICApOwoKICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBAQXR0YWNobWVudExpc3QsCiAgICAgICAgJE1heFRlc3RGaWxlcyAtICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGRlbGV0aW9uIiwKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRFeGlzdHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMoCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGlzIGdvbmUiLAogICAgKTsKfQoKIyBjaGVjayBjb25maWcgaXRlbSBkZWxldGUKbXkgJERlbGV0ZVRlc3RDb3VudCA9IDE7CmZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgbXkgJERlbGV0ZU9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBDb25maWdJdGVtRGVsZXRlKCkgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIKICAgICk7CgogICAgIyBkb3VibGUgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgcmVhbGx5IGRlbGV0ZWQKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIENhY2hlICAgICAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntDb25maWdJdGVtSUR9LAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBkb3VibGUgY2hlY2sgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIsCiAgICApOwoKICAgICREZWxldGVUZXN0Q291bnQrKzsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/CIAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IGF1dG8gaW5rcwojIGJldHdlZW4gQ0kgaXRlbXMgYW5kIFRpY2tldHMKIyBleGFtcGxlIGlzCiMgIFN1YnNpZGlhcnkgLT4gVGlja2V0UmVmCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQuIiApOwoKIyBwb3NzaWJsZSBsaW5rIHR5cGVzIGNvbmZpZ3VyZWQKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIExpbmtUeXBlPSRMaW5rVHlwZSIgPT4gc3ViIHsKCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBteSAlVHlwZURhdGEgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJElzUG9pbnRlZCA9ICRUeXBlRGF0YXtQb2ludGVkfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IF9DcmVhdGVERlJlZmVyZW5jZVRvVGlja2V0KCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZENvbmZpZywgIlJlZmVyZW5jZVRvVGlja2V0IERGICRMaW5rVHlwZSBjcmVhdGVkLiIgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvbkFkZFRpY2tldFJlZkRGKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKSwKICAgICAgICAgICAgJ1VwZGF0ZWQgU3Vic2lkaWFyeSBEZWZpbml0aW9uIHRvIGluY2x1ZGUgUmVmZXJlbmNlVG9UaWNrZXQgREYgc3VjY2Vzc2Z1bGx5LicKICAgICAgICApOwogICAgICAgIF9TeW5jQ29uZmlnSXRlbURGcyggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRlc3RUaWNrZXQxSUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhIHRlc3Qgc3Vic2lkaWFyeSB3aXRoIGEgREYgcmVmZXJlbmNlIHRvIFRpY2tldAogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQxSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBzdWJ0ZXN0ICJTaW5nbGUgTGluayBoYXMgYmVlbiBjcmVhdGVkIGZvciBMaW5rVHlwZT0kTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5ICdEZXJCYXVlcm5ob2YkTGlua1R5cGUkUmFuZG9tSUQnICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBsaW5rIHRvIFRpY2tldCAkVGVzdFRpY2tldDFJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFN1YnNpZGlhcnlJRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgIExpbmtzICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RUaWNrZXQxSUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFRpY2tldDFJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiSGFzIE9uZSBMaW5rIFNvdXJjZSA9PiBUaWNrZXRJRDokVGVzdFRpY2tldDFJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiQ2hhbmdlIGxpbmsgZGlyZWN0aW9uIGRvZXMgbm90IGNoYW5nZSBleGlzdGluZyBsaW5rcyIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9UaWNrZXRERkxpbmtEaXJlY3Rpb24oCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgT25lIExpbmsgU291cmNlID0+IFRpY2tldElEOiRUZXN0VGlja2V0MUlELiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICBteSAkVGVzdFRpY2tldDJJRDsKICAgICAgICBzdWJ0ZXN0ICJBZGQgYW5vdGhlciBsaW5rIiA9PiBzdWIgewoKICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGlja2V0UmVmIiAuICRMaW5rVHlwZSAuICIkUmFuZG9tSUQiID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJVcGRhdGVkIENvbmZpZ0l0ZW0gdG8gcG9pbnQgdG8gVGVzdFRpY2t0IDIiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIGFkZCBsaW5rcyB0d2ljZQogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gZmlyc3QgbGlua2VkIG9iamVjdCwKICAgICAgICAjIGFuZCBhZ2FpbiB0byBzZWNvbmQgb25lLiBubyBuZXcKICAgICAgICAjIGxpbmtzIGV4cGVjdGVkIHRvIGJlIGNyZWF0ZWQKCiAgICAgICAgc3VidGVzdCAiQWRkIGxpbmtzIHR3aWNlIC0gbm8gZHVwbGljYXRpb24gb2YgZXhpc3RpbmcgbGlua3MiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdFRpY2tldDFJRAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlVwZGF0ZWQgQ29uZmlnSXRlbSB0byBwb2ludCB0byBUZXN0VGlja2V0IDEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1RpY2tldFJlZiIgLiAkTGlua1R5cGUgLiAiJFJhbmRvbUlEIiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRUZXN0VGlja2V0MklECiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVXBkYXRlZCBDb25maWdJdGVtIHRvIHBvaW50IHRvIFRlc3RUaWNrZXQgMSIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcygKICAgICAgICAgICAgICAgICAgICBTdWJzaWRpYXJ5SUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkSXNQb2ludGVkCiAgICAgICAgICAgICAgICAgICAgICAgID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgVGFyZ2V0ID0+ICRUZXN0VGlja2V0MUlEIF0KICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQxSUQgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQySUQgXSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkhhcyBUd28gTGlua3MgKCRUZXN0VGlja2V0MUlELCAkVGVzdFRpY2tldDJJRCkuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICBteSAkRmluYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50LAogICAgICAgICAgICAiTm8gTGlua09iamVjdHMgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZSZWZlcmVuY2VUb1RpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgICAgICAgPT4gJ1RpY2tldE51bWJlclRpdGxlJywKICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSAgICAgID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICAgICAgID0+ICdSZWZlcmVuY2luZ0lzU291cmNlJywKICAgICAgICBMaW5rT2JqZWN0Rm9yUmVmZXJlbmNlVHlwZSA9PiAkUGFyYW17TGlua1R5cGV9LCAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgUXVldWUgICAgICAgICAgICAgICAgICAgICAgPT4gWyAxLCAyLCAzLCA0IF0sCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgICAgICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgICAgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRJRCAgICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnVGlja2V0IFJlZmVyZW5jZScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ1RpY2tldCcsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkSUQgKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX0NoYW5nZVN1YnNpZGlhcnlEZWZpbml0aW9uQWRkVGlja2V0UmVmREYgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICApOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICAjIGFkZCB0aGUgVGlja2V0UmVmIERGCgogICAgJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30tPntBZGRyZXNzfS0+e0NvbnRlbnR9ID0gWwogICAgICAgIHsKICAgICAgICAgICAgJ0hlYWRlcicgPT4gJ0FkZHJlc3MnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVN0cmVldCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tQ2l0eScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1MYXRpdHVkZScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTG9uZ2l0dWRlJwogICAgICAgIH0sCgogICAgICAgICMgYWRkIHRoaXMgb25lOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CiAgICBteSAkWUFNTFN0cmluZyA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb25SZWYsCiAgICApOwoKICAgIHJldHVybiAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICBDbGFzc0lEICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MU3RyaW5nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKCiAgICAgICAgIyAgICBGb3JjZSAgICAgID0+IDEsICAgICAgICAjIGhtCiAgICApLT57U3VjY2Vzc307Cn0KCnN1YiBfQ3JlYXRlVGVzdFRpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgIFRpdGxlICAgICAgICA9PiAkUGFyYW17VGl0bGV9LAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgIlRpY2tldCAnJFBhcmFte1RpdGxlfScgKCRUaWNrZXRJRCkgY3JlYXRlZCIgKTsKCiAgICByZXR1cm4gJFRpY2tldElEOwp9CgojIGNhbGwgYXMKIyBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAojICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICA9ICRQYXJhbXtMaW5rVHlwZX07CiAgICBteSAkU3Vic2lkaWFyeUlEID0gJFBhcmFte1N1YnNpZGlhcnlJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rUmVsYXRpb25zQ291bnQgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKSAtICRJbml0aWFsTGlua1JlbGF0aW9uc0NvdW50OwogICAgaXMoICRMaW5rUmVsYXRpb25zQ291bnQsICRFeHBlY3RlZExpbmtDb3VudCwgIlRoZXJlIGFyZSAgJExpbmtSZWxhdGlvbnNDb3VudCBMaW5rT2JqZWN0LUxpbmtzIG9mIFR5cGUgJExpbmtUeXBlLiIgKTsKCiAgICBteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICAgICAgT2JqZWN0ICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgID0+ICRTdWJzaWRpYXJ5SUQsCiAgICAgICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgZm9yIG15ICRMaW5rIChATGlua3MpIHsKCiAgICAgICAgbXkgJExpbmtEZXN0ID0gJExpbmstPlswXTsKICAgICAgICBteSAkTGlua2VkSUQgPSAkTGluay0+WzFdOwogICAgICAgIGlmICggZXhpc3RzICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9OwoKICAgICAgICAgICAgcmV0dXJuIDAgaWYgIWV4aXN0cyAkSURzLT57JExpbmtlZElEfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9VcGRhdGVSZWZlcmVuY2VUb1RpY2tldERGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlEICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJ2EgZGVzY3JpcHRpb24nLCAgICAgICAgICAjIG1hbmRhdG9yeSwgbGFiZWwgdG8gc2hvdwogICAgICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsICAgICAgICAgIyB0aGlzIGNvbnRyb2xzIHdoaWNoIG9iamVjdCB0aGUgZHluYW1pYyBmaWVsZCBsaW5rcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBpbmRpdmlkdWFsIGFydGljbGVzLCBvdGhlcndpc2UgdG8gdGlja2V0cwogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgaXMgb25seSB1c2VkIGludGVybmFsbHkgdG8gcHJldmVudCByZWR1bmRhbnQgZXhlY3V0aW9uIG9uIG9yZGVyIGNoYW5nZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyB1cGRhdGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgZm9yIDAKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG9rKCAkU3VjY2VzcywgIlRpY2tldFJlZiBERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJExpbmtEaXJlY3Rpb24uIiApOwoKICAgICAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoIExpbmtUeXBlID0+ICRMaW5rVHlwZSApOwoKICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkRHluYW1pY0ZpZWxkLT57SUR9ICk7CiAgICB9OwoKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX1N5bmNDb25maWdJdGVtREZzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/ConfigItemLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJvaWxlcnBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2F0Y2ggc3RhdGUgYmVmb3JlIHRlc3QgcnVuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCm15ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKbXkgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQiICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICdVcGRhdGVkIFZlcnNpb25UcmlnZ2VyJwopOwoKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgIG15ICRUZXN0TG9jYXRpb24xSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgY3JlYXRlZCIgKTsKCiAgICAjIGFzc2VydCB0aGVyZSBpcyAxIHZlcnNpb24gd2l0aCBnaXZlbiBuYW1lCiAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgXQogICAgKTsKCiAgICAjIGNyZWF0ZSB0ZXN0IHRpY2tldAoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gIlRlc3RUaWNrZXQxXyRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFRpY2tldElELCAnVGlja2V0IGNyZWF0ZWQnICk7CgogICAgIyBjcmVhdGUgbGluayB0byBUaWNrZXQKICAgIG9rKAogICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRMaW5rVHlwZSwgICAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgJ0NJIFRlc3RMb2NhdGlvbjEgTGlua2VkIHRvIFRpY2tldCcKICAgICk7CgogICAgIyBpbnNwZWN0IGxpbmsgZGF0YQoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICBteSAkU291cmNlID0gJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e1RpY2tldH0tPnskTGlua1R5cGV9LT57U291cmNlfS0+eyRUaWNrZXRJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9LT57JFRpY2tldElEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgb2soCiAgICAgICAgJFNvdXJjZS0+e1RpY2tldE51bWJlcn0sCiAgICAgICAgJ0xpbmtlZCBpdGVtIGxvb2tzIGxpa2UgdGlja2V0JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57VGl0bGV9LAogICAgICAgICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICdDb25maWdJdGVtIGlzIGxpbmtlZCB0byBjb3JyZWN0IFRpY2tldCcKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENsYXNzSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFJhbmRvbUlELAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBDbGFzc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiA8PCdFT0YnLAotLS0KLSBQYWdlczoKICAtIENvbnRlbnQ6CiAgICAtIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24xCiAgICAtIENvbHVtblN0YXJ0OiAyCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24yCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyCiAgICAgIENvbHVtbnM6IDIKICAgIE5hbWU6IENvbnRlbnQKRU9GCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgRGVmaW5pdGlvbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgVXNlcklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIC0gQ29sdW1uU3RhcnQ6IDEKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIC0gQ29sdW1uU3RhcnQ6IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChMZWdhY3kgUGVybCknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwnRU9GJywKWwp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQp9Cl07CkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChJbnZhbGlkIFlBTUwpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIENvbHVtblN0YXJ0IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ29ycmVjdCBZQU1MJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCgopOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CiAgICBteSAkRGVmaW5pdGlvbklEID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvaygKICAgICAgICAgICAgISREZWZpbml0aW9uSUQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25BZGQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBvaygKICAgICAgICAoICREZWZpbml0aW9uSUQgLy8gMCApID4gMCwKICAgICAgICAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uQWRkKCkgLSBEZWZpbml0aW9uSUQiCiAgICApOwoKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7Cm9rKCAkQ2xhc3NJRCwgIkNsYXNzIGFkZGVkIHRvIEdlbmVyYWxDYXRhbG9nIiApOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAlRGVmaW5pdGlvblRlbXBsYXRlID0gKAogICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgIENsYXNzICAgICAgPT4gJFJhbmRvbUlELAogICAgQ3JlYXRlQnkgICA9PiAkVXNlcklELAogICAgVmVyc2lvbiAgICA9PiAxLAogICAgRGVmaW5pdGlvbiA9PiA8PCdFTkRfWUFNTCcsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCik7CgpteSAkRGVmaW5pdGlvblJlZiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiU2VjdGlvbjEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEludGVyZmFjZXMgPT4gW10sCiAgICAgICAgICAgIExheW91dCAgICAgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UxIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJTZWN0aW9uMiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDMsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAiMWZyIgogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lID0+ICJQYWdlMiIsCiAgICAgICAgfSwKICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgc2VjdGlvbiAxIiB9IF0gfSwKICAgICAgICBTZWN0aW9uMiA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiVGhpcyBpcyBzZWN0aW9uIDIiIH0gXSB9LAogICAgfSwKfTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgRGVmaW5pdGlvbklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRGVmaW5pdGlvblJlZiwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiB7fSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IENsYXNzSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uUmVmICAgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4ge30sCiAgICAgICAgfSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgJFRlc3QtPntDb25maWd9LT4lKgogICAgKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgIG9rKCAhJERlZmluaXRpb24sICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbiwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRGVmaW5pdGlvbkdldCgpIC0gRGVmaW5pdGlvbiIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionList.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgQENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbnMgPSA8PCdFTkRfWUFNTCc7Ci0tLQpQYWdlczoKICAtIE5hbWU6IENJXzFfUGFnZTEKICAgIEludGVyZmFjZXM6IFtdCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBDSV8xX1NlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCgojIHNlY29uZCBpdGVtIGlzIGEgdmFyaWFudCBvZiB0aGUgZmlyc3QgaXRlbQpwdXNoIEBDb25maWdJdGVtWUFNTERlZmluaXRpb25zLCAoICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdID1+IHMvQ0lfMV8vQ0lfMl8vcmcgKTsKCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21JRCwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gJFVzZXJJRCwKKTsKb2soICRDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgpteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFJlc3VsdDEgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDEgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDEgPSAkUmVzdWx0MS0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAxIGdvdCBkZWZpbml0aW9uIElEIiApOwoKbXkgJFJlc3VsdDIgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDIgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDIgPSAkUmVzdWx0Mi0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAyIGdvdCBkZWZpbml0aW9uIElEICIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgQ2xhc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgRGVmaW5pdGlvblJlZiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QKICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAkVGVzdC0+e0NvbmZpZ30tPiUqCiAgICApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgb2soCiAgICAgICAgICAgICEkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZm9yIG15ICREZWZpbml0aW9uICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKICAgICAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKICAgIH0KCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBEZWZpbml0aW9uIgogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/Role.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCggVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luICk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiMgYWRkIGR5bmFtaWMgZmllbGRzIGZvciB0ZXN0aW5nCm15ICRGaWVsZE9yZGVyID0gMTsKbXkgJUR5bmFtaWNGaWVsZFNob3J0TmFtZTJJRDsKZm9yIG15ICRTaG9ydE5hbWUgKHF3KERGMSBERjIgREYzIERGNCkpIHsKCiAgICAjIGFkZCBhIG5ldyBpdGVtCiAgICBteSAkREZOYW1lICAgICAgICAgPSBqb2luICctJywgJFNob3J0TmFtZSwgJFJhbmRvbUlEOwogICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAiJERGTmFtZSDimJQiLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJEZpZWxkT3JkZXIrKywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgJERGTmFtZSDimJQiLAogICAgICAgIH0sCiAgICAgICAgUmVvcmRlciA9PiAxLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwogICAgb2soICREeW5hbWljRmllbGRJRCwgImNyZWF0ZWQgZHluYW1pYyBmaWVsZCAkREZOYW1lIiApOwogICAgJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHskU2hvcnROYW1lfSA9ICREeW5hbWljRmllbGRJRDsKfQoKIyBhZGQgUm9sZQp7CiAgICAjIGRlY2xhcmUgdGhlIHJvbGUgaW4gdGhlIGdlbmVyYWwgY2F0YWxvZwogICAgbXkgJFJvbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgIE5hbWUgICAgPT4gIlJvbGVfJFJhbmRvbUlEIiwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgKTsKICAgIG9rKCAkUm9sZUlELCAiUm9sZSBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCiAgICBteSAkWUFNTERlZmluaXRpb24gPSA8PCJFTkRfWUFNTCI7Ci0tLQpTZWN0aW9uczoKICBOb0R5bmFtaWNGaWVsZDoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIk5vIGR5bmFtaWMgZmllbGQiCiAgT25lRHluYW1pY0ZpZWxkOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICBUd29EeW5hbWljRmllbGRzOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICAgICAgIC0gREY6IERGMi0kUmFuZG9tSUQKICBUaHJlZUR5bmFtaWNGaWVsZHM6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJObyBkeW5hbWljIGZpZWxkIgogICAgICAgLSBERjogREYxLSRSYW5kb21JRAogICAgICAgLSBERjogREYyLSRSYW5kb21JRAogICAgICAgLSBERjogREYzLSRSYW5kb21JRAogIE9ubHlERjQ6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJvbmx5IHRoZSBkeW5hbWljIGZpZWxkIERGNCwgbm90IHJlZmVyZW5jZWQgaW4gYW55IHBhZ2UiCiAgICAgICAtIERGOiBERjQtJFJhbmRvbUlECkVORF9ZQU1MCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIlJvbGVfJFJhbmRvbUlEIHN1Y2Nlc3NmdWxseSBhZGRlZCIgKTsKfQoKIyBUT0RPOiByZWZlciB0byBSb2xlIGluIERlZmluaXRpb24KCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15ICVEZWZpbml0aW9uVGVtcGxhdGUgPSAoCiAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgQ2xhc3MgICAgICA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgIENyZWF0ZUJ5ICAgPT4gJFVzZXJJRCwKICAgIFZlcnNpb24gICAgPT4gMSwKICAgIERlZmluaXRpb24gPT4gPDwiRU5EX1lBTUwiLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEVtcHR5U2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogRW1wdHlTZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAtIE5hbWU6IFBhZ2UzCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCiAgICAgIC0gU2VjdGlvbjogVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZAogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgRW1wdHlTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIKICBFbXB0eVNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyB0aGUgZW1wdHkgc2VjdGlvbiAyIgpSb2xlczoKICBUZXN0Um9sZToKICAgIE5hbWU6ICJSb2xlXyRSYW5kb21JRCIKICAgIFZlcnNpb246IDEKRU5EX1lBTUwKKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSByZXR1cm5lZCBhIGRlZmluaXRpb24gSUQiICk7CgpteSAkRXhwZWN0ZWREZWZpbml0aW9uUmVmID0gewogICAgUGFnZXMgPT4gWwogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJFbXB0eVNlY3Rpb24xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW50ZXJmYWNlcyA9PiBbXSwKICAgICAgICAgICAgTGF5b3V0ICAgICA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTEiLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDIsCiAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gIkVtcHR5U2VjdGlvbjIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UyIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMiwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTMiLAogICAgICAgIH0sCiAgICBdLAogICAgUm9sZXMgPT4gewogICAgICAgIFRlc3RSb2xlID0+IHsKICAgICAgICAgICAgTmFtZSAgICA9PiAiUm9sZV8kUmFuZG9tSUQiLAogICAgICAgICAgICBWZXJzaW9uID0+IDEKICAgICAgICB9LAogICAgfSwKICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAiRW1wdHlTZWN0aW9uMSIgICAgICAgICAgICAgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIgfSBdIH0sCiAgICAgICAgIkVtcHR5U2VjdGlvbjIiICAgICAgICAgICAgID0+IHsgQ29udGVudCA9PiBbIHsgSGVhZGVyID0+ICJUaGlzIGlzIHRoZSBlbXB0eSBzZWN0aW9uIDIiIH0gXSB9LAogICAgICAgICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiICA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSBdIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmVEeW5hbWljRmllbGQiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmx5REY0IiA9PiB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgeyBIZWFkZXIgPT4gIm9ubHkgdGhlIGR5bmFtaWMgZmllbGQgREY0LCBub3QgcmVmZXJlbmNlZCBpbiBhbnkgcGFnZSIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjQtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpUaHJlZUR5bmFtaWNGaWVsZHMiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMi0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYzLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICJUZXN0Um9sZTo6VHdvRHluYW1pY0ZpZWxkcyIgPT4gewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsgSGVhZGVyID0+ICJObyBkeW5hbWljIGZpZWxkIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMS0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYyLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKfTsKbXkgJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmID0gewogICAgIkRGMS0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGMS0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGMX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREYxLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREYxLSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKICAgICJERjItJFJhbmRvbUlEIiA9PiB7CiAgICAgICAgQ0lDbGFzcyA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgICAgICBDb25maWcgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICJkZWZhdWx0IHZhbHVlIGZvciBERjItJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICB9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gIlRleHQiLAogICAgICAgIElEICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHtERjJ9LAogICAgICAgIExhYmVsICAgICAgPT4gIkRGMi0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIE5hbWUgICAgICAgPT4gIkRGMi0kUmFuZG9tSUQiLAogICAgICAgIE9iamVjdFR5cGUgPT4gIklUU01Db25maWdJdGVtIiwKICAgIH0sCiAgICAiREYzLSRSYW5kb21JRCIgPT4gewogICAgICAgIENJQ2xhc3MgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICAgICAgQ29uZmlnICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgREYzLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgfSwKICAgICAgICBGaWVsZFR5cGUgID0+ICJUZXh0IiwKICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGRTaG9ydE5hbWUySUR7REYzfSwKICAgICAgICBMYWJlbCAgICAgID0+ICJERjMtJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICBOYW1lICAgICAgID0+ICJERjMtJFJhbmRvbUlEIiwKICAgICAgICBPYmplY3RUeXBlID0+ICJJVFNNQ29uZmlnSXRlbSIsCiAgICB9LAogICAgIkRGNC0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGNC0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGNH0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREY0LSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREY0LSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKfTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IERlZmluaXRpb25JRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgRGVmaW5pdGlvblJlZiAgID0+ICRFeHBlY3RlZERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRXhwZWN0ZWREeW5hbWljRmllbGRSZWYsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdCeSBDbGFzc0lEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgJURlZmluaXRpb25UZW1wbGF0ZSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRXhwZWN0ZWREZWZpbml0aW9uUmVmLAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4gJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmLAogICAgICAgIH0sCiAgICB9LAopOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvayggISREZWZpbml0aW9uLCAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uR2V0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZGVsZXRlICREZWZpbml0aW9uLT57Q3JlYXRlVGltZX07CgogICAgaXMoCiAgICAgICAgJERlZmluaXRpb24sCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIERlZmluaXRpb24iCiAgICApOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/StaticLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHN0YXRpYyB2ZXJzaW9uZWQgbGlua3MKIyBiZXR3ZWVuIENJIGl0ZW1zCiMgZXhhbXBsZSBpcwojICBTdWJzaWRpYXJ5IC0+IHN0YXRpYwojICAgICAgICAgICAgICAgICAodmVyc2lvbmVkKQojICAgICAgICAgICAgICAgICBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBib2lsZXJwbGF0ZQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwoKbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4KKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJUNvdW50cnlMb29rdXA7Cm15ICVTdWJzaWRpYXJ5TG9va3VwOwoKIyBhc3N1cmUgc3RkIGNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2xvYmFsIE9NIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRMaW5rT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKIyBjYXRjaCBzdGF0ZSBiZWZvcmUgdGVzdCBydW4KbXkgJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwpteSAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKbXkgJEluaXRpYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBhbmQgc3Vic2lkaWFyeSBjbGFzc2VzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQuIiApOwoKbXkgJFN1YnNpZGlhcnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ1N1YnNpZGlhcnknLAopOwpvayggJFN1YnNpZGlhcnlDbGFzc0lELCAiU3Vic2lkaWFyeSBjbGFzcyBmb3VuZC4iICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICJVcGRhdGVkIFZlcnNpb25UcmlnZ2VyIG9uIENvdW50cnkgQ2xhc3MgdG8gJ09uTmFtZUNoYW5nZS4nICIKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0IFN0YXRpYyBERiBSZWZlcmVuY2VzIGZvciBMaW5rVHlwZT0nJExpbmtUeXBlJyIgPT4gc3ViIHsKCiAgICAgICAgIyBjcmVhdGUgREYgc2ltaWxhciB0byBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgICAjIGJ1dCB3aXRoIExpbmtSZWZlcmVuY2luZ1R5cGUgPT4gU3RhdGljIGFuZAogICAgICAgICMgUmVmZXJlbmNlZE9iamVjdFR5cGUgPT4gSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DcmVhdGVERlN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICJERiAnU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyBDcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSBTdWJzaWRpYXJ5IENsYXNzIERlZiB0byB1c2UgTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5CiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICdVcGRhdGVkIFN1YnNpZGlhcnkgQ2xhc3MgRGVmaW5pdGlvbiB0byB1c2UgU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IERGLicKICAgICAgICApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgICAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSA9ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgJyIgLiAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSAuICInICgkVGVzdExvY2F0aW9uMUlEKSBjcmVhdGVkLiIgKTsKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiBvZiBUZXN0TG9jYXRpb24xIElEICRUZXN0TG9jYXRpb24xSUQiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyBnZXQgY3VycmVudCBWZXJzaW9uSUQgZm9yIFRlc3RMb2NhdGlvbgogICAgICAgIG15ICRUZXN0TG9jYXRpb25GaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMSB2MQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbkZpcnN0VmVyc2lvbklECiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSIgLiAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gLiAiICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBzdGF0aWMgbGluayB0byAiIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiIGNyZWF0ZWQuIgogICAgICAgICk7CgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIHRoYXQgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiJyIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydFN1YnNpZGlhcnlWZXJzaW9uc0FuZExvY2F0aW9uKAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uTmFtZSA9PiAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIFRlc3RMb2NhdGlvbiBOYW1lCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseSB0byBOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlELiIKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9ID0gIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHR3byB2ZXJzaW9ucwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiBUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgYWZ0ZXIgbmFtZSBjaGFuZ2UiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMiBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgbm93IGxvb2sgYXQgdGhlIFN1YnNpZGlhcnkKICAgICAgICAjIGFnYWluIGFuZCBhc3NlcnQgaXQgKnN0aWxsKgogICAgICAgICMgaGFzIDEgdmVyc2lvbiBhbmQgKnN0aWxsKgogICAgICAgICMgcG9pbnRzIHRvIHN0YXRpYyBMb2NhdGlvbiB2MQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IFN1YnNpZGlhcnkgKnN0aWxsKiBoYXMgMSB2ZXJzaW9uIGFuZCAqc3RpbGwqIHBvaW50cyB0byAnIiAuICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9IC4gIiciID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjIKICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24ySUR9ID0gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24ySUQsICJUZXN0TG9jYXRpb24yICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJ2NyZWF0ZWQuIiApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgaXMgb25lIHZlcnNpb24gb2YgVGVzdExvY2F0aW9uMiAkVGVzdExvY2F0aW9uMklEIGFmdGVyIGNyZWF0aW9uIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgIFZlcnNpb25zICAgPT4gWwogICAgICAgICAgICAgICAgICAgIFsgIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY2hhbmdlIExpbmsgRGlyZWN0aW9uIGluIFN0YXRpY1JlZnJlbmNlVG9DT3VudHJ5IERGCiAgICAgICAgX1VwZGF0ZVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgVmVyc2lvbklEIGZvciBUZXN0TG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMkZpcnN0VmVyc2lvbklEID0gX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbigKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQKICAgICAgICApOwoKICAgICAgICAjIG5vdyB1cGRhdGUgdGhlIHN1YnNpZGlhcnkgbGluayB0byBwb2ludCB0byB0ZXN0bG9jYXRpb24yIGluc3RlYWQKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSRMaW5rVHlwZSRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJGaXJzdFZlcnNpb25JRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIGFuZCBub3cgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJyIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgIkNsZWFudXAgYW5kIGRlbGV0ZSBhbGwgVGVzdCBDb25maWdJdGVtcyIgPT4gc3ViIHsKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdFN1YnNpZGlhcnkgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjIgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiYXNzZXJ0IHdlIGRpZG4ndCBsZWFrIGNvbmZpZyBpdGVtcyBhbmQgY29uZmlnIGl0ZW0gbGlua3MiID0+IHN1YiB7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50ICAgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQuIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZTdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRDb25maWdIYXNoUmVmID0gewogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbIiRDb3VudHJ5Q2xhc3NJRCJdLAogICAgICAgIERpc3BsYXlUeXBlICAgICAgICAgICA9PiAnQ29uZmlnSXRlbU5hbWUnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgPT4gJzAnLAogICAgICAgIE11bHRpc2VsZWN0ICAgICAgICAgICA9PiAwLAogICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICAgICA9PiAnMScsCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgID0+IFtdLAogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlICA9PiAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBTZWFyY2hBdHRyaWJ1dGUgICAgICAgPT4gJ05hbWUnLAogICAgICAgIFRvb2x0aXAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICBOYW1lc3BhY2UgID0+ICdMb2NhdGlvbicsCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKfQoKc3ViIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKCiAgICAgICAgIyBoZXJlIGl0IGlzLCB0aGUgY2hhbmdlOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9CiAgICBdOwoKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICRZQU1MU3RyaW5nID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvblJlZiwKICAgICk7CgogICAgcmV0dXJuICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIERlZmluaXRpb24gPT4gJFlBTUxTdHJpbmcsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICAgIFsiV2VsbGJsZWNoc0hhdXNlbiRSYW5kb21JRCIgICAgPT4gMSBdLAojICAgICAgIFsiTmllZGVya2FsdGVua2lyY2hlbiRSYW5kb21JRCIgPT4gMiBdLAojICAgXQojICk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9uSUR9OwoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhdGlvbklELAogICAgKTsKCiAgICBteSAkVmVyc2lvbkNvdW50ID0gQCRWZXJzaW9uczsKCiAgICBpcygKICAgICAgICBzY2FsYXIgQCRWZXJzaW9uTGlzdFJlZiwKICAgICAgICAkVmVyc2lvbkNvdW50LAogICAgICAgICJDb3VudCBvZiBWZXJzaW9ucyBpcyAkVmVyc2lvbkNvdW50IGZvciBDSSAkTG9jYXRpb25JRC4iCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBmb3IgdmVyc2lvbiAkXyBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgojIGFzc2VydHMgdGhhdCB2ZXJzaW9uIGNvdW50IG9mIFRlc3RMb2NhdGlvbgojIGlzIG9uZSBhbmQgcG9pbnRzIHRvIGZpcnN0IHZlcnNpb24gb2YgQ291bnRyeQoKc3ViIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbiB7CgogICAgbXkgJVBhcmFtICAgICAgICA9IEBfOwogICAgbXkgJExvY2F0aW9uSUQgICA9ICRQYXJhbXtMb2NhdGlvbklEfTsKICAgIG15ICRMb2NhdGlvbk5hbWUgPSAkUGFyYW17TG9jYXRpb25OYW1lfTsKICAgIG15ICRMaW5rVHlwZSAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259IHx8ICdUYXJnZXQnOwoKICAgIG15ICRTdWJzaWRpYXJ5VmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFN1YnNpZGlhcnlWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgVmVyc2lvbnMgICAgICA9PiAkU3Vic2lkaWFyeVZlcnNpb25MaXN0UmVmLAogICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJzEnCiAgICApOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFN1YnNpZGlhcnlWZXJzaW9uTGlzdFJlZiwKICAgICAgICAxLAogICAgICAgICJUaGVyZSBpcyBvbmUgVmVyc2lvbiBvZiBUZXN0U3Vic2lkaWFyeSAkTG9jYXRpb25JRCBWZXJzaW9uICRTdWJzaWRpYXJ5VmVyc2lvbklELiIKICAgICk7CgogICAgbXkgJFRlc3RTdWJzaWRpYXJ5Q0lWZXJzaW9uZW5kID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRTdWJzaWRpYXJ5VmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJExvY2F0aW9uUmVmSUQgPSAkVGVzdFN1YnNpZGlhcnlDSVZlcnNpb25lbmQtPnsgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJFBhcmFte0xpbmtUeXBlfSAuICIkUmFuZG9tSUQiIH0tPlswXTsKCiAgICAjIG5vdGUgbG9va3VwIGJ5ICpWZXJzaW9uSUQqCiAgICBteSAkU3RhdGljTG9jYXRpb25DSSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJExvY2F0aW9uUmVmSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlzKAogICAgICAgICRTdGF0aWNMb2NhdGlvbkNJLT57TmFtZX0sCiAgICAgICAgJExvY2F0aW9uTmFtZSwKICAgICAgICAibmFtZSAnJExvY2F0aW9uTmFtZScgaXMgY29ycmVjdCBmb3IgQ0kgVmVyc2lvbklEOiAkTG9jYXRpb25SZWZJRC4iCiAgICApOwoKICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKCiAgICAgICAgI0NvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgPT4gJFN1YnNpZGlhcnlWZXJzaW9uSUQsCgogICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gPT4gJ0JvdGgnLCAgICAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBpcyggc2NhbGFyICRMaW5rZWRDb25maWdJdGVtcy0+QCosICAgICAgICAxLCAgICAgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rJyApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57RGlyZWN0aW9ufSwgJERpcmVjdGlvbiwgICAgICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57VmVyc2lvbklEfSwgJExvY2F0aW9uUmVmSUQsICJDSSBMaW5rIHBvaW50cyB0byAqVmVyc2lvbklEKiAkTG9jYXRpb25SZWZJRC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENJID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwogICAgcmV0dXJuICRDSS0+e1ZlcnNpb25JRH07Cn0KCnN1YiBfVXBkYXRlU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ0dvdCBSZWZyZW5jZVRvQ291bnRyeSBERicgKTsKCiAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICRDb25maWdIYXNoUmVmLT57TGlua0RpcmVjdGlvbn0gPSAnUmVmZXJlbmNpbmdJc1RhcmdldCc7CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLCAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnIC4iICk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSA9ICRQYXJhbXtMaW5rVHlwZX07CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/TicketAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRlc3QgYXV0byBpbmtzCiMgYmV0d2VlbiBUaWNrZXQgaXRlbXMgYW5kIENJcwojIGV4YW1wbGUgaXMKIyAgVGlja2V0REYgLT4gQ29uZmlnSXRlbVJlZmVyZW5jZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRCYWNrZW5kT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQiICk7CgojIHBvc3NpYmxlIGxpbmsgdHlwZXMgY29uZmlndXJlZApteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAopOwoKbXkgQExpbmtUeXBlcyA9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGl0ZXJhdGUgb3ZlciBhdmFpbCBMaW5rVHlwZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKbXkgJFRlc3RTdWJzaWRpYXJ5SUQ7Cm15ICRUaWNrZXRJRDsKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIHdpdGggTGlua1R5cGUgJExpbmtUeXBlIiA9PiBzdWIgewoKICAgICAgICBteSAkVHlwZUlEID0gJExpbmtPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgIE5hbWUgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG15ICVUeXBlRGF0YSA9ICRMaW5rT2JqZWN0LT5UeXBlR2V0KAogICAgICAgICAgICBUeXBlSUQgPT4gJFR5cGVJRCwKICAgICAgICApOwoKICAgICAgICBteSAkSXNQb2ludGVkID0gJFR5cGVEYXRhe1BvaW50ZWR9OwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CiAgICAgICAgb2soICREeW5hbWljRmllbGRDb25maWcsICJERiAkTGlua1R5cGUgQ3JlYXRlZC4iICk7CgogICAgICAgIHN1YnRlc3QgImEpIEF1dG9MaW5rIGdldHMgY3JlYXRlZCIgPT4gc3ViIHsKCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEZXJCYXVlcm5ob2YnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgICAgICRUaWNrZXRJRCA9IF9DcmVhdGVUZXN0VGlja2V0KAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgImIpIGNoYW5nZSBMaW5rIERpcmVjdGlvbiIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9DSURGTGlua0RpcmVjdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1RhcmdldCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICBzdWJ0ZXN0ICJjKSBuZXcgVGlja2V0IHdpdGggbmV3IExpbmtEaXJlY3Rpb24iID0+IHN1YiB7CgogICAgICAgICAgICAkVGlja2V0SUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUaGVyZSBpcyBvbmUgTGluayBvZiB0eXBlICRMaW5rVHlwZSB0byBDSSAkVGVzdFN1YnNpZGlhcnlJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiZCkgQ2xlYW51cCAkTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgICAgICMgY2xlYW51cAogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSBkZWxldGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwogICAgICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH07Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgKiBGUk9NIGxpbmtfcmVsYXRpb24nLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgIHJldHVybiAkQ291bnQ7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgRWRpdEZpZWxkTW9kZSAgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgID0+ICRQYXJhbXtMaW5rVHlwZX0sICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgIE11bHRpVmFsdWUgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lICAgICAgICAgID0+ICcxJywKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0ICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBMYWJlbCAgICAgID0+ICdDb25maWcgSXRlbSBSZWZlcmVuY2UnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgQ29uZmlnICAgICA9PiAkQ29uZmlnSGFzaFJlZiwKICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJElEICk7CiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9DaGFuZ2VUaWNrZXREZWZpbml0aW9uQWRkQ29uZmlnSXRlbVJlZkRGIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvblJlZiA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgIyBhZGQgdGhlIFRpY2tldFJlZiBERgoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9LAoKICAgICAgICAjIGFkZCB0aGlzIG9uZToKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlECiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJFlBTUxTdHJpbmcgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uUmVmLAogICAgKTsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkWUFNTFN0cmluZywKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCgogICAgICAgICMgICAgRm9yY2UgICAgICA9PiAxLCAgICAgICAgIyBobQogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0NyZWF0ZVRlc3RUaWNrZXQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gJFBhcmFte1RpdGxlfSwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3VuaXR0ZXN0QG90b2JvLm9yZycsCiAgICAgICAgT3duZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG9rKCAkVGlja2V0SUQsICJUaWNrZXQgJyRQYXJhbXtUaXRsZX0nICgkVGlja2V0SUQpIGNyZWF0ZWQiICk7CgogICAgb2soCiAgICAgICAgJEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgIkRGIFZhbHVlIHNldCB0byAkUGFyYW17Q29uZmlnSXRlbUlEfS4iCiAgICApOwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCiMgY2FsbCBhcwojIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiMgICBUaWNrZXRJRCA9PiAkVGlja2V0LAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRUaWNrZXRJRCA9ICRQYXJhbXtUaWNrZXRJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdCgKICAgICAgICBPYmplY3QgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5ICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBPYmplY3QyICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsCiAgICAgICAgVXNlcklEICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIGZvciBteSAkTGluayAoQExpbmtzKSB7CgogICAgICAgIG15ICRMaW5rRGVzdCA9ICRMaW5rLT5bMF07CiAgICAgICAgbXkgJExpbmtlZElEID0gJExpbmstPlsxXTsKICAgICAgICBpZiAoIGV4aXN0cyAkTGlua0xpc3QtPnsnSVRTTUNvbmZpZ0l0ZW0nfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydJVFNNQ29uZmlnSXRlbSd9LT57JExpbmtUeXBlfS0+eyRMaW5rRGVzdH07CgogICAgICAgICAgICByZXR1cm4gMCBpZiAhZXhpc3RzICRJRHMtPnskTGlua2VkSUR9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ0lERkxpbmtEaXJlY3Rpb24gewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSAgICAgID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJFBhcmFte0xpbmtEaXJlY3Rpb259IHx8ICdSZWZlcmVuY2luZ0lzU291cmNlJzsKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLCAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgc2VsZWN0cyB0aGUgREYgYmFja2VuZCB0byB1c2UgZm9yIHRoaXMgZmllbGQKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgdGhpcyBjb250cm9scyB3aGljaCBvYmplY3QgdGhlIGR5bmFtaWMgZmllbGQgbGlua3MgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLCAgICAgICAgICAgIyBpdCBpcyBzdG9yZWQgb24gWUFNTCBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gaW5kaXZpZHVhbCBhcnRpY2xlcywgb3RoZXJ3aXNlIHRvIHRpY2tldHMKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIHByZXZlbnQgcmVkdW5kYW50IGV4ZWN1dGlvbiBvbiBvcmRlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLiIgKTsKCiAgICAgICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSApOwogICAgfTsKCiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9TeW5jQ29uZmlnSXRlbURGcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IFRpY2tldCB0byBDSSBpdGVtIGxpbmtpbmUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgYm9pbGVycGxhdGUKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkQ291bnRyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnQ291bnRyeScsCik7Cm9rKCAkQ291bnRyeUNsYXNzSUQsICJDb3VudHJ5IGNsYXNzIGZvdW5kIiApOwoKIyBhZGQgYSB2ZXJzaW9uIHRyaWdnZXIgdG8gQ291bnRyeSBvbiBOYW1lIGF0dHJpYnV0ZQpvaygKICAgIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzKCksCiAgICAnVXBkYXRlZCBWZXJzaW9uVHJpZ2dlcicKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgaXRlcmF0ZSBvdmVyIGF2YWlsIExpbmtUeXBlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgIyBhc3NlcnQgdGhlcmUgaXMgMSB2ZXJzaW9uIHdpdGggZ2l2ZW4gbmFtZQogICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgIF0KICAgICk7CgogICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgJ1RpY2tldCBjcmVhdGVkJyApOwoKICAgICMgY3JlYXRlIGxpbmsgdG8gQ29uZmlnSXRlbQogICAgb2soCiAgICAgICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLCAgICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGlja2V0IExpbmtlZCB0byBDSSBUZXN0TG9jYXRpb24xICgkTGlua1R5cGUpJwogICAgKTsKCiAgICAjIGluc3BlY3QgbGluayBkYXRhCgogICAgbXkgJExpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICApOwoKICAgIG15ICRTb3VyY2UgPSBleGlzdHMgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0KICAgICAgICA/CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0tPnskVGVzdExvY2F0aW9uMUlEfQogICAgICAgIDoKICAgICAgICAkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0tPnskTGlua1R5cGV9LT57VGFyZ2V0fS0+eyRUZXN0TG9jYXRpb24xSUR9OwogICAgb2soICRTb3VyY2UsICdGb3VuZCBMaW5rJyApOwoKICAgIGlzKAogICAgICAgICRTb3VyY2UtPntDbGFzc30sCiAgICAgICAgJ0NvdW50cnknLAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY2xhc3MgQ291bnRyeScKICAgICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e05hbWV9LAogICAgICAgICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAnVGlja2V0IGxpbmsgaGFzIGNvcnJlY3QgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjaGFuZ2UgVGVzdExvY2F0aW9uIE5hbWUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGVzdExvY2F0aW9uMSBOYW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LicKICAgICk7CgogICAgIyBjaGVjayBsaW5rIGRhdGEKICAgICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICBLZXkgICAgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICAkU291cmNlID0gZXhpc3RzICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9LT57JFRlc3RMb2NhdGlvbjFJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1RhcmdldH0tPnskVGVzdExvY2F0aW9uMUlEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e0NsYXNzfSwKICAgICAgICAnQ291bnRyeScsCiAgICAgICAgJ1RpY2tldCBsaW5rIHN0aWxsIGhhcyBjbGFzcyBDb3VudHJ5JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57TmFtZX0sCiAgICAgICAgJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY29ycmVjdCBuZXcgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketRef.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IFRpY2tldCBERiBSZWZlcmVuY2UKIyB0byBzdGF0aWMgQ29uZmlnSXRlbVZlcnNpb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgYm9pbGVycGxhdGUKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkVGlja2V0T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkQmFja2VuZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwpteSAkTGF5b3V0T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwpteSAkTGlua09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiMgY2F0Y2ggc3RhdGUgYmVmb3JlIHRlc3QgcnVuCm15ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKbXkgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQiICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICdVcGRhdGVkIFZlcnNpb25UcmlnZ2VyJwopOwoKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgT2JqZWN0MiA9PiAnVGlja2V0JywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0IExpbmtUeXBlPSRMaW5rVHlwZSIgPT4gc3ViIHsKCiAgICAgICAgIyBjcmVhdGUgYSB2ZXJzaW9uZWQgY29uZmlnIGl0ZW0gcmVmZXJlbmNlIERGIG9uIFRpY2tldAogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSBfQ3JlYXRlVGlja2V0REZDb25maWdJdGVtKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKICAgICAgICBvaygKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgJ0RGIGNyZWF0ZWQnCiAgICAgICAgKTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY3JlYXRlIHRlc3QgY29uZmlnIGl0ZW1zCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgICAgICMgYXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiB3aXRoIGdpdmVuIG5hbWUKICAgICAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICAjIGdldCBjdXJyZW50IFZlcnNpb25JRCBmb3IgVGVzdExvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFGaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRpY2tldElEID0gX0NyZWF0ZVRlc3RUaWNrZXQoCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDFfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgTG9jYXRpb25WZXJzaW9uSUQgID0+ICRUZXN0TG9jYXRpb24xRmlyc3RWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgIlRpY2tldCBERiBMb2NhdGlvbiBOYW1lIGlzOiBXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjaGFuZ2UgVGVzdExvY2F0aW9uIE5hbWUKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIG15ICRDb3VudHJ5RGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ291bnRyeURlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICAgICAgIk5hbWUiICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnTG9jYXRpb24gTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4nCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbnMKCiAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgTG9jYXRpb24gPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMSBdLAogICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMiBdLAogICAgICAgICAgICBdCiAgICAgICAgKTsKCiAgICAgICAgIyAuLi4gYnV0IHRpY2tldCBzdGlsbCByZWZlcmVuY2VzIHZlcnNpb24gdjEKICAgICAgICBpcygKICAgICAgICAgICAgX0dldFRpY2tldExvY2F0aW9uVGl0bGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApLAogICAgICAgICAgICAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICJERiBUaXRsZSBpcyBXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIgogICAgICAgICk7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGNsZWFudXAKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIHN1YnRlc3QgIkNsZWFudXAgJExpbmtUeXBlIiA9PiBzdWIgewogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdExvY2F0aW9uMSBkZWxldGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgICAgICAgICBteSAkRmluYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgICAgICAgICBteSAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgIH07Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQsICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZCIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0dldFZlcnNpb25JREZyb21WZXJzaW9uU3RyaW5nIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVmVyc2lvbnMgICAgICA9ICRQYXJhbXtWZXJzaW9uc307CiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICBmb3IgbXkgJFZlcnNpb24gKEAkVmVyc2lvbnMpIHsKCiAgICAgICAgaWYgKCAkVmVyc2lvbi0+e1ZlcnNpb25TdHJpbmd9IGVxICRWZXJzaW9uU3RyaW5nICkgewogICAgICAgICAgICByZXR1cm4gJFZlcnNpb24tPntWZXJzaW9uSUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBfR2VuZXJhbENhdGFsb2dJRCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgbXkgJENhdGFsb2dJdGVtID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgTmFtZSAgPT4gJFBhcmFte05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gJENhdGFsb2dJdGVtLT57SXRlbUlEfTsKfQoKc3ViIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25UcmlnZ2VyJywKICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10sCiAgICApOwp9CgojIGNhbGwgbGlrZQojIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiMgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAojICAgIFZlcnNpb25zID0+IFsKIyAgICAgWyJXZWxsYmxlY2hzSGF1c2VuJFJhbmRvbUlEIiAgICA9PiAxIF0sCiMgICAgIFsiTmllZGVya2FsdGVua2lyY2hlbiRSYW5kb21JRCIgPT4gMiBdLAojIF0pOwoKc3ViIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24gewoKICAgIG15ICVQYXJhbSAgICAgID0gQF87CiAgICBteSAkTG9jYXRpb25JRCA9ICRQYXJhbXtMb2NhdGlvbn07CiAgICBteSAkVmVyc2lvbnMgICA9ICRQYXJhbXtWZXJzaW9uc307CgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2F0aW9uSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uQ291bnQgPSBAJFZlcnNpb25zOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFZlcnNpb25MaXN0UmVmLAogICAgICAgICRWZXJzaW9uQ291bnQsCiAgICAgICAgIkNvdW50IG9mIFZlcnNpb25zIGlzICRWZXJzaW9uQ291bnQgZm9yIExvY2F0aW9uIElEICRMb2NhdGlvbklEIgogICAgKTsKCiAgICBmb3IgKCAwIC4uICRWZXJzaW9uQ291bnQgLSAxICkgewoKICAgICAgICBteSBAVmVyc2lvbiAgICAgICA9ICRWZXJzaW9ucy0+WyRfXS0+QCo7CiAgICAgICAgbXkgJE5hbWUgICAgICAgICAgPSAkVmVyc2lvblswXTsKICAgICAgICBteSAkVmVyc2lvblN0cmluZyA9ICRWZXJzaW9uWzFdOwoKICAgICAgICBteSAkVmVyc2lvbklEID0gX0dldFZlcnNpb25JREZyb21WZXJzaW9uU3RyaW5nKAogICAgICAgICAgICBWZXJzaW9ucyAgICAgID0+ICRWZXJzaW9uTGlzdFJlZiwKICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAkVmVyc2lvblN0cmluZwogICAgICAgICk7CgogICAgICAgIG15ICRUZXN0TG9jYXRpb25DSVZlcnNpb25lZCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRMb2NhdGlvbklELAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpcygKICAgICAgICAgICAgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkLT57TmFtZX0sCiAgICAgICAgICAgICROYW1lLAogICAgICAgICAgICAiVmVyc2lvbiAkVmVyc2lvblN0cmluZyBOYW1lICckTmFtZScgaXMgY29ycmVjdCIKICAgICAgICApOwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9DcmVhdGVUaWNrZXRERkNvbmZpZ0l0ZW0gewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRDb25maWdIYXNoUmVmID0gewogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbIiRDb3VudHJ5Q2xhc3NJRCJdLAogICAgICAgIERpc3BsYXlUeXBlICAgICAgICAgICA9PiAnQ29uZmlnSXRlbU5hbWUnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwgICAgICAgICAgIyAnUmVsZXZhbnRUbycsCiAgICAgICAgTXVsdGlWYWx1ZSAgICAgICAgICAgID0+ICcwJywKICAgICAgICBNdWx0aXNlbGVjdCAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgPT4gJzEnLAogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3QgICA9PiBbXSwKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSAgPT4gJ0lUU01Db25maWdJdGVtVmVyc2lvbicsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIExhYmVsICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgTmFtZXNwYWNlICA9PiAnTG9jYXRpb24nLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwogICAgcmV0dXJuICREeW5hbWljRmllbGRDb25maWc7Cn0KCnN1YiBfR2V0Q29uZmlnSXRlbUN1cnJlbnRWZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICk7CiAgICByZXR1cm4gJENJLT57VmVyc2lvbklEfTsKfQoKc3ViIF9DcmVhdGVUZXN0VGlja2V0IHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICRQYXJhbXtUaXRsZX0sCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBzdWJ0ZXN0ICJUaWNrZXQgY3JlYXRpb24iID0+IHN1YiB7CgogICAgICAgIG9rKCAkVGlja2V0SUQsICdUaWNrZXQgY3JlYXRlZCcgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xvY2F0aW9uVmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnREYgVmFsdWUgc2V0JwogICAgICAgICk7CiAgICB9OwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCnN1YiBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkVXNlcklELAogICAgICAgIEV4dGVuZGVkICAgICAgPT4gMSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRWYWx1ZSA9ICRUaWNrZXR7ICJEeW5hbWljRmllbGRfTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IiAuICRQYXJhbXtMaW5rVHlwZX0gLiAiJFJhbmRvbUlEIiB9OwoKICAgIG15ICRSZXN1bHQgPSAkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICByZXR1cm4gJFJlc3VsdC0+e1RpdGxlfTsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItem/DynamicLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHNpbXBsZSBkeW5hbWljIGxpbmtzCiMgYmV0d2VlbiBDSSBpdGVtcwojIGV4YW1wbGUgaXMKIyAgU3Vic2lkaWFyeSAtPiBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyB0ZXN0IGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIERCIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcmVwYXJlIGVudmlyb25tZW50CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGFuZCBzdWJzaWRpYXJ5IGNsYXNzZXMgZnJvbSBnZW5lcmFsIGNhdGFsb2cKbXkgJENvdW50cnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ0NvdW50cnknLAopOwpvayggJENvdW50cnlDbGFzc0lELCAiQ291bnRyeSBjbGFzcyBmb3VuZC4iICk7CgpteSAkU3Vic2lkaWFyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnU3Vic2lkaWFyeScsCik7Cm9rKCAkU3Vic2lkaWFyeUNsYXNzSUQsICJTdWJzaWRpYXJ5IGNsYXNzIGZvdW5kLiIgKTsKCiMgcG9zc2libGUgbGluayB0eXBlcyBmb3IgQ29uZmlnSXRlbSA8LT4gQ29uZmlnSXRlbQpteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSAlQ291bnRyeUxvb2t1cDsKbXkgJVN1YnNpZGlhcnlMb29rdXA7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7Cgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgc3VidGVzdCAiRHluYW1pYyBMaW5rcyB3aXRoIExpbmtUeXBlPSckTGlua1R5cGUnIiA9PiBzdWIgewoKICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgVmFsdWUgPT4gW10KICAgICAgICApOwoKICAgICAgICBfVXBkYXRlUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uKCBMaW5rRGlyZWN0aW9uID0+ICdSZWZlcmVuY2luZ0lzVGFyZ2V0JyApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY3JlYXRlIFRlc3QgQ29uZmlnIEl0ZW1zCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgZmlyc3QgdGVzdGxvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgY3JlYXRlZC4iICk7CiAgICAgICAgJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gPSAnV2VsbGJsZWNoc0hhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CgogICAgICAgICMgY3JlYXRlIHNlY29uZCB0ZXN0bG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjJJRCwgIlRlc3RMb2NhdGlvbjIgJFRlc3RMb2NhdGlvbjJJRCBjcmVhdGVkLiIgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMklEfSA9ICdOaWVkZXJrYWx0ZW5raXJjaGVuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGEpIG1ha2UgdXBkYXRlcyB3aXRoIG5vCiAgICAgICAgIyB2ZXJzaW9uIHRyaWdnZXJzCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkiID0+IFsKICAgICAgICAgICAgICAgICRUZXN0TG9jYXRpb24xSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCB3aXRoIGxpbmsgdG8gVGVzdExvY2F0aW9uMSBjcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgc3VidGVzdCAiYSkgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnIChubyB2ZXJzaW9uIHRyaWdnZXJzKSIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnVGFyZ2V0JywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBub3cgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsKICAgICAgICAjIHRvIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjIKICAgICAgICAjIGluc3RlYWQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJhKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKG5vIHZlcnNpb24gdHJpZ2dlcnMpIGFmdGVyIENJIFJlZmVyZW5jZVRvQ291bnRyeSBjaGFuZ2UiID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIExpbmtEaXJlY3Rpb24KICAgICAgICAjIG9uIFJlZmVyZW5jZVRvQ291bnRyeSBERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImEpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAobm8gdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICMgdGhpcyBtdXN0IGhhdmUgdXBkYXRlZCB0aGUgRGlyZWN0aW9uIG9mIHRoZSBMaW5rIQogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdTb3VyY2UnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGIpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBDb3VudHJ5IFJlZmVyZW5jZSBhbmQKICAgICAgICAjIHVwZGF0ZSBhZ2FpbgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIG9rKAogICAgICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgICAgIFZhbHVlID0+IFsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJdCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJTZXQgU3Vic2lkaWFyeSBWZXJzaW9uIFRyaWdnZXIgb24gJ1JlZmVyZW5jZVRvQ291bnRyeScgREYuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8gcG9pbnQgdG8gdGVzdGxvY2F0aW9uMSBhZ2FpbgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5IiA9PiBbCiAgICAgICAgICAgICAgICAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgYmFjayB0byAnUmVmZXJlbmNpbmdJc1RhcmdldCciID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBERiB1cGRhdGUgY2hhbmdlIGxpbmsgZGlyIG9uCiAgICAgICAgIyBSZWZlcmVuY2VUb0NvdW50cnlERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXNzZXJ0IHRoZXJlIGFyZSBub3cgdHdvIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCArIDMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8KICAgICAgICAjIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjEgYWdhaW4KICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJiKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKHdpdGggdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgUmVmZXJlbmNlVG9Db3VudHJ5IGNoYW5nZSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHRocmVlIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAzIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGMpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBEZWZpbml0aW9uCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9TZXRWZXJzaW9uVHJpZ2dlck9uU3Vic2lkaWFyeUNsYXNzKAogICAgICAgICAgICAgICAgVmFsdWUgPT4gWyJEZWZpbml0aW9uVXBkYXRlIl0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlNldCBTdWJzaWRpYXJ5IFZlcnNpb24gVHJpZ2dlciB0byAnRGVmaW5pdGlvblVwZGF0ZScuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgICMgdGhpcyBub3cgdHJpZ2dlcnMgYSBuZXcgdmVyc2lvbgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgIHN1YnRlc3QgImMpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzIG9uIENvdW50cnkgYW5kIERlZmluaXRpb25VcGRhdGUgdHJpZ2dlciBvbiBTdWJzaWRpYXJ5KSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IGZvdXIgdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA0IF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIERGIHVwZGF0ZSBjaGFuZ2UgbGluayBkaXIgb24KICAgICAgICAjIFJlZmVyZW5jZVRvQ291bnRyeURGCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBhbHNvIHRyaWdnZXJzIG5ldyB2ZXJzaW9uCiAgICAgICAgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScgKTsKCiAgICAgICAgc3VidGVzdAogICAgICAgICAgICAiYykgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnICh3aXRoIHZlcnNpb24gdHJpZ2dlcnMgb24gQ291bnRyeSBhbmQgU3Vic2lkaWFyeSkgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAyIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gNCBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA1IF0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQ2xlYW51cCBMaW5rVHlwZT0nJExpbmtUeXBlJzogZGVsZXRlIGFsbCB0ZXN0IENJIG9iamVjdHMiID0+IHN1YiB7CiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdExvY2F0aW9uMiBkZWxldGVkIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgIkFzc2VydCBubyBDSSBpdGVtcyBhbmQgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIgPT4gc3ViIHsKICAgICAgICAgICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAoKICAgICAgICAgICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsICAgICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKCBzY2FsYXIgJExpbmtlZENvbmZpZ0l0ZW1zLT5AKiwgMCwgJ1RoZXJlIGFyZSBubyBDSSBsaW5rcyBsZWZ0JyApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhZ2FpbiwgYWZ0ZXIgY2xlYW51cAogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgIH07Cn0KZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIFByZXBhcmUgdGhlIEdlbmVyYWwgQ2F0YWxvZyBjbGFzc2VzIGJ5IHJlbG9hZGluZyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbAoKc3ViIF9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMgewoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAoKICAgICAgICAjICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcyB7CgogICAgbXkgJVBhcmFtID0gQF87CiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiAkVmFsdWUsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgIHJldHVybiAkUmVzdWx0Owp9CgojIGNhbGwgbGlrZQojIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiMgICAgTG9jYXRpb25JRCA9PiAkVGVzdExvY2FpdG9uMUlELAojICAgIFZlcnNpb25zID0+IFsKIyAgICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgICBbIk5pZWRlcmthbHRlbmtpcmNoZW4kUmFuZG9tSUQiID0+IDIgXSwKIyAgICAgXQojKTsKCnN1YiBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gICAgICA9IEBfOwogICAgbXkgJFZlcnNpb25zICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJExvY2F0aW9uSUQgPSAkUGFyYW17TG9jYXRpb25JRH07CgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2F0aW9uSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uQ291bnQgPSBAJFZlcnNpb25zOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFZlcnNpb25MaXN0UmVmLAogICAgICAgICRWZXJzaW9uQ291bnQsCiAgICAgICAgIkNvdW50IG9mIFZlcnNpb25zIGlzICRWZXJzaW9uQ291bnQgZm9yICIgLiAkU3Vic2lkaWFyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRSZWZlcmVuY2VkQ29uZmlnSXRlbUlEID0gJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkLT57IkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkifS0+WzBdOwoKICAgICAgICBteSAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUmVmZXJlbmNlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICJWZXJzaW9uICIgLiAoICRfICsgMSApIC4gIiBSZWZlcmVuY2VUb0NvdW50cnkgREYgUG9pbnRzIHRvICckTmFtZScuIgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ1JlZmVyZW5jZVRvQ291bnRyeSBERiBmb3VuZC4nICk7CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfTsKCiAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbScsICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJSZWZlcmVuY2VUb0NvdW50cnkgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgKTsKCiAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259OwogICAgbXkgJFRhcmdldElEICAgICA9ICRQYXJhbXtUYXJnZXRJRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAoKICAgICAgICAjIFR5cGVzICAgICAgICA9PiBbICRMaW5rVHlwZSBdLCAjIG9wdGlvbmFsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywgICAgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgaXMoIHNjYWxhciAkTGlua2VkQ29uZmlnSXRlbXMtPkAqLCAgICAgICAgICAgMSwgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rIGZvciAnIC4gJFN1YnNpZGlhcnlMb29rdXB7JENvbmZpZ0l0ZW1JRH0gKTsKICAgIGlzKCAkTGlua2VkQ29uZmlnSXRlbXMtPlswXS0+e0RpcmVjdGlvbn0sICAgICREaXJlY3Rpb24sICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57Q29uZmlnSXRlbUlEfSwgJFRhcmdldElELCAgIkNJIExpbmsgcG9pbnRzIHRvIiAuICRDb3VudHJ5TG9va3VweyRUYXJnZXRJRH0gLiAiICgkVGFyZ2V0SUQpLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfQXNzZXJ0Tm9MZWFrcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJEV4cGVjdGVkQ29uZmlnSXRlbXNDb3VudCAgICAgPSAkUGFyYW17Q29uZmlnSXRlbXNDb3VudH07CiAgICBteSAkRXhwZWN0ZWRDb25maWdJdGVtTGlua3NDb3VudCA9ICRQYXJhbXtDb25maWdJdGVtTGlua3NDb3VudH07CgogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgogICAgaXMoCiAgICAgICAgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50LAogICAgICAgICRFeHBlY3RlZENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIGlzKAogICAgICAgICRDdXJyZW50Q29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgJEV4cGVjdGVkQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIF9Bc3NlcnRMb2NhdGlvbklEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTG9jYXRpb25JRCAgID0gJFBhcmFte0xvY2F0aW9uSUR9OwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgIG15ICRVcGRhdGVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJFRlc3RMb2NhdGlvbklkID0gJFVwZGF0ZWQtPnsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJ9LT5bMF07CiAgICBpcygKICAgICAgICAkVGVzdExvY2F0aW9uSWQsCiAgICAgICAgJExvY2F0aW9uSUQsCiAgICAgICAgIkNJIFJlZmVyZW5jZVRvQ291bnR5IERGIGdvdCB1cGRhdGVkIHRvICIgLiAkQ291bnRyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIHJldHVybjsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItemLinkTest.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJFNlcnZpY2VPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlVuaXRUZXN0Q29uZmlnSXRlbV8kUmFuZG9tSUQiOwpteSAkU2VydmljZU5hbWUgICAgPSAiVW5pdFRlc3RTZXJ2aWNlXyRSYW5kb21JRCI7CgpzdWIgQ2hlY2tFeHBlY3RlZFJlc3VsdHMgewogICAgbXkgKCVQYXJhbSkgPSBAXzsKCiAgICBteSAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9ICV7ICRQYXJhbXtFeHBlY3RlZEluY2lkZW50U3RhdGVzfSB9OwogICAgbXkgJU9iamVjdE5hbWVTdWZmaXgySUQgICAgPSAleyAkUGFyYW17T2JqZWN0TmFtZVN1ZmZpeDJJRH0gfTsKCiAgICAjIGNoZWNrIHRoZSByZXN1bHRzCiAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQga2V5cyAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyApIHsKCiAgICAgICAgaWYgKCAkT2JqZWN0IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgIkNoZWNrIGluY2lkZW50IHN0YXRlIG9mIGNvbmZpZyBpdGVtICROYW1lU3VmZml4LiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9iamVjdCBlcSAnU2VydmljZScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzZXJ2aWNlIGRhdGEgKGluY2x1ZGluZyB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSkKICAgICAgICAgICAgICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICAkRXhwZWN0ZWRJbmNpZGVudFN0YXRlc3skT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICAgICAiQ2hlY2sgaW5jaWRlbnQgc3RhdGUgb2Ygc2VydmljZSAkTmFtZVN1ZmZpeC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIERvbmUgZm9yIHNlY29uZCBydW4gKGFmdGVyIHJlY2FsY3VsYXRpb24pLgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1JlY2FsY3VsYXRlfTsKCiAgICAjIFRyaWdnZXIgcmVjYWxjdWxhdGlvbiBvZiBpbmNpZGVudCBzdGF0ZXMgZm9yIGVhY2ggY29uZmlnIGl0ZW0uCiAgICBteSAkRXhpdENvZGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlJyktPkV4ZWN1dGUoKTsKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGUgZXhpdCBjb2RlIgogICAgKTsKCiAgICAjIENoZWNrIHJlc3VsdHMgYWdhaW4gYWZ0ZXIgcmVjYWxjdWxhdGlvbiAoY2FsbCBteXNlbGYgcmVjdXJzaXZlbHkpLgogICAgIyBUaGVyZSBpcyBubyBjaGFuZ2UgaW4gdGhlIGV4cGVjdGVkIHJlc3VsdC4KICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZWNhbGN1bGF0ZSA9PiAxLAogICAgKTsKCiAgICAjIERvbmUsIHR3byBydW5zIHdlcmUgZXhlY3V0ZWQKICAgIHJldHVybiAxOwp9CgojIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCik7Cm15ICVEZXBsU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskRGVwbFN0YXRlTGlzdH07CgojIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0Cm15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKKTsKbXkgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRJbmNpU3RhdGVMaXN0fTsKCiMgRGVmaW5pdGlvbnMgYXJlIGFkZGVkIGFzIFlBTUwgc3RyaW5ncwojIGRlZmluZSB0aGUgZmlyc3QgdGVzdCBkZWZpbml0aW9uIChiYXNpYyBkZWZpbml0aW9uIHdpdGhvdXQgRHluYW1pY0ZpZWxkcykKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9ucyA9ICg8PCdFTkRfWUFNTCcpOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogUGFnZTIKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24yCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBTZWN0aW9uMjoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAyIgpFTkRfWUFNTAoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGFkZCB0aGUgdGVzdCBjbGFzc2VzLCBhY3R1YWxseSBvbmx5IG9uZSB0ZXN0IGNsYXNzCm15ICggQENvbmZpZ0l0ZW1DbGFzc0lEcywgQENvbmZpZ0l0ZW1DbGFzc2VzLCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMgKTsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICRDbGFzc05hbWU7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CiAgICBvayggJENsYXNzSUQsICJBZGRlZCBjbGFzcyAkQ2xhc3NOYW1lIHRvIHRoZSBnZW5lcmFsIGNhdGFsb2ciICk7CgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKICAgICk7CgogICAgIyBTZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENsYXNzSUQ7CgogICAgIyBhZGQgYSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcwogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgICAgICAiQWRkZWQgYSBkZWZpbml0aW9uLCBzdWNjZXNzIHdhcyByZXBvcnRlZCIgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgIkFkZGVkIGEgZGVmaW5pdGlvbiwgZ290IGEgZGVmaW5pdGlvbiBJRCIgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKfQoKIyBnZXQgZGVmaW5pdGlvbiBmb3IgJ1Rlc3QnIGNsYXNzCm15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCik7CnJlZl9vayggJERlZmluaXRpb25SZWYsICdIQVNIJywgJ2FkZGVkIGRlZmluaXRpb24gY291bGQgYmUgcmV0cmlldmVkJyApOwoKbXkgJU9iamVjdE5hbWVTdWZmaXgySUQ7CgojIGNyZWF0ZSBzb21lIHRlc3QgY29uZmlnIGl0ZW1zLCBhbGwgdGhlIGNvbmZpZyBpdGVtcyBhcmUgb3BlcmF0aW9uYWwgaW5pdGlhbGx5CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gNywgcXcoQSBCIEMgRCBFIEYgRykgKSB7CgogICAgIyBhZGQgYSBjb25maWdpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gam9pbiggJ18nLCAkQ29uZmlnSXRlbU5hbWUsICdUZXN0SXRlbScsICROYW1lU3VmZml4ICksCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiQWRkZWQgY29uZmlnaXRlbSBpZCAkQ29uZmlnSXRlbUlELiIgKTsKCiAgICAjIHJlbWVtYmVyIHRoZSBjb25maWcgaXRlbSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9ID0gJENvbmZpZ0l0ZW1JRDsKfQoKIyBjcmVhdGUgc2VydmljZXMKbXkgQFNlcnZpY2VJRHM7CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gMiApIHsKCiAgICBteSAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFNlcnZpY2VOYW1lIC4gJ18nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIFR5cGVJRCAgICAgID0+IDEsCiAgICAgICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKICAgICk7CiAgICBvayggJFNlcnZpY2VJRCwgIkFkZGVkIHNlcnZpY2UgaWQgJFNlcnZpY2VJRC4iICk7CgogICAgIyByZW1lbWJlciB0aGUgc2VydmljZSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7U2VydmljZX0tPnskTmFtZVN1ZmZpeH0gPSAkU2VydmljZUlEOwoKICAgIHB1c2ggQFNlcnZpY2VJRHMsICRTZXJ2aWNlSUQ7Cn0KCiMgcmVhZCB0aGUgb3JpZ2luYWwgc2V0dGluZyBmb3IgSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbgpteSAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgojIHNldCBuZXcgY29uZmlnIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJywKICAgIFZhbHVlID0+IHsKICAgICAgICBEZXBlbmRzT24gPT4gJ1RhcmdldCcsCiAgICAgICAgSW5jbHVkZXMgID0+ICdUYXJnZXQnLAogICAgfSwKKTsKCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIERpYWdyYW0KIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIwojCiMgICAgICAgICAgICAgICAgICAgICA2ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgMQojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgQyA8KioqKioqKiogNSAtLS0tLS0+IDQgLS0tLS0tPiAzIC0tLS0tLT4gMSAqKioqKioqKio+IEEgKioqKioqKj4gRiAqKioqKioqKioqPiBHCiMgICAgICAgICAqICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICBeCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBCICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICB2ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB2ICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICBEICoqKioqKioqPiA3ICAgICAgICAgICAgICAgICAgICstLS0tLS0tPiAyICoqKioqKioqKioqKiAgICAgICAgICBFCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIDIKIwojCiMKIwojICBFeHBsYW5hdGlvbjoKIyAgICAgICAgICAgICAgIDEgLi4gNyBhbmQgQSAuLiBHIGFyZSBJVFNNQ29uZmlnSXRlbXMuIFRoZSBhcnJvdyBpbmRpY2F0ZXMgaG93IGluY2lkZW50cyBhbmQgd2FybmluZ3MKIyAgICAgICAgICAgICAgIGFyZSBwcm9wYWdhdGVkIGluIHRoZSBncmFwaC4KIwojICAgICAgICAgICAgICAgRGVwZW5kc09uIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzIC0tLS0tPgojICAgICAgICAgICAgICAgSW5jbHVkZXMgIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzICoqKioqPgojCiMgICAgICAgICAgICAgICBUaGUgY29uZmlnIGl0ZW0gNSAoU291cmNlKSBoYXMgYSBEZXBlbmRzT24gcmVsYXRpb25zaGlwIHdpdGggY29uZmlnIGl0ZW0gNiAoVGFyZ2V0KS4KIyAgICAgICAgICAgICAgIFdoZW4gNiBoYXMgYW4gaW5jaWRlbnQgdGhlbiB0aGUgd2FybmluZyBmbGFnIG11c3QgYmUgcmFpc2VkIG9uIDUuIFRoZXJlZm9yZSB0aGUgZGlyZWN0aW9uCiMgICAgICAgICAgICAgICBvZiBwcm9wYWdhdGlvbiBmb3IgRGVwZW5kc09uIG11c3QgYmUgZnJvbSBUYXJnZXQgdG8gU291cmNlLiBJbiB0aGUgY29kZSB0aGlzIGlzIGluZGljYXRlZAojICAgICAgICAgICAgICAgYnkgIkRpcmVjdGlvbiA9PiAnU291cmNlJy4KIwojICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgZGVmaW5lIHRoZSBsaW5rcyBiZXR3ZWVuIENJcyBhbmQgU2VydmljZXMKbXkgJUxpbmtzID0gKAogICAgRGVwZW5kc09uID0+IHsKICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICc3JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzUnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzYnID0+IHsgICAgIyA2IGlzIHRoZSB0YXJnZXQgZm9yIERlcGVuZHNPbgogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc1J10sICAgICMgNSBpcyB0aGUgc291cmNlIG9mIERlcGVuZHNPbgogICAgICAgICAgICB9LAogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc0J10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICc0JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzMnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzMnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsgJzEnLCAnMicgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzInID0+IHsKICAgICAgICAgICAgICAgIFNlcnZpY2UgPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnMSddLAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH0sCiAgICBJbmNsdWRlcyA9PiB7CiAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydDJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdDJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0QnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0QnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnNyddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQicgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICcyJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0EnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnQSddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydGJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdGJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0cnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0UnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnRiddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAopOwoKIyBsaW5rIHRoZSBjb25maWcgaXRlbXMgYW5kIHNlcnZpY2VzIGFzIHNob3duIGluIHRoZSBkaWFncmFtCmZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJUxpbmtzICkgewogICAgZm9yIG15ICRUYXJnZXRPYmplY3QgKCBzb3J0IGtleXMgJExpbmtzeyRMaW5rVHlwZX0tPiUqICkgewogICAgICAgIGZvciBteSAkVGFyZ2V0S2V5ICggc29ydCBrZXlzICRMaW5rc3skTGlua1R5cGV9LT57JFRhcmdldE9iamVjdH0tPiUqICkgewogICAgICAgICAgICBmb3IgbXkgJFNvdXJjZU9iamVjdCAoIHNvcnQga2V5cyAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPiUqICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRTb3VyY2VLZXkgKCAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPnskU291cmNlT2JqZWN0fS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBsaW5rcwogICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAkU291cmNlT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JFNvdXJjZU9iamVjdH0tPnskU291cmNlS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICRUYXJnZXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskVGFyZ2V0T2JqZWN0fS0+eyRUYXJnZXRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJMaW5rQWRkKCkgLSAkU291cmNlT2JqZWN0OiRTb3VyY2VLZXkgbGlua2VkIHdpdGggJFRhcmdldE9iamVjdDokVGFyZ2V0S2V5IHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScuIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgojIHNldCBDSTYgdG8gIkluY2lkZW50IiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBJbmNpZGVudCB3aXRoIENvbmZpZ0l0ZW1VcGRhdGUoKScgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNjsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ0luY2lkZW50JzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgMSBkZXBlbmRzIG9uIDMKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSAyIGRlcGVuZHMgb24gMwogICAgICAgICAgICAgICAgJzMnID0+ICdXYXJuaW5nJywgICAgICAgIyBiZWNhdXNlIDMgZGVwZW5kcyBvbiA0CiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgNCBkZXBlbmRzIG9uIDUKICAgICAgICAgICAgICAgICc1JyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSA1IGRlcGVuZHMgb24gNgogICAgICAgICAgICAgICAgJzYnID0+ICdJbmNpZGVudCcsICAgICAgIyBiZWNhdXNlIGl0IHdhcyBleHBsaWNpdGx5IHNldAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2Ugb2YgY29ubmVjdGlvbiB3aXRoIENJIDEKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyBzZXQgQ0k2IGJhY2sgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBiYWNrIHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCgpJyA9PiBzdWIgewogICAgbXkgJE5hbWVTdWZmaXggICAgPSA2OwogICAgbXkgJEluY2lkZW50U3RhdGUgPSAnT3BlcmF0aW9uYWwnOwoKICAgICMgY2hhbmdlIGluY2lkZW50IHN0YXRlCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRPYmplY3ROYW1lU3VmZml4MklEe0lUU01Db25maWdJdGVtfS0+eyROYW1lU3VmZml4fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lIC4gJ19UZXN0SXRlbV8nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzMnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc1JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdBJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPYmplY3ROYW1lU3VmZml4MklEID0+IFwlT2JqZWN0TmFtZVN1ZmZpeDJJRCwKICAgICk7Cgp9OwoKIyBzZXQgQ0kxIHRvICJJbmNpZGVudCIgYW5kIGNoZWNrIHRoZSByZXN1bHRzCnN1YnRlc3QgJ0NJMSBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDE7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc0JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzUnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiSW5jaWRlbnQiIGFuZCBjaGVjayB0aGUgcmVzdWx0cyAoQ0kxIGlzIHN0aWxsIGluICJJbmNpZGVudCIpCnN1YnRlc3QgJ0NJNiBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDU7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICczJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzUnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnQScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0QnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKCn07CgojIHNldCBDSTEgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMgKENJNSBpcyBzdGlsbCBpbiAiSW5jaWRlbnQiKQpzdWJ0ZXN0ICdDSTEgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gMTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzQnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICc1JyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiT3BlcmF0aW9uYWwiIGFuZCBjaGVjayB0aGUgcmVzdWx0cwpzdWJ0ZXN0ICdDSTUgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICczJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzQnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc2JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZQokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbicsCiAgICBWYWx1ZSA9PiAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nLAopOwoKIyBDaGVjayBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZSBhZnRlciAnTGlua0FkZCcgYWN0aW9uIChzZWUgYnVnIzE0MzgyKS4KZGlhZyAiVGVzdHMgZm9yIFNldEluY2lkZW50U3RhdGVPbkxpbmsiOwoKIyBTZXQgc29tZSBjb25maWdzIGZvciBsaW5rIHN0YXR1cy4KJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6U2V0SW5jaWRlbnRTdGF0ZU9uTGluaycsCiAgICBWYWx1ZSA9PiAxLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJywKICAgIFZhbHVlID0+IFsnUHJvZHVjdGlvbiddLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcycsCiAgICBWYWx1ZSA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJywgJ09wZXJhdGlvbmFsJyBdLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMnLAogICAgVmFsdWUgPT4gewogICAgICAgIFJlbGV2YW50VG8gPT4gJ0luY2lkZW50JywKICAgIH0sCik7CiRDb25maWdPYmplY3QtPlNldCgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJywKICAgIFZhbHVlID0+IFsnSW5jaWRlbnQnXSwKKTsKCiRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiMgVGhlIHRpY2tldCB0eXBlICdJbmNpZGVudCcgaXMgdXNlZCBmb3IgdGVzdGluZy4KIyBUaGUgdHlwZSBuZWVkcyB0byBiZSBjcmVhdGVkIHdoZW4gaXQgZG9lcyBub3QgZXhpc3QuCm15ICRJbmNpZGVudFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVBZGQoCiAgICBOYW1lICAgID0+ICdJbmNpZGVudCcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAoICFkZWZpbmVkICRJbmNpZGVudFR5cGVJRCB8fCAkSW5jaWRlbnRUeXBlSUQgKSwgInRpY2tldCB0eXBlIEluY2lkZW50IGNyZWF0ZWQsIG9yIGl0IGFscmVhZHkgZXhpc3RlZCIgKTsKCiMgQ3JlYXRlIHRlc3QgdGlja2V0LgpteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gIlROLSRSYW5kb21JRCIsCiAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICBUeXBlICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKb2soICRUaWNrZXRJRCwgIlRpY2tldElEICRUaWNrZXRJRCBpcyBjcmVhdGVkIiApOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICJDSS0wMS0kUmFuZG9tSUQiLAogICAgICAgIERlcGxTdGF0ZUlEICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDItJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDMtJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnUmVsZXZhbnRUbycsCiAgICAgICAgRXhwZWN0ZWRJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gIkNJLTA0LSRSYW5kb21JRCIsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKKTsKCm15IEBDSUlEczsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgc3VidGVzdCAkVGVzdC0+e05hbWV9ID0+IHN1YiB7CgogICAgICAgICMgQ3JlYXRlIENJLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFRlc3QtPntOYW1lfSwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRUZXN0LT57SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIiApOwoKICAgICAgICBwdXNoIEBDSUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgIyBBZGQgYSB2ZXJzaW9uLgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkVGVzdC0+e05hbWV9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkVGVzdC0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgIlZlcnNpb25JRCAkVmVyc2lvbklEIGlzIGNyZWF0ZWQiICk7CgogICAgICAgICMgQWRkIGEgbGluay4KICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRUZXN0LT57TGlua1R5cGV9LAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRJRCAkVGlja2V0SUQgbGlua2VkIHdpdGggQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQgd2l0aCBMaW5rVHlwZSAnJFRlc3QtPntMaW5rVHlwZX0nIiApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENJJ3MgaW5jaWRlbnQgc3RhdGUuCiAgICAgICAgaXMoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZEluY2lTdGF0ZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3VySW5jaVN0YXRlOiAkVGVzdC0+e0V4cGVjdGVkSW5jaVN0YXRlfSIsCiAgICAgICAgKTsKICAgIH07Cn0KCiMgU2V0IHRpY2tldCB0eXBlIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiAnSW5jaWRlbnQnIHRvIHZlcmlmeSBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZS4KbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgVHlwZSAgICAgPT4gJ1VuY2xhc3NpZmllZCcsCiAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwpvayggJFN1Y2Nlc3MsICJUeXBlIGZvciBUaWNrZXRJRCAkVGlja2V0SUQgaXMgY2hhbmdlZCB0byAnVW5jbGFzc2lmaWVkJyIgKTsKCmZvciBteSAkQ0lJRCAoQENJSURzKSB7CiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJSUQsCiAgICApOwogICAgaXMoCiAgICAgICAgJENJLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICJDSUlEICRDSUlEIGlzIGluICdPcGVyYXRpb25hbCcgc3RhdGUgYWZ0ZXIgdGlja2V0IHR5cGUgdXBkYXRlIiwKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItemUniqueCIName.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQpteSAkRmlyc3RDbGFzc05hbWUgID0gJ1VuaXRUZXN0Q2xhc3MxJyAuICRSYW5kb21JRDsKbXkgJFNlY29uZENsYXNzTmFtZSA9ICdVbml0VGVzdENsYXNzMicgLiAkUmFuZG9tSUQ7CgojIHNldCBhIG5hbWUgcHJlZml4Cm15ICROYW1lUHJlZml4ID0gJ1VuaXRUZXN0TmFtZScgLiAkUmFuZG9tSUQ7CgojIGFkZCBib3RoIHVuaXR0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKbXkgJEZpcnN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJEZpcnN0Q2xhc3NOYW1lLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwoKIyBjaGVjayBmaXJzdCBjbGFzcyBpZAppZiAoICEkRmlyc3RDbGFzc0lEICkgewoKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkNhbid0IGFkZCBmaXJzdCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRGaXJzdENsYXNzSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCnB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJEZpcnN0Q2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkRmlyc3RDbGFzc05hbWU7CgpteSAkU2Vjb25kQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFNlY29uZENsYXNzTmFtZSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIEtleSAgICA9PiAnVmVyc2lvblN0cmluZ01vZHVsZScsCiAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAopOwoKIyBjaGVjayBzZWNvbmQgY2xhc3MgaWQKaWYgKCAhJFNlY29uZENsYXNzSUQgKSB7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiQ2FuJ3QgYWRkIHNlY29uZCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkU2Vjb25kQ2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkU2Vjb25kQ2xhc3NOYW1lOwoKbXkgQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnM7CgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCn0iOwoKbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKZm9yIG15ICRQZXJsRGVmaW5pdGlvbiAoQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnMpIHsKICAgIG15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgJFlBTUxEZWZpbml0aW9uOwp9CgojIGFkZCBhbiBlbXB0eSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcy4gdGhlIGRlZmluaXRpb24gZG9lc24ndCBuZWVkIGFueSBlbGVtZW50cywgYXMgd2UncmUgb25seQojIHRlc3RpbmcgdGhlIG5hbWUgd2hpY2ggaXNuJ3QgcGFydCBvZiB0aGUgZGVmaW5pdGlvbiwgYnV0IG9mIHRoZSBjb25maWcgaXRlbSBpdHNlbGYKbXkgJEZpcnN0UmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbnNbMF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnZmlyc3QgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhZGRlZCcgKTsKCm15ICRGaXJzdERlZmluaXRpb25JRCA9ICRGaXJzdFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKbXkgJFNlY29uZFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uc1swXSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKb2soICRTZWNvbmRSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnc2Vjb25kIGNvbmZpZyBpdGVtIGRlZmluaXRpb24gYWRkZWQnICk7CgpteSAkU2Vjb25kRGVmaW5pdGlvbklEID0gJFNlY29uZFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkU2Vjb25kRGVmaW5pdGlvbklEOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbUlEczsKCm15ICRGaXJzdENsYXNzUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+IDw8J0RFRklOSVRJT04nLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIFR5cGU6IERlc2NyaXB0aW9uCkRFRklOSVRJT04KICAgIFVzZXJJRCA9PiAxLAopOwoKIyBmZXRjaCB0aGUgZGVmaW5pdGlvbiBpZApteSAkRmlyc3RDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJEZpcnN0Q2xhc3NJRCwKKTsKCiMgYWRkIGEgY29uZmlnaXRlbSB0byBlYWNoIGNsYXNzCm15ICRGaXJzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnRmlyc3QjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkRmlyc3RDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCnB1c2ggQENvbmZpZ0l0ZW1JRHMsICRGaXJzdENvbmZpZ0l0ZW1JRDsKCm15ICRTZWNvbmRDbGFzc1Jlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gPDwnREVGSU5JVElPTicsCi0tLQpQYWdlczoKICAtIE5hbWU6IENvbnRlbnQKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMQogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgpTZWN0aW9uczoKICBBdHRyaWJ1dGVzOgogICAgVHlwZTogRGVzY3JpcHRpb24KREVGSU5JVElPTgogICAgVXNlcklEID0+IDEsCik7CgojIGZldGNoIHRoZSBkZWZpbml0aW9uIGlkCm15ICRTZWNvbmRDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJFNlY29uZENsYXNzSUQsCik7CgpteSAkU2Vjb25kQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMScsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRTZWNvbmRDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpwdXNoIEBDb25maWdJdGVtSURzLCAkU2Vjb25kQ29uZmlnSXRlbUlEOwoKIyBjcmVhdGUgYSAzcmQgY29uZmlnaXRlbSBpbiB0aGUgMm5kIGNsYXNzCm15ICRUaGlyZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmREZWZpbml0aW9uSUQsCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRUaGlyZENvbmZpZ0l0ZW1JRCApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkZhaWxlZCB0byBhZGQgdGhlIHRoaXJkIGNvbmZpZ2l0ZW0iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUlEcywgJFRoaXJkQ29uZmlnSXRlbUlEOwoKIyBzZXQgYSBuYW1lIGZvciBlYWNoIGNvbmZpZ2l0ZW0KbXkgJEZpcnN0SW5pdGlhbFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRGaXJzdENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdGaXJzdCMwMDEnLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRGaXJzdEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCm15ICRTZWNvbmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFNlY29uZENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkU2Vjb25kQ2xhc3NEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKaWYgKCAhJFNlY29uZEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpteSAkVGhpcmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFRoaXJkQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmRDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkVGhpcmRJbml0aWFsVmVyc2lvbklEICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiRmFpbGVkIHRvIGFkZCB0aGUgaW5pdGlhbCB2ZXJzaW9uIGZvciB0aGUgdGhpcmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIHRoZSBhY3R1YWwgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyByZWFkIHRoZSBvcmlnaW5hbCBzZXR0aW5nIGZvciB0aGUgc2V0dGluZyBFbmFibGVVbmlxdWVuZXNzQ2hlY2sKbXkgJE9yaWdFbmFibGVTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycpOwoKIyBlbmFibGUgdGhlIHVuaXF1ZW5lc3MgY2hlY2sKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+IDEsCik7CgojIHJlYWQgdGhlIG9yaWdpbmFsIHNldHRpbmcgZm9yIHRoZSBzY29wZSBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjawpteSAkT3JpZ1Njb3BlID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJyk7CgojIG1ha2Ugc3VyZSwgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayBpcyBzZXQgdG8gJ2dsb2JhbCcKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJ2dsb2JhbCcsCik7CgpteSAkUmVuYW1lU3VjY2VzczsKCiMgdHJ5IHRvIGdpdmUgdGhlIDFzdCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDJuZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkUmVuYW1lU3VjY2VzcywKICAgICJTY29wZSA9PiBnbG9iYWw6IFJlbmFtaW5nIEZpcnN0IzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDEgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgdHJ5IHRvIGdpdmUgdGhlIDJuZCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDNyZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2Vjb25kQ29uZmlnSXRlbUlELAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGdsb2JhbDogUmVuYW1pbmcgU2Vjb25kIzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDIgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgc2V0IHRoZSBzY29wZSBmb3IgdGhlIHVuaXF1ZW5lc3MgY2hlY2sgdG8gJ2NsYXNzJwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICBWYWx1ZSA9PiAnY2xhc3MnLAopOwoKIyB0cnkgdG8gcmVuYW1lIEZpcnN0IzAwMSBhZ2FpbiB0byBTZWNvbmQjMDAxIHdoaWNoIHNob3VsZCB3b3JrIG5vdywgZHVlIHRvIHRoZSBkaWZmZXJlbnQgY2xhc3MKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBGaXJzdCMwMDEgdG8gYWxyZWFkeSBleGlzdGluZyBTZWNvbmQjMDAxIHN1Y2NlZWRlZCIKKTsKCiMgdHJ5aW5nIG5vdyB0byBjcmVhdGUgYSBkdXBsaWNhdGUgbmFtZSB3aXRoaW4gYSBjbGFzcwokUmVuYW1lU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRTZWNvbmRDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMicsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBTZWNvbmQjMDAxIHRvIGFscmVhZHkgZXhpc3RpbmcgU2Vjb25kIzAwMiBzdWNjZXNzZnVsbHkgcHJldmVudGVkIgopOwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+ICRPcmlnRW5hYmxlU2V0dGluZywKKTsKCiMgcmVzZXQgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJE9yaWdTY29wZSwKKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRDdXN0b21lclVzZXJPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwpteSAlRm9ybWF0QmFja2VuZE9iamVjdCAgPSAoCiAgICBDU1YgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6OkZvcm1hdEJhY2tlbmQ6OkNTVicpLAogICAgSlNPTiA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpGb3JtYXRCYWNrZW5kOjpKU09OJyksCik7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJFVzZXJPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBjcmVhdGUgdGVzdCB1c2VyCm15ICggdW5kZWYsICRUZXN0VXNlcklEICkgPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgojIGFkZCBzb21lIElUU01Db25maWdJdGVtIHRlc3QgdGVtcGxhdGVzIGZvciBsYXRlciBjaGVja3MKIyBtb3N0bHkgd2l0aCBkdW1teSBmb3JtYXRzLCBidXQgdXNlIDUgYW5kIDYgZm9yIENTViBhbmQgSlNPTiB0ZXN0cy4KbXkgQFRlbXBsYXRlSURzOwp7CiAgICBteSAlRm9ybWF0ID0gKAogICAgICAgIDUgPT4gJ0NTVicsCiAgICAgICAgNiA9PiAnSlNPTicsCiAgICApOwoKICAgIGZvciBteSAkaSAoIDAgLi4gMjkgKSB7CiAgICAgICAgbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgICAgICAgICAgT2JqZWN0ICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBGb3JtYXQgID0+ICggJEZvcm1hdHskaX0gfHwgJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlEICksCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlELAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAVGVtcGxhdGVJRHMsICRUZW1wbGF0ZUlEOwogICAgfQp9CgojIE9iamVjdExpc3QgdGVzdCAxIChjaGVjayBDU1YgaXRlbSkKewogICAgbXkgJE9iamVjdExpc3QgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RMaXN0OwogICAgb2soCiAgICAgICAgJE9iamVjdExpc3QgJiYgcmVmICRPYmplY3RMaXN0IGVxICdIQVNIJyAmJiAkT2JqZWN0TGlzdC0+e0lUU01Db25maWdJdGVtfSwKICAgICAgICAiT2JqZWN0TGlzdCgpIC0gSVRTTUNvbmZpZ0l0ZW0gZXhpc3RzIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICApOwoKICAgICMgY2hlY2sgb2JqZWN0IGF0dHJpYnV0ZSByZWZlcmVuY2UKICAgIG9rKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSAmJiByZWYgJE9iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGNoZWNrIGFycmF5IHJlZmVyZW5jZSIsCiAgICApOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZGVmaW5lIHRoZSByZWZlcmVuY2UgaGFzaAogICAgbXkgJE9iamVjdEF0dHJpYnV0ZXNHZXQxUmVmZXJlbmNlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBOYW1lICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMycsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldE91dGVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMCcsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldElubmVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0lucHV0JyA9PiB7CiAgICAgICAgICAgICAgICAnVHlwZScgPT4gJ0NoZWNrYm94JwogICAgICAgICAgICB9LAogICAgICAgICAgICAnTmFtZScgPT4gJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcsCiAgICAgICAgICAgICdLZXknICA9PiAnRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsgVHlwZSA9PiAiQ2hlY2tib3giIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJJbmNsdWRlQXR0YWNobWVudHMiLAogICAgICAgICAgICBOYW1lICA9PiAiSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSkiLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlzKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSwKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDFSZWZlcmVuY2UsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGF0dHJpYnV0ZXMgb2YgdGhlIHJvdyBhcmUgaWRlbnRpY2FsIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDIgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWy0xXSArIDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CiAgICBpcygKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDIsCiAgICAgICAgdW5kZWYsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGV4cGVjdGVkIHRvIGZhaWwiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbMF0sCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CgogICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBhdHRyaWJ1dGUgcmVmZXJlbmNlCiAgICBvaygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxICYmIHJlZiAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkgLSBjaGVjayBhcnJheSByZWZlcmVuY2UiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICBpcygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyLAogICAgICAgIHVuZGVmLAogICAgICAgICJNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpIC0gZXhwZWN0ZWQgdG8gZmFpbCIsCiAgICApOwp9CgojIGFkZCBhIGdlbmVyYWwgY2F0YWxvZyB0ZXN0IGxpc3QKbXkgJENvbmZpZ0l0ZW1Hcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGRvbid0IGNhcmUgYWJvdXQgdmFsaWQgZW1haWxzCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgIFZhbHVlID0+IDAsCik7CgojIENyZWF0ZSBjdXN0b21lciB1c2VycyB3aGljaCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQ3VzdG9tZXJVc2VyIGR5bmFtaWMgZmllbGRzOgojIHdpdGggZG91YmxlIHF1b3RlcyBmb3IgdGVzdGluZyBDU1YKIyB3aXRoIGhpZ2ggb3JkZXIgbGV0dGVycwojIHdpdGggcmFuZG9tIGlkLCB1c2VmdWwgZHVyaW5nIGRldmVsb3BtZW50IHdoZW4gUmVzdG9yZURhdGFiYXNlIGlzIGRlYWN0aXZhdGVkCiMKIyBUaGUgY3VzdG9tZXIgaXMgYSBjb21wYW55IHRoYXQgc2VsbHMgZnJ1aXRzLCB2ZWdldGFibGVzLCBhbmQgdHJlZXMuIFRoZSBwcm9kdWNlCiMgaXMgc29sZCBieSBtb25nZXJzIHdoaWNoIGFyZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbS4gVGhlIGNvbXBhbnkgaGFzCiMgY2hpZWYgZmluYW5jaWFsIG9mZmljZXJzIG9mIHZhcmlvdXMgZ2VuZGVycy4KbXkgJUN1c3RvbWVyVXNlcnMgPSAoCgogICAgIyBmb3IgQ3VzdG9tZXJDSU8KICAgIG1hbGVfQ0lPICAgID0+ICdtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJyAuICRSYW5kb21JRCwKICAgIGZlbWFsZV9DSU8gID0+ICdmZW1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+SgSInIC4gJFJhbmRvbUlELAogICAgZGl2ZXJzZV9DSU8gPT4gJ2RpdmVyc2UgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi4oqVIicgLiAkUmFuZG9tSUQsCgogICAgIyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0sIHRoZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbSBhcmUgbW9uZ2VycwoKICAgICMgZnJ1aXQgYW5kIHZlZ2V0YWJsZSBtb25nZXJzIGZvciBDdXN0b21lclNhbGVzVGVhbQogICAgYXBwbGVfbW9uZ2VyICA9PiAnYXBwbGUgbW9uZ2VyICLwn42OIicgLiAkUmFuZG9tSUQsCiAgICBvbmlvbl9tb25nZXIgID0+ICdvbmlvbiBtb25nZXIgIvCfp4UiJyAuICRSYW5kb21JRCwKICAgIGdhcmxpY19tb25nZXIgPT4gJ2dhcmxpYyBtb25nZXIgIvCfp4QiJyAuICRSYW5kb21JRCwKCiAgICAjIHRyZWUgbW9uZ2VycyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0KICAgIHRhbmFiYXRlX21vbmdlciA9PiAndGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJyAuICRSYW5kb21JRCwKICAgIHBhbG1fbW9uZ2VyICAgICA9PiAncGFsbSB0cmVlIG1vbmdlciAi8J+MtCInIC4gJFJhbmRvbUlELAopOwpmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ3VzdG9tZXJVc2VycyApIHsKICAgIG15ICRMb2dpbiAgICAgICAgICAgPSAkQ3VzdG9tZXJVc2Vyc3skS2V5fTsKICAgIG15ICRDdXN0b21lclVzZXJBZGQgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJBZGQoCiAgICAgICAgU291cmNlICAgICAgICAgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgVXNlckZpcnN0bmFtZSAgPT4gIiRLZXkgZmlyc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJMYXN0bmFtZSAgID0+ICIkS2V5IGxhc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJDdXN0b21lcklEID0+ICdUZXN0Q3VzdG9tZXJDb21wYW55MScgLiAkUmFuZG9tSUQsCiAgICAgICAgVXNlckxvZ2luICAgICAgPT4gJExvZ2luLAogICAgICAgIFVzZXJFbWFpbCAgICAgID0+ICRLZXkgLiAkUmFuZG9tSUQgLiAnQGV4YW1wbGUuY29tJywKICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIGlzKCAkQ3VzdG9tZXJVc2VyQWRkLCAkTG9naW4sICJjdXN0b21lciB1c2VyICckTG9naW4nIGFkZGVkIiApOwp9CgojIGNyZWF0ZSBhZ2VudHMgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQWdlbnQgZHluYW1pYyBmaWVsZHMKbXkgJUFnZW50MlVzZXJJRDsKewogICAgbXkgJUxhc3ROYW1lID0gKAoKICAgICAgICAjIGZvciB0aGUgbXVsdGkgdmFsdWUgZHluYW1pYyBmaWVsZCBaWlpTZXRPZkFnZW50cwogICAgICAgIERlc2tBZ2VudCAgICAgPT4gJ0lORk9STUFUSU9OIERFU0sgUEVSU09OIPCfkoEnLAogICAgICAgIExvdHVzQWdlbnQgICAgPT4gJ1BFUlNPTiBJTiBMT1RVUyBQT1NJVElPTiDwn6eYJywKICAgICAgICBDbGltYmluZ0FnZW50ID0+ICdQRVJTT04gQ0xJTUJJTkcg8J+nlycsCiAgICAgICAgRnJvd25pbmdBZ2VudCA9PiAnUEVSU09OIEZST1dOSU5HIPCfmY0nLAoKICAgICAgICAjIGZvciB0aGUgc2luZ2xlIHZhbHVlIGR5bmFtaWMgZmllbGQgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0CiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBBZnJpY2EnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEFmcmljYScsCiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBFdXJvcGUnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEV1cm9wZScsCiAgICApOwoKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYXN0TmFtZSApIHsKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJEtleSwKICAgICAgICAgICAgVXNlckxhc3RuYW1lICA9PiAkTGFzdE5hbWV7JEtleX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJEtleSAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlclB3ICAgICAgICA9PiAnc29tZS1wYXNzJywKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAkS2V5IC4gJFJhbmRvbUlEIC4gJ2VtYWlsQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgICAgICBDaGFuZ2VVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFVzZXJJRCwgInVzZXIgJEtleSBhZGRlZCIgKTsKICAgICAgICAkQWdlbnQyVXNlcklEeyRLZXl9ID0gJFVzZXJJRDsKICAgIH0KfQoKIyBBZGQgZ2VuZXJpYyBjYXRhbG9nIGl0ZW1zIGZvciB0ZXN0aW5nIHRoZSBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkIGNsYXNzLgojIFRPRE86IGFjdHVhbGx5IHRlc3QgR2VuZXJhbENhdGFsb2cgZHluYW1pYyBmaWVsZHMKbXkgJEdlbmVyYWxDYXRhbG9nQ2xhc3MgPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpkaWFnICJHZW5lcmFsQ2F0YWxvZ0NsYXNzOiAnJEdlbmVyYWxDYXRhbG9nQ2xhc3MnIjsKCm15ICRUZXN0SURTdWZmaXggPSAiVW5pdFRlc3QkUmFuZG9tSUQiOwpkaWFnICJUZXN0SURTdWZmaXg6ICckVGVzdElEU3VmZml4JyI7CmZvciBteSAkTmFtZSAocXcoVGVzdDEgVGVzdDIgVGVzdDMgVGVzdDQpKSB7CgogICAgIyBhZGQgYSBuZXcgaXRlbQogICAgbXkgJEl0ZW1JRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICBDbGFzcyAgID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAogICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgQ29tbWVudCA9PiAiYWRkZWQgYnkgIiAuIF9fRklMRV9fLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiJE5hbWUgYWRkZWQgdG8gdGhlIGdlbmVyYWwgY2F0YWxvZyIgKTsKCiAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgVmFsdWUgID0+IFsiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCJdLAogICAgKTsKfQoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KewogICAgbXkgJE9yZGVyID0gMjAwMDA7CgogICAgIyBubyB1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBpbiBkeW5hbWljIGZpZWxkIG5hbWVzCiAgICBteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCgogICAgICAgICMgRHluYW1pYyBmaWVsZHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBzZXQuCiAgICAgICAgQ3VzdG9tZXJDSU8gPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdUb29sdGlwIGZvciBjdXN0b21lciBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEN1c3RvbWVyU2FsZXNUZWFtID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdDdXN0b21lclVzZXInLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAxLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICA9PiAnVG9vbHRpcCBmb3IgY3VzdG9tZXIgc2FsZXMgdGVhbScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBGaXJzdE1vbmRheSA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCBtb25kYXkgb2YgYSB5ZWFyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEZpcnN0V2Vla2VuZCA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCB3ZWVrZW5kIG9mIGEgeWVhciwgdHdvIHZhbHVlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBBZ2VudDEgYW5kIEFnZW50MiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBtdWx0aSB2YWx1ZSBTZXQgWlpaU2V0T2ZBZ2VudHMKICAgICAgICBBZ2VudDEgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3IgQWdlbnQxJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEFnZW50MiA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnQWdlbnQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXNlbGVjdCAgPT4gMCwKICAgICAgICAgICAgICAgIE11bHRpVmFsdWUgICA9PiAwLAogICAgICAgICAgICAgICAgR3JvdXBGaWx0ZXIgID0+IFtdLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICAgID0+ICdUb29sdGlwIGZvciBBZ2VudDInLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0T2ZBZ2VudHMgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ1NldCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBJbmNsdWRlICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB7IERGID0+ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCB9LAogICAgICAgICAgICAgICAgICAgIHsgREYgPT4gJ0FnZW50MicgLiAkVGVzdElEU3VmZml4IH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVG9vbHRpcCA9PiAnVG9vbHRpcCBmb3IgWlpaU2V0T2ZBZ2VudHMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgTGV2ZWxGaXJzdCBhbmQgTGV2ZWxTZWNvbmQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgc2luZ2xlIHZhbHVlIFNldCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKICAgICAgICBMZXZlbEZpcnN0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpc2VsZWN0ICA9PiAwLAogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSAgID0+IDAsCiAgICAgICAgICAgICAgICBHcm91cEZpbHRlciAgPT4gW10sCiAgICAgICAgICAgICAgICBUb29sdGlwICAgICAgPT4gJ1Rvb2x0aXAgZm9yIGZpcnN0IGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgTGV2ZWxTZWNvbmQgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3Igc2Vjb25kIGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdTZXQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAwLAogICAgICAgICAgICAgICAgSW5jbHVkZSAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgPT4gJ1Rvb2x0aXAgZm9yIFpaWlNldENvbnRpbmVudGFsU3VwcG9ydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgICAgICBteSAkREZOYW1lICAgICAgICAgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7ICAgICAgICAgICAgICAgICAgIyBhZGQgc3VmZml4IHRvIGhhdmUgdW5pcXVlIG5hbWVzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJERGTmFtZSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiAkT3JkZXIrKywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uc3skTmFtZX0tPntDb25maWd9LAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZElELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7CiAgICB9Cn0KCiMgQWRkIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zCm15ICggJUNvbmZpZ0l0ZW1DbGFzc0lEcywgJUNvbmZpZ0l0ZW1EZWZpbml0aW9uSURzICk7CnsKICAgIG15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBDdXN0b21lclVzZXIgZmllbGRzCiAgICBwdXNoIEBDb25maWdJdGVtUGVybERlZmluaXRpb25zLCB7CiAgICAgICAgUGFnZXMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJ1R3b0N1c3RvbWVyVXNlcnMnLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnQ3VzdG9tZXJDSU8nIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyU2FsZXNUZWFtJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9OwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBEYXRlIGZpZWxkcwogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdUd29EYXRlcycsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnVHdvRGF0ZXNTZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgVHdvRGF0ZXNTZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0ZpcnN0TW9uZGF5JyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdGaXJzdFdlZWtlbmQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07CgogICAgIyBkZWZpbml0aW9uIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywgICAgIyB3aWxsIGJlIHJldXNlZCBpbiBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICdTZWN0aW9uMScsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyQ0lPJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRPZkFnZW50cycgLiAkVGVzdElEU3VmZml4LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfTsKCiAgICAjIGRlZmluaXRpb24gd2l0aCBhIHNpbmdsZSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdTaW5nbGVWYWx1ZVNldCcsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07Cgo9Zm9yIG5ldmVyCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIgWwogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdDdXN0b21lcicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGF0ZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEYXRlJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdEYXRlVGltZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgVGltZSAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0RhdGVUaW1lJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnRHVtbXkxJywKICAgICAgICBOYW1lICA9PiAnRHVtbXkgMScsCiAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEdW1teScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnR2VuZXJhbENhdGFsb2cxJywKICAgICAgICBOYW1lICAgICAgID0+ICdHZW5lcmFsQ2F0YWxvZyAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgICAgIENsYXNzID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnSW50ZWdlcjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0ludGVnZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdUZXh0MScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dCAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ1RleHRBcmVhMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dEFyZWEgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgfSwKICAgIH0sCl0gIjsKCiMgZGVmaW5lIHRoZSBzZWNvbmQgdGVzdCBkZWZpbml0aW9uIChzdWIgZGF0YSB0eXBlcykKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMV0gPSAiIFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMScsCiAgICAgICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgICAgICBTdWIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMScsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMicsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMicsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICB9LAogICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgIFN1YiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ01haW4yU3ViMScsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDIgU3ViIDEnLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMlN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKXSAiOwoKIyBEZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiB3aXRoIHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScuCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzJdID0gIiBbCiAgICB7CiAgICAgICAgJ0tleScgPT4gJ1R5cGUnLAogICAgICAgICdJbnB1dCcgPT4gewogICAgICAgICAgICAnQ2xhc3MnID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgICAgICdSZXF1aXJlZCcgPT4gMSwKICAgICAgICAgICAgJ1RyYW5zbGF0aW9uJyA9PiAxLAogICAgICAgICAgICAnVHlwZScgPT4gJ0dlbmVyYWxDYXRhbG9nJwogICAgICAgIH0sCiAgICAgICAgJ1NlYXJjaGFibGUnID0+IDEsCiAgICAgICAgJ0NvdW50TWluJyA9PiAxLAogICAgICAgICdDb3VudERlZmF1bHQnID0+IDEsCiAgICAgICAgJ0NvdW50TWF4JyA9PiAzLAogICAgICAgICdOYW1lJyA9PiAnVHlwZScsCiAgICB9LApdICI7Cgo9Y3V0CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgICMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKICAgIG15ICRpID0gMDsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBDb25maWdJdGVtUGVybERlZmluaXRpb25zKSB7CgogICAgICAgICMgZ2VuZXJhdGUgYW4gaW5mb3JtYXRpdmUgcmFuZG9tIG5hbWUKICAgICAgICBteSAkU2hvcnROYW1lID0gJFBlcmxEZWZpbml0aW9uLT57UGFnZXN9LT5bMF0tPntOYW1lfTsKICAgICAgICBteSAkQ2xhc3NOYW1lID0gam9pbiAnXycsICdVbml0VGVzdCcsICRTaG9ydE5hbWUsICsrJGksICRSYW5kb21JRDsKCiAgICAgICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ2xhc3NJRCwgImFkZGVkIGdlbmVyYWwgY2F0YWxvZyBpdGVtIGZvciBjb25maWcgaXRlbSBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICRDb25maWdJdGVtQ2xhc3NJRHN7JFNob3J0TmFtZX0gPSAkQ2xhc3NJRDsKCiAgICAgICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKICAgICAgICApOwoKICAgICAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWwogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gJFBlcmxEZWZpbml0aW9uLAogICAgICAgICk7CiAgICAgICAgb2soICRZQU1MRGVmaW5pdGlvbiwgJ2dvdCBzb21lIFlBTUwnICk7CiAgICAgICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBEZWZpbml0aW9uSUQnICk7CiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzeyRTaG9ydE5hbWV9ID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CiAgICB9Cn0KCiMgZm9yIHRlc3RzIHdlIG5lZWQgdmFsaWQgYW5kIGludmFsaWQgY2xhc3MgSURzCm15ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lEICAgPSBtaW4oIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICk7Cm15ICRJbnZhbGRpQ29uZmlnSXRlbUNsYXNzSUQgPSBtYXgoIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICkgKyAxOwoKIyBDcmVhdGUgc29tZSByYW5kb20gbnVtYmVycy4gVGhlIG51bWJlcnMgbXVzdCBiZSBzb3J0ZWQgYmVjYXVzZQojIEV4cG9ydERhdGFHZXQoKSBzb3J0cyBwZXIgZGVmYXVsdCBieSB0aGUgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCm15IEBDb25maWdJdGVtTnVtYmVycyA9CiAgICBzb3J0CiAgICBtYXAKICAgIHsgJEhlbHBlci0+R2V0UmFuZG9tTnVtYmVyIH0KICAgICggMSAuLiAxMCApOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkR2VuZXJhbENhdGFsb2dMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAopOwpyZWZfb2soICRHZW5lcmFsQ2F0YWxvZ0xpc3QsICdIQVNIJywgJ2dlbmVyYWwgY2F0YWxvZyBsaXN0IGlzIGEgaGFzaHJlZicgKTsKCiMgVE9ETzogcmVhY3RpdmF0ZSB0ZXN0IGNhc2VzCiNteSAlR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskR2VuZXJhbENhdGFsb2dMaXN0fTsKCiMgZGVmaW5lIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbVNldHVwczsKbXkgJENvbmZpZ0l0ZW1DbnQgPSAwOwoKIyB0d28gY29uZmlnIGl0ZW1zIGZvciBUd29DdXN0b21lclVzZXJzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvQ3VzdG9tZXJVc2VycycsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1DbnQgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3twYWxtX21vbmdlcn0sCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3t0YW5hYmF0ZV9tb25nZXJ9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ2NvbmZpZyBpdGVtIDIgZm9yIFR3b0N1c3RvbWVyVXNlcnMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7b25pb25fbW9uZ2VyfSwKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2FwcGxlX21vbmdlcn0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07CgojIHR3byBjb25maWcgaXRlbXMgd2l0aCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEEgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAgICAgJ0FnZW50MicuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfTsKCiMgdHdvIGNvbmZpZyBpdGVtcyB3aXRoIFNpbmdsZVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgU2luZ2xlVmFsdWVTZXQ6IEFmcmljYScsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUNudCBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgeyAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfSBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdjb25maWcgaXRlbSAyIGZvciBTaW5nbGVWYWx1ZVNldDogRXVyb3BlJywKICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKIyBjb25maWcgaXRlbXMgZm9yIFR3b0RhdGVzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI0LTAxLTAxJywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNicsCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNycsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgICMgd2lsbCBiZSBvdmVyd3JpdHRlbiBsYXRlcgogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29EYXRlc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhY3R1YWxseSB0dWVzZGF5LCB3aWxsIGJlIGZpeGVkIGxhdGVyCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDQnLAogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUnLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWZvciBuZXZlcgoKIDEwLjEgdGVzdCBjYXNlcwoKICgKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBhbGwgcHJvdmlkZWQgZGF0YSB0eXBlcwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbENhdGFsb2cxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0MSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhIHNlY29uZCBjb25maWcgaXRlbSBmb3IgYWxsIHByb3ZpZGVkIGRhdGEgdHlwZXMKICAgICMgKGR1cGxpY2F0ZSBuYW1lIG9mIGZpcnN0IHZlcnNpb24gZm9yIHNlYXJjaCBjaGVja3MpCiAgICB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywgICAgIyBkdXBsaWNhdGUgbmFtZSBmb3IgdGVzdHMKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBcmVhMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdVbml0VGVzdDInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0Mn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0MicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdDJcblRleHQgQXJyYXlcblRlc3QgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3ViIGVsZW1lbnQgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnTWFpbjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ01haW4yICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTWFpbjIgKDEpIFN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJ01haW4yICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnTWFpbjIgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBzdWIgZWxlbWVudCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1szXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA0IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXIgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBVVEYtOCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA2IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICA9PiAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxU3ViU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pmKIOKZiCDimYkg4pmKIOKZiyDimY0g4pmRJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pyIIOKdpCDimK4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnwq4gwqknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbUlEczsKZm9yIG15ICRTZXR1cCAoQENvbmZpZ0l0ZW1TZXR1cHMpIHsKCiAgICAjIGFkZCBhIGNvbmZpZyBpdGVtCiAgICBkaWFnICJhZGQgY29uZmlnIGl0ZW06ICRTZXR1cC0+e0Rlc2NyaXB0aW9ufSI7CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgJFNldHVwLT57Q29uZmlnSXRlbUFkZH0tPiUqLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAjIGFkZCB0aGUgdmVyc2lvbnMKICAgIGZvciBteSAkQ29uZmlnSXRlbVVwZGF0ZSAoICggJFNldHVwLT57Q29uZmlnSXRlbVVwZGF0ZX0gLy8gW10gKS0+QCogKSB7CgogICAgICAgICMgYWRkIHVwZGF0ZXMKICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICRDb25maWdJdGVtVXBkYXRlLT4lKiwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgJ2NvbmZpZyBpdGVtIHZlcnNpb24gYWRkZWQnICk7CiAgICB9Cn0KCiMgZGVjbGFyZSBFeHBvcnREYXRhIHRlc3RzCm15IEBFeHBvcnREYXRhVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bm8gZXhpc3RpbmcgdGVtcGxhdGUgaWQgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBjbGFzcyBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXttYXBwaW5nIGxpc3QgaXMgZW1wdHkgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1szXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobnVtYmVyIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNhc2UgaW5zZW5zaXRpdmUgbmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICd1bml0dGVzdCAtIGNvbmZpZ2l0ZW0gMSB2ZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKG5hbWUgYW5kIG51bWJlciBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgQ1NWIGV4cG9ydHMKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgQ3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ1NlbWljb2xvbicsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgVGhlIGV4cGVjdGVkIHJvd3MgbmVlZCB0byBiZSBzb3J0ZWQgYnkgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCiAgICAgICAgIyBUaGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGUgc29ydCBvcmRlciBpbiBFeHBvcnREYXRhR2V0KCkuCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe2FwcGxlIG1vbmdlciAi8J+NjiIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7WyJvbmlvbiBtb25nZXIgXFwi8J+nhVxcIiRSYW5kb21JRCIsImFwcGxlIG1vbmdlciBcXCLwn42OXFwiJFJhbmRvbUlEIl19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7dGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe1sicGFsbSB0cmVlIG1vbmdlciBcXCLwn4y0XFwiJFJhbmRvbUlEIiwidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwi8J+Oi1xcIiRSYW5kb21JRCJdfSwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgICAgIFJlZmVyZW5jZUV4cG9ydENvbnRlbnQgPT4gWwogICAgICAgICAgICBqb2luKAogICAgICAgICAgICAgICAgJzsnLAogICAgICAgICAgICAgICAgcXF7IlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAyIFZlcnNpb24gMSJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1sxXSJ9LAogICAgICAgICAgICAgICAgcXF7Im1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAiIvCfl4QiIiRSYW5kb21JRCJ9LCAgICAjIG5vdCBKU09OIGJlY2F1c2Ugc2luZ2xlIHZhbHVlCiAgICAgICAgICAgICAgICBxcXsib25pb24gbW9uZ2VyICIi8J+nhSIiJFJhbmRvbUlEIn0sICAgICAgICAgICAgICAgICAgICAgICMgbm90IEpTT04gYmVjYXVzZSBleHBsaWNpdCBpbmRleAogICAgICAgICAgICAgICAgcXF7ImFwcGxlIG1vbmdlciAiIvCfjY4iIiRSYW5kb21JRCJ9LCAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBKU09OIGJlY2F1c2UgZXhwbGljaXQgaW5kZXgKICAgICAgICAgICAgICAgIHFxeyJbIiJvbmlvbiBtb25nZXIgXFwiIvCfp4VcXCIiJFJhbmRvbUlEIiIsIiJhcHBsZSBtb25nZXIgXFwiIvCfjY5cXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEifSwKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbMF0ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJwYWxtIHRyZWUgbW9uZ2VyICIi8J+MtCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsidGFuYWJhdGUgdHJlZSBtb25nZXIgIiLwn46LIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJbIiJwYWxtIHRyZWUgbW9uZ2VyIFxcIiLwn4y0XFwiIiRSYW5kb21JRCIiLCIidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwiIvCfjotcXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEZpcnN0TW9uZGF5LCBhbmQgRmlyc3RXZWVrZW5kIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZXZhbHVlIGZpZWxkLiBUaHVzIG5vIGluZGV4IGlzIHBhc3NlZC4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSR7VGVzdElEU3VmZml4fSIsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgRmlyc3RXZWVrZW5kIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ0NvbW1hJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzddLAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNyAwMDowMDowMH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgYmUgbW9uZGF5LCBpcyB0dWVzZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjUtMDEtMDQgMDA6MDA6MDAiLCIyMDI1LTAxLTA1IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjUtMDEtMDQgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNSAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2XSwKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDEgMDA6MDA6MDB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbW9uZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjQtMDEtMDYgMDA6MDA6MDAiLCIyMDI0LTAxLTA3IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDYgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNC0wMS0wNyAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICcsJywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzddIn0sCiAgICAgICAgICAgICAgICBxcXsiMjAyNS0wMS0wNyAwMDowMDowMCJ9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBiZSBtb25kYXksIGlzIHR1ZXNkYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI1LTAxLTA0IDAwOjAwOjAwIiIsIiIyMDI1LTAxLTA1IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjUtMDEtMDQgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI1LTAxLTA1IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnLCcsCiAgICAgICAgICAgICAgICBxcXsiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI0ICRSYW5kb21JRCJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1s2XSJ9LAogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDEgMDA6MDA6MDAifSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtb25kYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI0LTAxLTA2IDAwOjAwOjAwIiIsIiIyMDI0LTAxLTA3IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDYgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI0LTAxLTA3IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtFeHBvcnQgTnVtYmVyLCBDdXN0b21lckNJTywgYW5kIFpaWlNldE9mQWdlbnRzIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfX0sCiAgICAgICAgICAgICAgICBxcXtbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX19LAogICAgICAgICAgICAgICAgcXF7W3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbM10ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwgICAgIyBub3QgSlNPTiBiZWNhdXNlIHNpbmdsZSB2YWx1ZQogICAgICAgICAgICAgICAgcXF7InsiIkFnZW50MSRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSJ9LAogICAgICAgICAgICAgICAgcXF7Ilt7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCIiQWdlbnQyJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnOycsCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIn0sCiAgICAgICAgICAgICAgICBxcXsibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICIi8J+XhCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsieyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzVdLAogICAgICAgICAgICAgICAgcXF7W3siTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9XSwiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICBxcXtbeyJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX1dLCJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhfV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNV0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNF0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEpTT04gZXhwb3J0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7RXhwb3J0IE5hbWUsIE51bWJlciwgQ3VzdG9tZXJDSU8sIGFuZCBDdXN0b21lclNhbGVzVGVhbSBhcyB1Z2x5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7b25pb24gbW9uZ2VyICLwn6eFIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3BhbG0gdHJlZSBtb25nZXIgIvCfjLQiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0Q29udGVudCA9PiBbCiAgICAgICAgICAgIHFxe1siVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxIiwiJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIiwibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIixbIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIl1dfSwKICAgICAgICAgICAgcXF7WyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEiLCIkQ29uZmlnSXRlbU51bWJlcnNbMF0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIiwicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiLFsicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiXV19LAoKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgdWdseSBjb25jYXRlbmF0ZWQgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBQcmV0dHkgPT4gMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbM10iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSxbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV1dfSwKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbMl0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LFt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LHsiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfV1dfSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgcHJldHR5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKCiAgICAgICAgICAgICAgICAgICAgIyBQcmV0dHkgaXMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RGVza0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0iIF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8xIiwgPDwiSVRFTV8yIiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbM10iLAogICAibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsCiAgIFsKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzEKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIiwKICAgIm1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciBcXCJceHsxRjVDNH1cXCIkUmFuZG9tSUQiLAogICBbCiAgICAgIHsKICAgICAgICAgIkFnZW50MSRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9CiAgICAgICAgIF0sCiAgICAgICAgICJBZ2VudDIkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9CiAgICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0KICAgICAgICAgXSwKICAgICAgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdCiAgICAgIH0KICAgXQpdCklURU1fMgogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBwcmV0dHkgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewoKICAgICAgICAgICAgICAgICAgICAjIHJlZHVuZGFudCBzZXR0aW5nIGFzIFByZXR0eSBpcyB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgICAgICBbIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSwgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlfSBdIH0gXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICAgICAgWyB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXSB9IF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8zIiwgPDwiSVRFTV80IiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbNV0iLAogICBbCiAgICAgIHsKICAgICAgICAgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfQogICAgICAgICBdLAogICAgICAgICAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzMKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzRdIiwKICAgWwogICAgICB7CiAgICAgICAgICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX0KICAgICAgICAgXSwKICAgICAgICAgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9CiAgICAgICAgIF0KICAgICAgfQogICBdCl0KSVRFTV80CiAgICB9LAoKKTsKCj1mb3IgbmV2ZXIKCjEwLjEgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRlcGxveW1lbnQgc3RhdGUgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1sxXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGluY2lkZW50IHN0YXRlIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY29tYmluZWQgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKFhNTCBkYXRhIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgRGF0ZTEgICAgICAgICAgID0+ICcyMDA4LTAyLTAxJywKICAgICAgICAgICAgICAgIFRleHRBcmVhMSAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICBDdXN0b21lcjEgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgIFRleHQxICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgRGF0ZVRpbWUxICAgICAgID0+ICcyMDA4LTAyLTAxIDAzOjU5JywKICAgICAgICAgICAgICAgIEludGVnZXIxICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNvbWJpbmVkIGFsbCBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBEYXRlMSAgICAgICAgICAgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgVGV4dEFyZWExICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgIEN1c3RvbWVyMSAgICAgICA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgVGV4dDEgICAgICAgICAgID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICBEYXRlVGltZTEgICAgICAgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgSW50ZWdlcjEgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgIEdlbmVyYWxDYXRhbG9nMSA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIHJldHVybmVkIGFycmF5KX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgIlRlc3RcblRleHQgQXJyYXlcblRlc3QiLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRvdWJsZSBlbGVtZW50IGNoZWNrcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRHVtbXkxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHN1YiBlbGVtZW50IGNoZWNrcyB3aXRoIHVuZGVmIHZhbHVlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3Mgd2l0aCB1bmRlZiB2YWx1ZXMgYW5kIGVtcHR5IHN0cmluZ3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjo0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDQgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoc3BlY2lhbCBjaGFyYWN0ZXIgY2hlY2tzKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzhdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDUgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnPjxAflwnfXtbXVxcJywKICAgICAgICAgICAgICAgICdUZXN0OzpfwrBeISLCpyQlJi8oKT0/wrRgKitUZXN0JywKICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbOV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICfimYog4pmIIOKZiSDimYog4pmLIOKZjSDimZEnLAogICAgICAgICAgICAgICAgJ+KciCDinaQg4piuJywKICAgICAgICAgICAgICAgICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAnwq4gwqknLAogICAgICAgICAgICAgICAgJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgcnVuIGdlbmVyYWwgRXhwb3J0RGF0YUdldCB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBFeHBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJFeHBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUV4cG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VFeHBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0KICAgICAgICAgICAgJiYgcmVmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSBlcSAnSEFTSCcKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgc2F2ZSBvYmplY3QgZGF0YQogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCByb3dzCiAgICAgICAgICAgIE1BUFBJTkdPQkpFQ1REQVRBOgogICAgICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhICggQHsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSB9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IG1hcHBpbmcgcm93CiAgICAgICAgICAgICAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nT2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICAgICAgTWFwcGluZ0lEICAgICAgICAgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiAkTWFwcGluZ09iamVjdERhdGEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgc2VhcmNoIGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntTZWFyY2hEYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBzYXZlIHNlYXJjaCBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGV4cG9ydCBkYXRhIGFzIGFuIGFycmF5cmVmCiAgICAgICAgbXkgJEV4cG9ydERhdGEgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+RXhwb3J0RGF0YUdldCgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9IH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSApIHsKICAgICAgICAgICAgb2soICEkRXhwb3J0RGF0YSwgIkV4cG9ydERhdGFHZXQoKSByZXR1cm5lZCBub3QgZGF0YSBhcyB3YXMgZXhwZWN0ZWQiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkRXhwb3J0RGF0YSBuZSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBjaGVjayBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgZmFpbCgiRXhwb3J0RGF0YUdldCgpIC0gcmV0dXJuIHZhbHVlIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2UiKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIHJvd3MKICAgICAgICBpcygKICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydERhdGF9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSB9LAogICAgICAgICAgICAiRXhwb3J0RGF0YUdldCgpIC0gY29ycmVjdCBudW1iZXIgb2Ygcm93cyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgaW5kaXZpZHVhbCByb3dzIG9mIGV4cG9ydCBkYXRhCiAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAwOwogICAgICAgIFJPVzoKICAgICAgICBmb3IgbXkgJEV4cG9ydFJvdyAoICRFeHBvcnREYXRhLT5AKiApIHsKICAgICAgICAgICAgc3VidGVzdCAiRXhwb3J0RGF0YUdldCgpOiByb3cgJENvdW50ZXJSb3cgaW4gZXhwb3J0ZWQgZGF0YSIgPT4gc3ViIHsKICAgICAgICAgICAgICAgIHJlZl9vayggJEV4cG9ydFJvdywgJ0FSUkFZJywgJ2V4cG9ydGVkIHJvdyBpcyBhbiBhcnJheXJlZicgKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgcmVmZXJlbmNlIHJvdwogICAgICAgICAgICAgICAgbXkgJFJlZmVyZW5jZVJvdyA9ICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0RGF0YX0tPlskQ291bnRlclJvd107CiAgICAgICAgICAgICAgICByZWZfb2soICRSZWZlcmVuY2VSb3csICdBUlJBWScsICdleHBlY3RlZCByb3cgaXMgYW4gYXJyYXlyZWYnICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgY29sdW1ucwogICAgICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydFJvd30sCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JFJlZmVyZW5jZVJvd30sCiAgICAgICAgICAgICAgICAgICAgImNvcnJlY3QgbnVtYmVyIG9mIGNvbHVtbnMiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHZhbHVlcwogICAgICAgICAgICAgICAgaXMoICRFeHBvcnRSb3csICRSZWZlcmVuY2VSb3csICd2YWx1ZXMgaW4gZXhwb3J0ZWQgcm93JyApOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgfQoKICAgICAgICAjIG9wdGlvbmFsbHkgdGVzdCB0aGUgZm9ybWF0dGVkIGV4cG9ydAogICAgICAgIGlmICggJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfSApIHsKICAgICAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgc2V0IHVwIik7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggcmVmICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0Q29udGVudH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgYW4gYXJyYXlyZWYiKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRUZW1wbGF0ZUlEID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9OwoKICAgICAgICAgICAgIyBzcGVjaWZ5IHRoZSBmb3JtYXQKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgRm9ybWF0RGF0YSA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YVNhdmV9LT57Rm9ybWF0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgZXhwb3J0IGRhdGEgcm93cwogICAgICAgICAgICBteSAkRm9ybWF0ID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e0Zvcm1hdH07CiAgICAgICAgICAgIGRpYWcgIkZvcm1hdCBvZiBjb250ZW50IGlzOiAkRm9ybWF0IjsKICAgICAgICAgICAgbXkgJEZvcm1hdEJhY2tlbmQgPSAkRm9ybWF0QmFja2VuZE9iamVjdHskRm9ybWF0fTsKICAgICAgICAgICAgbXkgQENvbnRlbnQ7CiAgICAgICAgICAgIGZvciBteSAkUm93ICggJEV4cG9ydERhdGEtPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29udGVudCwgJEZvcm1hdEJhY2tlbmQtPkV4cG9ydERhdGFTYXZlKAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRXhwb3J0RGF0YVJvdyA9PiAkUm93LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgXEBDb250ZW50LAogICAgICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSwKICAgICAgICAgICAgICAgICdFeHBvcnREYXRhU2F2ZSgpIHByb2R1Y2VkIGV4cGVjdGVkIGNvbnRlbnQnCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIEltcG9ydERhdGFTYXZlIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15IEBJbXBvcnREYXRhVGVzdHMgPSAoCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtJbXBvcnREYXRhU2F2ZSBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFtdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGRhdGEgcm93IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+ICcnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBkYXRhIHJvdyBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjBdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiB7fSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBleGlzdGluZyB0ZW1wbGF0ZSBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe25vIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsnRHVtbXknXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjJdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbJ0R1bW15J10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bWFwcGluZyBsaXN0IGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe21vcmUgdGhhbiBvbmUgaWRlbnRpZmllciB3aXRoIHRoZSBzYW1lIG5hbWUgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnMTIzJywgJzMyMScgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWycnXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIHVuZGVmIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW3VuZGVmXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyB1bmRlZiwgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgaWRlbnRpZmllcnMgaXMgZW1wdHksIG9uZSBpcyB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcxMjMnLCAnJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe29uZSBvZiB0aGUgaWRlbnRpZmllcnMgaXMgdW5kZWYgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syM10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJzEyMycsIHVuZGVmIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7b25lIG9mIHRoZSBpZGVudGlmaWVycyBpcyBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJzEyMycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbIHVuZGVmLCAnMTIzJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIFRPRE8gQWRkIHNvbWUgaWRlbnRpZmllciB0ZXN0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7ZW1wdHkgbmFtZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJycsICdQcm9kdWN0aW9uJywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCAxJywgJ0R1bW15JywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgaW5jaWRlbnQgc3RhdGUgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjRdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMicsICdQcm9kdWN0aW9uJywgJ0R1bW15JyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3Qgd2l0aG91dCBhbnkgZHluYW1pYyBmaWVsZHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe25vIGR5bmFtaWMgZmllbGRzIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gdW5kZWYsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyB0ZXN0cyB3aXRoIGEgc2luZ2xlIHZhbHVlIGVudGl0eSBmaWVsZDogQ3VzdG9tZXJDSU8KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtpbXBvcnQgQ3VzdG9tZXJDSU8gYXMgc2ltcGxlIHN0cmluZyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIEVudGl0aXkgZmllbGQuIEJvdGggQ1NWIGFuZCBKU09OIGV4cG9ydCB0aGlzIGNhc2UgYXMKICAgICAgICAgICAgICAgICAgICAjIGEgc2ltcGxlIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3tkaXZlcnNlX0NJT30sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGUgdmFsdWUgUmVmZXJlbmNlIGZpZWxkLCB0aGVyZWZvcmUgYSBFbnRpdHkgZmllbGQuCiAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIHJldHVybiBhIGxpc3Qgd2l0aCBvbmUgZWxlbWVudC4KICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7ZGl2ZXJzZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtvbmx5IEN1c3RvbWVyQ0lPIGFzIHJlZmVyZW5jZSB0byBzaW5nbGUgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZSB2YWx1ZSBSZWZlcmVuY2UgZmllbGQsIHRoZXJlZm9yZSBhIEVudGl0eSBmaWVsZC4KICAgICAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIGNhbiBiZSBjcmVhdGVkIHdpdGggYSBsaXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGNhc2UgZG9lcyBub3QgYXJpc2UgZnJvbSB0aGUgcmVndWxhciBleHBvcnQsIGFzIHRoZSByZWd1bGFyIGV4cG9ydAogICAgICAgICAgICAgICAgICAgICMgZXhwb3J0cyBDdXN0b21lckNJTyBhcyBhIHNpbXBsZSBzdHJpbmcuCiAgICAgICAgICAgICAgICAgICAgWyAkQ3VzdG9tZXJVc2Vyc3tmZW1hbGVfQ0lPfSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIFJlZmVyZW5jZSBmaWVsZCwgdGhlcmVmb3JlIGEgRW50aXR5IGZpZWxkLgogICAgICAgICAgICAgICAgIyBTaW5nbGUgdmFsdWUgRW50aXR5IGZpZWxkcyByZXR1cm4gYSBsaXN0IHdpdGggb25lIGVsZW1lbnQuCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2ZlbWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSB0d28gZGF0ZSBmaWVsZHM6IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtGaXJzdE1vbmRheSBhbmQgRmlyc3RXZWVrZW5kIGFzIGRhdGEgc3RydWN0dXJlIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29EYXRlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICAgICBbICcyMDI2LTAxLTAzJywgJzIwMjYtMDEtMDQnIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWyAnMjAyNi0wMS0wMyAwMDowMDowMCcsICcyMDI2LTAxLTA0IDAwOjAwOjAwJyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe0ZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQgYXMgSlNPTiBzdHJpbmcgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgIHFxe1siMjAyNy0wMS0wMiIsICIyMDI3LTAxLTAzIiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbICcyMDI3LTAxLTAyIDAwOjAwOjAwJywgJzIwMjctMDEtMDMgMDA6MDA6MDAnIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Rml4aW5nIHRoZSBmaXJzdCBtb25kYXkgaW4gMjAyNSwgd2FzIHNldCB0byB0dWVzZGF5fSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLCAgICAjIHdhcyBjcmVhdGVkIGJ5IHNldHVwIG9mIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgIyBmaXhpbmcgdHVlc2RheSB0byBtb25kYXkKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtFeHRlbmRpbmcgZmlyc3Qgd2Vla2VuZCAyMDI1IHRvIG1vbmRheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRCIsICAgICMgd2FzIGNyZWF0ZWQgYnkgc2V0dXAgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICAgICAgICAgcXF7WyIyMDI1LTAxLTA0IiwiMjAyNS0wMS0wNSIsICAgICIyMDI1LTAxLTA2IiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7RXh0ZW5kaW5nIGZpcnN0IHdlZWtlbmQgMjAyNSB0byBmcmlkYXksIHNraXBwaW5nIHdlZG5lc2RheSBhbmQgdHVlc2RheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo3IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo2IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgIyB3YXMgY3JlYXRlZCBieSBzZXR1cCBvZiBjb25maWcgaXRlbXMKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0xMCAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgZXh0ZW5kaW5nIHRvIGZyaWRheSwgc2tpcHBpbmcgdHVlc2RheSwgd2VkbmVzZGF5LCBhbmQgdGh1cnNkYXkKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgYWRkaW5nIHRodXJzZGF5CiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDItMDQgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoIGZvciBzYXR1cmRheQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gNCwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gcXF7VW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDYgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgIyBmaXhlZDogdHVlc2RheSA9PiBtb25kYXkKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAyLTA0IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHVlc2RheSBza2lwcGVkCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2VkbmVzZGF5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMTAgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJpZGF5CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGVzdHMgd2l0aCBhIG11bHRpIHZhbHVlIGVudGl0eSBmaWVsZCwgQ3VzdG9tZXJTYWxlc1RlYW0KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtDdXN0b21lclNhbGVzVGVhbSBhcyByZWZlcmVuY2UgdG8gbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciB0cmVlcyBhbmQgYXBwbGVzJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgZXhhbXBsZSBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyh0YW5hYmF0ZV9tb25nZXIgcGFsbV9tb25nZXIgYXBwbGVfbW9uZ2VyKX0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclNhbGVzVGVhbSBmb3IgdHJlZXMgYW5kIGFwcGxlcycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIEBDdXN0b21lclVzZXJze3F3KHRhbmFiYXRlX21vbmdlciBwYWxtX21vbmdlciBhcHBsZV9tb25nZXIpfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Q3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyBDU1YKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwoKICAgICAgICAgICAgICAgICAgICAjIGZvciBleGFtcGxlIGZyb20gQ1NWIGV4cG9ydCwgdGhlIGV4YWN0IGxheW91dCBkb2VzIG5vdCBtYXR0ZXIKICAgICAgICAgICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZwogICAgICAgICAgICAgICAgICAgIHFxe1sgIkB7WyRDdXN0b21lclVzZXJze29uaW9uX21vbmdlcn0gPX4gcy8iL1xcIi9nciBdfSIgICAgICAgICAsICAgICAgICAgICAgICJAe1skQ3VzdG9tZXJVc2Vyc3tnYXJsaWNfbW9uZ2VyfSA9fiBzLyIvXFwiL2dyIF19IiBdfSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lckNJTyRUZXN0SURTdWZmaXgiICAgICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyhvbmlvbl9tb25nZXIgZ2FybGljX21vbmdlcil9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBzaW5nbGUgdmFsdWUgU2V0IGZpZWxkLCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgcmVmZXJlbmNlIHRvIHNpbmdsZSB2YWx1ZSBhcnJheSAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+ICBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgICAgICAgICBdLAoKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBKU09OIHN0cmluZyB3aXRoIGEgc2luZ2xlIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IFN1cHBvcnQgZm9yIEV1cm9wZScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAoKICAgICAgICAgICAgICAgICAgICAjIEpTT04gc3RyaW5nIGxpa2UgZnJvbSBDU1YgZXhwb3J0LiBUaGUgZXhhY3QgbGF5b3V0IGRvZXMgbm90IG1hdHRlci4KICAgICAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTiIsClsKICAgIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gPX4gcy8iL1xcIi9nciBdfSIgXSB9Cl0KRU5EX0pTT04KCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgU3VwcG9ydCBmb3IgRXVyb3BlJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxGaXJzdCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxTZWNvbmQnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZmllbGQsIFpaWlNldE9mQWdlbnRzCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgYXMgcmVmZXJlbmNlIHRvIG11bHRpIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBpbiB0aGUgbWFwcGluZyBsaXN0CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldE9mQWdlbnRzIGFzIEpTT04gc3RyaW5nIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRPZkFnZW50cyRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCgogICAgICAgICAgICAgICAgICAgICMgc2ltaWxhciB0byBDU1YgZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgPDwiRU5EX0pTT04iLAogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9CiAgICAgICAgICAgICAgICAgICAgXQpFTkRfSlNPTgogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IGluIHRoZSBtYXBwaW5nIGxpc3QKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgd2l0aCBpbmRleGVkIGFjY2VzcyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH06OjIwIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTl9GT1JfSU5ERVhfMiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfQpFTkRfSlNPTl9GT1JfSU5ERVhfMgogICAgICAgICAgICAgICAgICAgIDw8IkVORF9KU09OX0ZPUl9JTkRFWF8yMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdIH0KRU5EX0pTT05fRk9SX0lOREVYXzIwCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IHVuZGVmIH0sCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LCAgICAjIGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCAzIHRvIDE5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LCAgICAgIyBhZGRlZAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCik7Cgo9Zm9yIG5ldmVyCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoYSBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wNi0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMDgtMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgJzMnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QzXG5UZXh0QXJyYXkzXG5UZXN0MyIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA2LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTA4LTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QzfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDNcblRleHRBcnJheTNcblRlc3QzIiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIHNlY29uZCBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wOS0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMTItMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgJzQnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3Q0XG5UZXh0QXJyYXk0XG5UZXN0NCIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA5LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTEyLTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3Q0fSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDRcblRleHRBcnJheTRcblRlc3Q0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gZmlyc3QgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0QXJlYTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjZdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQaWxvdCcsCiAgICAgICAgICAgICAgICAgICAgJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QyJywKICAgICAgICAgICAgICAgICAgICAnMicsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUxIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMiwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQaWxvdCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTAyLTAyIDAzOjU5JywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QyfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICcyJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0IFRleHQgVVBEQVRFMSBUZXN0JywKICAgICAgICAgICAgICAgICdUZXh0QXJlYTE6OjEnICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGEgbmV3IHZlcnNpb24gbXVzdCBiZSBhZGRlZCB0byBmaXJzdCB0ZXN0IGNvbmZpZyBpdGVtIGFnYWluKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0N1c3RvbWVyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGVUaW1lMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1JlcGFpcicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAzJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QzJywKICAgICAgICAgICAgICAgICAgICAnMycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUyIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTJcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAzJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdSZXBhaXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDdXN0b21lcjE6OjEnICAgICAgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnRGF0ZTE6OjEnICAgICAgICAgICA9PiAnMjAwOC0wMi0wMycsCiAgICAgICAgICAgICAgICAnRGF0ZVRpbWUxOjoxJyAgICAgICA9PiAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0M30sCiAgICAgICAgICAgICAgICAnSW50ZWdlcjE6OjEnICAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFVQREFURTIgVGVzdCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheSBVUERBVEUyXG5UZXN0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gdGhpcmQgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjddLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIE1haW4yU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMiAoMSkgTWFpbjJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJyA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgID0+ICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnID0+ICdNYWluMiAoMSkgTWFpbjJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHNwZWNpYWwgY2hhcmFjdGVyIGNoZWNrcykKICAgICMgSW4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicgMTYgQXR0cmlidXRlcyB3ZXJlIGltcG9ydGVkLAogICAgIyBzbyB0aGVyZSB3aWxsIGJlIDggbGluZ2VyaW5nIGF0dHJpYnV0ZXMuCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnOCBsaW5nZXJpbmcgYXR0cmlidXRlcycsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3RcblRlc3RcdFRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gIlRlc3RcblRlc3RcdFRlc3QiLAoKICAgICAgICAgICAgICAgICMgbGluZ2VyaW5nIGZyb20gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDMpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJyAgICAgICAgICAgICAgICAgICAgICA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjInID0+ICdNYWluMSAoMSkgTWFpbjFTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpCiAgICAjIEluICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInIDE2IEF0dHJpYnV0ZXMgd2VyZSBpbXBvcnRlZCwKICAgICMgc28gdGhlcmUgd2lsbCBiZSA4IGxpbmdlcmluZyBhdHRyaWJ1dGVzLgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJzggbGluZ2VyaW5nIGF0dHJpYnV0ZXMsIGFnYWluJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI3XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgICAgICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAgICAgJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICAgICAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgICAgICfKrCDKrycsCiAgICAgICAgICAgICAgICAgICAgJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICAgICAn0Zog0ZEnLAogICAgICAgICAgICAgICAgICAgICfRrCDRpicsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMTo6MScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PiAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfKrCDKrycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAn0Zog0ZEnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfRrCDRpicsCgogICAgICAgICAgICAgICAgIyBsaW5nZXJpbmcgZnJvbSAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMyknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YSBzaW1wbGUgaW1wb3J0IGZvciB0ZXN0aW5nIHRoZSBvdmVycmlkaW5nIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlc30sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0ltcG9ydHRlc3QgNSBmb3IgYmVoYXZpb3Igb2YgZW1wdHkgdmFsdWVzJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDEnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdJbXBvcnR0ZXN0IDUgZm9yIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlcycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnaW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBUZXh0MScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IHVuZGVmIGZvciBUZXh0MSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYSBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhIHNpbmdsZSBzcGFjZSB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnICcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnICcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCB0aGUgc3RyaW5nICcwJyB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDQsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBubyBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIEdlbmVyYWxDYXRhbG9nMSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBEZXBsU3RhdGUsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgRGVwbFN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhbiBlbXB0eSB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydCB3aXRob3V0IHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScsIGFuIGVycm9yIHNob3VsZCBiZSBnZW5lcmF0ZWQgKHNlZSBidWcjMTQwOTgpLn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gSW1wb3J0dGVzdCAxICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKPWN1dAoKIyBydW4gZ2VuZXJhbCBJbXBvcnREYXRhVGVzdHMgdGVzdHMKbXkgJEltcG9ydFRlc3RDb3VudCA9IDE7CmZvciBteSAkVGVzdCAoQEltcG9ydERhdGFUZXN0cykgewoKICAgIHN1YnRlc3QgIkltcG9ydERhdGE6ICRUZXN0LT57TmFtZX0iID0+IHN1YiB7CgogICAgICAgICMgY2hlY2sgU291cmNlSW1wb3J0RGF0YSBhdHRyaWJ1dGUKICAgICAgICBpZiAoICEkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IHx8IHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgIGZhaWwoIlNvdXJjZUltcG9ydERhdGEgbm90IGZvdW5kIGZvciB0aGlzIHRlc3QuIik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgb2JqZWN0IGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIE9iamVjdERhdGEgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3Qgcm93cwogICAgICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICAgICAgZm9yIG15ICRNYXBwaW5nT2JqZWN0RGF0YSAoIEB7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntNYXBwaW5nT2JqZWN0RGF0YX0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgICAgICAgICAgICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+ICRNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRhdGEgc2F2ZQogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJFJldENvZGUgKSA9ICRPYmplY3RCYWNrZW5kT2JqZWN0LT5JbXBvcnREYXRhU2F2ZSgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfSB9LAogICAgICAgICAgICBDb3VudGVyID0+ICRJbXBvcnRUZXN0Q291bnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfSApIHsKCiAgICAgICAgICAgIG9rKCAhJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gQ29uZmlnSXRlbUlEIiApOwogICAgICAgICAgICBvayggISRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIG5vIFJldENvZGUiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBvayggJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gQ29uZmlnSXRlbUlEOiAkQ29uZmlnSXRlbUlEIiApOwogICAgICAgIG9rKCAkUmV0Q29kZSwgICAgICAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBSZXRDb2RlOiAkUmV0Q29kZSIgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgbnVtYmVyIG9mIHZlcnNpb25zCiAgICAgICAgewogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKSAvLyBbXTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgc2NhbGFyICRWZXJzaW9uTGlzdC0+QCosCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9OwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgJEVsZW1lbnQgaXMgaWRlbnRpY2FsIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBpcygKICAgICAgICAgICAgKCB0cnVlIHttL15EeW5hbWljRmllbGRfL30ga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApLAogICAgICAgICAgICAoIHRydWUge20vXkR5bmFtaWNGaWVsZF8vfSBrZXlzICRWZXJzaW9uRGF0YS0+JSogKSwKICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiBkeW5hbWljIGZpZWxkIGVsZW1lbnRzIiwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBERl9LRVkgdW5sZXNzICRERktleSA9fiBtL15EeW5hbWljRmllbGRfLzsKCiAgICAgICAgICAgIG9rKCBleGlzdHMgJFZlcnNpb25EYXRhLT57JERGS2V5fSwgIiRERktleSByZXRyaWV2ZWQgZnJvbSBuZXcgY29uZmlnIGl0ZW0iICk7CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57JERGS2V5fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0tPntMYXN0VmVyc2lvbn0tPnskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQpjb250aW51ZSB7CiAgICAkSW1wb3J0VGVzdENvdW50Kys7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItemExternalSource.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkSW1wb3J0RXhwb3J0T2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgICAgID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7Cm15ICRUZXN0SURTdWZmaXggPSAiVW5pdFRlc3QkUmFuZG9tSUQiOwpkaWFnICJUZXN0SURTdWZmaXg6ICckVGVzdElEU3VmZml4JyI7CgojIGNyZWF0ZSB0ZXN0IHVzZXIKbXkgKCB1bmRlZiwgJFRlc3RVc2VySUQgKSA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2V0IHRoZSBjb25maWcgaXRlbSBjbGFzc2VzIGFzIG5hbWUgMiBpZCBsaXN0Cm15ICRDSUNsYXNzTGlzdFJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAopOwpteSAlQ0lDbGFzc05hbWUySUQgPSByZXZlcnNlICRDSUNsYXNzTGlzdFJlZi0+JSo7CgojIGFkZCBJbXBvcnRFeHBvcnQgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdVbml0VGVzdCcgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBPYmplY3REYXRhID0+IHsKICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICB9LAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwoKbXkgQE1hcHBpbmdPYmplY3REYXRhID0gKAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICB9LAogICAgewogICAgICAgIEtleSA9PiAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknLAogICAgfSwKKTsKCk1BUFBJTkdPQkpFQ1REQVRBOgpmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdERhdGEpIHsKCiAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gJE1hcHBpbmdPYmplY3REYXRhLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKfQoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBkb24ndCBjYXJlIGFib3V0IHZhbGlkIGVtYWlscwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBhZGQgdGhlIHRlc3QgY29uZmlnIGl0ZW1zCmRpYWcgImFkZCBjb25maWcgaXRlbTogQ291bnRyeSI7Cm15ICRDSUNvdW50cnlJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJ1Rlc3RDb3VudHJ5JywKICAgIENsYXNzSUQgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtDb3VudHJ5fSwKICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDSUNvdW50cnlJRCwgJ2NvbmZpZyBpdGVtIGFkZGVkJyApOwoKZGlhZyAiYWRkIGNvbmZpZyBpdGVtOiBTdWJzaWRpYXJ5IjsKbXkgJENJU3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ0Jvbm4nLAogICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknID0+IFskQ0lDb3VudHJ5SURdLAopOwpvayggJENJU3Vic2lkaWFyeUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgZGVmaW5lIGdlbmVyYWwgSW1wb3J0RGF0YVNhdmUgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwpteSBASW1wb3J0RGF0YVRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHdpdGhvdXQgdHJpZ2dlcmluZyBhIG5ldyB2ZXJzaW9uLCBlbXB0eWluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNw7xuY2hlbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknID0+ICdNw7xuY2hlbicsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwga2VlcGluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgPT4gWyRDSUNvdW50cnlJRF0sCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB0cmlnZ2VyaW5nIGEgbmV3IHZlcnNpb24sIGtlZXBpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENsYXNzUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICAgICAgU3Vic2lkaWFyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVyc2lvblRyaWdnZXIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnQmVybGluJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tQ2l0eScgICAgICAgICAgICAgICA9PiAnQmVybGluJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JyA9PiBbJENJQ291bnRyeUlEXSwKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwgZW1wdHlpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDbGFzc1ByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIFN1YnNpZGlhcnkgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25UcmlnZ2VyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0hhbWJ1cmcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JyA9PiAnSGFtYnVyZycsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKKTsKCiMgcnVuIGdlbmVyYWwgSW1wb3J0RGF0YVRlc3RzIHRlc3RzCm15ICRJbXBvcnRUZXN0Q291bnQgPSAxOwpmb3IgbXkgJFRlc3QgKEBJbXBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJJbXBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUltcG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VJbXBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e0ltcG9ydERhdGFTYXZlfXtUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtJbXBvcnREYXRhU2F2ZX17VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17T2JqZWN0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcwogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17Q2xhc3NQcmVmZXJlbmNlc317JENsYXNzTmFtZX17JFByZWZlcmVuY2VLZXl9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgb2soICRTdWNjZXNzLCAiU3VjY2Vzc2Z1bGx5IHNldCBwcmVmZXJlbmNlICRQcmVmZXJlbmNlS2V5IGZvciBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGltcG9ydCBkYXRhIHNhdmUKICAgICAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgICAgICV7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17SW1wb3J0RGF0YVNhdmV9IH0sCiAgICAgICAgICAgIENvdW50ZXIgPT4gJEltcG9ydFRlc3RDb3VudCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9ICkgewoKICAgICAgICAgICAgb2soICEkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBubyBDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIG9rKCAhJFJldENvZGUsICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gUmV0Q29kZSIgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgb2soICRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIFJldENvZGU6ICRSZXRDb2RlIiApOwoKICAgICAgICAjIGNoZWNrIHRoZSBudW1iZXIgb2YgdmVyc2lvbnMKICAgICAgICB7CiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIC8vIFtdOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICBzY2FsYXIgJFZlcnNpb25MaXN0LT5AKiwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskRWxlbWVudH07CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17TGFzdFZlcnNpb259eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICJJbXBvcnREYXRhU2F2ZSgpICRFbGVtZW50IGlzIGlkZW50aWNhbCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgREZfS0VZIHVubGVzcyAkREZLZXkgPX4gbS9eRHluYW1pY0ZpZWxkXy87CgogICAgICAgICAgICBvayggZXhpc3RzICRWZXJzaW9uRGF0YS0+eyRERktleX0sICIkREZLZXkgcmV0cmlldmVkIGZyb20gbmV3IGNvbmZpZyBpdGVtIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRERktleX0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHRpZHkgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcyB1cAogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+IFsnJ10sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJTdWNjZXNzZnVsbHkgcmVzZXQgcHJlZmVyZW5jZSAkUHJlZmVyZW5jZUtleSBmb3IgY2xhc3MgJENsYXNzTmFtZSIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07Cn0KY29udGludWUgewogICAgJEltcG9ydFRlc3RDb3VudCsrOwp9CgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMy55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkIiApOwoKICAgICRDb250ZW50ID0gJHsgJENvbnRlbnQgfHwgXCcnIH07CgogICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICApOwoKICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGltcG9ydCB0aGUgY2xhc3MgWUFNTCBmaWxlCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENsYXNzRXhpc3RzID0+ICdVUERBVEUnLAogICAgKTsKCiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAiQ2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQiICk7CgogICAgcmV0dXJuOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc05hbWVzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlciBIYXJkd2FyZSBMb2NhdGlvbiBOZXR3b3JrIFNvZnR3YXJlKSkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NOYW1lcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5JVFNNQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbklUU01Db25maWdJdGVtIik7CgogICAgICAgICMgVGVzdCBkZWZhdWx0IElUU01Db25maWdJdGVtIGNsYXNzLgogICAgICAgIGZvciBteSAkSXRlbSAoQENvbmZpZ0l0ZW1DbGFzc05hbWVzKSB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICRJdGVtLCAnbGlua190ZXh0JyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICAgICAjIENsaWNrIG9uICdDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbicuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdBZGQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIGlucHV0IGFyZWEuCiAgICAgICAgICAgIG15ICRJbnB1dEZpZWxkID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVmaW5pdGlvbiIsICdjc3MnICk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19kaXNwbGF5ZWQoKTsKCiAgICAgICAgICAgICMgUmV0dXJuIGJhY2sgdG8gb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWRtaW5JVFNNQ29uZmlnSXRlbScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminImportExport.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKCiMgbmVlZGVkIG9iamVjdHMKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBUaGUgaGVscGVyIG11c3RuJ3QgcnVuIGluIGEgdHJhbnNhY3Rpb24sIGJlY2F1c2Ugb3RoZXJ3aXNlCiMgdGhlIHdlYnNlcnZlciB3b3VsZCBub3Qgc2VlIHRoZSBjaGFuZ2VzIGluIHRoZSBkYXRhYmFzZS4KbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7Cm9rKCAkVGVzdFVzZXJMb2dpbiwgJ3Rlc3QgdXNlciBjcmVhdGVkJyApOwpteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiApOwpvayggJFRlc3RVc2VySUQsICdnb3QgSUQgZm9yIHRlc3QgdXNlcicgKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgaXMgaXJyZWxldmFudCwgaXQganVzdCBoYXMgdG8gYmUgdmFsaWQKbXkgJENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbiA9IDw8J0VORF9ZQU1MJzsKLS0tClBhZ2VzOgogIC0gTmFtZTogQ0lfMV9QYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IENJXzFfU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgoKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMiIKRU5EX1lBTUwKCm15ICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwpvayggJFRlc3RDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgojIHNldCBwZXJtaXNzaW9uIGFuZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUKewogICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG9rKCAkR3JvdXBJRCwgJ2dvdCBJRCBmb3IgZ3JvdXAgaXRzbS1jb25maWdpdGVtJyApOwoKICAgICMgc2V0IHBlcm1pc3Npb24uCiAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskR3JvdXBJRF0sCiAgICApOwogICAgb2soICRTdWNjZXNzLCAnc2V0dGluZyBwZXJtaXNzaW9uIHdhcyBzdWNjZXNzZnVsJyApOwoKICAgICMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQogICAgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10KICAgICk7CiAgICBvayggJFN1Y2Nlc3MsICdzZXR0aW5nIGluY3JlbWVudGFsIHZlcnNpb24gc3RyaW5nIG1vZHVsZSB3YXMgc3VjY2Vzc2Z1bCcgKTsKCn0KCiMgVGhlIGNvbmZpZyBpdGVtIGNsYXNzIG5lZWRzIGEgdmFsaWQgZGVmaW5pdGlvbgpteSAkRGVmaW5pdGluQWRkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRUZXN0VXNlcklELAogICAgRGVmaW5pdGlvbiA9PiAkQ29uZmlnSXRlbVlBTUxEZWZpbml0aW9uLAopOwpvayggJERlZmluaXRpbkFkZFJlc3VsdC0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIHN1Y2Nlc3NmdWwiICk7Cm15ICREZWZpbml0aW9uSUQgPSAkRGVmaW5pdGluQWRkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKb2soICREZWZpbml0aW9uSUQsICJEZWZpbml0aW9uQWRkKCkgZ290IGRlZmluaXRpb24gSUQiICk7CgojIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ29uZmlnSXRlbU51bWJlciwgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIgKTsKCiAgICAgICAgIyBBZGQgJ0xvY2F0aW9uJyB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlNlbGVuaXVtIiAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtSUQgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtICdMb2NhdGlvbicgaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWRtaW5JbXBvcnRFeHBvcnQiKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGhlYWQgdHIgdGgiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIHRib2R5IHRyIHRkIik7CgogICAgICAgICMgQ2xpY2sgb24gJ0FkZCB0ZW1wbGF0ZScuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFkbWluSW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1UZW1wbGF0ZUVkaXQnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAxIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMScpOwogICAgICAgIGZvciBteSAkU3RlcE9uZUlEICgKICAgICAgICAgICAgcXcoTmFtZSBPYmplY3RfU2VhcmNoIEZvcm1hdF9TZWFyY2ggVmFsaWRJRF9TZWFyY2ggQ29tbWVudCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcE9uZUlEIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50LCAiJFN0ZXBPbmVJRCBmb3VuZCBpbiBzdGVwIDEiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KICAgICAgICBteSAkSW1wb3J0RXhwb3J0TmFtZSA9ICJJbXBvcnRFeHBvcnQiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkSW1wb3J0RXhwb3J0TmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjT2JqZWN0JykudmFsKCdJVFNNQ29uZmlnSXRlbScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNGb3JtYXQnKS52YWwoJ0NTVicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjQ29tbWVudCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW1UZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAY2xhc3M9J1ByaW1hcnkgQ2FsbEZvckFjdGlvbiddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIGFuZCBpbnB1dCBzdGVwIDIgb2YgNSBzY3JlZW4uCiAgICAgICAgZGlhZygnU3RlcCAyJyk7CiAgICAgICAgZm9yIG15ICRTdGVwVHdvSUQgKAogICAgICAgICAgICBxdyhDbGFzc0lEX1NlYXJjaCBDb3VudE1heCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdGVwVHdvSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFR3b0lEIGZvdW5kIGluIHN0ZXAgMiIgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWRfb2s7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWRfb2s7CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNDbGFzc0lEJykudmFsKCckVGVzdENsYXNzSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGNsYXNzPSdQcmltYXJ5IENhbGxGb3JBY3Rpb24nXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAzIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMzogZm9ybWF0IGRlZmluaXRpb24nKTsKICAgICAgICBmb3IgbXkgJFN0ZXBUaHJlZUlEICgKICAgICAgICAgICAgcXcoQ29sdW1uU2VwYXJhdG9yX1NlYXJjaCBDaGFyc2V0IEluY2x1ZGVDb2x1bW5IZWFkZXJzX1NlYXJjaCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcFRocmVlSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFRocmVlSUQgZm91bmQgaW4gc3RlcCAzIiApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZF9vazsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICB9CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ29sdW1uU2VwYXJhdG9yJykudmFsKCdDb21tYScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgYW5kIGlucHV0IHN0ZXAgNCBvZiA1IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nUHJpbWFyeSBDYWxsRm9yQWN0aW9uJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWFwcGluZ0FkZEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgZGlhZygnU3RlcCA0Jyk7CiAgICAgICAgZm9yIG15ICRTdGVwRm91cklEICgKICAgICAgICAgICAgcXcoS2V5IElkZW50aWZpZXIpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi4vLypbXEBpZD0nT2JqZWN0OjowOjokU3RlcEZvdXJJRCddIik7CiAgICAgICAgICAgIG9rKCAkRWxlbWVudCwgIiRTdGVwRm91cklEIGZvdW5kIGluIHN0ZXAgNCIgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWRfb2s7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWRfb2s7CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSB0aGVhZCB0ciB0aCIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGJvZHkgdHIgdGQiKTsKCiAgICAgICAgIyBTZWxlY3QgJ051bWJlcicgbWFwcGluZyBlbGVtZW50LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIuLy8qW1xAaWQ9J09iamVjdDo6MDo6S2V5J10vb3B0aW9uWzJdIiktPmNsaWNrKCk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ05hbWUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIuLy8qW1xAaWQ9J09iamVjdDo6MTo6S2V5J10vb3B0aW9uWzNdIiktPmNsaWNrKCk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ0RlcGxveW1lbnQgU3RhdGUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIuLy8qW1xAaWQ9J09iamVjdDo6Mjo6S2V5J10vb3B0aW9uWzRdIiktPmNsaWNrKCk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ0luY2lkZW50IFN0YXRlJyBtYXBwaW5nIGVsZW1lbnQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWFwcGluZ0FkZEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLi8vKltcQGlkPSdPYmplY3Q6OjM6OktleSddL29wdGlvbls1XSIpLT5jbGljaygpOwoKICAgICAgICAjIGZvciBldmVyeSBsaW5lIGNoZWNrIGlmIGFjdGlvbiBlbGVtZW50cyBhcmUgdmlzaWJsZSBhbmQgaWYgdGhlaXIgZW5hYmxlZCBzdGF0ZSBpcyBjb3JyZWN0CiAgICAgICAgIyB0aGUgZmlyc3QgQXJyb3dVcCBhbmQgdGhlIGxhc3QgQXJyb3dkb3duIG11c3QgYmUgZGlzYWJsZWQsIGFsbCB0aGUgb3RoZXJzIG11c3QgYmUgZW5hYmxlZAogICAgICAgIGZvciBteSAkU3RlcEZvdXJDbGFzcyAoCiAgICAgICAgICAgIHF3KEFycm93VXAgQXJyb3dEb3duIERlbGV0ZUNvbHVtbikKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnRzID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRzKCAiLiRTdGVwRm91ckNsYXNzIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50cywgIiRTdGVwRm91ckNsYXNzIGNsYXNzIGZvdW5kIGluIHN0ZXAgNCIgKTsKCiAgICAgICAgICAgIGlmICggJFN0ZXBGb3VyQ2xhc3MgZXEgJ0Fycm93VXAnICkgewogICAgICAgICAgICAgICAgbXkgJEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoICRFbGVtZW50cy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXRlT2sgPSAkSW5kZXggPT0gMCA/ICEkRWxlbWVudC0+aXNfZW5hYmxlZCA6ICRFbGVtZW50LT5pc19lbmFibGVkOwogICAgICAgICAgICAgICAgICAgIG9rKCAkU3RhdGVPaywgIiRTdGVwRm91ckNsYXNzIGVsZW1lbnQgJEluZGV4IGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdCIgKTsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgICAgICAgICAgICAgICRJbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFN0ZXBGb3VyQ2xhc3MgZXEgJ0Fycm93RG93bicgKSB7CiAgICAgICAgICAgICAgICBteSAkSW5kZXggPSAwOwogICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJEVsZW1lbnRzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU3RhdGVPayA9ICRJbmRleCA9PSAzID8gISRFbGVtZW50LT5pc19lbmFibGVkIDogJEVsZW1lbnQtPmlzX2VuYWJsZWQ7CiAgICAgICAgICAgICAgICAgICAgb2soICRTdGF0ZU9rLCAiJFN0ZXBGb3VyQ2xhc3MgZWxlbWVudCAkSW5kZXggZW5hYmxlZCBzdGF0ZSBpcyBjb3JyZWN0IiApOwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWRfb2s7CiAgICAgICAgICAgICAgICAgICAgJEluZGV4Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkSW5kZXggPSAwOwogICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJEVsZW1lbnRzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU3RhdGVPayA9ICRFbGVtZW50LT5pc19lbmFibGVkOwogICAgICAgICAgICAgICAgICAgIG9rKCAkU3RhdGVPaywgIiRTdGVwRm91ckNsYXNzIGVsZW1lbnQgJEluZGV4IGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdCIgKTsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgICAgICAgICAgICAgICRJbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXROZXh0QnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIHN0ZXAgNSBvZiA1IHNjcmVlbi4KICAgICAgICBkaWFnKCdTdGVwIDUsIHJlc3RyaWN0IHdoYXQgaXMgZXhwb3J0ZWQnKTsKICAgICAgICBmb3IgbXkgJFN0ZXBGaXZlSUQgKAogICAgICAgICAgICBxdyhSZXN0cmljdEV4cG9ydCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVJRHNfU2VhcmNoIEluY2lTdGF0ZUlEc19TZWFyY2gpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJFN0ZXBGaXZlSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcEZpdmVJRCBmb3VuZCBpbiBzdGVwIDUiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggQ29uZmlnSXRlbSBieSBudW1iZXIgYW5kIGRlcGxveW1lbnQgc3RhdGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjUmVzdHJpY3RFeHBvcnQiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI051bWJlciIsICAgICAgICAgJ2NzcycgKS0+c2VuZF9rZXlzKCRDb25maWdJdGVtTnVtYmVyKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgICAgICAgICAgICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU5hbWUpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEcycpLnZhbCgnJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNJbmNpU3RhdGVJRHMnKS52YWwoJzEnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGNsYXNzPSdQcmltYXJ5IENhbGxGb3JBY3Rpb24nXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBHZXQgVGVtcGxhdGVJRCBvZiBjcmVhdGVkIHRlc3QgdGVtcGxhdGUuCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICAgICAgbXkgKCRUZW1wbGF0ZUlEKSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgICAgIFNRTCAgPT4gJ1NFTEVDVCBpZCBGUk9NIGltZXhwb3J0X3RlbXBsYXRlIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkSW1wb3J0RXhwb3J0TmFtZSBdLAogICAgICAgICk7CiAgICAgICAgb2soICRUZW1wbGF0ZUlELCAiZ290IHRoZSB0ZW1wbGF0ZSBJRCAtICRUZW1wbGF0ZUlEIiApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIHRlc3QgY3JlYXRlZCBDb25maWdJdGVtIGFuZCB2ZXJpZnkgaXQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQiKTsKICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBuYW1lICRDb25maWdJdGVtTmFtZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIEV4cG9ydCB1c2luZyB0aGUgY3JlYXRlZCB0ZXN0IHRlbXBsYXRlLgogICAgICAgIG15ICRJbXBvcnRFeHBvcnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7CiAgICAgICAgbXkgJEV4cG9ydFJlc3VsdFJlZiAgICA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPkV4cG9ydCgKICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICAjIHNhbml0eSBjaGVjayBvZiB0aGUgZXhwb3J0CiAgICAgICAgaXMoCiAgICAgICAgICAgICRFeHBvcnRSZXN1bHRSZWYsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyIiwiJENvbmZpZ0l0ZW1OYW1lIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIn0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgRmFpbGVkICA9PiAwLAogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnZXhwb3J0IHJlc3VsdCcKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbSBhbmQgdmVyaWZ5IHRoZSBkZWxldGlvbgogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRm91bmQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgICA9PiAnQ09VTlQnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFskQ29uZmlnSXRlbUlEXQogICAgICAgICAgICApOwogICAgICAgICAgICBvayggISRDb25maWdJdGVtRm91bmQsICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIiApOwoKICAgICAgICAgICAgIyBSZWZyZXNoIHNjcmVlbiBhbmQgdmVyaWZ5IHRoYXQgdGVzdCBDb25maWdJdGVtIGRvZXMgbm90IGV4aXN0IGFueW1vcmUuCiAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+Y29udGVudF9jb250YWlucygKICAgICAgICAgICAgICAgICJDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEiLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBuYW1lICRDb25maWdJdGVtTmFtZSBpcyBub3QgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBCZWZvcmUgaW1wb3J0aW5nIHZlcmlmeSB0aGF0IHRoZSBjb25maWcgaXRlbXMgZG8gbm90IGFscmVhZHkgZXhpc3RzCiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CiAgICAgICAgICAgIG15ICRDb3VudCAgICAgICAgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaXMoICRDb3VudCwgMCwgIiRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGRvZXMgbm90IGV4aXN0IGJlZm9yZSBpbXBvcnQiICk7CiAgICAgICAgfQoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbkltcG9ydEV4cG9ydCIpOwoKICAgICAgICAjIENsaWNrIG9uICdJbXBvcnQnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ1N1YmFjdGlvbj1JbXBvcnRJbmZvcm1hdGlvbjtUZW1wbGF0ZUlEPSRUZW1wbGF0ZUlEJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU2VsZWN0IEV4cG9ydGVkIGZpbGUgYW5kIHN0YXJ0IGltcG9ydGluZy4KICAgICAgICAjIFRoZSBkaXJlY3RvcnkgL29wdC9vdG9iby9zY3JpcHRzL3Rlc3Qvc2FtcGxlIGhhcyBiZWVuIGNvcGllZCBmcm9tIE9UT0JPIGNvcmUgaW50byB0aGUgU2VsZW5pdW0gaW1hZ2UuCiAgICAgICAgIyBUaGUgY29udGVudCBpczoKICAgICAgICAjICAgIjEwNDk1MDAwMTAxIiwiU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XzEiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiAgICAgICAgIyAgICIxMDQ5NTAwMDEwMiIsIlNlbGVuaXVtdGVzdF9BZG1pbkltcG9ydEV4cG9ydF8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgogICAgICAgIG15ICRJbXBvcnRMb2NhdGlvbiA9ICcvb3B0L290b2JvL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlSW1wb3J0LmNzdic7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbY29udGFpbnMoXEBuYW1lLCBcJ1NvdXJjZUZpbGUnICldIiktPnNlbmRfa2V5cygkSW1wb3J0TG9jYXRpb24pOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3RhcnQgSW1wb3J0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIG91dGNvbWUuCiAgICAgICAgJFNlbGVuaXVtLT5jb250ZW50X2NvbnRhaW5zKAogICAgICAgICAgICAnKENyZWF0ZWQ6IDIpJywKICAgICAgICAgICAgIkltcG9ydCB0ZXN0IENvbmZpZ0l0ZW0gLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGltcG9ydGVkIHRlc3QgY3JlYXRlZCBDb25maWdJdGVtIGFuZCB2ZXJpZnkgaXQuCiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CgogICAgICAgICAgICBzdWJ0ZXN0ICJjaGVja2luZyBpbXBvcnQgb2YgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUiID0+IHN1YiB7CiAgICAgICAgICAgICAgICBteSAkRXhwZWN0ZWRJbXBvcnRlZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSUQgKyAkQ291bnQ7CiAgICAgICAgICAgICAgICBteSAoICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCBAT3RoZXJJRHMgKSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpcyggJEV4cGVjdGVkSW1wb3J0ZWRDb25maWdJdGVtSUQsICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCAiJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQgaGFzIGJlZW4gaW1wb3J0ZWQiICk7CiAgICAgICAgICAgICAgICBpcyggXEBPdGhlcklEcywgICAgICAgICAgICAgICAgICAgIFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBvbmUgaXRlbSBmb3VuZCIgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICAgICAgICAgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBuYW1lICRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjbGVhbiB1cCwgZGVsZXRlIHRoZSB0ZXN0IGltcG9ydGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgb2soICREZWxldGVTdWNjZXNzLCAiQ29uZmlnSXRlbSAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSBpcyBkZWxldGVkIC0gSUQgJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICREQjo6c2luZ2xlID0gMTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZG1pbkltcG9ydEV4cG9ydCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWRtaW5JbXBvcnRFeHBvcnQiKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gImEuSW1wb3J0RXhwb3J0RGVsZXRlW2RhdGEtaWQ9JyRUZW1wbGF0ZUlEJ10iLAogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgdG8gZGVsZXRlIHRlc3QgdGVtcGxhdGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJhLkltcG9ydEV4cG9ydERlbGV0ZVtkYXRhLWlkPSckVGVtcGxhdGVJRCddIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNEaWFsb2dCdXR0b24xOnZpc2libGUiLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI0RpYWxvZ0J1dHRvbjEnLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggRWxlbWVudE1pc3NpbmcgPT4gWyAiYS5JbXBvcnRFeHBvcnREZWxldGVbZGF0YS1pZD0nJFRlbXBsYXRlSUQnXSIsICdjc3MnIF0gKTsKCiAgICAgICAgIyBDaGVjayBpZiB0ZXN0IHRlbXBsYXRlIGlzIGRlbGV0ZWQuCiAgICAgICAgb2soCiAgICAgICAgICAgICEkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJCgnYS5JbXBvcnRFeHBvcnREZWxldGVbZGF0YS1pZCo9XCIkVGVtcGxhdGVJRFwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJUZXN0IHRlbXBsYXRlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgojIFRPRE86IGNsZWFuIHVwIG9mIHRoZSBkYXRhYmFzZQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKHF3KENvbXB1dGVyIEhhcmR3YXJlIExvY2F0aW9uIE5ldHdvcmsgU29mdHdhcmUpKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJE93bmVyICAgICAgICAgICA9ICciVGVzdCBUZXN0IiA8dGVzdEB0ZXN0LmNvbT4nOwogICAgICAgIG15ICRDb21wdXRlckNsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDb21wdXRlcicsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtLCBzb3J0ZWQgYnkgY3JlYXRlZCB0aW1lLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO0ZpbHRlcj1BbGw7Vmlldz07U29ydEJ5PUxhc3RDaGFuZ2VkO09yZGVyQnk9RG93biIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgd2l0aCAnQWxsJyBmaWx0ZXIgYWN0aXZlCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2E6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpJykubGVuZ3RoID09PSAxIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGVhY2ggb2YgQ29uZmlnSXRlbSBjbGFzcyBmaWx0ZXJzIGZvciB0aGVpciByZXNwZWN0aXZlIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1DaGFuZ2VkO09yZGVyQnk9RG93bjtWaWV3PVNtYWxsO0ZpbHRlcj0kQ29uZmlnSXRlbUNsYXNzSURzWyRDb3VudF0nICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIiwgJ2NzcycgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBudW1iZXIgY29sdW1uIGhhcyBhIGxpbmsgdG8gdGhlIGNvbmZpZyBpdGVtIHpvb20KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3RyOmVxKFwiMVwiKSBhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyc1s0XSlbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRHNbNF1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiTGluayBvbiBDb25maWdJdGVtICdOdW1iZXInIGNvbHVtbiBjb3JyZWN0LiIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlJlZ2lzdGVyT007ICAgICAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKb3VyICRTZWxmOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgY2xhc3MgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NOYW1lczsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzcyAocXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAgICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc05hbWVzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntOYW1lfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICMgY2hlY2sgZm9yIElUU01Db25maWdJdGVtIGNsYXNzZXMKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzc05hbWUgKEBDb25maWdJdGVtQ2xhc3NOYW1lcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbUNsYXNzTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBjbGFzcyAkQ29uZmlnSXRlbUNsYXNzTmFtZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGxpbmtzIHRvICdBZGQnIG5ldyBpdGVtIGZvciBlYWNoIGNsYXNzCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3NBZGQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0FkZCcgKV0iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUNsYXNzQWRkIGFkZCBsaW5rIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemBulk.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnQ29tcHV0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvbXB1dGVyQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGFuZCAnUmVwYWlyJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIGZvciBteSAkRGVwbFN0YXRlIChxdyAoUHJvZHVjdGlvbiBSZXBhaXIpKSB7CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRocmVlIHRlc3QgQ29uZmlnSXRlbXMgZm9yICdDb21wdXRlcicgQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICBteSBAQ29uZmlnSXRlbXM7CiAgICAgICAgZm9yICggMSAuLiAzICkgewoKICAgICAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRHNbMF0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtGaWx0ZXI9QWxsO1ZpZXc9OztTb3J0Qnk9TGFzdENoYW5nZWQ7T3JkZXJCeT1Eb3duIgogICAgICAgICk7CgogICAgICAgICMgU2VsZWN0IHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRTZWxlY3RDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAgICAgICAgICMgRG9uJ3QgY2xpY2sgb24gdGhpcmQgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBpZiAoICRTZWxlY3RDb25maWdJdGVtLT57SUR9IG5lICRDb25maWdJdGVtc1syXS0+e0lEfSApIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9JyRTZWxlY3RDb25maWdJdGVtLT57SUR9J10iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiBidWxrIGFjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW3RleHQoKT0nQnVsayddIiktPmNsaWNrKCk7CgogICAgICAgICMgU3dpdGNoIHRvICdCdWxrJyB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0RlcGxTdGF0ZUlEIikubGVuZ3RoOycgKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgTGlua1RvZ2V0aGVyIExpbmtUb2dldGhlckxpbmtUeXBlIExpbmtUb2dldGhlckFub3RoZXIgTGlua1R5cGUgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBDaGFuZ2UgZGVwbG95bWVudCBzdGF0ZSB0byAnUmVwYWlyJyBmb3IgdGVzdCBDb25maWdJdGVtcwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSURzWzFdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgJ0FsdGVybmF0aXZlIHRvJyB0ZXN0IENvbmZpZ0l0ZW1zIHRvZ2V0aGVyCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjTGlua1RvZ2V0aGVyJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0xpbmtUb2dldGhlckxpbmtUeXBlJykudmFsKCdDb25uZWN0ZWRUbzo6U291cmNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgdGhpcmQgdGVzdCBDb25maWdJdGVtIGFzIHBhcnQgb2YgZmlyc3QgdHdvCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua1RvZ2V0aGVyQW5vdGhlciIsICdjc3MnICktPnNlbmRfa2V5cyggJENvbmZpZ0l0ZW1zWzJdLT57Q29uZmlnSXRlbU51bWJlcn0gKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNMaW5rVHlwZScpLnZhbCgnSW5jbHVkZXM6OlRhcmdldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgKTsKCiAgICAgICAgIyRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtUeXBlIG9wdGlvblt2YWx1ZT0nSW5jbHVkZXM6OlRhcmdldCddIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTdWJtaXQgYnVsayBjaGFuZ2VzCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBmaXJzdCBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgem9vbSB2aWV3LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1zWzFdLT57SUR9IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIG90aGVyIHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgIyBWZXJpZnkgdGhhdCBsaW5rIGFjdGlvbiBpbiBidWxrIHNjcmVlbiB3YXMgc3VjY2Vzcy4KICAgICAgICBteSAkQ291bnQgPSAxOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtcykgewoKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRDb25maWdJdGVtc1sxXS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9ID09ICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICAgICAiLy9hW1xAY2xhc3M9XCdBc0Jsb2NrIExpbmtPYmplY3RMaW5rXCddW2NvbnRhaW5zKC4sXCckQ2hlY2tDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn1cJyldIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAkREI6OnNpbmdsZSA9IDE7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbXEBjbGFzcz0nVmFsdWUnIGFuZCBcQHRpdGxlPSdSZXBhaXInXSIpLAogICAgICAgICAgICAiRGVwbG95bWVudCBzdGF0ZSBpcyBSZXBhaXIuIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbXMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemDuplicate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIFRlc3QyOjpWMDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXQogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1NlbGVuaXVtIFRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgQWRkIGEgbmV3IHZlcnNpb24uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ0hhcmR3YXJlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1Ob3RlID0gJ1NvbWUgU2VsZW5pdW0gdGVzdCBub3RlJzsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLU5vdGUnID0+ICRDb25maWdJdGVtTm90ZSwKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoSGFyZHdhcmUpJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gImgxOmNvbnRhaW5zKCRDb25maWdJdGVtTmFtZSkiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbU5vdGUsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAicDpjb250YWlucygkQ29uZmlnSXRlbU5vdGUpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGg7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57VmFsdWV9IC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnRHVwbGljYXRlJyBtZW51IGl0ZW0gYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgd2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRGVwbFN0YXRlSUQiKS5sZW5ndGg7JyApOwoKICAgICAgICAjIEdldCBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBEdXBsaWNhdGVkQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnRGVwbFN0YXRlSUQnLAogICAgICAgICAgICAgICAgRXhwZWN0ZWRWYWx1ZSA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgPT4gJ0R5bmFtaWNGaWVsZF9IYXJkd2FyZS1Ob3RlJywKICAgICAgICAgICAgICAgIEV4cGVjdGVkVmFsdWUgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZHVwbGljYXRlZCBDb25maWdJdGVtIHZhbHVlcyBvbiBzY3JlZW4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChARHVwbGljYXRlZENvbmZpZ0l0ZW1WYWx1ZXMpIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IiwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntFeHBlY3RlZFZhbHVlfSwKICAgICAgICAgICAgICAgICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEVkaXQgbmFtZSBmb3IgZHVwbGljYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBteSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgPSAiRHVwbGljYXRlIiAuICRDb25maWdJdGVtTmFtZTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCREdXBsaWNhdGVDb25maWdJdGVtTmFtZSk7CgogICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTd2l0Y2ggYmFjayB0byB6b29tIHZpZXcuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZTsnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkU3VjY2VzcywgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQrKzsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemEdit.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKI3VzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRDSUhlbHBlciAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgY29uZmlnIGl0ZW0gY2xhc3NlcwoKICAgICAgICBteSBAVGVzdCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNsYXNzID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDaGVja0VkaXRGaWVsZHMgPT4gWwogICAgICAgICAgICAgICAgICAgICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJywgJ1ZlbmRvcicsICdNb2RlbCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW5nU3lzdGVtJywgJ0NQVScsICdSYW0nLCAnSGFyZERpc2snLCAnQ2FwYWNpdHknLCAnRlFETicsICdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZScsICdQb3ZlckRIQ1AnLAogICAgICAgICAgICAgICAgICAgICdHcmFwaGljQWRhcHRlcicsCiAgICAgICAgICAgICAgICAgICAgJ090aGVyRXF1aXBtZW50JywgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnTW9kZWwnLCAnRGVzY3JpcHRpb24nLCAnVHlwZScsICdPd25lcicsCiAgICAgICAgICAgICAgICAgICAgJ1NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnTG9jYXRpb24nLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdUeXBlJywgJ1Bob25lMScsICdQaG9uZTInLCAnRmF4JywgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1FTWFpbCcsICdBZGRyZXNzJywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgICdTdWJtaXQnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgPT4gJ05ldHdvcmsnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ05ldHdvcmtBZGRyZXNzJywgJ1N1Ym5ldE1hc2snLAogICAgICAgICAgICAgICAgICAgICdHYXRld2F5JywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnU29mdHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnVmVyc2lvbicsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnTGljZW5jZVR5cGUnLCAnTGljZW5jZUtleScsICdNZWRpYScsICdOb3RlJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKICAgICAgICBteSAkUmFuZG9tSUQgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1FZGl0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCIpOwoKICAgICAgICAgICAgIyBHZXQgQ29uZmlnSXRlbSBjbGFzcyBJRC4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtQ2xhc3NJRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0lEXCJdJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPSRDb25maWdJdGVtQ2xhc3NJRFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI05hbWUnKS5sZW5ndGggJiYgXCQoJyNTdWJtaXRCdXR0b24nKS5sZW5ndGgiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtRWRpdCBmaWVsZHMuCiAgICAgICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtRmllbGQgKCBAeyAkQ29uZmlnSXRlbUVkaXQtPntDaGVja0VkaXRGaWVsZHN9IH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCckQ2hlY2tDb25maWdJdGVtRmllbGRcJyApXSIpOwogICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDcmVhdGUgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IC4gJFJhbmRvbUlEOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRDb25maWdJdGVtTmFtZSk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgIlwkKCcjRGVwbFN0YXRlSUQnKS52YWwoJyREZXBsU3RhdGVJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjRGVwbFN0YXRlSUQnKS52YWwoKSA9PT0gJyREZXBsU3RhdGVJRCciCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0luY2lTdGF0ZUlEJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIpOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjSW5jaVN0YXRlSUQnKS52YWwoKSA9PT0gJzEnIiApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdDb21wdXRlcicgKSB7CgogICAgICAgICAgICAgICAgIyBHZXQgR2VuZXJhbCBDYXRhbG9nIElEIGZvciAnWWVzJy4KICAgICAgICAgICAgICAgIG15ICRZZXNEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpZZXNObycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJFllc0lEID0gJFllc0RhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTklDIG5hbWUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZV8wXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bU5ldHdvcmsnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBZZXMgZm9yIERIQ1BPdmVySVAuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJcJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignRHluYW1pY0ZpZWxkX0NvbXB1dGVyLU5JQ0lQb3ZlckRIQ1BfMCcpKS52YWwoJyRZZXNJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEVudGVyIE90aGVyIEVxdWlwbWVudC4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1PdGhlckVxdWlwbWVudFwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gRXF1aXBtZW50Jyk7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwoKICAgICAgICAgICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItSW5zdGFsbERhdGVVc2VkXCcgKV0iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30gZXEgJ05ldHdvcmsnICkgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX05ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlXzBcJyApXSIpLT5zZW5kX2tleXMoJ1NlbGVuaXVtIExBTicpOwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfTmV0d29yay1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnSGFyZHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBjdXJyZW50IGRhdGUgYXMgdGhlIGluc3RhbGxhdGlvbiBkYXRlLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdMb2NhdGlvbicgKSB7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnU29mdHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfU29mdHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3VibWl0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAicC5WYWx1ZTpjb250YWlucygkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9KSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIHN1Ym1pdHRlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChAQ29uZmlnSXRlbVZhbHVlcykgewogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57Q2hlY2t9JykubGVuZ3RoID09PSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja1Jlc3VsdH0iCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDaGVja0NvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSAtIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW1JRC4KICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIEBDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gZm91bmQgZm9yIGRlbGV0aW9uIC0gSUQgJENvbmZpZ0l0ZW1JRHNbMF0iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEc1swXSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemHistory.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBnZXQgY2F0YWxvZyBjbGFzcyBJRHMKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwoKICAgICAgICAjIEdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBzZXQgTmFtZSB1cGRhdGUgYXMgYSB2ZXJzaW9uIHRyaWdnZXJpbmcgZXZlbnQKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bSBUZXN0JywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgbXkgJEZpcnN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU5vdGUgPSAnU29tZSBTZWxlbml1bSB0ZXN0IG5vdGUnOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZScgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkU2Vjb25kVmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWNvbmRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkU2Vjb25kVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGVzdCB1c2VyIElECiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIGNoZWNrIGZvciBlcnJvciBtZXNzYWdlIHdoZW4gbm8gQ29uZmlnSXRlbUlEIGlzIHByb3ZpZGVkIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkiKTsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZU5vSUQgPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRXJyb3JNZXNzYWdlTm9JRCApID4gLTEsCiAgICAgICAgICAgICJFcnJvciBtZXNzYWdlICRFcnJvck1lc3NhZ2VOb0lEIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGhpc3RvcnkgbWVzc2FnZXMgbGlzdAogICAgICAgIG15IEBIaXN0b3J5TWVzc2FnZXMgPSAoCiAgICAgICAgICAgICJOZXcgQ29uZmlnSXRlbSAoSUQ9JENvbmZpZ0l0ZW1JRCkiLAogICAgICAgICAgICAiTmV3IHZlcnNpb24gKElEPSRGaXJzdFZlcnNpb25JRCIsCiAgICAgICAgICAgICJOZXcgdmVyc2lvbiAoSUQ9JFNlY29uZFZlcnNpb25JRCIsCiAgICAgICAgICAgICJBdHRyaWJ1dGUgSGFyZHdhcmUtTm90ZSB1cGRhdGVkIGZyb20gXCJcIiB0byBcIlNvbWUgU2VsZW5pdW0gdGVzdCBub3RlXCIiLAogICAgICAgICAgICAiTmFtZSB1cGRhdGVkIChuZXc9JENvbmZpZ0l0ZW1OYW1lLCBvbGQ9U2VsZW5pdW0gVGVzdCkiLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGhpc3RvcnkgbWVzc2FnZXMgaW4gaGlzdG9yeSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgJERCOjpzaW5nbGUgPSAxOwoKICAgICAgICBmb3IgbXkgJEhpc3RvcnlNZXNzYWdlIChASGlzdG9yeU1lc3NhZ2VzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRIaXN0b3J5TWVzc2FnZSApID4gLTEsCiAgICAgICAgICAgICAgICAiSGlzdG9yeSBtZXNzYWdlICRIaXN0b3J5TWVzc2FnZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICREQjo6c2luZ2xlID0gMTsKCiAgICAgICAgIyByZW1vdmUgaXRzbS1jb25maWdpdGVtICdybycgYWNjZXNzIHJpZ2h0IGZvciB0ZXN0IHVzZXIKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgIyBnZXQgJ2l0c20tY29uZmlnaXRlbScgZ3JvdXAgSUQKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1Hcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgYWNjZXNzIHJpZ2h0cyB0byB0ZXN0IHVzZXIKICAgICAgICAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyQWRkKAogICAgICAgICAgICBHSUQgICAgICAgID0+ICRJVFNNQ29uZmlnSXRlbUdyb3VwSUQsCiAgICAgICAgICAgIFVJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICAgICAgcm8gPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgZXJyb3IgbWVzc2FnZSB3aGVuIHVzZXIgaGF2ZSBubyBhY2Nlc3MgcmlnaHRzIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgIG15ICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gPSAnTm8gUGVybWlzc2lvbiB0byB1c2UgdGhpcyBmcm9udGVuZCBtb2R1bGUhJzsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gKSA+IC0xLAogICAgICAgICAgICAiRXJyb3IgbWVzc2FnZSAkRXJyb3JNZXNzYWdlTm9QZXJtaXNzaW9uIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgKTsKICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemPrint.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgojIHNvbWUgc2V0dXAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBTZWxlbml1bSB0ZXN0CnNraXBfYWxsKCdTa2lwcGluZyBDTURCIFNlbGVuaXVtIHRlc3RzIHRlbXBvcmFyaWx5LicpOwoKb3VyICRTZWxmOwoKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKaWYgKCAkU2VsZW5pdW0tPnticm93c2VyX25hbWV9IG5lICdmaXJlZm94JyApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDEsCiAgICAgICAgIlBERiB0ZXN0IGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEZpcmVmb3giLAogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU0NvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRCIpOwoKICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRoZSBsaW5rIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2FbaHJlZio9XCJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEXCJdJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIEdvIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4gZm9yIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRCIKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZC4KICAgICAgICBBQ1RJVkVTTEVFUDoKICAgICAgICBmb3IgbXkgJFNlY29uZCAoIDEgLi4gMzAgKSB7CiAgICAgICAgICAgIGlmICggaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlLCAncHJpbnRlZCBieScgKSA+IC0xLCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAicHJpbnRlZCBieSIgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICJQcmludCBzY3JlZW4gaXMgbG9hZGVkIGFmdGVyICRTZWNvbmQgc2Vjb25kcyIsCiAgICAgICAgICAgICAgICApIHx8IGRpZTsKCiAgICAgICAgICAgICAgICBsYXN0IEFDVElWRVNMRUVQOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0ZXN0IHByaW50IHZhbHVlcy4KICAgICAgICBteSBAQ29uZmlnSXRlbVByaW50ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ1NlbGVuaXVtVGVzdCcsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDb25maWdJdGVtOiBTZWxlbml1bVRlc3QgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNsYXNzOiBIYXJkd2FyZSAtIGZvdW5kIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDdXJyZW50IERlcGxveW1lbnQgU3RhdGU6IFByb2R1Y3Rpb24gLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkN1cnJlbnQgSW5jaWRlbnQgU3RhdGU6IE9wZXJhdGlvbmFsIC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICdWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ3VycmVudCBWZXJzaW9uOiBWZXJzaW9uIDEgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgcHJpbnRlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtUHJpbnQpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJENvbmZpZ0l0ZW1WYWx1ZS0+e01lc3NhZ2V9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgQ29uZmlnSXRlbSBJRC4KICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlcikpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtQ2xhc3MsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXJzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBmb3IgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSAkQ29uZmlnSXRlbU51bWJlciBudW1iZXIgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtcy4KICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0luY2lkZW50JywKICAgICAgICApOwoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBteSAkQ291bnQgICAgPSAxOwogICAgICAgIG15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ3JlYXRlTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1DcmVhdGVOdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb3VudCAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlSUQtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBhbmQgb3ZlcmxheSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaENsYXNzSUQnKS5sZW5ndGgiICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgbGFiZWwuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnbGFiZWxbZm9yPVwiQ2xhc3NcIl0nKS5sZW5ndGgiKSwKICAgICAgICAgICAgIkNsYXNzIGxhYmVsIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgc2VsZWN0IGJveC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoQ2xhc3NJRCIsICdjc3MnICksCiAgICAgICAgICAgICJDbGFzcyBzZWxlY3QgYm94IC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQmUgc3VyZSBtb2Rlcm5pemVkIGZpZWxkIGhhcyBsb2FkZWQuCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBTZWxlY3QgJ0NvbXB1dGVyJyBjbGFzcy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCckQ29uZmlnSXRlbUNsYXNzSURzWzBdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBCZSBzdXJlIGFsbCBmaWVsZHMgYXJlIGxvYWRlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NlYXJjaEZvcm1TdWJtaXQiKS5sZW5ndGg7JywKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gc2VhcmNoIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFNlYXJjaENsYXNzSUQgU2VhcmNoUHJvZmlsZSBTZWFyY2hQcm9maWxlTmV3IEF0dHJpYnV0ZSBQcmV2aW91c1ZlcnNpb25TZWFyY2ggUmVzdWx0Rm9ybSBTZWFyY2hGb3JtU3VibWl0KQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjJElEJykubGVuZ3RoIiApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjJElEJykubGVuZ3RoOyIpLAogICAgICAgICAgICAgICAgIkVsZW1lbnQgaXMgZm91bmQgLSAkSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBJVFNNQ2hhbmdlIFNlYXJjaCBmb3JtIGNvbnRhaW4gRXhjZWwgb3V0cHV0IG9wdGlvbiwgc2VlIGJ1ZyMxMjc2OS4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjUmVzdWx0Rm9ybSBvcHRpb246Y29udGFpbnMoXCJFeGNlbFwiKScpLmxlbmd0aCIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJzEnLAogICAgICAgICAgICAnSVRTTUNvbmZpZ0l0ZW0gU2VhcmNoIGNvbnRhaW4gRXhjZWwgb3V0cHV0JywKICAgICAgICApOwoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBzb3J0IGJ5IG51bWJlciBkZXNjCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdOdW1iZXInLAogICAgICAgICk7CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW1zIGJ5IHRlc3QgQ29uZmlnSXRlbSBudW1iZXIgYW5kIG5hbWVzLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQXR0cmlidXRlJykudmFsKCdOYW1lJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjU2VhcmNoSW5zZXJ0IGlucHV0W25hbWU9XCJOYW1lXCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+c2VuZF9rZXlzKCcqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwnKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgZXhwZWN0ZWQgcmVzdWx0LgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwgdGQ6Y29udGFpbnMoJENoZWNrQ29uZmlnSXRlbSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENoZWNrQ29uZmlnSXRlbSBudW1iZXIgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBWZXJpZnkgc29ydGluZyBpbiB0YWJsZSwgYnkgZGVmYXVsdCBzb3J0aW5nIGlzIGRvbmUgYnkgQ29uZmlnSXRlbU51bWJlciAtIHNvcnQgZGVzY2VuZGluZy4KICAgICAgICAjIExvd2VyIElEIHdpbGwgb24gdGhlIGJvdHRvbiBvZiB0YWJsZS4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE51bWJlciBhc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1swXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOdW1iZXIgYXNjZW5kaW5nIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgdG8gc29ydCBieSBOYW1lLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLk5hbWUiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1OdW1iZXJzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRkOmNvbnRhaW5zKCRDaGVja0NvbmZpZ0l0ZW0pJykubGVuZ3RoIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDaGVja0NvbmZpZ0l0ZW0gbnVtYmVyIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU29ydCBpcyBieSBOYW1lIGRlc2NlbmRpbmcuCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDApJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiB0b3Agb2YgdGFibGUgc29ydCBieSBOYW1lIGRlc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1swXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOYW1lIGRlc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayB0byBzb3J0IGJ5IE5hbWUgYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuTmFtZSIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgb3JkZXIgaXMgY2hhbmdlZCwgc29ydCBieSBOYW1lIGFzY2VuZGluZy4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOYW1lIGFzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlcnMgYW5kIGFkZCB0aGUgbmV3IENvbmZpZ0l0ZW1zLgogICAgICAgIG15ICVEeW5hbWljRmllbGQxID0gKAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLU5JQycgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNTdWJQcmltYXJ5QXR0cmlidXRlJyA9PiAnVGVzdCBuZXR3b3JrIGFkYXB0ZXInLAogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNJUEFkZHJlc3MnICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICcxNzIuMC4wLjAnCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnQ29tcHV0ZXItTklDSVBvdmVyREhDUCcgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAzMgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlJyA9PiAnMjAxNy0xMC0xMCAwMDowMDowMCcKICAgICAgICApOwogICAgICAgIG15ICVEeW5hbWljRmllbGQyID0gKAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUnID0+ICcyMDE3LTExLTExIDAwOjAwOjAwJwogICAgICAgICk7CgogICAgICAgIEBDb25maWdJdGVtTnVtYmVycyA9ICgpOwogICAgICAgICRDb3VudCAgICAgICAgICAgICA9IDE7CiAgICAgICAgZm9yICggMSAuLiAzNSApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDb25maWdJdGVtTnVtYmVyIG51bWJlciBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICAgICAgICAgIG15ICVEeW5hbWljRmllbGQgPSAoICRDb3VudCA8PSAzMCApID8gJUR5bmFtaWNGaWVsZDEgOiAlRHluYW1pY0ZpZWxkMjsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJENvdW50IC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVJRC0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGRzIGFzIHNlYXJjaGFibGUKICAgICAgICBteSAlU2VhcmNoYWJsZUZpZWxkc1N5c0NvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKS0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAnQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZScgPT4gJzEnLAogICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ0lQQWRkcmVzcycgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGgiICk7CgogICAgICAgICMgQWRkIHNlYXJjaCBmaWx0ZXIgYnkgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSBhbmQgc2V0IGRhdGUgcmFuZ2UgKDgtMTAtMjAxNyAtIDE1LTEwLTIwMTcpLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3QnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaW5wdXRbbmFtZT1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90XCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0YXJ0RGF5XCJdJykudmFsKCc4Jyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjU2VhcmNoSW5zZXJ0IHNlbGVjdFtpZD1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90U3RhcnRNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdGFydFllYXJcIl0nKS52YWwoJzIwMTcnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wRGF5XCJdJykudmFsKCcxNScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0b3BNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wWWVhclwiXScpLnZhbCgnMjAxNycpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPnNlbmRfa2V5cygnKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTI1IG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIGZpcnN0IHBhZ2UiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMjUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgZmlyc3QgcGFnZSBpcyBjb3JyZWN0IC0gMjUiLAogICAgICAgICk7CgogICAgICAgICMgR28gdG8gdGhlIHNlY29uZCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2hQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlBhZ2luYXRpb24nKS50ZXh0KCkudHJpbSgpLmluZGV4T2YoJzI2LTMwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIHNlY29uZCBwYWdlIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0Ym9keSB0cicpLmxlbmd0aDsiKSwKICAgICAgICAgICAgJzUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgY29ycmVjdCAtIDUiLAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGggJiYgXCQoJyNTZWFyY2hJbnNlcnQgaW5wdXRbbmFtZT1cIk5hbWVcIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBJbnB1dCB3cm9uZyBzZWFyY2ggcGFyYW1ldGVycywgcmVzdWx0IHNob3VsZCBiZSAnTm8gZGF0YSBmb3VuZCcuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5zZW5kX2tleXMoJ2FzZGZnJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgI0VtcHR5TWVzc2FnZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLicgKSA+IC0xLAogICAgICAgICAgICAiJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJyAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVOZXcnKS5sZW5ndGgiICk7CiAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgIyBDcmVhdGUgbmV3IHRlbXBsYXRlIHNlYXJjaC4KICAgICAgICBteSAkU2VhcmNoUHJvZmlsZU5hbWUgPSAiU2VhcmNoLSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVOZXciLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLmxlbmd0aCIgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoUHJvZmlsZUFkZE5hbWUiLCAgICdjc3MnICktPnNlbmRfa2V5cygkU2VhcmNoUHJvZmlsZU5hbWUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24iLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgPT09ICckU2VhcmNoUHJvZmlsZU5hbWUnIgogICAgICAgICk7CgogICAgICAgICMgRXhlY3V0ZSBzZWFyY2ggd2l0aCBuZXcgc2VhcmNoIHByb2ZpbGUgdG8gc2F2ZSBpdC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOdW1iZXInXSIpLT5zZW5kX2tleXMoJyonKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPnNlbmRfa2V5cyggJyonIC4gJFJhbmRvbUlEICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gIkNoYW5nZSBzZWFyY2ggb3B0aW9uIgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0lUU01Db25maWdJdGVtU2VhcmNoIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgbmV3bHkgY3JlYXRlZCBzZWFyY2ggcHJvZmlsZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCckU2VhcmNoUHJvZmlsZU5hbWUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSc7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVBc0xpbms6dmlzaWJsZScpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGJ1dHRvbiBmb3IgcHJvZmlsZSBsaW5rLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBc0xpbmsiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCk7IiksCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlTmFtZSwKICAgICAgICAgICAgIkNoZWNrIGlmIHByb2ZpbGUgaXMgbG9hZGVkIHdlbGwiCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgc2VhcmNoIHJlc3VsdCByZW1haW5lZCBpbnRhY3QgYWZ0ZXIgY2hhbmdpbmcgaXRlbXMgcGVyIHBhZ2UsIHNlZSBidWcjMTQ3MTcgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAjIFNldCAxMCBjb25maWcgaXRlbXMgcGVyIHBhZ2UuCgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkRpYWxvZyAuQ2xvc2UiLCAgICAgICAgICAgICAgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggImEjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZyIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiLkRpYWxvZy5Nb2RhbCAjVXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nLAogICAgICAgICAgICBWYWx1ZSAgID0+ICcxMCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEaWFsb2dCdXR0b24xIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiAhJCgiLkRpYWxvZy5Nb2RhbCIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIGNvcnJlY3QgbnVtYmVyIG9mIGl0ZW1zIGFyZSBzaG93biBvbiBwYWdpbmF0aW9uLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTEwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gYWZ0ZXIgc3dpdGNoIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMTAnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBpcyBjb3JyZWN0IC0gMTAiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1EZWxldGVJRCBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIGZvciBteSAkQ2FjaGUgKHF3KENvbmZpZ0l0ZW0gVmVyc2lvbikpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKCBUeXBlID0+ICRDYWNoZSApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgZ2V0ICdQcm9kdWN0aW9uJyBhbmQgJ1JlcGFpcicgZGVwbG95bWVudCBzdGF0ZSBJRHMKICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIG15IEBEZXBsU3RhdGVzID0gKHF3KFByb2R1Y3Rpb24gUmVwYWlyKSk7CiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWY7CiAgICAgICAgZm9yIG15ICREZXBsU3RhdGUgKEBEZXBsU3RhdGVzKSB7CiAgICAgICAgICAgICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgIG15ICRIYXJkd2FyZUNsYXNzRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNsYXNzRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIG5ldyBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgYWRkIHR3byB2ZXJzaW9ucwogICAgICAgIG15IEBVcGRhdGVkTmFtZXMgPSAoICdTZWxlbml1bVRlc3QyJywgJ1NlbGVuaXVtVGVzdDMnICk7CiAgICAgICAgbXkgJU5hbWVzQnlWZXJzaW9uOwogICAgICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWROYW1lcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJOYW1lIGlzIHVwZGF0ZWQgLSAnJE5hbWUnIgogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICAgICApOwogICAgICAgICAgICAkTmFtZXNCeVZlcnNpb257ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0gfSA9ICROYW1lOwogICAgICAgIH0KICAgICAgICBteSBAVmVyc2lvbklEcyA9IHNvcnQga2V5cyAlTmFtZXNCeVZlcnNpb247CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1Eb3duO1ZpZXc9O0ZpbHRlcj0kSGFyZHdhcmVDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiBjcmVhdGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyggdGV4dCgpLCAnJENvbmZpZ0l0ZW1OdW1iZXInICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBnZXQgQ29uZmlnSXRlbSB2YWx1ZSBwYXJhbXMKICAgICAgICBteSBAQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdwLlZhbHVlOmNvbnRhaW5zKEhhcmR3YXJlKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoU2VsZW5pdW1UZXN0MyknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnUmVwYWlyJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdkaXYuVmFsdWU6Y29udGFpbnMoUmVwYWlyKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnZGl2LlZhbHVlOmNvbnRhaW5zKE9wZXJhdGlvbmFsKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICIkQ29uZmlnSXRlbU51bWJlciIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntWYWx1ZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEIjsKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI1ZlcnNpb25TZWxlY3Rpb24nKS52YWwoJyRWYWx1ZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyROYW1lc0J5VmVyc2lvbnskVmVyc2lvbklEfScpLmxlbmd0aCIsCiAgICAgICAgICAgICAgICAiJE5hbWVzQnlWZXJzaW9ueyRWZXJzaW9uSUR9ICgkVmVyc2lvbklEKSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRlc3QgbWVudSBidXR0b25zIHBhcmFtcwogICAgICAgIG15IEBNZW51QnV0dG9ucyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQmFjaycsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9RG93bjtWaWV3PTtGaWx0ZXI9JEhhcmR3YXJlQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGlzdG9yeScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdFZGl0JywKICAgICAgICAgICAgICAgIExpbmsgPT4gIkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHJpbnQnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEc1sxXSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R1cGxpY2F0ZScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWVudSBidXR0b25zCiAgICAgICAgZm9yIG15ICRNZW51QnV0dG9uQ2hlY2sgKEBNZW51QnV0dG9ucykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJyRNZW51QnV0dG9uQ2hlY2stPntMaW5rfScgKV0iKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJNZW51IGJ1dHRvbiAkTWVudUJ1dHRvbkNoZWNrLT57TmFtZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9CgopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentLinkObject.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgojIE5PVEU6IFRoZSB0ZXN0IHJ1bnMgc3VjY2Vzc2Z1bGx5LCBidXQgd2l0aCB0aGUgc2lkZSBlZmZlY3Qgb2YgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgRVMgd2hlbiB0aWNrZXRzIGFyZSBkZWxldGVkCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgZGlzYWJsZSBFUwogICAgICAgIG15ICVFbGFzdGljU2VhcmNoQWN0aXZlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdFbGFzdGljc2VhcmNoOjpBY3RpdmUnLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICAgICAgS2V5ICAgPT4gJ0VsYXN0aWNzZWFyY2g6OkFjdGl2ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICRFbGFzdGljU2VhcmNoQWN0aXZle0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICk7CgogICAgICAgICMgZGlzYWJsZSBFUyB3ZWJzZXJ2aWNlCiAgICAgICAgbXkgJFdlYnNlcnZpY2UgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUdldCgKICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICApOwogICAgICAgIG15ICRXZWJTZXJ2aWNlRGlzYWJsZWQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAgICAgSUQgICAgICA9PiAkV2Vic2VydmljZS0+e0lEfSwKICAgICAgICAgICAgTmFtZSAgICA9PiAkV2Vic2VydmljZS0+e05hbWV9LAogICAgICAgICAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlLT57Q29uZmlnfSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAyLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFdlYlNlcnZpY2VEaXNhYmxlZCwKICAgICAgICAgICAgIldlYnNlcnZpY2UgJyRXZWJzZXJ2aWNlLT57TmFtZX0nIGlzIGRpc2FibGVkIgogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgbGVnYWN5IGNsYXNzZXMgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgQ29tcHV0ZXIgYW5kIEhhcmR3YXJlIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtIChxdyhDb21wdXRlciBIYXJkd2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdHdvIHRlc3QgQ29uZmlnSXRlbXMgZm9yIENvbXB1dGVyIGFuZCBIYXJkd2FyZSBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRJVFNNQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW0gVGVzdCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3Qgc2VydmljZS4KICAgICAgICBteSAkU2VydmljZU5hbWUgPSAiU2VydmljZSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTZXJ2aWNlSUQgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VBZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRTZXJ2aWNlTmFtZSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgQ29tbWVudCAgICAgPT4gJ1NlbGVuaXVtIFRlc3QgU2VydmljZScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ID0+ICczIG5vcm1hbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlcnZpY2VJRCwKICAgICAgICAgICAgIlNlcnZpY2UgaXMgY3JlYXRlZCAtIElEICRTZXJ2aWNlSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB0aWNrZXQuCiAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NlbGVuaXVtVGVzdFRpY2tldCcsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiVGlja2V0IGlzIGNyZWF0ZWQgLSBJRCAkVGlja2V0SUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJywgJ2l0c20tc2VydmljZScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEc1swXSIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdMaW5rJyBtZW51LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRHNbMF1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB0byAnTGluaycgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGUnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgSGFyZHdhcmUgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdJVFNNQ29uZmlnSXRlbTo6JENvbmZpZ0l0ZW1DbGFzc0lEc1sxXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIENoZWNrICdMaW5rJyBzY3JlZW4gZm9yIHR3byBDb25maWdJdGVtcy4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoVGFyZ2V0SWRlbnRpZmllciBTdWJtaXRTZWFyY2gpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggQ29uZmlnSXRlbSBieSBpdHMgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0gKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXRTZWFyY2giLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI0xpbmtUYXJnZXRLZXlzJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICBzbGVlcCAxOwoKICAgICAgICAjIFNlbGVjdCAnQWx0ZXJuYXRpdmVUbycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgU2VydmljZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdTZXJ2aWNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgc2xlZXAgMjsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NFQVJDSFxcXFw6XFxcXDpOYW1lIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBTZXJ2aWNlIGJ5IG5hbWUgYW5kIHNlbGVjdCByZXN1bHQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU0VBUkNIOjpOYW1lJ10iKS0+c2VuZF9rZXlzKCRTZXJ2aWNlTmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0U2VhcmNoIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J0xpbmtUYXJnZXRLZXlzJ11bXEB2YWx1ZT0nJFNlcnZpY2VJRCddIiktPmNsaWNrKCk7CgogICAgICAgICMgU2VsZWN0ICdSZWxldmFudCB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdSZWxldmFudFRvOjpTb3VyY2UnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgVGlja2V0LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1RhcmdldElkZW50aWZpZXInKS52YWwoJ1RpY2tldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6VGlja2V0TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBUaWNrZXQgYnkgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6VGlja2V0TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCRUaWNrZXROdW1iZXIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdFNlYXJjaCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nTGlua1RhcmdldEtleXMnXVtcQHZhbHVlPSckVGlja2V0SUQnXSIpLT5jbGljaygpOwoKICAgICAgICAjIFNlbGVjdCAnRGVwZW5kcyB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdEZXBlbmRzT246OlNvdXJjZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAaWQ9J0FkZExpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPiAtMSwKICAgICAgICAgICAgICAgICJMaW5rZWQgdmFsdWUgJENoZWNrVmFsdWVzIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnTGluaycgbWVudSBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PSRDb25maWdJdGVtSURzWzBdXCcgKV0iCiAgICAgICAgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrICdnbyB0byBtYW5hZ2UgbGlua3Mgc2NyZWVuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCcjTWFuYWdlTGlua3NcJyApXSIpLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgZm9yIHRoZSBtYW5hZ2UgbGlua3MgdGFiIHRvIHNob3cgdXAuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc106dmlzaWJsZSIpLmxlbmd0aCAmJiBwYXJzZUludCgkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10iKS5jc3MoIm9wYWNpdHkiKSwgMTApID09IDEnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgYWxsIGxpbmtlZCBpdGVtcyBhbmQgZGVsZXRlIGxpbmtzLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J0lUU01Db25maWdJdGVtOjokQ29uZmlnSXRlbUlEc1sxXTo6QWx0ZXJuYXRpdmVUbyddIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdGl0bGU9J0RlbGV0ZSBsaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nU2VydmljZTo6JFNlcnZpY2VJRFw6OlJlbGV2YW50VG8nXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHRpdGxlPSdEZWxldGUgbGlua3MnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J1RpY2tldDo6JFRpY2tldElEXDo6RGVwZW5kc09uJ10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0aXRsZT0nRGVsZXRlIGxpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIG5vIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPT0gLTEsCiAgICAgICAgICAgICAgICAiTGlua2VkIHZhbHVlICRDaGVja1ZhbHVlcyAtIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IFRpY2tldC4KICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGlja2V0IGlzIGRlbGV0ZWQgLSBJRCAkVGlja2V0SUQgIgogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1EZWxldGUgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBzZXJ2aWNlIGFuZCBpdHMgcHJlZmVyZW5jZXMuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIHNlcnZpY2VfcHJlZmVyZW5jZXMgV0hFUkUgc2VydmljZV9pZCA9ICRTZXJ2aWNlSUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU2VydmljZSBwcmVmZXJlbmNlcyBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBzZXJ2aWNlIFdIRVJFIGlkID0gJFNlcnZpY2VJRCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTZXJ2aWNlIGlzIGRlbGV0ZWQgLSBJRCAkU2VydmljZUlEIiwKICAgICAgICApOwogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/DashboardITSMConfigItemGeneric.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgU2VsZW5pdW0gdGVzdHMgdGVtcG9yYXJpbHkuJyk7CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGN1c3RvbWVyIHVzZXIgbG9naW4uCiAgICAgICAgbXkgJFRlc3RDdXN0b21lclVzZXIgPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IGN1c3RvbWVyIHVzZXIiOwoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwogICAgICAgIG15ICRDdXN0b21lckNvbXBhbnlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55Jyk7CgogICAgICAgICMgR2V0IGN1c3RvbWVyIHVzZXIgZGF0YS4KICAgICAgICBteSAlQ3VzdG9tZXJVc2VyID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlciwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByYW5kb20gaWQuCiAgICAgICAgbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgbXkgJEN1c3RvbWVyQ29tcGFueUlEID0gJEN1c3RvbWVyQ29tcGFueU9iamVjdC0+Q3VzdG9tZXJDb21wYW55QWRkKAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgICAgID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBDdXN0b21lckNvbXBhbnlOYW1lID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBWYWxpZElEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ3VzdG9tZXJDb21wYW55SUQsCiAgICAgICAgICAgICJDcmVhdGVkIHRlc3QgY3VzdG9tZXIgY29tcGFueSAkQ3VzdG9tZXJDb21wYW55SUQiLAogICAgICAgICk7CgogICAgICAgICMgRGVmaW5lIHRlc3QgYXJyYXkuCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENsYXNzTmFtZSAgPT4gJ0N1c3RvbWVyJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lcgogIE5hbWU6IEN1c3RvbWVyCiAgU2VhcmNoYWJsZTogMSwKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyCkVPRgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDbGFzc05hbWUgID0+ICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnQ3VzdG9tZXJDb21wYW55JywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lckNvbXBhbnkKICBOYW1lOiBDdXN0b21lckNvbXBhbnkKICBTZWFyY2hhYmxlOiAxLAogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CkVPRgogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5ncy4KICAgICAgICBteSAlSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX07CiAgICAgICAgJElUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfS0+e0NvbmZpZ0l0ZW1LZXl9ID0gewogICAgICAgICAgICAnQ3VzdG9tZXInIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lcicsCiAgICAgICAgfTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAleyAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55U3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0tPntDb25maWdJdGVtS2V5fTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnlTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX0gPSB7CiAgICAgICAgICAgICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lckNvbXBhbnknLAogICAgICAgIH07CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5nLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICV7ICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIEFkZCB0aGUgdGVzdCBjbGFzc2VzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc2VzOwogICAgICAgIG15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uIChAVGVzdCkgewoKICAgICAgICAgICAgIyBBZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MuCiAgICAgICAgICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNsYXNzIGlkLgogICAgICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NlcywgICREZWZpbml0aW9uLT57Q2xhc3NOYW1lfTsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MuCiAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgICAgICBvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKICAgICAgICAgICAgIyBBZGQgZGF0YSB0byB0ZXN0IGFycmF5LgogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0NsYXNzSUR9ID0gJENsYXNzSUQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgc2NyaXB0IGFsaWFzLgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JFRlc3QtPntDbGFzc0lEfVwiXScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD0kVGVzdC0+e0NsYXNzSUR9XCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjTmFtZScpLmxlbmd0aCAmJiBcJCgnI1N1Ym1pdEJ1dHRvbicpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ3JlYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ1NlbGVuaXVtVGVzdC0nIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU5hbWUpOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCkgPT09ICckRGVwbFN0YXRlSUQnIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNJbmNpU3RhdGVJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0luY2lTdGF0ZUlEJykudmFsKCkgPT09ICcxJyIgKTsKCiAgICAgICAgICAgIGlmICggJFRlc3QtPntLZXl9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJdGVtMTAiLCAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSXRlbTEwIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkQ3VzdG9tZXJVc2Vye1VzZXJJRH0gKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImxpLnVpLW1lbnUtaXRlbTp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCdsaS51aS1tZW51LWl0ZW06Y29udGFpbnMoJEN1c3RvbWVyVXNlcntVc2VySUR9KScpLmNsaWNrKCkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgIlwkKCcjSXRlbTEwJykudmFsKCckQ3VzdG9tZXJDb21wYW55SUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0l0ZW0xMCcpLnZhbCgpID09PSAnJEN1c3RvbWVyQ29tcGFueUlEJyIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyO0N1c3RvbWVyVXNlcklEPSRDdXN0b21lclVzZXJ7VXNlcklEfSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb25maWdJdGVtTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRDb25maWdJdGVtTmFtZSBmb3VuZCBvbiBwYWdlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CgogICAgICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI7Q3VzdG9tZXJJRD0kQ3VzdG9tZXJDb21wYW55SUQiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbU5hbWUgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkQ29uZmlnSXRlbU5hbWUgZm91bmQgb24gcGFnZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENsZWFudXAuCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gY3VzdG9tZXJfY29tcGFueSBXSEVSRSBjdXN0b21lcl9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDdXN0b21lckNvbXBhbnlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRGVsZXRlZCBDdXN0b21lckNvbXBhbnkiLAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uSUQgKEBDb25maWdJdGVtRGVmaW5pdGlvbklEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ICREZWZpbml0aW9uSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGRlZmluaXRpb24gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2dfcHJlZmVyZW5jZXMgV0hFUkUgZ2VuZXJhbF9jYXRhbG9nX2lkID0gJENsYXNzSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIlByZWZlcmVuY2VzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2cgV0hFUkUgaWQgPSAkQ2xhc3NJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ2xhc3MgaXRlbSBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCk7CiAgICB9Cik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjICAgICAgICBteSAkT3duZXIgICAgICAgICAgID0gJyJUZXN0IFRlc3QiIDx0ZXN0QHRlc3QuY29tPic7CiAgICAgICAgIyAgICAgICAgbXkgJENvbXB1dGVyQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAjICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAjICAgICAgICAgICAgTmFtZSAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAjICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAndGluYScsCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICd0aW5hJywKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9JEluZGV4O1NvcnRCeT07T3JkZXJCeT07RnVsbHRleHQ9JyApXSIKICAgICAgICAgICAgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICRJbmRleCA9PSAxOwoKICAgICAgICAgICAgIyBvcmRlciBieSBkZXNjZW5kaW5nIGNyZWF0aW9uIHRpbWUKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy90aFtjb250YWlucyhcQGNsYXNzLCBcJ092ZXJ2aWV3SGVhZGVyXCcgKSBhbmQgY29udGFpbnMoXEBjbGFzcywgXCdDcmVhdGVkXCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy90aFtjb250YWlucyhcQGNsYXNzLCBcJ092ZXJ2aWV3SGVhZGVyXCcgKSBhbmQgY29udGFpbnMoXEBjbGFzcywgXCdDcmVhdGVkXCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyh0ZXh0KCksIFwnJENvbmZpZ0l0ZW1OdW1iZXJcJyApXSIpLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBudW1iZXIgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgIyBWZXJpZnkgdGhlcmUgaXMgYSBsaW5rIHRvIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIG9uIENvbmZpZ0l0ZW0gTnVtYmVyIGNvbHVtbi4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3RyOmVxKFwiMVwiKSBhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyc1szXSlbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRHNbM11cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiTGluayBvbiBDb25maWdJdGVtICdOdW1iZXInIGNvbHVtbiBjb3JyZWN0LiIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwogICAgICAgICVDdXN0b21lcklUU01Db25maWdJdGVtU3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAndGluYScsCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICd0aW5hJywKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMiAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9JEluZGV4O1NvcnRCeT07T3JkZXJCeT07RnVsbHRleHQ9JyApXSIKICAgICAgICAgICAgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgIyBvcmRlciBieSBkZXNjZW5kaW5nIGNyZWF0aW9uIHRpbWUKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy90aFtjb250YWlucyhcQGNsYXNzLCBcJ092ZXJ2aWV3SGVhZGVyXCcgKSBhbmQgY29udGFpbnMoXEBjbGFzcywgXCdDcmVhdGVkXCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy90aFtjb250YWlucyhcQGNsYXNzLCBcJ092ZXJ2aWV3SGVhZGVyXCcgKSBhbmQgY29udGFpbnMoXEBjbGFzcywgXCdDcmVhdGVkXCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyh0ZXh0KCksIFwnJENvbmZpZ0l0ZW1OdW1iZXJcJyApXSIpLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBudW1iZXIgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFZlcmlmeSB0aGVyZSBpcyBhIGxpbmsgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20gb24gQ29uZmlnSXRlbSBOdW1iZXIgY29sdW1uLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1JRHNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU51bWJlcnNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3RyOmVxKFwiMVwiKSBhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyKVtocmVmKj1cIkl0ZW1JRD0kQ29uZmlnSXRlbUlEXCJdJykubGVuZ3RoOyIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiTGluayBvbiBDb25maWdJdGVtICdOdW1iZXInIGNvbHVtbiBjb3JyZWN0LiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnModGV4dCgpLCBcJyRDb25maWdJdGVtTnVtYmVyXCcgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgIyBjaGVjayBDb25maWdJdGVtIHZhbHVlcyBvbiB0aGUgem9vbSBzY3JlZW4KICAgICAgICAgICAgbXkgJFZhbHVlID0gJFRlc3RDbGFzc2VzWyAkSW5kZXggLSAyIF0gLiAiIyRDb25maWdJdGVtTnVtYmVyIjsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3A6Y29udGFpbnMoJFZhbHVlKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBmaWVsZCB2YWx1ZSAnJFZhbHVlJyBmb3VuZCBpbiBjb25maWcgaXRlbSB6b29tIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5nb19iYWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiOycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/sample/ImportExport/TemplateExport.csv" Permission="660" Encode="Base64">Ik5hbWUiLCJEZXBsb3ltZW50IFN0YXRlIiwiSW5jaWRlbnQgU3RhdGUiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8xMCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzkiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl84IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNyIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzYiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl81IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzMiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fMSIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCI=</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/LegacyClasses.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IENvbXB1dGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IENvbXB1dGVyLVZlbmRvcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTW9kZWwKICAgICAgICAgIC0gREY6IENvbXB1dGVyLURlc2NyaXB0aW9uCiAgICAgICAgICAtIERGOiBDb21wdXRlci1UeXBlCiAgICAgICAgICAtIERGOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBDb21wdXRlci1Pd25lcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgICAgICAtIERGOiBDb21wdXRlci1PcGVyYXRpbmdTeXN0ZW0KICAgICAgICAgIC0gREY6IENvbXB1dGVyLUNQVQogICAgICAgICAgLSBERjogQ29tcHV0ZXItUmFtCiAgICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlzawogICAgICAgICAgLSBERjogQ29tcHV0ZXItRlFETgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTklDCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgICAgIC0gREY6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgLSBERjogQ29tcHV0ZXItSW5zdGFsbERhdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgICAgICAgICAtIERGOiBDb21wdXRlci1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBDb21wdXRlci1DUFU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENQVQogICAgICBOYW1lOiBDb21wdXRlci1DUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogQ29tcHV0ZXItRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUZRRE46CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRlFETgogICAgICBOYW1lOiBDb21wdXRlci1GUUROCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1HcmFwaGljQWRhcHRlcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBHcmFwaGljIEFkYXB0ZXIKICAgICAgTmFtZTogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUhhcmREaXNrOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza0NhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLUhhcmREaXNrQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBIYXJkIERpc2sKICAgICAgTmFtZTogQ29tcHV0ZXItSGFyZERpc2sKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUluc3RhbGxEYXRlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEluc3RhbGwgRGF0ZQogICAgICBOYW1lOiBDb21wdXRlci1JbnN0YWxsRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItTW9kZWw6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogQ29tcHV0ZXItTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5JQzoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBOYW1lCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06Olllc05vCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgICAgICAgTGFiZWw6IElQIG92ZXIgREhDUAogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ0lQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgQWRhcHRlcgogICAgICBOYW1lOiBDb21wdXRlci1OSUMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5vdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE5vdGUKICAgICAgTmFtZTogQ29tcHV0ZXItTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1PdGhlckVxdWlwbWVudDoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogT3RoZXIgRXF1aXBtZW50CiAgICAgIE5hbWU6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1Pd25lcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogQ29tcHV0ZXItT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVJhbToKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUmFtCiAgICAgIE5hbWU6IENvbXB1dGVyLVJhbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1UeXBlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkNvbXB1dGVyOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogQ29tcHV0ZXItVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItVmVuZG9yOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBDb21wdXRlci1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlCiAgICAgIE5hbWU6IENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgTmFtZTogSGFyZHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogfAogICAgLS0tCiAgICBQYWdlczoKICAgICAgLSBOYW1lOiBDb250ZW50CiAgICAgICAgTGF5b3V0OgogICAgICAgICAgQ29sdW1uczogMQogICAgICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgICAgIENvbnRlbnQ6CiAgICAgICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICAgICAgUm93U3RhcnQ6IDEKCiAgICBTZWN0aW9uczoKICAgICAgQXR0cmlidXRlczoKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBERjogSGFyZHdhcmUtVmVuZG9yCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1Nb2RlbAogICAgICAgICAgLSBERjogSGFyZHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogSGFyZHdhcmUtTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgSGFyZHdhcmUtQ3VzdG9tZXJJRDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLURlc2NyaXB0aW9uOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBIYXJkd2FyZS1EZXNjcmlwdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtSW5zdGFsbERhdGU6CiAgICAgIENJQ2xhc3M6IEhhcmR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogSW5zdGFsbCBEYXRlCiAgICAgIE5hbWU6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Nb2RlbDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBIYXJkd2FyZS1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtTm90ZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBIYXJkd2FyZS1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Pd25lcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogSGFyZHdhcmUtT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWwgTnVtYmVyCiAgICAgIE5hbWU6IEhhcmR3YXJlLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtVHlwZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpIYXJkd2FyZTo6VHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IEhhcmR3YXJlLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVZlbmRvcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBWZW5kb3IKICAgICAgTmFtZTogSGFyZHdhcmUtVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IFdhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZQogICAgICBOYW1lOiBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IExvY2F0aW9uCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVR5cGUKICAgICAgICAgIC0gREY6IExvY2F0aW9uLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IExvY2F0aW9uLU93bmVyCiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1QaG9uZTEKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVBob25lMgogICAgICAgICAgLSBERjogTG9jYXRpb24tRmF4CiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1FTWFpbAogICAgICAgICAgLSBERjogTG9jYXRpb24tQWRkcmVzcwogICAgICAgICAgLSBERjogTG9jYXRpb24tTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQWRkcmVzczoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogQWRkcmVzcwogICAgICBOYW1lOiBMb2NhdGlvbi1BZGRyZXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1DdXN0b21lcklEOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBQb3NzaWJsZU5vbmU6IDEKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IEN1c3RvbWVyIENvbXBhbnkKICAgICAgTmFtZTogTG9jYXRpb24tQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tRU1haWw6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRS1NYWlsCiAgICAgIE5hbWU6IExvY2F0aW9uLUVNYWlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1GYXg6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmF4CiAgICAgIE5hbWU6IExvY2F0aW9uLUZheAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTm90ZToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBMb2NhdGlvbi1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Pd25lcjoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogTG9jYXRpb24tT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVBob25lMToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQaG9uZSAxCiAgICAgIE5hbWU6IExvY2F0aW9uLVBob25lMQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUGhvbmUyOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBob25lIDIKICAgICAgTmFtZTogTG9jYXRpb24tUGhvbmUyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1UeXBlOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkxvY2F0aW9uOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTG9jYXRpb24tVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICBOYW1lOiBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IE5ldHdvcmstRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IE5ldHdvcmstVHlwZQogICAgICAgICAgLSBERjogTmV0d29yay1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBOZXR3b3JrLU93bmVyCiAgICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogTmV0d29yay1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBOZXR3b3JrLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IE5ldHdvcmstQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBOZXR3b3JrLURlc2NyaXB0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzOgogICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJuZXRNYXNrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDI1NS4yNTUuMjU1LjAKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3VibmV0IE1hc2sKICAgICAgICAgICAgTmFtZTogTmV0d29yay1OZXR3b3JrQWRkcmVzc1N1Ym5ldE1hc2sKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzR2F0ZXdheQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBHYXRld2F5CiAgICAgICAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NHYXRld2F5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBBZGRyZXNzCiAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIE5ldHdvcmstTm90ZToKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IE5ldHdvcmstTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1Pd25lcjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBOZXR3b3JrLU93bmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLVR5cGU6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpOZXR3b3JrOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTmV0d29yay1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IFNvZnR3YXJlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVZlbmRvcgogICAgICAgICAgLSBERjogU29mdHdhcmUtVmVyc2lvbgogICAgICAgICAgLSBERjogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VUeXBlCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogU29mdHdhcmUtTWVkaWEKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU5vdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgRHluYW1pY0ZpZWxkczoKICAgIFNvZnR3YXJlLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBTb2Z0d2FyZS1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VLZXk6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VLZXlTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE5hbWUKICAgICAgICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZUtleVN1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDEKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgICcxJzogMQogICAgICAgICAgICAgICAgJzEwJzogMTAKICAgICAgICAgICAgICAgICcxMDAnOiAxMDAKICAgICAgICAgICAgICAgICcxMDAwJzogMTAwMAogICAgICAgICAgICAgICAgJzEwMSc6IDEwMQogICAgICAgICAgICAgICAgJzEwMic6IDEwMgogICAgICAgICAgICAgICAgJzEwMyc6IDEwMwogICAgICAgICAgICAgICAgJzEwNCc6IDEwNAogICAgICAgICAgICAgICAgJzEwNSc6IDEwNQogICAgICAgICAgICAgICAgJzEwNic6IDEwNgogICAgICAgICAgICAgICAgJzEwNyc6IDEwNwogICAgICAgICAgICAgICAgJzEwOCc6IDEwOAogICAgICAgICAgICAgICAgJzEwOSc6IDEwOQogICAgICAgICAgICAgICAgJzExJzogMTEKICAgICAgICAgICAgICAgICcxMTAnOiAxMTAKICAgICAgICAgICAgICAgICcxMTEnOiAxMTEKICAgICAgICAgICAgICAgICcxMTInOiAxMTIKICAgICAgICAgICAgICAgICcxMTMnOiAxMTMKICAgICAgICAgICAgICAgICcxMTQnOiAxMTQKICAgICAgICAgICAgICAgICcxMTUnOiAxMTUKICAgICAgICAgICAgICAgICcxMTYnOiAxMTYKICAgICAgICAgICAgICAgICcxMTcnOiAxMTcKICAgICAgICAgICAgICAgICcxMTgnOiAxMTgKICAgICAgICAgICAgICAgICcxMTknOiAxMTkKICAgICAgICAgICAgICAgICcxMic6IDEyCiAgICAgICAgICAgICAgICAnMTIwJzogMTIwCiAgICAgICAgICAgICAgICAnMTIxJzogMTIxCiAgICAgICAgICAgICAgICAnMTIyJzogMTIyCiAgICAgICAgICAgICAgICAnMTIzJzogMTIzCiAgICAgICAgICAgICAgICAnMTI0JzogMTI0CiAgICAgICAgICAgICAgICAnMTI1JzogMTI1CiAgICAgICAgICAgICAgICAnMTI2JzogMTI2CiAgICAgICAgICAgICAgICAnMTI3JzogMTI3CiAgICAgICAgICAgICAgICAnMTI4JzogMTI4CiAgICAgICAgICAgICAgICAnMTI5JzogMTI5CiAgICAgICAgICAgICAgICAnMTMnOiAxMwogICAgICAgICAgICAgICAgJzEzMCc6IDEzMAogICAgICAgICAgICAgICAgJzEzMSc6IDEzMQogICAgICAgICAgICAgICAgJzEzMic6IDEzMgogICAgICAgICAgICAgICAgJzEzMyc6IDEzMwogICAgICAgICAgICAgICAgJzEzNCc6IDEzNAogICAgICAgICAgICAgICAgJzEzNSc6IDEzNQogICAgICAgICAgICAgICAgJzEzNic6IDEzNgogICAgICAgICAgICAgICAgJzEzNyc6IDEzNwogICAgICAgICAgICAgICAgJzEzOCc6IDEzOAogICAgICAgICAgICAgICAgJzEzOSc6IDEzOQogICAgICAgICAgICAgICAgJzE0JzogMTQKICAgICAgICAgICAgICAgICcxNDAnOiAxNDAKICAgICAgICAgICAgICAgICcxNDEnOiAxNDEKICAgICAgICAgICAgICAgICcxNDInOiAxNDIKICAgICAgICAgICAgICAgICcxNDMnOiAxNDMKICAgICAgICAgICAgICAgICcxNDQnOiAxNDQKICAgICAgICAgICAgICAgICcxNDUnOiAxNDUKICAgICAgICAgICAgICAgICcxNDYnOiAxNDYKICAgICAgICAgICAgICAgICcxNDcnOiAxNDcKICAgICAgICAgICAgICAgICcxNDgnOiAxNDgKICAgICAgICAgICAgICAgICcxNDknOiAxNDkKICAgICAgICAgICAgICAgICcxNSc6IDE1CiAgICAgICAgICAgICAgICAnMTUwJzogMTUwCiAgICAgICAgICAgICAgICAnMTUxJzogMTUxCiAgICAgICAgICAgICAgICAnMTUyJzogMTUyCiAgICAgICAgICAgICAgICAnMTUzJzogMTUzCiAgICAgICAgICAgICAgICAnMTU0JzogMTU0CiAgICAgICAgICAgICAgICAnMTU1JzogMTU1CiAgICAgICAgICAgICAgICAnMTU2JzogMTU2CiAgICAgICAgICAgICAgICAnMTU3JzogMTU3CiAgICAgICAgICAgICAgICAnMTU4JzogMTU4CiAgICAgICAgICAgICAgICAnMTU5JzogMTU5CiAgICAgICAgICAgICAgICAnMTYnOiAxNgogICAgICAgICAgICAgICAgJzE2MCc6IDE2MAogICAgICAgICAgICAgICAgJzE2MSc6IDE2MQogICAgICAgICAgICAgICAgJzE2Mic6IDE2MgogICAgICAgICAgICAgICAgJzE2Myc6IDE2MwogICAgICAgICAgICAgICAgJzE2NCc6IDE2NAogICAgICAgICAgICAgICAgJzE2NSc6IDE2NQogICAgICAgICAgICAgICAgJzE2Nic6IDE2NgogICAgICAgICAgICAgICAgJzE2Nyc6IDE2NwogICAgICAgICAgICAgICAgJzE2OCc6IDE2OAogICAgICAgICAgICAgICAgJzE2OSc6IDE2OQogICAgICAgICAgICAgICAgJzE3JzogMTcKICAgICAgICAgICAgICAgICcxNzAnOiAxNzAKICAgICAgICAgICAgICAgICcxNzEnOiAxNzEKICAgICAgICAgICAgICAgICcxNzInOiAxNzIKICAgICAgICAgICAgICAgICcxNzMnOiAxNzMKICAgICAgICAgICAgICAgICcxNzQnOiAxNzQKICAgICAgICAgICAgICAgICcxNzUnOiAxNzUKICAgICAgICAgICAgICAgICcxNzYnOiAxNzYKICAgICAgICAgICAgICAgICcxNzcnOiAxNzcKICAgICAgICAgICAgICAgICcxNzgnOiAxNzgKICAgICAgICAgICAgICAgICcxNzknOiAxNzkKICAgICAgICAgICAgICAgICcxOCc6IDE4CiAgICAgICAgICAgICAgICAnMTgwJzogMTgwCiAgICAgICAgICAgICAgICAnMTgxJzogMTgxCiAgICAgICAgICAgICAgICAnMTgyJzogMTgyCiAgICAgICAgICAgICAgICAnMTgzJzogMTgzCiAgICAgICAgICAgICAgICAnMTg0JzogMTg0CiAgICAgICAgICAgICAgICAnMTg1JzogMTg1CiAgICAgICAgICAgICAgICAnMTg2JzogMTg2CiAgICAgICAgICAgICAgICAnMTg3JzogMTg3CiAgICAgICAgICAgICAgICAnMTg4JzogMTg4CiAgICAgICAgICAgICAgICAnMTg5JzogMTg5CiAgICAgICAgICAgICAgICAnMTknOiAxOQogICAgICAgICAgICAgICAgJzE5MCc6IDE5MAogICAgICAgICAgICAgICAgJzE5MSc6IDE5MQogICAgICAgICAgICAgICAgJzE5Mic6IDE5MgogICAgICAgICAgICAgICAgJzE5Myc6IDE5MwogICAgICAgICAgICAgICAgJzE5NCc6IDE5NAogICAgICAgICAgICAgICAgJzE5NSc6IDE5NQogICAgICAgICAgICAgICAgJzE5Nic6IDE5NgogICAgICAgICAgICAgICAgJzE5Nyc6IDE5NwogICAgICAgICAgICAgICAgJzE5OCc6IDE5OAogICAgICAgICAgICAgICAgJzE5OSc6IDE5OQogICAgICAgICAgICAgICAgJzInOiAyCiAgICAgICAgICAgICAgICAnMjAnOiAyMAogICAgICAgICAgICAgICAgJzIwMCc6IDIwMAogICAgICAgICAgICAgICAgJzIwMSc6IDIwMQogICAgICAgICAgICAgICAgJzIwMic6IDIwMgogICAgICAgICAgICAgICAgJzIwMyc6IDIwMwogICAgICAgICAgICAgICAgJzIwNCc6IDIwNAogICAgICAgICAgICAgICAgJzIwNSc6IDIwNQogICAgICAgICAgICAgICAgJzIwNic6IDIwNgogICAgICAgICAgICAgICAgJzIwNyc6IDIwNwogICAgICAgICAgICAgICAgJzIwOCc6IDIwOAogICAgICAgICAgICAgICAgJzIwOSc6IDIwOQogICAgICAgICAgICAgICAgJzIxJzogMjEKICAgICAgICAgICAgICAgICcyMTAnOiAyMTAKICAgICAgICAgICAgICAgICcyMTEnOiAyMTEKICAgICAgICAgICAgICAgICcyMTInOiAyMTIKICAgICAgICAgICAgICAgICcyMTMnOiAyMTMKICAgICAgICAgICAgICAgICcyMTQnOiAyMTQKICAgICAgICAgICAgICAgICcyMTUnOiAyMTUKICAgICAgICAgICAgICAgICcyMTYnOiAyMTYKICAgICAgICAgICAgICAgICcyMTcnOiAyMTcKICAgICAgICAgICAgICAgICcyMTgnOiAyMTgKICAgICAgICAgICAgICAgICcyMTknOiAyMTkKICAgICAgICAgICAgICAgICcyMic6IDIyCiAgICAgICAgICAgICAgICAnMjIwJzogMjIwCiAgICAgICAgICAgICAgICAnMjIxJzogMjIxCiAgICAgICAgICAgICAgICAnMjIyJzogMjIyCiAgICAgICAgICAgICAgICAnMjIzJzogMjIzCiAgICAgICAgICAgICAgICAnMjI0JzogMjI0CiAgICAgICAgICAgICAgICAnMjI1JzogMjI1CiAgICAgICAgICAgICAgICAnMjI2JzogMjI2CiAgICAgICAgICAgICAgICAnMjI3JzogMjI3CiAgICAgICAgICAgICAgICAnMjI4JzogMjI4CiAgICAgICAgICAgICAgICAnMjI5JzogMjI5CiAgICAgICAgICAgICAgICAnMjMnOiAyMwogICAgICAgICAgICAgICAgJzIzMCc6IDIzMAogICAgICAgICAgICAgICAgJzIzMSc6IDIzMQogICAgICAgICAgICAgICAgJzIzMic6IDIzMgogICAgICAgICAgICAgICAgJzIzMyc6IDIzMwogICAgICAgICAgICAgICAgJzIzNCc6IDIzNAogICAgICAgICAgICAgICAgJzIzNSc6IDIzNQogICAgICAgICAgICAgICAgJzIzNic6IDIzNgogICAgICAgICAgICAgICAgJzIzNyc6IDIzNwogICAgICAgICAgICAgICAgJzIzOCc6IDIzOAogICAgICAgICAgICAgICAgJzIzOSc6IDIzOQogICAgICAgICAgICAgICAgJzI0JzogMjQKICAgICAgICAgICAgICAgICcyNDAnOiAyNDAKICAgICAgICAgICAgICAgICcyNDEnOiAyNDEKICAgICAgICAgICAgICAgICcyNDInOiAyNDIKICAgICAgICAgICAgICAgICcyNDMnOiAyNDMKICAgICAgICAgICAgICAgICcyNDQnOiAyNDQKICAgICAgICAgICAgICAgICcyNDUnOiAyNDUKICAgICAgICAgICAgICAgICcyNDYnOiAyNDYKICAgICAgICAgICAgICAgICcyNDcnOiAyNDcKICAgICAgICAgICAgICAgICcyNDgnOiAyNDgKICAgICAgICAgICAgICAgICcyNDknOiAyNDkKICAgICAgICAgICAgICAgICcyNSc6IDI1CiAgICAgICAgICAgICAgICAnMjUwJzogMjUwCiAgICAgICAgICAgICAgICAnMjUxJzogMjUxCiAgICAgICAgICAgICAgICAnMjUyJzogMjUyCiAgICAgICAgICAgICAgICAnMjUzJzogMjUzCiAgICAgICAgICAgICAgICAnMjU0JzogMjU0CiAgICAgICAgICAgICAgICAnMjU1JzogMjU1CiAgICAgICAgICAgICAgICAnMjU2JzogMjU2CiAgICAgICAgICAgICAgICAnMjU3JzogMjU3CiAgICAgICAgICAgICAgICAnMjU4JzogMjU4CiAgICAgICAgICAgICAgICAnMjU5JzogMjU5CiAgICAgICAgICAgICAgICAnMjYnOiAyNgogICAgICAgICAgICAgICAgJzI2MCc6IDI2MAogICAgICAgICAgICAgICAgJzI2MSc6IDI2MQogICAgICAgICAgICAgICAgJzI2Mic6IDI2MgogICAgICAgICAgICAgICAgJzI2Myc6IDI2MwogICAgICAgICAgICAgICAgJzI2NCc6IDI2NAogICAgICAgICAgICAgICAgJzI2NSc6IDI2NQogICAgICAgICAgICAgICAgJzI2Nic6IDI2NgogICAgICAgICAgICAgICAgJzI2Nyc6IDI2NwogICAgICAgICAgICAgICAgJzI2OCc6IDI2OAogICAgICAgICAgICAgICAgJzI2OSc6IDI2OQogICAgICAgICAgICAgICAgJzI3JzogMjcKICAgICAgICAgICAgICAgICcyNzAnOiAyNzAKICAgICAgICAgICAgICAgICcyNzEnOiAyNzEKICAgICAgICAgICAgICAgICcyNzInOiAyNzIKICAgICAgICAgICAgICAgICcyNzMnOiAyNzMKICAgICAgICAgICAgICAgICcyNzQnOiAyNzQKICAgICAgICAgICAgICAgICcyNzUnOiAyNzUKICAgICAgICAgICAgICAgICcyNzYnOiAyNzYKICAgICAgICAgICAgICAgICcyNzcnOiAyNzcKICAgICAgICAgICAgICAgICcyNzgnOiAyNzgKICAgICAgICAgICAgICAgICcyNzknOiAyNzkKICAgICAgICAgICAgICAgICcyOCc6IDI4CiAgICAgICAgICAgICAgICAnMjgwJzogMjgwCiAgICAgICAgICAgICAgICAnMjgxJzogMjgxCiAgICAgICAgICAgICAgICAnMjgyJzogMjgyCiAgICAgICAgICAgICAgICAnMjgzJzogMjgzCiAgICAgICAgICAgICAgICAnMjg0JzogMjg0CiAgICAgICAgICAgICAgICAnMjg1JzogMjg1CiAgICAgICAgICAgICAgICAnMjg2JzogMjg2CiAgICAgICAgICAgICAgICAnMjg3JzogMjg3CiAgICAgICAgICAgICAgICAnMjg4JzogMjg4CiAgICAgICAgICAgICAgICAnMjg5JzogMjg5CiAgICAgICAgICAgICAgICAnMjknOiAyOQogICAgICAgICAgICAgICAgJzI5MCc6IDI5MAogICAgICAgICAgICAgICAgJzI5MSc6IDI5MQogICAgICAgICAgICAgICAgJzI5Mic6IDI5MgogICAgICAgICAgICAgICAgJzI5Myc6IDI5MwogICAgICAgICAgICAgICAgJzI5NCc6IDI5NAogICAgICAgICAgICAgICAgJzI5NSc6IDI5NQogICAgICAgICAgICAgICAgJzI5Nic6IDI5NgogICAgICAgICAgICAgICAgJzI5Nyc6IDI5NwogICAgICAgICAgICAgICAgJzI5OCc6IDI5OAogICAgICAgICAgICAgICAgJzI5OSc6IDI5OQogICAgICAgICAgICAgICAgJzMnOiAzCiAgICAgICAgICAgICAgICAnMzAnOiAzMAogICAgICAgICAgICAgICAgJzMwMCc6IDMwMAogICAgICAgICAgICAgICAgJzMwMSc6IDMwMQogICAgICAgICAgICAgICAgJzMwMic6IDMwMgogICAgICAgICAgICAgICAgJzMwMyc6IDMwMwogICAgICAgICAgICAgICAgJzMwNCc6IDMwNAogICAgICAgICAgICAgICAgJzMwNSc6IDMwNQogICAgICAgICAgICAgICAgJzMwNic6IDMwNgogICAgICAgICAgICAgICAgJzMwNyc6IDMwNwogICAgICAgICAgICAgICAgJzMwOCc6IDMwOAogICAgICAgICAgICAgICAgJzMwOSc6IDMwOQogICAgICAgICAgICAgICAgJzMxJzogMzEKICAgICAgICAgICAgICAgICczMTAnOiAzMTAKICAgICAgICAgICAgICAgICczMTEnOiAzMTEKICAgICAgICAgICAgICAgICczMTInOiAzMTIKICAgICAgICAgICAgICAgICczMTMnOiAzMTMKICAgICAgICAgICAgICAgICczMTQnOiAzMTQKICAgICAgICAgICAgICAgICczMTUnOiAzMTUKICAgICAgICAgICAgICAgICczMTYnOiAzMTYKICAgICAgICAgICAgICAgICczMTcnOiAzMTcKICAgICAgICAgICAgICAgICczMTgnOiAzMTgKICAgICAgICAgICAgICAgICczMTknOiAzMTkKICAgICAgICAgICAgICAgICczMic6IDMyCiAgICAgICAgICAgICAgICAnMzIwJzogMzIwCiAgICAgICAgICAgICAgICAnMzIxJzogMzIxCiAgICAgICAgICAgICAgICAnMzIyJzogMzIyCiAgICAgICAgICAgICAgICAnMzIzJzogMzIzCiAgICAgICAgICAgICAgICAnMzI0JzogMzI0CiAgICAgICAgICAgICAgICAnMzI1JzogMzI1CiAgICAgICAgICAgICAgICAnMzI2JzogMzI2CiAgICAgICAgICAgICAgICAnMzI3JzogMzI3CiAgICAgICAgICAgICAgICAnMzI4JzogMzI4CiAgICAgICAgICAgICAgICAnMzI5JzogMzI5CiAgICAgICAgICAgICAgICAnMzMnOiAzMwogICAgICAgICAgICAgICAgJzMzMCc6IDMzMAogICAgICAgICAgICAgICAgJzMzMSc6IDMzMQogICAgICAgICAgICAgICAgJzMzMic6IDMzMgogICAgICAgICAgICAgICAgJzMzMyc6IDMzMwogICAgICAgICAgICAgICAgJzMzNCc6IDMzNAogICAgICAgICAgICAgICAgJzMzNSc6IDMzNQogICAgICAgICAgICAgICAgJzMzNic6IDMzNgogICAgICAgICAgICAgICAgJzMzNyc6IDMzNwogICAgICAgICAgICAgICAgJzMzOCc6IDMzOAogICAgICAgICAgICAgICAgJzMzOSc6IDMzOQogICAgICAgICAgICAgICAgJzM0JzogMzQKICAgICAgICAgICAgICAgICczNDAnOiAzNDAKICAgICAgICAgICAgICAgICczNDEnOiAzNDEKICAgICAgICAgICAgICAgICczNDInOiAzNDIKICAgICAgICAgICAgICAgICczNDMnOiAzNDMKICAgICAgICAgICAgICAgICczNDQnOiAzNDQKICAgICAgICAgICAgICAgICczNDUnOiAzNDUKICAgICAgICAgICAgICAgICczNDYnOiAzNDYKICAgICAgICAgICAgICAgICczNDcnOiAzNDcKICAgICAgICAgICAgICAgICczNDgnOiAzNDgKICAgICAgICAgICAgICAgICczNDknOiAzNDkKICAgICAgICAgICAgICAgICczNSc6IDM1CiAgICAgICAgICAgICAgICAnMzUwJzogMzUwCiAgICAgICAgICAgICAgICAnMzUxJzogMzUxCiAgICAgICAgICAgICAgICAnMzUyJzogMzUyCiAgICAgICAgICAgICAgICAnMzUzJzogMzUzCiAgICAgICAgICAgICAgICAnMzU0JzogMzU0CiAgICAgICAgICAgICAgICAnMzU1JzogMzU1CiAgICAgICAgICAgICAgICAnMzU2JzogMzU2CiAgICAgICAgICAgICAgICAnMzU3JzogMzU3CiAgICAgICAgICAgICAgICAnMzU4JzogMzU4CiAgICAgICAgICAgICAgICAnMzU5JzogMzU5CiAgICAgICAgICAgICAgICAnMzYnOiAzNgogICAgICAgICAgICAgICAgJzM2MCc6IDM2MAogICAgICAgICAgICAgICAgJzM2MSc6IDM2MQogICAgICAgICAgICAgICAgJzM2Mic6IDM2MgogICAgICAgICAgICAgICAgJzM2Myc6IDM2MwogICAgICAgICAgICAgICAgJzM2NCc6IDM2NAogICAgICAgICAgICAgICAgJzM2NSc6IDM2NQogICAgICAgICAgICAgICAgJzM2Nic6IDM2NgogICAgICAgICAgICAgICAgJzM2Nyc6IDM2NwogICAgICAgICAgICAgICAgJzM2OCc6IDM2OAogICAgICAgICAgICAgICAgJzM2OSc6IDM2OQogICAgICAgICAgICAgICAgJzM3JzogMzcKICAgICAgICAgICAgICAgICczNzAnOiAzNzAKICAgICAgICAgICAgICAgICczNzEnOiAzNzEKICAgICAgICAgICAgICAgICczNzInOiAzNzIKICAgICAgICAgICAgICAgICczNzMnOiAzNzMKICAgICAgICAgICAgICAgICczNzQnOiAzNzQKICAgICAgICAgICAgICAgICczNzUnOiAzNzUKICAgICAgICAgICAgICAgICczNzYnOiAzNzYKICAgICAgICAgICAgICAgICczNzcnOiAzNzcKICAgICAgICAgICAgICAgICczNzgnOiAzNzgKICAgICAgICAgICAgICAgICczNzknOiAzNzkKICAgICAgICAgICAgICAgICczOCc6IDM4CiAgICAgICAgICAgICAgICAnMzgwJzogMzgwCiAgICAgICAgICAgICAgICAnMzgxJzogMzgxCiAgICAgICAgICAgICAgICAnMzgyJzogMzgyCiAgICAgICAgICAgICAgICAnMzgzJzogMzgzCiAgICAgICAgICAgICAgICAnMzg0JzogMzg0CiAgICAgICAgICAgICAgICAnMzg1JzogMzg1CiAgICAgICAgICAgICAgICAnMzg2JzogMzg2CiAgICAgICAgICAgICAgICAnMzg3JzogMzg3CiAgICAgICAgICAgICAgICAnMzg4JzogMzg4CiAgICAgICAgICAgICAgICAnMzg5JzogMzg5CiAgICAgICAgICAgICAgICAnMzknOiAzOQogICAgICAgICAgICAgICAgJzM5MCc6IDM5MAogICAgICAgICAgICAgICAgJzM5MSc6IDM5MQogICAgICAgICAgICAgICAgJzM5Mic6IDM5MgogICAgICAgICAgICAgICAgJzM5Myc6IDM5MwogICAgICAgICAgICAgICAgJzM5NCc6IDM5NAogICAgICAgICAgICAgICAgJzM5NSc6IDM5NQogICAgICAgICAgICAgICAgJzM5Nic6IDM5NgogICAgICAgICAgICAgICAgJzM5Nyc6IDM5NwogICAgICAgICAgICAgICAgJzM5OCc6IDM5OAogICAgICAgICAgICAgICAgJzM5OSc6IDM5OQogICAgICAgICAgICAgICAgJzQnOiA0CiAgICAgICAgICAgICAgICAnNDAnOiA0MAogICAgICAgICAgICAgICAgJzQwMCc6IDQwMAogICAgICAgICAgICAgICAgJzQwMSc6IDQwMQogICAgICAgICAgICAgICAgJzQwMic6IDQwMgogICAgICAgICAgICAgICAgJzQwMyc6IDQwMwogICAgICAgICAgICAgICAgJzQwNCc6IDQwNAogICAgICAgICAgICAgICAgJzQwNSc6IDQwNQogICAgICAgICAgICAgICAgJzQwNic6IDQwNgogICAgICAgICAgICAgICAgJzQwNyc6IDQwNwogICAgICAgICAgICAgICAgJzQwOCc6IDQwOAogICAgICAgICAgICAgICAgJzQwOSc6IDQwOQogICAgICAgICAgICAgICAgJzQxJzogNDEKICAgICAgICAgICAgICAgICc0MTAnOiA0MTAKICAgICAgICAgICAgICAgICc0MTEnOiA0MTEKICAgICAgICAgICAgICAgICc0MTInOiA0MTIKICAgICAgICAgICAgICAgICc0MTMnOiA0MTMKICAgICAgICAgICAgICAgICc0MTQnOiA0MTQKICAgICAgICAgICAgICAgICc0MTUnOiA0MTUKICAgICAgICAgICAgICAgICc0MTYnOiA0MTYKICAgICAgICAgICAgICAgICc0MTcnOiA0MTcKICAgICAgICAgICAgICAgICc0MTgnOiA0MTgKICAgICAgICAgICAgICAgICc0MTknOiA0MTkKICAgICAgICAgICAgICAgICc0Mic6IDQyCiAgICAgICAgICAgICAgICAnNDIwJzogNDIwCiAgICAgICAgICAgICAgICAnNDIxJzogNDIxCiAgICAgICAgICAgICAgICAnNDIyJzogNDIyCiAgICAgICAgICAgICAgICAnNDIzJzogNDIzCiAgICAgICAgICAgICAgICAnNDI0JzogNDI0CiAgICAgICAgICAgICAgICAnNDI1JzogNDI1CiAgICAgICAgICAgICAgICAnNDI2JzogNDI2CiAgICAgICAgICAgICAgICAnNDI3JzogNDI3CiAgICAgICAgICAgICAgICAnNDI4JzogNDI4CiAgICAgICAgICAgICAgICAnNDI5JzogNDI5CiAgICAgICAgICAgICAgICAnNDMnOiA0MwogICAgICAgICAgICAgICAgJzQzMCc6IDQzMAogICAgICAgICAgICAgICAgJzQzMSc6IDQzMQogICAgICAgICAgICAgICAgJzQzMic6IDQzMgogICAgICAgICAgICAgICAgJzQzMyc6IDQzMwogICAgICAgICAgICAgICAgJzQzNCc6IDQzNAogICAgICAgICAgICAgICAgJzQzNSc6IDQzNQogICAgICAgICAgICAgICAgJzQzNic6IDQzNgogICAgICAgICAgICAgICAgJzQzNyc6IDQzNwogICAgICAgICAgICAgICAgJzQzOCc6IDQzOAogICAgICAgICAgICAgICAgJzQzOSc6IDQzOQogICAgICAgICAgICAgICAgJzQ0JzogNDQKICAgICAgICAgICAgICAgICc0NDAnOiA0NDAKICAgICAgICAgICAgICAgICc0NDEnOiA0NDEKICAgICAgICAgICAgICAgICc0NDInOiA0NDIKICAgICAgICAgICAgICAgICc0NDMnOiA0NDMKICAgICAgICAgICAgICAgICc0NDQnOiA0NDQKICAgICAgICAgICAgICAgICc0NDUnOiA0NDUKICAgICAgICAgICAgICAgICc0NDYnOiA0NDYKICAgICAgICAgICAgICAgICc0NDcnOiA0NDcKICAgICAgICAgICAgICAgICc0NDgnOiA0NDgKICAgICAgICAgICAgICAgICc0NDknOiA0NDkKICAgICAgICAgICAgICAgICc0NSc6IDQ1CiAgICAgICAgICAgICAgICAnNDUwJzogNDUwCiAgICAgICAgICAgICAgICAnNDUxJzogNDUxCiAgICAgICAgICAgICAgICAnNDUyJzogNDUyCiAgICAgICAgICAgICAgICAnNDUzJzogNDUzCiAgICAgICAgICAgICAgICAnNDU0JzogNDU0CiAgICAgICAgICAgICAgICAnNDU1JzogNDU1CiAgICAgICAgICAgICAgICAnNDU2JzogNDU2CiAgICAgICAgICAgICAgICAnNDU3JzogNDU3CiAgICAgICAgICAgICAgICAnNDU4JzogNDU4CiAgICAgICAgICAgICAgICAnNDU5JzogNDU5CiAgICAgICAgICAgICAgICAnNDYnOiA0NgogICAgICAgICAgICAgICAgJzQ2MCc6IDQ2MAogICAgICAgICAgICAgICAgJzQ2MSc6IDQ2MQogICAgICAgICAgICAgICAgJzQ2Mic6IDQ2MgogICAgICAgICAgICAgICAgJzQ2Myc6IDQ2MwogICAgICAgICAgICAgICAgJzQ2NCc6IDQ2NAogICAgICAgICAgICAgICAgJzQ2NSc6IDQ2NQogICAgICAgICAgICAgICAgJzQ2Nic6IDQ2NgogICAgICAgICAgICAgICAgJzQ2Nyc6IDQ2NwogICAgICAgICAgICAgICAgJzQ2OCc6IDQ2OAogICAgICAgICAgICAgICAgJzQ2OSc6IDQ2OQogICAgICAgICAgICAgICAgJzQ3JzogNDcKICAgICAgICAgICAgICAgICc0NzAnOiA0NzAKICAgICAgICAgICAgICAgICc0NzEnOiA0NzEKICAgICAgICAgICAgICAgICc0NzInOiA0NzIKICAgICAgICAgICAgICAgICc0NzMnOiA0NzMKICAgICAgICAgICAgICAgICc0NzQnOiA0NzQKICAgICAgICAgICAgICAgICc0NzUnOiA0NzUKICAgICAgICAgICAgICAgICc0NzYnOiA0NzYKICAgICAgICAgICAgICAgICc0NzcnOiA0NzcKICAgICAgICAgICAgICAgICc0NzgnOiA0NzgKICAgICAgICAgICAgICAgICc0NzknOiA0NzkKICAgICAgICAgICAgICAgICc0OCc6IDQ4CiAgICAgICAgICAgICAgICAnNDgwJzogNDgwCiAgICAgICAgICAgICAgICAnNDgxJzogNDgxCiAgICAgICAgICAgICAgICAnNDgyJzogNDgyCiAgICAgICAgICAgICAgICAnNDgzJzogNDgzCiAgICAgICAgICAgICAgICAnNDg0JzogNDg0CiAgICAgICAgICAgICAgICAnNDg1JzogNDg1CiAgICAgICAgICAgICAgICAnNDg2JzogNDg2CiAgICAgICAgICAgICAgICAnNDg3JzogNDg3CiAgICAgICAgICAgICAgICAnNDg4JzogNDg4CiAgICAgICAgICAgICAgICAnNDg5JzogNDg5CiAgICAgICAgICAgICAgICAnNDknOiA0OQogICAgICAgICAgICAgICAgJzQ5MCc6IDQ5MAogICAgICAgICAgICAgICAgJzQ5MSc6IDQ5MQogICAgICAgICAgICAgICAgJzQ5Mic6IDQ5MgogICAgICAgICAgICAgICAgJzQ5Myc6IDQ5MwogICAgICAgICAgICAgICAgJzQ5NCc6IDQ5NAogICAgICAgICAgICAgICAgJzQ5NSc6IDQ5NQogICAgICAgICAgICAgICAgJzQ5Nic6IDQ5NgogICAgICAgICAgICAgICAgJzQ5Nyc6IDQ5NwogICAgICAgICAgICAgICAgJzQ5OCc6IDQ5OAogICAgICAgICAgICAgICAgJzQ5OSc6IDQ5OQogICAgICAgICAgICAgICAgJzUnOiA1CiAgICAgICAgICAgICAgICAnNTAnOiA1MAogICAgICAgICAgICAgICAgJzUwMCc6IDUwMAogICAgICAgICAgICAgICAgJzUwMSc6IDUwMQogICAgICAgICAgICAgICAgJzUwMic6IDUwMgogICAgICAgICAgICAgICAgJzUwMyc6IDUwMwogICAgICAgICAgICAgICAgJzUwNCc6IDUwNAogICAgICAgICAgICAgICAgJzUwNSc6IDUwNQogICAgICAgICAgICAgICAgJzUwNic6IDUwNgogICAgICAgICAgICAgICAgJzUwNyc6IDUwNwogICAgICAgICAgICAgICAgJzUwOCc6IDUwOAogICAgICAgICAgICAgICAgJzUwOSc6IDUwOQogICAgICAgICAgICAgICAgJzUxJzogNTEKICAgICAgICAgICAgICAgICc1MTAnOiA1MTAKICAgICAgICAgICAgICAgICc1MTEnOiA1MTEKICAgICAgICAgICAgICAgICc1MTInOiA1MTIKICAgICAgICAgICAgICAgICc1MTMnOiA1MTMKICAgICAgICAgICAgICAgICc1MTQnOiA1MTQKICAgICAgICAgICAgICAgICc1MTUnOiA1MTUKICAgICAgICAgICAgICAgICc1MTYnOiA1MTYKICAgICAgICAgICAgICAgICc1MTcnOiA1MTcKICAgICAgICAgICAgICAgICc1MTgnOiA1MTgKICAgICAgICAgICAgICAgICc1MTknOiA1MTkKICAgICAgICAgICAgICAgICc1Mic6IDUyCiAgICAgICAgICAgICAgICAnNTIwJzogNTIwCiAgICAgICAgICAgICAgICAnNTIxJzogNTIxCiAgICAgICAgICAgICAgICAnNTIyJzogNTIyCiAgICAgICAgICAgICAgICAnNTIzJzogNTIzCiAgICAgICAgICAgICAgICAnNTI0JzogNTI0CiAgICAgICAgICAgICAgICAnNTI1JzogNTI1CiAgICAgICAgICAgICAgICAnNTI2JzogNTI2CiAgICAgICAgICAgICAgICAnNTI3JzogNTI3CiAgICAgICAgICAgICAgICAnNTI4JzogNTI4CiAgICAgICAgICAgICAgICAnNTI5JzogNTI5CiAgICAgICAgICAgICAgICAnNTMnOiA1MwogICAgICAgICAgICAgICAgJzUzMCc6IDUzMAogICAgICAgICAgICAgICAgJzUzMSc6IDUzMQogICAgICAgICAgICAgICAgJzUzMic6IDUzMgogICAgICAgICAgICAgICAgJzUzMyc6IDUzMwogICAgICAgICAgICAgICAgJzUzNCc6IDUzNAogICAgICAgICAgICAgICAgJzUzNSc6IDUzNQogICAgICAgICAgICAgICAgJzUzNic6IDUzNgogICAgICAgICAgICAgICAgJzUzNyc6IDUzNwogICAgICAgICAgICAgICAgJzUzOCc6IDUzOAogICAgICAgICAgICAgICAgJzUzOSc6IDUzOQogICAgICAgICAgICAgICAgJzU0JzogNTQKICAgICAgICAgICAgICAgICc1NDAnOiA1NDAKICAgICAgICAgICAgICAgICc1NDEnOiA1NDEKICAgICAgICAgICAgICAgICc1NDInOiA1NDIKICAgICAgICAgICAgICAgICc1NDMnOiA1NDMKICAgICAgICAgICAgICAgICc1NDQnOiA1NDQKICAgICAgICAgICAgICAgICc1NDUnOiA1NDUKICAgICAgICAgICAgICAgICc1NDYnOiA1NDYKICAgICAgICAgICAgICAgICc1NDcnOiA1NDcKICAgICAgICAgICAgICAgICc1NDgnOiA1NDgKICAgICAgICAgICAgICAgICc1NDknOiA1NDkKICAgICAgICAgICAgICAgICc1NSc6IDU1CiAgICAgICAgICAgICAgICAnNTUwJzogNTUwCiAgICAgICAgICAgICAgICAnNTUxJzogNTUxCiAgICAgICAgICAgICAgICAnNTUyJzogNTUyCiAgICAgICAgICAgICAgICAnNTUzJzogNTUzCiAgICAgICAgICAgICAgICAnNTU0JzogNTU0CiAgICAgICAgICAgICAgICAnNTU1JzogNTU1CiAgICAgICAgICAgICAgICAnNTU2JzogNTU2CiAgICAgICAgICAgICAgICAnNTU3JzogNTU3CiAgICAgICAgICAgICAgICAnNTU4JzogNTU4CiAgICAgICAgICAgICAgICAnNTU5JzogNTU5CiAgICAgICAgICAgICAgICAnNTYnOiA1NgogICAgICAgICAgICAgICAgJzU2MCc6IDU2MAogICAgICAgICAgICAgICAgJzU2MSc6IDU2MQogICAgICAgICAgICAgICAgJzU2Mic6IDU2MgogICAgICAgICAgICAgICAgJzU2Myc6IDU2MwogICAgICAgICAgICAgICAgJzU2NCc6IDU2NAogICAgICAgICAgICAgICAgJzU2NSc6IDU2NQogICAgICAgICAgICAgICAgJzU2Nic6IDU2NgogICAgICAgICAgICAgICAgJzU2Nyc6IDU2NwogICAgICAgICAgICAgICAgJzU2OCc6IDU2OAogICAgICAgICAgICAgICAgJzU2OSc6IDU2OQogICAgICAgICAgICAgICAgJzU3JzogNTcKICAgICAgICAgICAgICAgICc1NzAnOiA1NzAKICAgICAgICAgICAgICAgICc1NzEnOiA1NzEKICAgICAgICAgICAgICAgICc1NzInOiA1NzIKICAgICAgICAgICAgICAgICc1NzMnOiA1NzMKICAgICAgICAgICAgICAgICc1NzQnOiA1NzQKICAgICAgICAgICAgICAgICc1NzUnOiA1NzUKICAgICAgICAgICAgICAgICc1NzYnOiA1NzYKICAgICAgICAgICAgICAgICc1NzcnOiA1NzcKICAgICAgICAgICAgICAgICc1NzgnOiA1NzgKICAgICAgICAgICAgICAgICc1NzknOiA1NzkKICAgICAgICAgICAgICAgICc1OCc6IDU4CiAgICAgICAgICAgICAgICAnNTgwJzogNTgwCiAgICAgICAgICAgICAgICAnNTgxJzogNTgxCiAgICAgICAgICAgICAgICAnNTgyJzogNTgyCiAgICAgICAgICAgICAgICAnNTgzJzogNTgzCiAgICAgICAgICAgICAgICAnNTg0JzogNTg0CiAgICAgICAgICAgICAgICAnNTg1JzogNTg1CiAgICAgICAgICAgICAgICAnNTg2JzogNTg2CiAgICAgICAgICAgICAgICAnNTg3JzogNTg3CiAgICAgICAgICAgICAgICAnNTg4JzogNTg4CiAgICAgICAgICAgICAgICAnNTg5JzogNTg5CiAgICAgICAgICAgICAgICAnNTknOiA1OQogICAgICAgICAgICAgICAgJzU5MCc6IDU5MAogICAgICAgICAgICAgICAgJzU5MSc6IDU5MQogICAgICAgICAgICAgICAgJzU5Mic6IDU5MgogICAgICAgICAgICAgICAgJzU5Myc6IDU5MwogICAgICAgICAgICAgICAgJzU5NCc6IDU5NAogICAgICAgICAgICAgICAgJzU5NSc6IDU5NQogICAgICAgICAgICAgICAgJzU5Nic6IDU5NgogICAgICAgICAgICAgICAgJzU5Nyc6IDU5NwogICAgICAgICAgICAgICAgJzU5OCc6IDU5OAogICAgICAgICAgICAgICAgJzU5OSc6IDU5OQogICAgICAgICAgICAgICAgJzYnOiA2CiAgICAgICAgICAgICAgICAnNjAnOiA2MAogICAgICAgICAgICAgICAgJzYwMCc6IDYwMAogICAgICAgICAgICAgICAgJzYwMSc6IDYwMQogICAgICAgICAgICAgICAgJzYwMic6IDYwMgogICAgICAgICAgICAgICAgJzYwMyc6IDYwMwogICAgICAgICAgICAgICAgJzYwNCc6IDYwNAogICAgICAgICAgICAgICAgJzYwNSc6IDYwNQogICAgICAgICAgICAgICAgJzYwNic6IDYwNgogICAgICAgICAgICAgICAgJzYwNyc6IDYwNwogICAgICAgICAgICAgICAgJzYwOCc6IDYwOAogICAgICAgICAgICAgICAgJzYwOSc6IDYwOQogICAgICAgICAgICAgICAgJzYxJzogNjEKICAgICAgICAgICAgICAgICc2MTAnOiA2MTAKICAgICAgICAgICAgICAgICc2MTEnOiA2MTEKICAgICAgICAgICAgICAgICc2MTInOiA2MTIKICAgICAgICAgICAgICAgICc2MTMnOiA2MTMKICAgICAgICAgICAgICAgICc2MTQnOiA2MTQKICAgICAgICAgICAgICAgICc2MTUnOiA2MTUKICAgICAgICAgICAgICAgICc2MTYnOiA2MTYKICAgICAgICAgICAgICAgICc2MTcnOiA2MTcKICAgICAgICAgICAgICAgICc2MTgnOiA2MTgKICAgICAgICAgICAgICAgICc2MTknOiA2MTkKICAgICAgICAgICAgICAgICc2Mic6IDYyCiAgICAgICAgICAgICAgICAnNjIwJzogNjIwCiAgICAgICAgICAgICAgICAnNjIxJzogNjIxCiAgICAgICAgICAgICAgICAnNjIyJzogNjIyCiAgICAgICAgICAgICAgICAnNjIzJzogNjIzCiAgICAgICAgICAgICAgICAnNjI0JzogNjI0CiAgICAgICAgICAgICAgICAnNjI1JzogNjI1CiAgICAgICAgICAgICAgICAnNjI2JzogNjI2CiAgICAgICAgICAgICAgICAnNjI3JzogNjI3CiAgICAgICAgICAgICAgICAnNjI4JzogNjI4CiAgICAgICAgICAgICAgICAnNjI5JzogNjI5CiAgICAgICAgICAgICAgICAnNjMnOiA2MwogICAgICAgICAgICAgICAgJzYzMCc6IDYzMAogICAgICAgICAgICAgICAgJzYzMSc6IDYzMQogICAgICAgICAgICAgICAgJzYzMic6IDYzMgogICAgICAgICAgICAgICAgJzYzMyc6IDYzMwogICAgICAgICAgICAgICAgJzYzNCc6IDYzNAogICAgICAgICAgICAgICAgJzYzNSc6IDYzNQogICAgICAgICAgICAgICAgJzYzNic6IDYzNgogICAgICAgICAgICAgICAgJzYzNyc6IDYzNwogICAgICAgICAgICAgICAgJzYzOCc6IDYzOAogICAgICAgICAgICAgICAgJzYzOSc6IDYzOQogICAgICAgICAgICAgICAgJzY0JzogNjQKICAgICAgICAgICAgICAgICc2NDAnOiA2NDAKICAgICAgICAgICAgICAgICc2NDEnOiA2NDEKICAgICAgICAgICAgICAgICc2NDInOiA2NDIKICAgICAgICAgICAgICAgICc2NDMnOiA2NDMKICAgICAgICAgICAgICAgICc2NDQnOiA2NDQKICAgICAgICAgICAgICAgICc2NDUnOiA2NDUKICAgICAgICAgICAgICAgICc2NDYnOiA2NDYKICAgICAgICAgICAgICAgICc2NDcnOiA2NDcKICAgICAgICAgICAgICAgICc2NDgnOiA2NDgKICAgICAgICAgICAgICAgICc2NDknOiA2NDkKICAgICAgICAgICAgICAgICc2NSc6IDY1CiAgICAgICAgICAgICAgICAnNjUwJzogNjUwCiAgICAgICAgICAgICAgICAnNjUxJzogNjUxCiAgICAgICAgICAgICAgICAnNjUyJzogNjUyCiAgICAgICAgICAgICAgICAnNjUzJzogNjUzCiAgICAgICAgICAgICAgICAnNjU0JzogNjU0CiAgICAgICAgICAgICAgICAnNjU1JzogNjU1CiAgICAgICAgICAgICAgICAnNjU2JzogNjU2CiAgICAgICAgICAgICAgICAnNjU3JzogNjU3CiAgICAgICAgICAgICAgICAnNjU4JzogNjU4CiAgICAgICAgICAgICAgICAnNjU5JzogNjU5CiAgICAgICAgICAgICAgICAnNjYnOiA2NgogICAgICAgICAgICAgICAgJzY2MCc6IDY2MAogICAgICAgICAgICAgICAgJzY2MSc6IDY2MQogICAgICAgICAgICAgICAgJzY2Mic6IDY2MgogICAgICAgICAgICAgICAgJzY2Myc6IDY2MwogICAgICAgICAgICAgICAgJzY2NCc6IDY2NAogICAgICAgICAgICAgICAgJzY2NSc6IDY2NQogICAgICAgICAgICAgICAgJzY2Nic6IDY2NgogICAgICAgICAgICAgICAgJzY2Nyc6IDY2NwogICAgICAgICAgICAgICAgJzY2OCc6IDY2OAogICAgICAgICAgICAgICAgJzY2OSc6IDY2OQogICAgICAgICAgICAgICAgJzY3JzogNjcKICAgICAgICAgICAgICAgICc2NzAnOiA2NzAKICAgICAgICAgICAgICAgICc2NzEnOiA2NzEKICAgICAgICAgICAgICAgICc2NzInOiA2NzIKICAgICAgICAgICAgICAgICc2NzMnOiA2NzMKICAgICAgICAgICAgICAgICc2NzQnOiA2NzQKICAgICAgICAgICAgICAgICc2NzUnOiA2NzUKICAgICAgICAgICAgICAgICc2NzYnOiA2NzYKICAgICAgICAgICAgICAgICc2NzcnOiA2NzcKICAgICAgICAgICAgICAgICc2NzgnOiA2NzgKICAgICAgICAgICAgICAgICc2NzknOiA2NzkKICAgICAgICAgICAgICAgICc2OCc6IDY4CiAgICAgICAgICAgICAgICAnNjgwJzogNjgwCiAgICAgICAgICAgICAgICAnNjgxJzogNjgxCiAgICAgICAgICAgICAgICAnNjgyJzogNjgyCiAgICAgICAgICAgICAgICAnNjgzJzogNjgzCiAgICAgICAgICAgICAgICAnNjg0JzogNjg0CiAgICAgICAgICAgICAgICAnNjg1JzogNjg1CiAgICAgICAgICAgICAgICAnNjg2JzogNjg2CiAgICAgICAgICAgICAgICAnNjg3JzogNjg3CiAgICAgICAgICAgICAgICAnNjg4JzogNjg4CiAgICAgICAgICAgICAgICAnNjg5JzogNjg5CiAgICAgICAgICAgICAgICAnNjknOiA2OQogICAgICAgICAgICAgICAgJzY5MCc6IDY5MAogICAgICAgICAgICAgICAgJzY5MSc6IDY5MQogICAgICAgICAgICAgICAgJzY5Mic6IDY5MgogICAgICAgICAgICAgICAgJzY5Myc6IDY5MwogICAgICAgICAgICAgICAgJzY5NCc6IDY5NAogICAgICAgICAgICAgICAgJzY5NSc6IDY5NQogICAgICAgICAgICAgICAgJzY5Nic6IDY5NgogICAgICAgICAgICAgICAgJzY5Nyc6IDY5NwogICAgICAgICAgICAgICAgJzY5OCc6IDY5OAogICAgICAgICAgICAgICAgJzY5OSc6IDY5OQogICAgICAgICAgICAgICAgJzcnOiA3CiAgICAgICAgICAgICAgICAnNzAnOiA3MAogICAgICAgICAgICAgICAgJzcwMCc6IDcwMAogICAgICAgICAgICAgICAgJzcwMSc6IDcwMQogICAgICAgICAgICAgICAgJzcwMic6IDcwMgogICAgICAgICAgICAgICAgJzcwMyc6IDcwMwogICAgICAgICAgICAgICAgJzcwNCc6IDcwNAogICAgICAgICAgICAgICAgJzcwNSc6IDcwNQogICAgICAgICAgICAgICAgJzcwNic6IDcwNgogICAgICAgICAgICAgICAgJzcwNyc6IDcwNwogICAgICAgICAgICAgICAgJzcwOCc6IDcwOAogICAgICAgICAgICAgICAgJzcwOSc6IDcwOQogICAgICAgICAgICAgICAgJzcxJzogNzEKICAgICAgICAgICAgICAgICc3MTAnOiA3MTAKICAgICAgICAgICAgICAgICc3MTEnOiA3MTEKICAgICAgICAgICAgICAgICc3MTInOiA3MTIKICAgICAgICAgICAgICAgICc3MTMnOiA3MTMKICAgICAgICAgICAgICAgICc3MTQnOiA3MTQKICAgICAgICAgICAgICAgICc3MTUnOiA3MTUKICAgICAgICAgICAgICAgICc3MTYnOiA3MTYKICAgICAgICAgICAgICAgICc3MTcnOiA3MTcKICAgICAgICAgICAgICAgICc3MTgnOiA3MTgKICAgICAgICAgICAgICAgICc3MTknOiA3MTkKICAgICAgICAgICAgICAgICc3Mic6IDcyCiAgICAgICAgICAgICAgICAnNzIwJzogNzIwCiAgICAgICAgICAgICAgICAnNzIxJzogNzIxCiAgICAgICAgICAgICAgICAnNzIyJzogNzIyCiAgICAgICAgICAgICAgICAnNzIzJzogNzIzCiAgICAgICAgICAgICAgICAnNzI0JzogNzI0CiAgICAgICAgICAgICAgICAnNzI1JzogNzI1CiAgICAgICAgICAgICAgICAnNzI2JzogNzI2CiAgICAgICAgICAgICAgICAnNzI3JzogNzI3CiAgICAgICAgICAgICAgICAnNzI4JzogNzI4CiAgICAgICAgICAgICAgICAnNzI5JzogNzI5CiAgICAgICAgICAgICAgICAnNzMnOiA3MwogICAgICAgICAgICAgICAgJzczMCc6IDczMAogICAgICAgICAgICAgICAgJzczMSc6IDczMQogICAgICAgICAgICAgICAgJzczMic6IDczMgogICAgICAgICAgICAgICAgJzczMyc6IDczMwogICAgICAgICAgICAgICAgJzczNCc6IDczNAogICAgICAgICAgICAgICAgJzczNSc6IDczNQogICAgICAgICAgICAgICAgJzczNic6IDczNgogICAgICAgICAgICAgICAgJzczNyc6IDczNwogICAgICAgICAgICAgICAgJzczOCc6IDczOAogICAgICAgICAgICAgICAgJzczOSc6IDczOQogICAgICAgICAgICAgICAgJzc0JzogNzQKICAgICAgICAgICAgICAgICc3NDAnOiA3NDAKICAgICAgICAgICAgICAgICc3NDEnOiA3NDEKICAgICAgICAgICAgICAgICc3NDInOiA3NDIKICAgICAgICAgICAgICAgICc3NDMnOiA3NDMKICAgICAgICAgICAgICAgICc3NDQnOiA3NDQKICAgICAgICAgICAgICAgICc3NDUnOiA3NDUKICAgICAgICAgICAgICAgICc3NDYnOiA3NDYKICAgICAgICAgICAgICAgICc3NDcnOiA3NDcKICAgICAgICAgICAgICAgICc3NDgnOiA3NDgKICAgICAgICAgICAgICAgICc3NDknOiA3NDkKICAgICAgICAgICAgICAgICc3NSc6IDc1CiAgICAgICAgICAgICAgICAnNzUwJzogNzUwCiAgICAgICAgICAgICAgICAnNzUxJzogNzUxCiAgICAgICAgICAgICAgICAnNzUyJzogNzUyCiAgICAgICAgICAgICAgICAnNzUzJzogNzUzCiAgICAgICAgICAgICAgICAnNzU0JzogNzU0CiAgICAgICAgICAgICAgICAnNzU1JzogNzU1CiAgICAgICAgICAgICAgICAnNzU2JzogNzU2CiAgICAgICAgICAgICAgICAnNzU3JzogNzU3CiAgICAgICAgICAgICAgICAnNzU4JzogNzU4CiAgICAgICAgICAgICAgICAnNzU5JzogNzU5CiAgICAgICAgICAgICAgICAnNzYnOiA3NgogICAgICAgICAgICAgICAgJzc2MCc6IDc2MAogICAgICAgICAgICAgICAgJzc2MSc6IDc2MQogICAgICAgICAgICAgICAgJzc2Mic6IDc2MgogICAgICAgICAgICAgICAgJzc2Myc6IDc2MwogICAgICAgICAgICAgICAgJzc2NCc6IDc2NAogICAgICAgICAgICAgICAgJzc2NSc6IDc2NQogICAgICAgICAgICAgICAgJzc2Nic6IDc2NgogICAgICAgICAgICAgICAgJzc2Nyc6IDc2NwogICAgICAgICAgICAgICAgJzc2OCc6IDc2OAogICAgICAgICAgICAgICAgJzc2OSc6IDc2OQogICAgICAgICAgICAgICAgJzc3JzogNzcKICAgICAgICAgICAgICAgICc3NzAnOiA3NzAKICAgICAgICAgICAgICAgICc3NzEnOiA3NzEKICAgICAgICAgICAgICAgICc3NzInOiA3NzIKICAgICAgICAgICAgICAgICc3NzMnOiA3NzMKICAgICAgICAgICAgICAgICc3NzQnOiA3NzQKICAgICAgICAgICAgICAgICc3NzUnOiA3NzUKICAgICAgICAgICAgICAgICc3NzYnOiA3NzYKICAgICAgICAgICAgICAgICc3NzcnOiA3NzcKICAgICAgICAgICAgICAgICc3NzgnOiA3NzgKICAgICAgICAgICAgICAgICc3NzknOiA3NzkKICAgICAgICAgICAgICAgICc3OCc6IDc4CiAgICAgICAgICAgICAgICAnNzgwJzogNzgwCiAgICAgICAgICAgICAgICAnNzgxJzogNzgxCiAgICAgICAgICAgICAgICAnNzgyJzogNzgyCiAgICAgICAgICAgICAgICAnNzgzJzogNzgzCiAgICAgICAgICAgICAgICAnNzg0JzogNzg0CiAgICAgICAgICAgICAgICAnNzg1JzogNzg1CiAgICAgICAgICAgICAgICAnNzg2JzogNzg2CiAgICAgICAgICAgICAgICAnNzg3JzogNzg3CiAgICAgICAgICAgICAgICAnNzg4JzogNzg4CiAgICAgICAgICAgICAgICAnNzg5JzogNzg5CiAgICAgICAgICAgICAgICAnNzknOiA3OQogICAgICAgICAgICAgICAgJzc5MCc6IDc5MAogICAgICAgICAgICAgICAgJzc5MSc6IDc5MQogICAgICAgICAgICAgICAgJzc5Mic6IDc5MgogICAgICAgICAgICAgICAgJzc5Myc6IDc5MwogICAgICAgICAgICAgICAgJzc5NCc6IDc5NAogICAgICAgICAgICAgICAgJzc5NSc6IDc5NQogICAgICAgICAgICAgICAgJzc5Nic6IDc5NgogICAgICAgICAgICAgICAgJzc5Nyc6IDc5NwogICAgICAgICAgICAgICAgJzc5OCc6IDc5OAogICAgICAgICAgICAgICAgJzc5OSc6IDc5OQogICAgICAgICAgICAgICAgJzgnOiA4CiAgICAgICAgICAgICAgICAnODAnOiA4MAogICAgICAgICAgICAgICAgJzgwMCc6IDgwMAogICAgICAgICAgICAgICAgJzgwMSc6IDgwMQogICAgICAgICAgICAgICAgJzgwMic6IDgwMgogICAgICAgICAgICAgICAgJzgwMyc6IDgwMwogICAgICAgICAgICAgICAgJzgwNCc6IDgwNAogICAgICAgICAgICAgICAgJzgwNSc6IDgwNQogICAgICAgICAgICAgICAgJzgwNic6IDgwNgogICAgICAgICAgICAgICAgJzgwNyc6IDgwNwogICAgICAgICAgICAgICAgJzgwOCc6IDgwOAogICAgICAgICAgICAgICAgJzgwOSc6IDgwOQogICAgICAgICAgICAgICAgJzgxJzogODEKICAgICAgICAgICAgICAgICc4MTAnOiA4MTAKICAgICAgICAgICAgICAgICc4MTEnOiA4MTEKICAgICAgICAgICAgICAgICc4MTInOiA4MTIKICAgICAgICAgICAgICAgICc4MTMnOiA4MTMKICAgICAgICAgICAgICAgICc4MTQnOiA4MTQKICAgICAgICAgICAgICAgICc4MTUnOiA4MTUKICAgICAgICAgICAgICAgICc4MTYnOiA4MTYKICAgICAgICAgICAgICAgICc4MTcnOiA4MTcKICAgICAgICAgICAgICAgICc4MTgnOiA4MTgKICAgICAgICAgICAgICAgICc4MTknOiA4MTkKICAgICAgICAgICAgICAgICc4Mic6IDgyCiAgICAgICAgICAgICAgICAnODIwJzogODIwCiAgICAgICAgICAgICAgICAnODIxJzogODIxCiAgICAgICAgICAgICAgICAnODIyJzogODIyCiAgICAgICAgICAgICAgICAnODIzJzogODIzCiAgICAgICAgICAgICAgICAnODI0JzogODI0CiAgICAgICAgICAgICAgICAnODI1JzogODI1CiAgICAgICAgICAgICAgICAnODI2JzogODI2CiAgICAgICAgICAgICAgICAnODI3JzogODI3CiAgICAgICAgICAgICAgICAnODI4JzogODI4CiAgICAgICAgICAgICAgICAnODI5JzogODI5CiAgICAgICAgICAgICAgICAnODMnOiA4MwogICAgICAgICAgICAgICAgJzgzMCc6IDgzMAogICAgICAgICAgICAgICAgJzgzMSc6IDgzMQogICAgICAgICAgICAgICAgJzgzMic6IDgzMgogICAgICAgICAgICAgICAgJzgzMyc6IDgzMwogICAgICAgICAgICAgICAgJzgzNCc6IDgzNAogICAgICAgICAgICAgICAgJzgzNSc6IDgzNQogICAgICAgICAgICAgICAgJzgzNic6IDgzNgogICAgICAgICAgICAgICAgJzgzNyc6IDgzNwogICAgICAgICAgICAgICAgJzgzOCc6IDgzOAogICAgICAgICAgICAgICAgJzgzOSc6IDgzOQogICAgICAgICAgICAgICAgJzg0JzogODQKICAgICAgICAgICAgICAgICc4NDAnOiA4NDAKICAgICAgICAgICAgICAgICc4NDEnOiA4NDEKICAgICAgICAgICAgICAgICc4NDInOiA4NDIKICAgICAgICAgICAgICAgICc4NDMnOiA4NDMKICAgICAgICAgICAgICAgICc4NDQnOiA4NDQKICAgICAgICAgICAgICAgICc4NDUnOiA4NDUKICAgICAgICAgICAgICAgICc4NDYnOiA4NDYKICAgICAgICAgICAgICAgICc4NDcnOiA4NDcKICAgICAgICAgICAgICAgICc4NDgnOiA4NDgKICAgICAgICAgICAgICAgICc4NDknOiA4NDkKICAgICAgICAgICAgICAgICc4NSc6IDg1CiAgICAgICAgICAgICAgICAnODUwJzogODUwCiAgICAgICAgICAgICAgICAnODUxJzogODUxCiAgICAgICAgICAgICAgICAnODUyJzogODUyCiAgICAgICAgICAgICAgICAnODUzJzogODUzCiAgICAgICAgICAgICAgICAnODU0JzogODU0CiAgICAgICAgICAgICAgICAnODU1JzogODU1CiAgICAgICAgICAgICAgICAnODU2JzogODU2CiAgICAgICAgICAgICAgICAnODU3JzogODU3CiAgICAgICAgICAgICAgICAnODU4JzogODU4CiAgICAgICAgICAgICAgICAnODU5JzogODU5CiAgICAgICAgICAgICAgICAnODYnOiA4NgogICAgICAgICAgICAgICAgJzg2MCc6IDg2MAogICAgICAgICAgICAgICAgJzg2MSc6IDg2MQogICAgICAgICAgICAgICAgJzg2Mic6IDg2MgogICAgICAgICAgICAgICAgJzg2Myc6IDg2MwogICAgICAgICAgICAgICAgJzg2NCc6IDg2NAogICAgICAgICAgICAgICAgJzg2NSc6IDg2NQogICAgICAgICAgICAgICAgJzg2Nic6IDg2NgogICAgICAgICAgICAgICAgJzg2Nyc6IDg2NwogICAgICAgICAgICAgICAgJzg2OCc6IDg2OAogICAgICAgICAgICAgICAgJzg2OSc6IDg2OQogICAgICAgICAgICAgICAgJzg3JzogODcKICAgICAgICAgICAgICAgICc4NzAnOiA4NzAKICAgICAgICAgICAgICAgICc4NzEnOiA4NzEKICAgICAgICAgICAgICAgICc4NzInOiA4NzIKICAgICAgICAgICAgICAgICc4NzMnOiA4NzMKICAgICAgICAgICAgICAgICc4NzQnOiA4NzQKICAgICAgICAgICAgICAgICc4NzUnOiA4NzUKICAgICAgICAgICAgICAgICc4NzYnOiA4NzYKICAgICAgICAgICAgICAgICc4NzcnOiA4NzcKICAgICAgICAgICAgICAgICc4NzgnOiA4NzgKICAgICAgICAgICAgICAgICc4NzknOiA4NzkKICAgICAgICAgICAgICAgICc4OCc6IDg4CiAgICAgICAgICAgICAgICAnODgwJzogODgwCiAgICAgICAgICAgICAgICAnODgxJzogODgxCiAgICAgICAgICAgICAgICAnODgyJzogODgyCiAgICAgICAgICAgICAgICAnODgzJzogODgzCiAgICAgICAgICAgICAgICAnODg0JzogODg0CiAgICAgICAgICAgICAgICAnODg1JzogODg1CiAgICAgICAgICAgICAgICAnODg2JzogODg2CiAgICAgICAgICAgICAgICAnODg3JzogODg3CiAgICAgICAgICAgICAgICAnODg4JzogODg4CiAgICAgICAgICAgICAgICAnODg5JzogODg5CiAgICAgICAgICAgICAgICAnODknOiA4OQogICAgICAgICAgICAgICAgJzg5MCc6IDg5MAogICAgICAgICAgICAgICAgJzg5MSc6IDg5MQogICAgICAgICAgICAgICAgJzg5Mic6IDg5MgogICAgICAgICAgICAgICAgJzg5Myc6IDg5MwogICAgICAgICAgICAgICAgJzg5NCc6IDg5NAogICAgICAgICAgICAgICAgJzg5NSc6IDg5NQogICAgICAgICAgICAgICAgJzg5Nic6IDg5NgogICAgICAgICAgICAgICAgJzg5Nyc6IDg5NwogICAgICAgICAgICAgICAgJzg5OCc6IDg5OAogICAgICAgICAgICAgICAgJzg5OSc6IDg5OQogICAgICAgICAgICAgICAgJzknOiA5CiAgICAgICAgICAgICAgICAnOTAnOiA5MAogICAgICAgICAgICAgICAgJzkwMCc6IDkwMAogICAgICAgICAgICAgICAgJzkwMSc6IDkwMQogICAgICAgICAgICAgICAgJzkwMic6IDkwMgogICAgICAgICAgICAgICAgJzkwMyc6IDkwMwogICAgICAgICAgICAgICAgJzkwNCc6IDkwNAogICAgICAgICAgICAgICAgJzkwNSc6IDkwNQogICAgICAgICAgICAgICAgJzkwNic6IDkwNgogICAgICAgICAgICAgICAgJzkwNyc6IDkwNwogICAgICAgICAgICAgICAgJzkwOCc6IDkwOAogICAgICAgICAgICAgICAgJzkwOSc6IDkwOQogICAgICAgICAgICAgICAgJzkxJzogOTEKICAgICAgICAgICAgICAgICc5MTAnOiA5MTAKICAgICAgICAgICAgICAgICc5MTEnOiA5MTEKICAgICAgICAgICAgICAgICc5MTInOiA5MTIKICAgICAgICAgICAgICAgICc5MTMnOiA5MTMKICAgICAgICAgICAgICAgICc5MTQnOiA5MTQKICAgICAgICAgICAgICAgICc5MTUnOiA5MTUKICAgICAgICAgICAgICAgICc5MTYnOiA5MTYKICAgICAgICAgICAgICAgICc5MTcnOiA5MTcKICAgICAgICAgICAgICAgICc5MTgnOiA5MTgKICAgICAgICAgICAgICAgICc5MTknOiA5MTkKICAgICAgICAgICAgICAgICc5Mic6IDkyCiAgICAgICAgICAgICAgICAnOTIwJzogOTIwCiAgICAgICAgICAgICAgICAnOTIxJzogOTIxCiAgICAgICAgICAgICAgICAnOTIyJzogOTIyCiAgICAgICAgICAgICAgICAnOTIzJzogOTIzCiAgICAgICAgICAgICAgICAnOTI0JzogOTI0CiAgICAgICAgICAgICAgICAnOTI1JzogOTI1CiAgICAgICAgICAgICAgICAnOTI2JzogOTI2CiAgICAgICAgICAgICAgICAnOTI3JzogOTI3CiAgICAgICAgICAgICAgICAnOTI4JzogOTI4CiAgICAgICAgICAgICAgICAnOTI5JzogOTI5CiAgICAgICAgICAgICAgICAnOTMnOiA5MwogICAgICAgICAgICAgICAgJzkzMCc6IDkzMAogICAgICAgICAgICAgICAgJzkzMSc6IDkzMQogICAgICAgICAgICAgICAgJzkzMic6IDkzMgogICAgICAgICAgICAgICAgJzkzMyc6IDkzMwogICAgICAgICAgICAgICAgJzkzNCc6IDkzNAogICAgICAgICAgICAgICAgJzkzNSc6IDkzNQogICAgICAgICAgICAgICAgJzkzNic6IDkzNgogICAgICAgICAgICAgICAgJzkzNyc6IDkzNwogICAgICAgICAgICAgICAgJzkzOCc6IDkzOAogICAgICAgICAgICAgICAgJzkzOSc6IDkzOQogICAgICAgICAgICAgICAgJzk0JzogOTQKICAgICAgICAgICAgICAgICc5NDAnOiA5NDAKICAgICAgICAgICAgICAgICc5NDEnOiA5NDEKICAgICAgICAgICAgICAgICc5NDInOiA5NDIKICAgICAgICAgICAgICAgICc5NDMnOiA5NDMKICAgICAgICAgICAgICAgICc5NDQnOiA5NDQKICAgICAgICAgICAgICAgICc5NDUnOiA5NDUKICAgICAgICAgICAgICAgICc5NDYnOiA5NDYKICAgICAgICAgICAgICAgICc5NDcnOiA5NDcKICAgICAgICAgICAgICAgICc5NDgnOiA5NDgKICAgICAgICAgICAgICAgICc5NDknOiA5NDkKICAgICAgICAgICAgICAgICc5NSc6IDk1CiAgICAgICAgICAgICAgICAnOTUwJzogOTUwCiAgICAgICAgICAgICAgICAnOTUxJzogOTUxCiAgICAgICAgICAgICAgICAnOTUyJzogOTUyCiAgICAgICAgICAgICAgICAnOTUzJzogOTUzCiAgICAgICAgICAgICAgICAnOTU0JzogOTU0CiAgICAgICAgICAgICAgICAnOTU1JzogOTU1CiAgICAgICAgICAgICAgICAnOTU2JzogOTU2CiAgICAgICAgICAgICAgICAnOTU3JzogOTU3CiAgICAgICAgICAgICAgICAnOTU4JzogOTU4CiAgICAgICAgICAgICAgICAnOTU5JzogOTU5CiAgICAgICAgICAgICAgICAnOTYnOiA5NgogICAgICAgICAgICAgICAgJzk2MCc6IDk2MAogICAgICAgICAgICAgICAgJzk2MSc6IDk2MQogICAgICAgICAgICAgICAgJzk2Mic6IDk2MgogICAgICAgICAgICAgICAgJzk2Myc6IDk2MwogICAgICAgICAgICAgICAgJzk2NCc6IDk2NAogICAgICAgICAgICAgICAgJzk2NSc6IDk2NQogICAgICAgICAgICAgICAgJzk2Nic6IDk2NgogICAgICAgICAgICAgICAgJzk2Nyc6IDk2NwogICAgICAgICAgICAgICAgJzk2OCc6IDk2OAogICAgICAgICAgICAgICAgJzk2OSc6IDk2OQogICAgICAgICAgICAgICAgJzk3JzogOTcKICAgICAgICAgICAgICAgICc5NzAnOiA5NzAKICAgICAgICAgICAgICAgICc5NzEnOiA5NzEKICAgICAgICAgICAgICAgICc5NzInOiA5NzIKICAgICAgICAgICAgICAgICc5NzMnOiA5NzMKICAgICAgICAgICAgICAgICc5NzQnOiA5NzQKICAgICAgICAgICAgICAgICc5NzUnOiA5NzUKICAgICAgICAgICAgICAgICc5NzYnOiA5NzYKICAgICAgICAgICAgICAgICc5NzcnOiA5NzcKICAgICAgICAgICAgICAgICc5NzgnOiA5NzgKICAgICAgICAgICAgICAgICc5NzknOiA5NzkKICAgICAgICAgICAgICAgICc5OCc6IDk4CiAgICAgICAgICAgICAgICAnOTgwJzogOTgwCiAgICAgICAgICAgICAgICAnOTgxJzogOTgxCiAgICAgICAgICAgICAgICAnOTgyJzogOTgyCiAgICAgICAgICAgICAgICAnOTgzJzogOTgzCiAgICAgICAgICAgICAgICAnOTg0JzogOTg0CiAgICAgICAgICAgICAgICAnOTg1JzogOTg1CiAgICAgICAgICAgICAgICAnOTg2JzogOTg2CiAgICAgICAgICAgICAgICAnOTg3JzogOTg3CiAgICAgICAgICAgICAgICAnOTg4JzogOTg4CiAgICAgICAgICAgICAgICAnOTg5JzogOTg5CiAgICAgICAgICAgICAgICAnOTknOiA5OQogICAgICAgICAgICAgICAgJzk5MCc6IDk5MAogICAgICAgICAgICAgICAgJzk5MSc6IDk5MQogICAgICAgICAgICAgICAgJzk5Mic6IDk5MgogICAgICAgICAgICAgICAgJzk5Myc6IDk5MwogICAgICAgICAgICAgICAgJzk5NCc6IDk5NAogICAgICAgICAgICAgICAgJzk5NSc6IDk5NQogICAgICAgICAgICAgICAgJzk5Nic6IDk5NgogICAgICAgICAgICAgICAgJzk5Nyc6IDk5NwogICAgICAgICAgICAgICAgJzk5OCc6IDk5OAogICAgICAgICAgICAgICAgJzk5OSc6IDk5OQogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBRdWFudGl0eQogICAgICAgICAgICBOYW1lOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICAgICAgICBMYWJlbDogRXhwaXJhdGlvbiBEYXRlCiAgICAgICAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IExpY2VuY2UgS2V5CiAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VUeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpMaWNlbmNlVHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBMaWNlbmNlIFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU1lZGlhOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1lZGlhCiAgICAgIE5hbWU6IFNvZnR3YXJlLU1lZGlhCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1Ob3RlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IFNvZnR3YXJlLU5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU93bmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBTb2Z0d2FyZS1Pd25lcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogU29mdHdhcmUtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1UeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtVmVuZG9yOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLVZlcnNpb246CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogVmVyc2lvbgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZXJzaW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/Links/unittest.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQ291bnRyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IFN1YnNpZGlhcnkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBBZGRyZXNzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvblxyXG5cclxuU2VjdGlvbnM6XHJcbiAgQWRkcmVzczpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgQWRkcmVzc1xyXG4gICAgICAtIERGOiBMb2NhdGlvbi1TdHJlZXRcclxuICAgICAgLSBERjogTG9jYXRpb24tQ2l0eVxyXG4gICAgICAtCiAgICBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLUxhdGl0dWRlXHJcbiAgICAgIC0gREY6CiAgICBMb2NhdGlvbi1Mb25naXR1ZGUiCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLUNpdHk6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENpdHkKICAgICAgTmFtZTogTG9jYXRpb24tQ2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTGF0aXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExhdGl0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxhdGl0dWRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Mb25naXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExvbmdpdHVkZQogICAgICBOYW1lOiBMb2NhdGlvbi1Mb25naXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAwCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ291bnRyeQogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVN0cmVldDoKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RyZWV0CiAgICAgIE5hbWU6IExvY2F0aW9uLVN0cmVldAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBUeXBlOiBEZXNjcmlwdGlvblxyXG4gICAgSGVhZGVyOgogICAgRGVzY3JpcHRpb24iCiAgUm9sZU5hbWU6IENNREIgRGVzY3JpcHRpb24KLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEJhY2tsaW5rczpcclxuICAgIFR5cGU6IENvbmZpZ0l0ZW1MaW5rc1xyXG4gICAgSGVhZGVyOgogICAgQmFja2xpbmtzXHJcbiAgICBMaW5rZWRBczogU291cmNlIgogIFJvbGVOYW1lOiBDTURCIEJhY2tsaW5rcwo=</File>
        <File Location="scripts/webservices/GenericConfigItemConnectorSOAP.yml" Permission="660" Encode="Base64">LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAwCkRlc2NyaXB0aW9uOiBJVFNNIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBDb25uZWN0b3IgU2FtcGxlCkZyYW1ld29ya1ZlcnNpb246IDUuMC54IGdpdApQcm92aWRlcjoKICBPcGVyYXRpb246CiAgICBDb25maWdJdGVtQ3JlYXRlOgogICAgICBEZXNjcmlwdGlvbjogQ3JlYXRlcyBuZXcgQ29uZmlndXJhdGlvbiBJdGVtcyBmcm9tIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICBNYXBwaW5nSW5ib3VuZDoge30KICAgICAgTWFwcGluZ091dGJvdW5kOiB7fQogICAgICBUeXBlOiBDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlCiAgICBDb25maWdJdGVtRGVsZXRlOgogICAgICBEZXNjcmlwdGlvbjogRGVsZXRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGUKICAgIENvbmZpZ0l0ZW1HZXQ6CiAgICAgIERlc2NyaXB0aW9uOiBHZXQgdGhlIGRldGFpbHMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldAogICAgQ29uZmlnSXRlbVNlYXJjaDoKICAgICAgRGVzY3JpcHRpb246IFNlYXJjaCBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2gKICAgIENvbmZpZ0l0ZW1VcGRhdGU6CiAgICAgIERlc2NyaXB0aW9uOiBVcGRhdGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZQogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgTWF4TGVuZ3RoOiAxMDAwMDAwMDAKICAgICAgTmFtZVNwYWNlOiBodHRwOi8vd3d3Lm90b2JvLm9yZy9Db25maWdJdGVtQ29ubmVjdG9yCiAgICAgIFJlcXVlc3ROYW1lRnJlZVRleHQ6ICcnCiAgICAgIFJlcXVlc3ROYW1lU2NoZW1lOiBQbGFpbgogICAgICBSZXNwb25zZU5hbWVGcmVlVGV4dDogJycKICAgICAgUmVzcG9uc2VOYW1lU2NoZW1lOiBSZXNwb25zZQogICAgVHlwZTogSFRUUDo6U09BUApSZW1vdGVTeXN0ZW06ICcnClJlcXVlc3RlcjoKICBUcmFuc3BvcnQ6CiAgICBUeXBlOiAnJwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.ACL.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gNmVmZGM3YmYyYTMzMjUyNzdjZDc5YTYwZjBmMjQwN2Y4YWQ1OWU4NyAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5BZG1pbi5BQ0wuanMKLy8gLS0KLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKLy8gdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLy8gRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi8vIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgovLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQovLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsKQ29yZS5BZ2VudCA9IENvcmUuQWdlbnQgfHwge307CkNvcmUuQWdlbnQuQWRtaW4gPSBDb3JlLkFnZW50LkFkbWluIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5BZG1pbgogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAogKiBAYXV0aG9yCiAqLwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5BZG1pbi5BQ0wKICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4KICogQGF1dGhvcgogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgQUNMIG1vZHVsZS4KICovCkNvcmUuQWdlbnQuQWRtaW4uQUNMID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIEtleXNXaXRob3V0U3Via2V5cwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4uQUNMCiAgICAgKiBAbWVtYmVyIHtBcnJheX0KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBLZXlzV2l0aG91dFN1YmtleXMKICAgICAqLwogICAgdmFyIEtleXNXaXRob3V0U3Via2V5cyA9IFsgJ0FjdGl2aXR5RGlhbG9nJywgJ0FjdGlvbicsICdQcm9jZXNzJywgJ0Zvcm0nLCAnRm9ybVN0ZCcgXTsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLkFDTAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplIHRoZSBtb2R1bGUuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyQUNMcycpLCAkKCcjQUNMcycpLCAwKTsKICAgICAgICBpZiAoQ29yZS5Db25maWcuR2V0KCdTdWJhY3Rpb24nKSA9PT0gJ0FDTEVkaXQnKSB7CiAgICAgICAgICAgIFRhcmdldE5TLkluaXRBQ0xFZGl0KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBpbml0IGNoZWNrYm94IHRvIGluY2x1ZGUgaW52YWxpZCBlbGVtZW50cwogICAgICAgICQoJ2lucHV0I0luY2x1ZGVJbnZhbGlkJykub2ZmKCdjaGFuZ2UnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgVVJMID0gQ29yZS5Db25maWcuR2V0KCJCYXNlbGluayIpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCJBY3Rpb24iKSArICc7SW5jbHVkZUludmFsaWQ9JyArICggJCh0aGlzKS5pcygnOmNoZWNrZWQnKSA/IDEgOiAwICk7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gVVJMOwogICAgICAgIH0pOwovLyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAgICAgJCgnI09iamVjdFR5cGUnKS5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJ0FjdGlvbj1BZG1pbkFDTDtPYmplY3RUeXBlPScgKyAkKHRoaXMpLnZhbCgpOwogICAgICAgIH0pOwovLyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIH07CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgU2hvd0RlbGV0ZUFDTENvbmZpcm1hdGlvbkRpYWxvZwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4uQUNMCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCAtIFRoZSBjb25maXJtYXRpb24gZGlhbG9nIHRlbXBsYXRlIGluIHRoZSBIVE1MLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNob3dzIGEgY29uZmlybWF0aW9uIGRpYWxvZyB0byBkZWxldGUgdGhlIEFDTCBlbnRyeS4KICAgICAqLwogICAgZnVuY3Rpb24gU2hvd0RlbGV0ZUFDTENvbmZpcm1hdGlvbkRpYWxvZygkRWxlbWVudCkgewogICAgICAgIHZhciBEaWFsb2dFbGVtZW50ID0gJEVsZW1lbnQuZGF0YSgnZGlhbG9nLWVsZW1lbnQnKSwKICAgICAgICAgICAgRGlhbG9nVGl0bGUgPSAkRWxlbWVudC5kYXRhKCdkaWFsb2ctdGl0bGUnKSwKICAgICAgICAgICAgQUNMSUQgPSAkRWxlbWVudC5kYXRhKCdpZCcpOwoKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygKICAgICAgICAgICAgJCgnI0RpYWxvZ3MgIycgKyBEaWFsb2dFbGVtZW50KSwKICAgICAgICAgICAgRGlhbG9nVGl0bGUsCiAgICAgICAgICAgICcyNDBweCcsCiAgICAgICAgICAgICdDZW50ZXInLAogICAgICAgICAgICB0cnVlLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQ2FuY2VsJyksCiAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknLAogICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5DbG9zZURpYWxvZygkKCcuRGlhbG9nJykpOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0RlbGV0ZScpLAogICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FkbWluQUNMJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YmFjdGlvbjogJ0FDTERlbGV0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDogQUNMSUQsCi8vIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlOiAkKCdbbmFtZT1PYmplY3RUeXBlXScpLnZhbCgpLAovLyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIHRoZSBkaWFsb2cgdG8gYW4gYWpheCBsb2FkZXIKICAgICAgICAgICAgICAgICAgICAgICAkKCcuRGlhbG9nJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250ZW50Rm9vdGVyJykuZW1wdHkoKS5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLklubmVyQ29udGVudCcpLmVtcHR5KCkuYXBwZW5kKCc8ZGl2IGNsYXNzPSJTcGFjaW5nIENlbnRlciI+PHNwYW4gY2xhc3M9IkFKQVhMb2FkZXIiPjwvc3Bhbj48L2Rpdj4nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgYWpheCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSwgRGF0YSwgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUmVzcG9uc2UgfHwgIVJlc3BvbnNlLlN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KFJlc3BvbnNlLk1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuSW50ZXJuYWxSZWRpcmVjdCh7Ci8vIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogRGF0YS5BY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogRGF0YS5BY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlOiBEYXRhLk9iamVjdFR5cGUKLy8gRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgIH0sICdqc29uJyk7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICBdCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBuYW1lIFJlc3RvcmVBQ0xEYXRhCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5BQ0wKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgZmFsc2UsIGlmICREYXRhT2JqLnZhbCgpIGlzIG5vdCBkZWZpbmVkCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJERhdGFPYmoKICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkVGFyZ2V0T2JqCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgQnVpbGQgdXAgdGhlIERPTSBmcm9tIHRoZSBzdG9yZWQgQUNMIGRhdGEuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlc3RvcmVBQ0xEYXRhID0gZnVuY3Rpb24oJERhdGFPYmosICRUYXJnZXRPYmopIHsKCiAgICAgICAgdmFyIEpTT05TdHJpbmcgPSAkRGF0YU9iai52YWwoKSwKICAgICAgICAgICAgRGF0YSwKICAgICAgICAgICAgTGV2ZWwxS2V5LCBMZXZlbDJLZXksIExldmVsM0tleSwgTGV2ZWw0S2V5LAogICAgICAgICAgICAkSXRlbU9iakxldmVsMSwgJEl0ZW1PYmpMZXZlbDIsICRJdGVtT2JqTGV2ZWwzLCAkSXRlbU9iakxldmVsNCwKICAgICAgICAgICAgJFRlbXBPYmpMZXZlbDIsICRUZW1wT2JqTGV2ZWwzLCAkVGVtcE9iakxldmVsNCwKICAgICAgICAgICAgU2VsZWN0SFRNTCwKICAgICAgICAgICAgVmFsdWUsCiAgICAgICAgICAgIENsYXNzLAogICAgICAgICAgICBCb29sLAogICAgICAgICAgICBJc01hdGNoSXRlbSA9ICgkVGFyZ2V0T2JqLmF0dHIoJ2lkJykgPT09ICdBQ0xNYXRjaCcpID8gdHJ1ZSA6IGZhbHNlOwoKICAgICAgICBpZiAoIUpTT05TdHJpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgRGF0YSA9IEpTT04ucGFyc2UoSlNPTlN0cmluZyk7CgogICAgICAgIGZvciAoTGV2ZWwxS2V5IGluIERhdGEpIHsKCiAgICAgICAgICAgIGlmIChEYXRhLmhhc093blByb3BlcnR5KExldmVsMUtleSkpIHsKCiAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMSA9ICQoJyNUZW1wbGF0ZUxldmVsMSA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICRJdGVtT2JqTGV2ZWwxCiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIExldmVsMUtleSkKICAgICAgICAgICAgICAgICAgICAuZmluZCgnc3Ryb25nJykKICAgICAgICAgICAgICAgICAgICAudGV4dChDb3JlLkFwcC5Fc2NhcGVIVE1MKExldmVsMUtleSkpCiAgICAgICAgICAgICAgICAgICAgLm5leHQoJ3VsJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkljb24uQWRkQnV0dG9uJykKICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJCgnIycgKyBMZXZlbDFLZXkpLnBhcmVudCgpLmh0bWwoKSk7CgogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBEYXRhW0xldmVsMUtleV0gPT09ICdvYmplY3QnKSB7CgogICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwyID0gJCgnPGRpdiAvPicpOwoKICAgICAgICAgICAgICAgICAgICBmb3IgKExldmVsMktleSBpbiBEYXRhW0xldmVsMUtleV0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhW0xldmVsMUtleV0uaGFzT3duUHJvcGVydHkoTGV2ZWwyS2V5KSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoTGV2ZWwyS2V5LCBLZXlzV2l0aG91dFN1YmtleXMpICE9PSAtMSAmJiAhSXNNYXRjaEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMiA9ICQoJyNUZW1wbGF0ZUxldmVsMkxhc3QgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMiA9ICQoJyNUZW1wbGF0ZUxldmVsMiA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBMZXZlbDJLZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3N0cm9uZycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoQ29yZS5BcHAuRXNjYXBlSFRNTChMZXZlbDJLZXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCd1bCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5JY29uLkFkZEJ1dHRvbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1wYXJlbnQnLCBMZXZlbDJLZXkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMZXZlbDJLZXkgPT09ICdEeW5hbWljRmllbGQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0SFRNTCA9ICQoJyMnICsgTGV2ZWwyS2V5KS5wYXJlbnQoKS5odG1sKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0SFRNTCArPSAnPHNwYW4gY2xhc3M9IkFkZEFsbCI+JyArIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdBZGQgYWxsJykgKyAnPC9zcGFuPic7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJdGVtT2JqTGV2ZWwyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcihTZWxlY3RIVE1MKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGFyZW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJdGVtT2JqTGV2ZWwyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignaWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1sZXZlbCcsIDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoTGV2ZWwyS2V5LCBLZXlzV2l0aG91dFN1YmtleXMpICE9PSAtMSAmJiAhSXNNYXRjaEl0ZW0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDIuZmluZCgndWwnKS5hZGRDbGFzcygnTGFzdExldmVsJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwzID0gJCgnPGRpdiAvPicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKExldmVsM0tleSBpbiBEYXRhW0xldmVsMUtleV1bTGV2ZWwyS2V5XSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldLmhhc093blByb3BlcnR5KExldmVsM0tleSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldW0xldmVsM0tleV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMgPSAkKCcjVGVtcGxhdGVMZXZlbDQgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnZW0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxzcGFuPicgKyBDb3JlLkFwcC5Fc2NhcGVIVE1MKFZhbHVlKSArICc8L3NwYW4+Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRlbXBPYmpMZXZlbDMuYXBwZW5kKCRJdGVtT2JqTGV2ZWwzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2hpbGRyZW4oJ3VsJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmQoJFRlbXBPYmpMZXZlbDMuaHRtbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkl0ZW1QcmVmaXgnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV0gPT09ICdvYmplY3QnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGVtcE9iakxldmVsMyA9ICQoJzxkaXYgLz4nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoTGV2ZWwzS2V5IGluIERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldLmhhc093blByb3BlcnR5KExldmVsM0tleSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMgPSAkKCcjVGVtcGxhdGVMZXZlbDMgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIExldmVsM0tleSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNoaWxkcmVuKCcuSWNvbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIENvcmUuQXBwLkVzY2FwZUhUTUwoTGV2ZWwzS2V5KSArICc8L3NwYW4+JyArICc6Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XSAhPT0gJ29iamVjdCcpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0gJ1RydWUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sID0gcGFyc2VJbnQoRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XSwgMTApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJvb2wgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0gJ0ZhbHNlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCd1bCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0Jvb2xlYW4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBCb29sKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc3BhbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYmVmb3JlKCc8c3BhbiBjbGFzcz0iSWNvbiAnICsgQ2xhc3MgKyAnIEJvb2xlYW4iIC8+JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGVtcE9iakxldmVsNCA9ICQoJzxkaXYgLz4nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoTGV2ZWw0S2V5IGluIERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldW0xldmVsM0tleV0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XS5oYXNPd25Qcm9wZXJ0eShMZXZlbDRLZXkpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XVtMZXZlbDRLZXldOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsNCA9ICQoJyNUZW1wbGF0ZUxldmVsNCA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1jb250ZW50JywgVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdlbScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxzcGFuPicgKyBDb3JlLkFwcC5Fc2NhcGVIVE1MKFZhbHVlKSArICc8L3NwYW4+Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWw0LmFwcGVuZCgkSXRlbU9iakxldmVsNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jaGlsZHJlbigndWwnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmQoJFRlbXBPYmpMZXZlbDQuaHRtbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5JdGVtUHJlZml4JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwzLmFwcGVuZCgkSXRlbU9iakxldmVsMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDIuY2hpbGRyZW4oJ3VsJykucHJlcGVuZCgkVGVtcE9iakxldmVsMy5odG1sKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwyLmFwcGVuZCgkSXRlbU9iakxldmVsMik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDEuY2hpbGRyZW4oJ3VsJykucHJlcGVuZCgkVGVtcE9iakxldmVsMi5odG1sKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFRhcmdldE9iai5hcHBlbmQoJEl0ZW1PYmpMZXZlbDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIEFkZEl0ZW0KICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLkFDTAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJE9iamVjdAogICAgICogQHBhcmFtIHtTdHJpbmd9IFR5cGUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBBZGRzIGFuIGl0ZW0gdG8gdGhlIGxpc3QuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZEl0ZW0gPSBmdW5jdGlvbigkT2JqZWN0LCBUeXBlKSB7CgogICAgICAgIHZhciBBbHJlYWR5QWRkZWQgPSBmYWxzZSwKICAgICAgICAgICAgVmFsdWUgPSAkT2JqZWN0LnZhbCgpLAogICAgICAgICAgICBWYWx1ZUVzY2FwZWQgPSBDb3JlLkFwcC5Fc2NhcGVIVE1MKFZhbHVlKSwKICAgICAgICAgICAgTGV2ZWwgPSBwYXJzZUludCgkT2JqZWN0LmF0dHIoJ2RhdGEtbGV2ZWwnKSwgMTApLAogICAgICAgICAgICAkTGV2ZWxPYmosICRUYXJnZXQsICRUcmlnZ2VyT2JqLAogICAgICAgICAgICBQcmVmaXgsIFNlbGVjdEhUTUwsCiAgICAgICAgICAgIElzTWF0Y2hJdGVtID0gKCRPYmplY3QuY2xvc2VzdCgnI0FDTE1hdGNoJykubGVuZ3RoKSA/IHRydWUgOiBmYWxzZTsKCiAgICAgICAgaWYgKExldmVsID09PSAxKSB7CgogICAgICAgICAgICAkVGFyZ2V0ID0gJE9iamVjdC5wcmV2QWxsKCcuQUNMRmllbGRHcm91cCcpOwogICAgICAgICAgICAkVGFyZ2V0LmNoaWxkcmVuKCdsaScpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdkYXRhLWNvbnRlbnQnKSA9PT0gVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBBbHJlYWR5QWRkZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoIUFscmVhZHlBZGRlZCkgewoKICAgICAgICAgICAgICAgICRMZXZlbE9iaiA9ICQoJyNUZW1wbGF0ZUxldmVsMSA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICRMZXZlbE9iagogICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAuZmluZCgnc3Ryb25nJykKICAgICAgICAgICAgICAgICAgICAudGV4dChWYWx1ZUVzY2FwZWQpCiAgICAgICAgICAgICAgICAgICAgLm5leHQoJ3VsJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkljb24uQWRkQnV0dG9uJykKICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJCgnIycgKyBWYWx1ZSkucGFyZW50KCkuaHRtbCgpKTsKICAgICAgICAgICAgICAgICRUYXJnZXQuYXBwZW5kKCRMZXZlbE9iaik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBhbGVydChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTZXQgZW1wdHkgdmFsdWUgZm9yICRPYmplY3QgYW5kIGJsdXIgaXRzIHNpYmxpbmcgbW9kZXJuIGlucHV0IGZpZWxkIChzZWUgYnVnIzE0MTU3KS4KICAgICAgICAgICAgJE9iamVjdC52YWwoJycpLnNpYmxpbmdzKCcuSW5wdXRGaWVsZF9Db250YWluZXInKS5maW5kKCcuSW5wdXRGaWVsZF9TZWFyY2gnKS5ibHVyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKExldmVsID09PSAyKSB7CgogICAgICAgICAgICAkVGFyZ2V0ID0gJE9iamVjdC5wYXJlbnQoKTsKICAgICAgICAgICAgJFRhcmdldC5wYXJlbnQoKS5jaGlsZHJlbignbGknKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cignZGF0YS1jb250ZW50JykgPT09IFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgQWxyZWFkeUFkZGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKCFBbHJlYWR5QWRkZWQpIHsKCiAgICAgICAgICAgICAgICBpZiAoJC5pbkFycmF5KFZhbHVlLCBLZXlzV2l0aG91dFN1YmtleXMpICE9PSAtMSAmJiAhSXNNYXRjaEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkTGV2ZWxPYmogPSAkKCcjVGVtcGxhdGVMZXZlbDJMYXN0ID4gbGknKS5jbG9uZSgpOwogICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqID0gJExldmVsT2JqLmZpbmQoJy5BZGRCdXR0b24nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMZXZlbE9iaiA9ICQoJyNUZW1wbGF0ZUxldmVsMiA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGV2ZWxPYmoKICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1jb250ZW50JywgVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3N0cm9uZycpCiAgICAgICAgICAgICAgICAgICAgLnRleHQoVmFsdWVFc2NhcGVkKQogICAgICAgICAgICAgICAgICAgIC5uZXh0KCd1bCcpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5JY29uLkFkZEJ1dHRvbicpCiAgICAgICAgICAgICAgICAgICAgLm5leHQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1wYXJlbnQnLCBWYWx1ZSk7CgogICAgICAgICAgICAgICAgaWYgKFZhbHVlID09PSAnRHluYW1pY0ZpZWxkJykgewogICAgICAgICAgICAgICAgICAgIFNlbGVjdEhUTUwgPSAkKCcjJyArIFZhbHVlKS5wYXJlbnQoKS5odG1sKCk7CiAgICAgICAgICAgICAgICAgICAgU2VsZWN0SFRNTCArPSAnPHNwYW4gY2xhc3M9IkFkZEFsbCI+JyArIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdBZGQgYWxsJykgKyAnPC9zcGFuPic7CgogICAgICAgICAgICAgICAgICAgICRMZXZlbE9iagogICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnaW5wdXQnKQogICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoU2VsZWN0SFRNTCkKICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAkTGV2ZWxPYmoKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdpZCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWxldmVsJywgMyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkVGFyZ2V0LmJlZm9yZSgkTGV2ZWxPYmopOwoKICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoVmFsdWUsIEtleXNXaXRob3V0U3Via2V5cykgIT09IC0xICYmICFJc01hdGNoSXRlbSkgewogICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsaWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBhbGVydChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTZXQgZW1wdHkgdmFsdWUgZm9yICRPYmplY3QgYW5kIGJsdXIgaXRzIHNpYmxpbmcgbW9kZXJuIGlucHV0IGZpZWxkIChzZWUgYnVnIzE0MTU3KS4KICAgICAgICAgICAgJE9iamVjdC52YWwoJycpLnNpYmxpbmdzKCcuSW5wdXRGaWVsZF9Db250YWluZXInKS5maW5kKCcuSW5wdXRGaWVsZF9TZWFyY2gnKS5ibHVyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKExldmVsID09PSAzKSB7CgogICAgICAgICAgICAkTGV2ZWxPYmogPSAkKCcjVGVtcGxhdGVMZXZlbDMgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICRUcmlnZ2VyT2JqID0gJExldmVsT2JqLmZpbmQoJy5BZGRCdXR0b24nKTsKCiAgICAgICAgICAgIGlmIChWYWx1ZSkgewogICAgICAgICAgICAgICAgJExldmVsT2JqCiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIFZhbHVlKQogICAgICAgICAgICAgICAgICAgIC5jaGlsZHJlbignLkljb24nKQogICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIFZhbHVlRXNjYXBlZCArICc8L3NwYW4+JyArICc6Jyk7CiAgICAgICAgICAgICAgICAkTGV2ZWxPYmouaW5zZXJ0QmVmb3JlKCRPYmplY3QucGFyZW50KCkpOwoKICAgICAgICAgICAgICAgIGlmIChUeXBlID09PSAnQm9vbGVhbicpIHsKICAgICAgICAgICAgICAgICAgICAkTGV2ZWxPYmoKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3VsJykKICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdCb29sZWFuJykKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykKICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsICcxJykKICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzcGFuJykKICAgICAgICAgICAgICAgICAgICAgICAgLmJlZm9yZSgnPHNwYW4gY2xhc3M9Ikljb24gVHJ1ZSBCb29sZWFuIiAvPicpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkT2JqZWN0LnZhbCgnJyk7CgogICAgICAgICAgICBpZiAoVmFsdWUgJiYgVHlwZSAhPT0gJ0Jvb2xlYW4nKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbGljaygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKExldmVsID09PSA0KSB7CgogICAgICAgICAgICAkTGV2ZWxPYmogPSAkKCcjVGVtcGxhdGVMZXZlbDQgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICRUcmlnZ2VyT2JqID0gJE9iamVjdC5uZXh0KCcuQWRkQnV0dG9uJyk7CgogICAgICAgICAgICBpZiAoVmFsdWUpIHsKCiAgICAgICAgICAgICAgICBQcmVmaXggPSAkT2JqZWN0LnByZXZBbGwoJ3NlbGVjdCcpLnZhbCgpOwogICAgICAgICAgICAgICAgaWYgKFByZWZpeCkgewogICAgICAgICAgICAgICAgICAgIFZhbHVlID0gUHJlZml4ICsgVmFsdWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExldmVsT2JqCiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIFZhbHVlKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCdlbScpCiAgICAgICAgICAgICAgICAgICAgLmJlZm9yZSgnPHNwYW4+JyArIFZhbHVlICsgJzwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICRMZXZlbE9iai5pbnNlcnRCZWZvcmUoJE9iamVjdC5wYXJlbnQoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJE9iamVjdAogICAgICAgICAgICAgICAgLnByZXZBbGwoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0hpZGRlbicpCiAgICAgICAgICAgICAgICAubmV4dEFsbCgnaW5wdXQnKQogICAgICAgICAgICAgICAgLnJlbW92ZSgpOwoKICAgICAgICAgICAgaWYgKFZhbHVlKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbGljaygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIENvbGxlY3RBQ0xEYXRhCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5BQ0wKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge09iamVjdH0gQUNMIGRhdGEgc3RydWN0dXJlLgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJdGVtT2JqCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgQ29sbGVjdHMgdGhlIEFDTCBkYXRhLgogICAgICovCiAgICBUYXJnZXROUy5Db2xsZWN0QUNMRGF0YSA9IGZ1bmN0aW9uKCRJdGVtT2JqKSB7CgogICAgICAgIHZhciBTdHJ1Y3R1cmUgPSB7fSwKICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqLAogICAgICAgICAgICBJdGVtTmFtZUxldmVsMSwKICAgICAgICAgICAgSXRlbU5hbWVMZXZlbDIsCiAgICAgICAgICAgIEl0ZW1OYW1lTGV2ZWwzOwoKICAgICAgICAkSXRlbU9iai5jaGlsZHJlbignbGkuRGF0YUl0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgSXRlbU5hbWVMZXZlbDEgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtY29udGVudCcpOwogICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdID0ge307CgogICAgICAgICAgICAkU3ViSXRlbXNPYmogPSAkKHRoaXMpLmNoaWxkcmVuKCd1bCcpLmNoaWxkcmVuKCdsaS5EYXRhSXRlbScpOwoKICAgICAgICAgICAgaWYgKCRTdWJJdGVtc09iai5sZW5ndGggPiAwKSB7CgogICAgICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgIEl0ZW1OYW1lTGV2ZWwyID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNvbnRlbnQnKTsKICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdW0l0ZW1OYW1lTGV2ZWwyXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICRTdWJJdGVtc09iaiA9ICQodGhpcykuY2hpbGRyZW4oJ3VsJykuY2hpbGRyZW4oJ2xpLkRhdGFJdGVtJyk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkU3ViSXRlbXNPYmoubGVuZ3RoID4gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2hpbGRyZW4oJ3VsJykuaGFzQ2xhc3MoJ0xhc3RMZXZlbCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdW0l0ZW1OYW1lTGV2ZWwyXSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlW0l0ZW1OYW1lTGV2ZWwxXVtJdGVtTmFtZUxldmVsMl0ucHVzaCgkKHRoaXMpLmF0dHIoJ2RhdGEtY29udGVudCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJJdGVtc09iai5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtTmFtZUxldmVsMyA9ICQodGhpcykuYXR0cignZGF0YS1jb250ZW50Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqID0gJCh0aGlzKS5jaGlsZHJlbigndWwnKS5jaGlsZHJlbignbGkuRGF0YUl0ZW0nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2hpbGRyZW4oJ3VsJykuaGFzQ2xhc3MoJ0Jvb2xlYW4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdW0l0ZW1OYW1lTGV2ZWwyXVtJdGVtTmFtZUxldmVsM10gPSBwYXJzZUludCgkU3ViSXRlbXNPYmouYXR0cignZGF0YS1jb250ZW50JyksIDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVtJdGVtTmFtZUxldmVsMV1bSXRlbU5hbWVMZXZlbDJdW0l0ZW1OYW1lTGV2ZWwzXSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJFN1Ykl0ZW1zT2JqLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJJdGVtc09iai5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVtJdGVtTmFtZUxldmVsMV1bSXRlbU5hbWVMZXZlbDJdW0l0ZW1OYW1lTGV2ZWwzXS5wdXNoKCQodGhpcykuYXR0cignZGF0YS1jb250ZW50JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdEFDTEVkaXQKICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLkFDTAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZXMgdGhlIEFDTCBlZGl0b3IuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXRBQ0xFZGl0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAkKCcjQUNMRGVsZXRlJykub24oJ2NsaWNrLkFDTERlbGV0ZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBTaG93RGVsZXRlQUNMQ29uZmlybWF0aW9uRGlhbG9nKCQoRXZlbnQudGFyZ2V0KS5jbG9zZXN0KCdhJykpOwogICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuSXRlbUFkZExldmVsMScpCiAgICAgICAgICAgIC5hdHRyKCdkYXRhLWxldmVsJywgMSkKICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2lkJyk7CgogICAgICAgICQoJy5MZXZlbFRvQmVBZGRlZCcpCiAgICAgICAgICAgIC5hdHRyKCdkYXRhLWxldmVsJywgMikKICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdMZXZlbFRvQmVBZGRlZCcpOwoKICAgICAgICAkKCcjUHJlZml4ZXMnKS5yZW1vdmVBdHRyKCdpZCcpOwoKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2NsaWNrJywgJy5EYXRhSXRlbSBzdHJvbmcnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCh0aGlzKS5wcmV2QWxsKCcuVHJpZ2dlcicpLmNsaWNrKCk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLlRyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ0NvbGxhcHNlJykpIHsKICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ0NvbGxhcHNlJykKICAgICAgICAgICAgICAgICAgICAubmV4dEFsbCgndWwnKQogICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdDb2xsYXBzZScpCiAgICAgICAgICAgICAgICAgICAgLm5leHRBbGwoJ3VsJykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkFkZEFsbCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgJFNlbGVjdE9iaiA9ICQodGhpcykucHJldignc2VsZWN0JyksCiAgICAgICAgICAgICAgICBCb29sZWFuU3RyID0gJyc7CgogICAgICAgICAgICBpZiAoJFNlbGVjdE9iai5oYXNDbGFzcygnQm9vbGVhbicpKSB7CiAgICAgICAgICAgICAgICBCb29sZWFuU3RyID0gJ0Jvb2xlYW4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VsZWN0T2JqLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkU2VsZWN0T2JqLnZhbCgkKHRoaXMpLmF0dHIoJ3ZhbHVlJykpOwogICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkSXRlbSgkU2VsZWN0T2JqLCBCb29sZWFuU3RyKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkFkZERhdGFJdGVtJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGl0ZW0gcGxhY2Vob2xkZXIuIERvIG5vdGhpbmcgdGhlbi4KICAgICAgICAgICAgaWYgKCQodGhpcykucHJldkFsbCgnLk5ld0RhdGFJdGVtJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iTmV3RGF0YUl0ZW0iIGRhdGEtbGV2ZWw9IjQiIC8+JykKICAgICAgICAgICAgICAgIC5wcmV2QWxsKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnLk5ld0RhdGFJdGVtJykucHJldkFsbCgnc2VsZWN0JykuZm9jdXMoKTsKCiAgICAgICAgICAgIENvcmUuQXBwLlB1Ymxpc2goJ0FDTC5Jbml0QXV0b2NvbXBsZXRlJyk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignYmx1ciBrZXlkb3duJywgJy5OZXdEYXRhSXRlbScsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgIGlmICgoRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmIEV2ZW50LndoaWNoID09PSAxMykgfHwgRXZlbnQudHlwZSAhPT0gJ2tleWRvd24nKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQWRkZWQnKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ0FkZGVkJyk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRJdGVtKCQodGhpcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignYmx1ciBrZXlkb3duJywgJy5OZXdEYXRhS2V5JywgZnVuY3Rpb24oRXZlbnQpIHsKICAgICAgICAgICAgaWYgKChFdmVudC50eXBlID09PSAna2V5ZG93bicgJiYgRXZlbnQud2hpY2ggPT09IDEzKSB8fCBFdmVudC50eXBlICE9PSAna2V5ZG93bicpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZEl0ZW0oJCh0aGlzKSk7CiAgICAgICAgICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgJCgnLkFDTFN0cnVjdHVyZScpLm9uKCdjbGljaycsICcuSWNvbi5Cb29sZWFuJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdUcnVlJykpIHsKICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ1RydWUnKQogICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnRmFsc2UnKQogICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ0ZhbHNlJykKICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ1RydWUnKQogICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2NsaWNrJywgJy5FZGl0YWJsZSBzcGFuJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICB2YXIgJE9iaiA9ICQodGhpcyksCiAgICAgICAgICAgICAgICBWYWx1ZSA9ICRPYmoudGV4dCgpLAogICAgICAgICAgICAgICAgV2lkdGggPSAkT2JqLndpZHRoKCkgKyAzLAogICAgICAgICAgICAgICAgJFNlbGVjdE9iaiA9ICQoJyNUZW1wbGF0ZUxldmVsMycpLmZpbmQoJ3NlbGVjdCcpLAogICAgICAgICAgICAgICAgJFNlbGVjdE9iakNsb25lID0gJFNlbGVjdE9iai5jbG9uZSgpLAogICAgICAgICAgICAgICAgUmVnZXhSZXN1bHQsCiAgICAgICAgICAgICAgICBMYXN0TGV2ZWwgPSB0cnVlOwoKICAgICAgICAgICAgLy8gb25seSBhcHBseSBvbiByaWdodCBzcGFucwogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnSWNvbicpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG9ubHkgYXBwbHkgaWYgbm90IG9mIHR5cGUgImJvb2xlYW4iCiAgICAgICAgICAgIGlmICgkKHRoaXMpLm5leHRBbGwoJ3VsJykuaGFzQ2xhc3MoJ0Jvb2xlYW4nKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBkZWNpZGUgaWYgd2UgYXJlIGFscmVhZHkgb24gdGhlIGxhc3QgbGV2ZWwKICAgICAgICAgICAgaWYgKCEkKHRoaXMpLm5leHQoJ2VtJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBMYXN0TGV2ZWwgPSBmYWxzZTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmIChMYXN0TGV2ZWwpIHsKCiAgICAgICAgICAgICAgICAvLyBnZXQgY29udGVudHMgb2YgdGhlICdwcmVmaXhlcycgc2VsZWN0Ym94IHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB3ZQogICAgICAgICAgICAgICAgLy8gYXJlIGRlYWxpbmcgd2l0aCBhIHNwZWNpYWwgdHlwZSBvZiBzdHJpbmcKICAgICAgICAgICAgICAgICRTZWxlY3RPYmouZmluZCgnb3B0aW9uJykuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIFByZWZpeCA9ICQodGhpcykuYXR0cigndmFsdWUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgUmVnZXg7CgogICAgICAgICAgICAgICAgICAgIGlmIChQcmVmaXgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFByZWZpeCA9IFByZWZpeC5yZXBsYWNlKC9cWy8sICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgUHJlZml4ID0gUHJlZml4LnJlcGxhY2UoL1xdLywgJycpOwogICAgICAgICAgICAgICAgICAgICAgICBQcmVmaXggPSAkLnRyaW0oUHJlZml4KTsKICAgICAgICAgICAgICAgICAgICAgICAgUmVnZXggPSBuZXcgUmVnRXhwKCcoXFxbJyArIFByZWZpeCArICdcXF0pLionKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2V4UmVzdWx0ID0gVmFsdWUubWF0Y2goUmVnZXgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVnZXhSZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gVmFsdWUucmVwbGFjZShSZWdleFJlc3VsdFsxXSwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdE9iakNsb25lLnZhbChSZWdleFJlc3VsdFsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkT2JqCiAgICAgICAgICAgICAgICAgICAgLmJlZm9yZSgnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJMaXZlRWRpdCIgdmFsdWU9IicgKyBWYWx1ZSArICciIC8+JykKICAgICAgICAgICAgICAgICAgICAucHJldignaW5wdXQnKQogICAgICAgICAgICAgICAgICAgIC5jc3MoJ3dpZHRoJywgcGFyc2VJbnQoV2lkdGgsIDEwKSArICdweCcpCiAgICAgICAgICAgICAgICAgICAgLm5leHRBbGwoJ2VtJykKICAgICAgICAgICAgICAgICAgICAuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAuYmVmb3JlKCRTZWxlY3RPYmpDbG9uZSkKICAgICAgICAgICAgICAgICAgICAucGFyZW50KCkKICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIC5jc3MoJ21hcmdpbi1yaWdodCcsICcycHgnKQogICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnTGl2ZUVkaXRTZWxlY3QnKQogICAgICAgICAgICAgICAgICAgIC5uZXh0QWxsKCdzcGFuJykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJE9iagogICAgICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iTGl2ZUVkaXQgQmlnIiB2YWx1ZT0iJyArIFZhbHVlICsgJyIgLz4nKQogICAgICAgICAgICAgICAgICAgIC5wcmV2KCdpbnB1dCcpCiAgICAgICAgICAgICAgICAgICAgLmNzcygnd2lkdGgnLCBwYXJzZUludChXaWR0aCwgMTApICsgJ3B4JykKICAgICAgICAgICAgICAgICAgICAuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIC5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgIC5uZXh0QWxsKCdzcGFuJykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQ29yZS5BcHAuUHVibGlzaCgnQUNMLkluaXRBdXRvY29tcGxldGUnKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gcHJldmVudCB1c2VycyBmcm9tIGFjY2lkZW50YWxseSBzdWJtaXR0aW5nIHRoZSBmb3JtIG9uIHByZXNzaW5nICdlbnRlcicKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2tleWRvd24nLCAnLkxpdmVFZGl0U2VsZWN0JywgZnVuY3Rpb24oRXZlbnQpIHsKICAgICAgICAgICAgaWYgKEV2ZW50LndoaWNoID09PSAxMykgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2hhbmdlIGJsdXInLCAnLkxpdmVFZGl0U2VsZWN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQodGhpcykubmV4dCgnaW5wdXQnKS5zZWxlY3QoKS5mb2N1cygpOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2JsdXIga2V5ZG93bicsICcuTGl2ZUVkaXQnLCBmdW5jdGlvbihFdmVudCkgewoKICAgICAgICAgICAgdmFyIFZhbHVlOwoKICAgICAgICAgICAgaWYgKChFdmVudC50eXBlID09PSAna2V5ZG93bicgJiYgRXZlbnQud2hpY2ggPT09IDEzKSB8fCBFdmVudC50eXBlICE9PSAna2V5ZG93bicpIHsKCiAgICAgICAgICAgICAgICBWYWx1ZSA9ICQodGhpcykudmFsKCk7CgogICAgICAgICAgICAgICAgaWYgKFZhbHVlKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIGF2b2lkIHdyb25nIGJlaGF2aW9yIHdoZW4gVmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dCgnc3BhbicpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQmlnJykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIFZhbHVlICsgJzwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0RhdGFJdGVtJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCcuTGl2ZUVkaXQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF2b2lkIHdyb25nIGJlaGF2aW9yIGlmIHNlbGVjdCBpcyBubyBtb3JlIHByZXNlbnQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLnBhcmVudCgpLmZpbmQoJ3NlbGVjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9ICQodGhpcykucGFyZW50KCkuZmluZCgnc2VsZWN0JykudmFsKCkgKyBWYWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIFZhbHVlICsgJzwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHRBbGwoJ2VtJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaG93KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1jb250ZW50JywgVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkxpdmVFZGl0LCBzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQmlnJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoJCh0aGlzKS5wYXJlbnQoKS5hdHRyKCdkYXRhLWNvbnRlbnQnKSkuYmx1cigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGFyZW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgJCgnLkFDTFN0cnVjdHVyZScpLm9uKCdjaGFuZ2UnLCAnLk5ld0RhdGFLZXlEcm9wZG93bicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgQm9vbGVhblN0ciA9ICcnOwogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQm9vbGVhbicpKSB7CiAgICAgICAgICAgICAgICBCb29sZWFuU3RyID0gJ0Jvb2xlYW4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFRhcmdldE5TLkFkZEl0ZW0oJCh0aGlzKSwgQm9vbGVhblN0cik7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkRhdGFJdGVtIGVtJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQodGhpcykucGFyZW50KCkuZmFkZU91dCgzMDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmUoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkljb24uUmVtb3ZlQnV0dG9uJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBSZW1vdmUgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dEFsbCgndWwnKS5maW5kKCdsaScpLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIGlmIChjb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nKSkpIHsKICAgICAgICAgICAgICAgICAgICBSZW1vdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgUmVtb3ZlID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFJlbW92ZSkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5mYWRlT3V0KDMwMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2hhbmdlJywgJy5JdGVtQWRkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFRhcmdldE5TLkFkZEl0ZW0oJCh0aGlzKSk7CiAgICAgICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnI1N1Ym1pdEFuZENvbnRpbnVlJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJyNDb250aW51ZUFmdGVyU2F2ZScpLnZhbCgxKTsKICAgICAgICAgICAgJCgnI1N1Ym1pdCcpLmNsaWNrKCk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNTdWJtaXQsICNTdWJtaXRBbmRDb250aW51ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gY29sbGVjdCBkYXRhIGZyb20gdGhlIGlucHV0IGFyZWFzCiAgICAgICAgICAgIFRhcmdldE5TLkNvbmZpZ01hdGNoID0gVGFyZ2V0TlMuQ29sbGVjdEFDTERhdGEoJCgnI0FDTE1hdGNoJykpOwogICAgICAgICAgICBUYXJnZXROUy5Db25maWdDaGFuZ2UgPSBUYXJnZXROUy5Db2xsZWN0QUNMRGF0YSgkKCcjQUNMQ2hhbmdlJykpOwoKICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1Db25maWdNYXRjaF0nKS52YWwoQ29yZS5KU09OLlN0cmluZ2lmeShUYXJnZXROUy5Db25maWdNYXRjaCkpOwogICAgICAgICAgICAkKCdpbnB1dFtuYW1lPUNvbmZpZ0NoYW5nZV0nKS52YWwoQ29yZS5KU09OLlN0cmluZ2lmeShUYXJnZXROUy5Db25maWdDaGFuZ2UpKTsKICAgICAgICB9KTsKCiAgICAgICAgVGFyZ2V0TlMuUmVzdG9yZUFDTERhdGEoCiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9Q29uZmlnTWF0Y2hdJyksCiAgICAgICAgICAgICQoJyNBQ0xNYXRjaCcpCiAgICAgICAgKTsKCiAgICAgICAgVGFyZ2V0TlMuUmVzdG9yZUFDTERhdGEoCiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9Q29uZmlnQ2hhbmdlXScpLAogICAgICAgICAgICAkKCcjQUNMQ2hhbmdlJykKICAgICAgICApOwoKICAgICAgICBDb3JlLkFwcC5TdWJzY3JpYmUoJ0FDTC5Jbml0QXV0b2NvbXBsZXRlJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAkKCcuTGl2ZUVkaXQsIC5OZXdEYXRhSXRlbScpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgLy8gb25seSBkbyBpdCBmb3IgdGhlICdBY3Rpb24nIGl0ZW0gKGNhbiBiZSBleHRlbmRlZCBpbiB0aGUgZnV0dXJlKQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2xvc2VzdCgndWwnKS5jbG9zZXN0KCdsaScpLmRhdGEoJ2NvbnRlbnQnKSA9PT0gJ0FjdGlvbicpIHsKCiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIElELCBnZW5lcmF0ZSBvbmUuCiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZm9yIHdvcmsgcHJvcGVybHksIGUuZy4KICAgICAgICAgICAgICAgICAgICAvLyB0byBoaWRlIHRoZSBsb2FkZXIgaWNvbiBhZnRlciB0aGUgcmVzdWx0cyBoYXZlIGJlZW4gZmV0Y2hlZAogICAgICAgICAgICAgICAgICAgIENvcmUuVUkuR2V0SUQoJCh0aGlzKSk7CgogICAgICAgICAgICAgICAgICAgIENvcmUuVUkuQXV0b2NvbXBsZXRlLkluaXQoCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKFJlcXVlc3QsIFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1MQyA9ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlQWN0aW9uc0xpc3QgPSBDb3JlLkNvbmZpZy5HZXQoJ1Bvc3NpYmxlQWN0aW9uc0xpc3QnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVxdWVzdC50ZXJtID09PSAnKionKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9IFBvc3NpYmxlQWN0aW9uc0xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUG9zc2libGVBY3Rpb25zTGlzdCwgZnVuY3Rpb24oSW5kZXgsIEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUxDID0gSXRlbS52YWx1ZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbUxDLmluZGV4T2YoUmVxdWVzdC50ZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YS5wdXNoKEl0ZW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZShEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oRXZlbnQsIFVJKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKEV2ZW50LnRhcmdldCkudmFsKFVJLml0ZW0udmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAnQUNMT3B0aW9uc0F1dG9jb21wbGV0ZScKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCgogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuQWRtaW4uQUNMIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.Znuny4OTOBODynamicFieldScreen.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBabnVueSBHbWJILCBodHRwOi8vem51bnkuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gZmY5ZTI5N2JhZjI4N2UxNjA3MWQzYWM2YWQ3ZjZjMTNmMTFhYzdmYSAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5BZG1pbi5abnVueTRPVE9CT0R5bmFtaWNGaWVsZFNjcmVlbi5qcwovLyAtLQovLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgovLyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQovLyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgovLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKLy8gQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKLy8gRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIENvcmUgICAgICAgICA9IENvcmUgICAgICAgICAgICAgfHwge307CkNvcmUuQWdlbnQgICAgICAgPSBDb3JlLkFnZW50ICAgICAgIHx8IHt9OwpDb3JlLkFnZW50LkFkbWluID0gQ29yZS5BZ2VudC5BZG1pbiB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIENvcmUuQWdlbnQuQWRtaW4uWm51bnk0T1RPQk9EeW5hbWljRmllbGRTY3JlZW4KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIER5bmFtaWMgRmllbGQgU2NyZWVuIG1vZHVsZS4KICovCkNvcmUuQWdlbnQuQWRtaW4uWm51bnk0T1RPQk9EeW5hbWljRmllbGRTY3JlZW4gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgLy8gSW5pdGlhbGl6ZSBBbGxvY2F0aW9uIExpc3QKICAgICAgICBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LkluaXQoIiNBdmFpbGFibGVFbGVtZW50cywgI0Rpc2FibGVkRWxlbWVudHMsICNBc3NpZ25lZEVsZW1lbnRzLCAjQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzIiwgIi5BbGxvY2F0aW9uTGlzdCIsIFVwZGF0ZUZpZWxkcyk7CgogICAgICAgIC8vIEluaXRpYWxpemUgbGlzdCBmaWx0ZXIKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyRWxlbWVudHMnKSwgJCgnI0VsZW1lbnRzJykpOwogICAgICAgIENvcmUuVUkuVGFibGUuSW5pdFRhYmxlRmlsdGVyKCQoJyNGaWx0ZXJBdmFpbGFibGVFbGVtZW50cycpLCAkKCcjQXZhaWxhYmxlRWxlbWVudHMnKSk7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlckRpc2FibGVkRWxlbWVudHMnKSwgJCgnI0Rpc2FibGVkRWxlbWVudHMnKSk7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlckFzc2lnbmVkRWxlbWVudHMnKSwgJCgnI0Fzc2lnbmVkRWxlbWVudHMnKSk7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlckFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cycpLCAkKCcjQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzJykpOwoKICAgICAgICAkLmVhY2goWydTZWxlY3RBbGxBdmFpbGFibGVFbGVtZW50cycsICdTZWxlY3RBbGxEaXNhYmxlZEVsZW1lbnRzJywgICdTZWxlY3RBbGxBc3NpZ25lZEVsZW1lbnRzJywgJ1NlbGVjdEFsbEFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyddLCBmdW5jdGlvbiAoSW5kZXgsIEVsZW1lbnRzKSB7CgogICAgICAgICAgICAkKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdW25hbWU9IicrRWxlbWVudHMrJyJdJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBDb3JlLkZvcm0uU2VsZWN0QWxsQ2hlY2tib3hlcygkKHRoaXMpLCAkKCcjJyArIEVsZW1lbnRzKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyByZWdpc3RlciBhbGwgYmluZGluZ3MKICAgICAgICAkLmVhY2goWydBdmFpbGFibGVFbGVtZW50cycsICdEaXNhYmxlZEVsZW1lbnRzJywgJ0Fzc2lnbmVkRWxlbWVudHMnLCAnQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzJ10sIGZ1bmN0aW9uIChJbmRleCwgUGFyYW1ldGVyTmFtZSkgewoKICAgICAgICAgICAgdmFyIEVsZW1lbnQ7CiAgICAgICAgICAgICQoJyNBbGxTZWxlY3RlZCcrIFBhcmFtZXRlck5hbWUpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgIC8vIG1vdmUgYWxsIGxpIHRvIGFub3RoZXIgdWwgbGlzdC4KICAgICAgICAgICAgICAgICQoImlucHV0OmNoZWNrYm94OmNoZWNrZWQiKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudCA9ICQodGhpcykudmFsKCk7CgogICAgICAgICAgICAgICAgICAgIGlmKEVsZW1lbnQpewogICAgICAgICAgICAgICAgICAgICAgICAkKCdsaSMnK0VsZW1lbnQpLmFwcGVuZFRvKCcjJysgUGFyYW1ldGVyTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2xpIycrRWxlbWVudCkuZmluZCgnaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS5hdHRyKCduYW1lJywgUGFyYW1ldGVyTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyMnK0VsZW1lbnQpLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5hdHRyKCduYW1lJywgJ1NlbGVjdEFsbCcrIFBhcmFtZXRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vIHJlbW92ZWQgYWxsIGNoZWNrZWQKICAgICAgICAgICAgICAgICQoImlucHV0OmNoZWNrYm94IikucHJvcCgnY2hlY2tlZCcsICQodGhpcykucHJvcCgiY2hlY2tlZCIpKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKLy8gUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICQoICIjRHluYW1pY0ZpZWxkU2VsZWN0ZWRPYmplY3RUeXBlIiApLmNoYW5nZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgbGV0IE9iamVjdFR5cGVGaWx0ZXIgPSAkKCIjRHluYW1pY0ZpZWxkU2VsZWN0ZWRPYmplY3RUeXBlIikudmFsKCk7CiAgICAgICAgICAgIGxldCBVUkwgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkU2NyZWVuJzsKICAgICAgICAgICAgVVJMICs9ICc7U2VsZWN0ZWRPYmplY3RUeXBlPScgKyBlbmNvZGVVUklDb21wb25lbnQoT2JqZWN0VHlwZUZpbHRlcik7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IFVSTDsKICAgICAgICB9KTsKLy8gRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgICQoJyNTdWJtaXQnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCcjRm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIGZ1bmN0aW9uIFVwZGF0ZUZpZWxkcyhFdmVudCwgVUkpIHsKCiAgICAgICAgdmFyIFRhcmdldCA9ICQoVUkuaXRlbSkucGFyZW50KCkuYXR0cignaWQnKTsKCiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgQXNzaWduZWRFbGVtZW50IGxpc3QsIHJlbmFtZSBpdCB0byBERiBuYW1lCiAgICAgICAgaWYgKFRhcmdldCA9PT0gJ0F2YWlsYWJsZUVsZW1lbnRzJykgewogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykuYXR0cignbmFtZScsICdBdmFpbGFibGVFbGVtZW50cycpOwogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5hdHRyKCduYW1lJywgJ1NlbGVjdEFsbEF2YWlsYWJsZUVsZW1lbnRzJyk7CiAgICAgICAgICAgICQoVUkuaXRlbSkuZmluZCgnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgICAgICB9CgogICAgICAgIC8vIHJlbmFtZSBpdCB0byBEaXNhYmxlZEVsZW1lbnRzCiAgICAgICAgZWxzZSBpZiAoVGFyZ2V0ID09PSAnRGlzYWJsZWRFbGVtZW50cycpIHsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJoaWRkZW4iXScpLmF0dHIoJ25hbWUnLCAnRGlzYWJsZWRFbGVtZW50cycpOwogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5hdHRyKCduYW1lJywgJ1NlbGVjdEFsbERpc2FibGVkRWxlbWVudHMnKTsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgICAgIH0KCiAgICAgICAgLy8gcmVuYW1lIGl0IHRvIEFzc2lnbmVkRWxlbWVudHMKICAgICAgICBlbHNlIGlmIChUYXJnZXQgPT09ICdBc3NpZ25lZEVsZW1lbnRzJykgewogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykuYXR0cignbmFtZScsICdBc3NpZ25lZEVsZW1lbnRzJyk7CiAgICAgICAgICAgICQoVUkuaXRlbSkuZmluZCgnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpLmF0dHIoJ25hbWUnLCAnU2VsZWN0QWxsQXNzaWduZWRFbGVtZW50cycpOwogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgICAgICAgfQoKICAgICAgICAvLyByZW5hbWUgaXQgdG8gQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzCiAgICAgICAgZWxzZSBpZiAoVGFyZ2V0ID09PSAnQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzJykgewogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykuYXR0cignbmFtZScsICdBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMnKTsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykuYXR0cignbmFtZScsICdTZWxlY3RBbGxBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMnKTsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2VudC5BZG1pbi5abnVueTRPVE9CT0R5bmFtaWNGaWVsZFNjcmVlbiB8fCB7fSkpOwoKQ29yZS5BZ2VudC5BZG1pbi5abnVueTRPVE9CT0R5bmFtaWNGaWVsZFNjcmVlbi5Jbml0KCk7Cg==</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.TreeView.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5UcmVlVmlldwogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gVHJlZVZpZXcuCiAqLwpDb3JlLkFnZW50LlRyZWVWaWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIEluc3RhbmNlCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5Qcm9jZXNzTWFuYWdlbWVudC5DYW52YXMKICAgICAqIEBtZW1iZXIge0FycmF5fQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIGxvY2FsIHZhcmlhYmxlIGZvciBKU1BsdW1iCiAgICAgKi8KCiAgICB2YXIgSW5zdGFuY2U7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgVHJlZVZpZXcuCiAgICAqLwoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFVwZGF0ZVRyZWUoKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgiI0RlcHRoIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgVXBkYXRlVHJlZSgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCIjWm9vbSIpLmJpbmQoJ2tleWRvd24gbW91c2Vkb3duJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCIjTGFzdFpvb20iKS52YWwoJCgiI1pvb20iKS52YWwoKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNab29tIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgWm9vbUluT3V0KCk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNUcmVlVmlld0Nsb3NlTGluayIpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgICB9KTsKCiAgICAgICAgd2luZG93LnNldFpvb20gPSBmdW5jdGlvbih6b29tLCBpbnN0YW5jZSwgdHJhbnNmb3JtT3JpZ2luKSB7CgogICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSB0cmFuc2Zvcm1PcmlnaW4gfHwgWzAuNSwgMC41XTsKICAgICAgICAgICAgdmFyIGVsID0gaW5zdGFuY2UuZ2V0Q29udGFpbmVyKCk7CgogICAgICAgICAgICB2YXIgcCA9IFsid2Via2l0IiwgIm1veiIsICJtcyIsICJvIl0sCiAgICAgICAgICAgICAgcyA9ICJzY2FsZSgiICsgem9vbSArICIpIiwKICAgICAgICAgICAgICBvU3RyaW5nID0gKHRyYW5zZm9ybU9yaWdpblswXSAqIDEwMCkgKyAiJSAiICsgKHRyYW5zZm9ybU9yaWdpblsxXSAqIDEwMCkgKyAiJSI7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKCiAgICAgICAgICAgIGluc3RhbmNlLnNldFpvb20oem9vbSk7CiAgICAgICAgICAgIGluc3RhbmNlLnJlcGFpbnRFdmVyeXRoaW5nKCk7CiAgICAgICAgfTsKCiAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpewogICAgICAgICAgICBJbnN0YW5jZS5yZXBhaW50RXZlcnl0aGluZygpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgWm9vbUluT3V0CiAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LlRyZWVWaWV3CiAgICAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBBcHBseSBab29tIGluIG9yIE91dCBvZiB0aGUgVHJlZVZpZXcgR3JhcGhpYy4KICAgICovCgogICAgZnVuY3Rpb24gWm9vbUluT3V0KCkgewogICAgICAgIHdpbmRvdy5zZXRab29tKHBhcnNlSW50KCQoIiNab29tIikudmFsKCkpLzEwMCwgSW5zdGFuY2UsIG51bGwpOwogICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgVXBkYXRlVHJlZQogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVXBkYXRlIFRyZWVWaWV3IHdpdGggZGVzaXJlZCBkZXB0aCBsZXZlbCBmb3IgdGhlIHNlbGVjdGVkIENvbmZpZ0l0ZW0uCiAgICAqICAgICAgVGhlIHRyZWUgbm9kZXMgYXJlIHB1dCBpbnRvIHRoZSBIVE1MIGVsZW1lbnQgJ0NhbnZhcycuCiAgICAqICAgICAgQWxzbyBpbmNsdWRlZCBpbiB0aGUgQ2FudmFzIGFyZSB0aGUgaGlkZGVuIGlucHV0IGZpZWxkcyBMaW5rRGF0YVNvdXJjZSBhbmQgTGlua0RhdGFUYXJnZXQKICAgICogICAgICB3aGljaCBsaXN0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbm9kZXMuCiAgICAqLwoKICAgIGZ1bmN0aW9uIFVwZGF0ZVRyZWUoKSB7CiAgICAgICAganNQbHVtYi5yZXNldCgpOwogICAgICAgICQoJyNDYW52YXMnKS5lbXB0eSgpOwoKICAgICAgICBsZXQgUmVxdWVzdFBhcmFtcyA9IHsKICAgICAgICAgICAgQWN0aW9uOiAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3JywKICAgICAgICAgICAgU3ViYWN0aW9uOiAgICAnTG9hZFRyZWVWaWV3JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEOiBlbmNvZGVVUklDb21wb25lbnQoJCgiI0NvbmZpZ0l0ZW1JRCIpLnZhbCgpKSwKICAgICAgICAgICAgVmVyc2lvbklEOiAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI1ZlcnNpb25JRCIpLnZhbCgpKSwKICAgICAgICAgICAgRGVwdGg6ICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI0RlcHRoIikudmFsKCkpCiAgICAgICAgfTsKCiAgICAgICAgJCgiI0RlcHRoIikucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAkKCIjQUpBWExvYWRlckRlcHRoIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CgogICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJyksCiAgICAgICAgICAgIFJlcXVlc3RQYXJhbXMsCiAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgJCgiI0NhbnZhcyIpLmh0bWwoUmVzcG9uc2UpOwoKICAgICAgICAgICAgICAgIEluc3RhbmNlID0ganNQbHVtYi5nZXRJbnN0YW5jZSh7CiAgICAgICAgICAgICAgICAgICAgUGFpbnRTdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDAuMSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGU6ICIjMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiAiIzAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVXaWR0aDogMC4xCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDb25uZWN0b3I6IFsiU3RyYWlnaHQiXSwKICAgICAgICAgICAgICAgICAgICBhbmNob3I6IFsnUGVyaW1ldGVyJywge3NoYXBlOiAnQ2lyY2xlJ31dLAogICAgICAgICAgICAgICAgICAgIEVuZHBvaW50OiBbJ0RvdCcsIHtyYWRpdXM6IDN9XSwKICAgICAgICAgICAgICAgICAgICBlbmRwb2ludFN0eWxlOiB7ZmlsbDogJ3JnYig4MCwgODEsIDgxKSd9LAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogJ0NhbnZhcycKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGRyYXdDb25uZWN0aW9ucyggSW5zdGFuY2UsICQoIiNMaW5rRGF0YVNvdXJjZSIpLnZhbCgpLCAnU291cmNlJyApOwogICAgICAgICAgICAgICAgZHJhd0Nvbm5lY3Rpb25zKCBJbnN0YW5jZSwgJCgiI0xpbmtEYXRhVGFyZ2V0IikudmFsKCksICdUYXJnZXQnICk7CgogICAgICAgICAgICAgICAgJCgiI0FKQVhMb2FkZXJEZXB0aCIpLmNzcygiZGlzcGxheSIsICJub25lIik7CiAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKCiAgICAgICAgICAgICAgICBpZiAoIHBhcnNlSW50KCQoIiNEZXB0aCIpLnZhbCgpKSA+IHBhcnNlSW50KCQoIiNNYXhEZXB0aCIpLnZhbCgpKSApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS52YWwoJCgiI01heERlcHRoIikudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikucmVtb3ZlQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkKCIjVHJlZVZpZXdNZXNzYWdlcyIpLmFkZENsYXNzKCJIaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikuYWRkQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2h0bWwnCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIGRyYXdDb25uZWN0aW9ucwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuVHJlZWVWaWV3CiAgICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2luc3RhbmNlfSAgSnNQbHVtYiBJbnN0YW5jZQogICAgICogQHBhcmFtIHtsaW5rX2RhdGF9IGxpbmsgbGlzdCwgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbgogICAgICogQHBhcmFtIHtvcHRpb259IFNwZWNpZnkgVGFyZ2V0L1NvdXJjZQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFdyaXRlIGFyY3MgKGFycm93cykgYmV0d2VlbiBlbGVtZW50cyBpbiB0aGUgZ3JhcGhpYy4KICAgICAqLwoKICAgIGZ1bmN0aW9uIGRyYXdDb25uZWN0aW9ucyhpbnN0YW5jZSwgbGlua19kYXRhLCBvcHRpb24pIHsKCiAgICAgICAgLy8gbm90aGluZyB0byBkbyB3aGVuIHRoZSBpbnB1dCBpcyBlbXB0ZQogICAgICAgIGlmIChsaW5rX2RhdGEgPT09ICIiKSByZXR1cm47CgogICAgICAgIHZhciBDb25uZWN0aW9ucyAgICA9IGxpbmtfZGF0YS5zcGxpdCgiOyIpOwogICAgICAgIHZhciBEaXJlY3Rpb24gICAgICA9IG9wdGlvbjsKICAgICAgICB2YXIgU2hvd0xpbmtMYWJlbHMgPSAkKCIjU2hvd0xpbmtMYWJlbHMiKS52YWwoKTsKCiAgICAgICAgQ29ubmVjdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHsKICAgICAgICAgICAgdmFyIExpbmsgPSBlbGVtZW50LnNwbGl0KCIsIik7CgogICAgICAgICAgICBsZXQgUGFyYW1zID0gewogICAgICAgICAgICAgICAgc291cmNlOiBMaW5rWzFdLAogICAgICAgICAgICAgICAgdGFyZ2V0OiBMaW5rWzBdLAogICAgICAgICAgICAgICAgc2NvcGU6ICJUcmVlVmlldyIsCiAgICAgICAgICAgICAgICBhbmNob3I6IFsiQm90dG9tIiwgIlRvcCJdLAogICAgICAgICAgICAgICAgcGFyYW1ldGVyczogewogICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb25JRDogRGlyZWN0aW9uICsgTGlua1sxXSArICItIiArIExpbmtbMF0gKyAiLSIgKyBMaW5rWzJdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoIFNob3dMaW5rTGFiZWxzID09PSAiWWVzIiApIHsKICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oUGFyYW1zLCB7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheXM6WwogICAgICAgICAgICAgICAgICAgICAgICBbICJBcnJvdyIsIHsgd2lkdGg6OSwgbGVuZ3RoOjEwLCBsb2NhdGlvbjogMC45NiwgaWQ6ImFycm93IiB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkxhYmVsIiwgeyBsYWJlbDogTGlua1syXSwgbG9jYXRpb246MC41LCBpZDoiTGFiZWwiLCBzdHlsZTogImJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYiIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihQYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICBvdmVybGF5czpbCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkFycm93IiwgeyB3aWR0aDo5LCBsZW5ndGg6MTAsIGxvY2F0aW9uOiAwLjk2LCBpZDoiYXJyb3ciIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhc3N1bWluZyB2YWxpZCBpbnB1dAogICAgICAgICAgICBpbnN0YW5jZS5jb25uZWN0KFBhcmFtcyk7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuVHJlZVZpZXcgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Admin.ITSMConfigItem.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWRtaW4gPSBJVFNNLkFkbWluIHx8IHt9OwoKLyoqCiogQG5hbWVzcGFjZSBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiogQG1lbWJlcm9mIElUU00uQWRtaW4KKiBAYXV0aG9yCiogQGRlc2NyaXB0aW9uCiogICAgICBbZGVzY3JpcHRpb25fcGxhY2Vob2xkZXJdCiovCklUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgJCgnI0ltcG9ydCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewoKICAgICAgICAvLyB2YWxpZGF0ZSBkcm9wZG93bgogICAgICAgIHZhciBDbGFzc1ZhbGlkYXRpb24gPSBDb3JlLkZvcm0uVmFsaWRhdGUuVmFsaWRhdGVFbGVtZW50KCQoJyNFeGFtcGxlQ2xhc3MnKSk7CiAgICAgICAgaWYgKCBDbGFzc1ZhbGlkYXRpb24gPT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHZhciBJbXBvcnRJdGVtID0gJCgnI0V4YW1wbGVDbGFzcycpLnZhbCgpOwoKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1GaWxlQ2xhc3NMaXN0O0V4YW1wbGVGaWxlPScgKyBJbXBvcnRJdGVtLAogICAgICAgICAgICBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICBpZiAoIVJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIkFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLiIpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgSXRlbUxpc3QgPSBSZXNwb25zZTsKCiAgICAgICAgICAgICAgICB2YXIgSFRNTFN0cmluZyA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKCdBZ2VudC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvQ2xhc3NJbXBvcnRDb25maXJtJywgewogICAgICAgICAgICAgICAgICAgICdDbGFzc2VzJzogSXRlbUxpc3QuQ2xhc3NlcywKICAgICAgICAgICAgICAgICAgICAnUm9sZXMnOiBJdGVtTGlzdC5Sb2xlcywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmFyIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPSAkKCcjVXBkYXRlRXhpc3RpbmdFbnRpdGllcycpLnByb3AoJ2NoZWNrZWQnKSA/ICcxJyA6ICcwJzsKCiAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICBUaXRsZTogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIk92ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICBIVE1MOiBIVE1MU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25DbGlja091dHNpZGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25Fc2NhcGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbkxlZnQ6ICdDZW50ZXInLAogICAgICAgICAgICAgICAgICAgIEFsbG93QXV0b0dyb3c6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgQnV0dG9uczogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0NvbmZpcm0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnQ29uZmlybSBDYWxsRm9yQWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERpYWxvZ1RlbXBsYXRlID0gQ29yZS5UZW1wbGF0ZS5SZW5kZXIoJ0RpYWxvZy9XYWl0aW5nJywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTDogRGlhbG9nVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlOiAiIiwgICAvLyBOb3QgYXBwbGljYWJsZSBpZiBoZWFkZXIgaXMgaGlkZGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2VPbkVzY2FwZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25MZWZ0OiAnQ2VudGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dBdXRvR3JvdzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVIZWFkZXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVGb290ZXI6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1DbGFzc0ltcG9ydDtFeGFtcGxlQ2xhc3M9JyArIEltcG9ydEl0ZW0gKyAnO1VwZGF0ZUV4aXN0aW5nRW50aXRpZXM9JyArIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFSZXNwb25zZSB8fCAhUmVzcG9uc2UuU3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dBbGVydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCBSZXNwb25zZS5FcnJvck1lc3NhZ2UgfHwgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJyApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZzp2aXNpYmxlJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnRGlzbWlzcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ0Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9KTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0gfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Add.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIGFkZC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5BZGQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkFkZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0YWJsZSBmaWx0ZXIuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyQ2xhc3NlcycpLCAkKCcjQ2xhc3NlcycpKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.CustomerSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5DdXN0b21lclNlYXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCAtIFRoZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRoIGF1dG9jb21wbGV0ZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgQ3VzdG9tZXJTZWFyY2hJdGVtSURzID0gQ29yZS5Db25maWcuR2V0KCdDdXN0b21lclNlYXJjaEl0ZW1JRHMnKTsKCiAgICAgICAgaWYgKHR5cGVvZiBDdXN0b21lclNlYXJjaEl0ZW1JRHMgIT09ICd1bmRlZmluZWQnICYmIEFycmF5LmlzQXJyYXkoQ3VzdG9tZXJTZWFyY2hJdGVtSURzKSAmJiBDdXN0b21lclNlYXJjaEl0ZW1JRHMubGVuZ3RoKSB7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEN1c3RvbWVyU2VhcmNoSXRlbUlEcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgLy8gZXNjYXBlIHBvc3NpYmxlIGNvbG9ucyAoOikgaW4gZWxlbWVudCBpZCBiZWNhdXNlIGpRdWVyeSBjYW4gbm90IGhhbmRsZSBpdCBpbiBpZCBhdHRyaWJ1dGUgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoIiMiICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQ3VzdG9tZXJTZWFyY2hJdGVtSURzW2ldKSApICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Dashboard.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG5hdmJhci4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkRhc2hib2FyZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgRGFzaGxldERhdGEgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtR2VuZXJpYycpOwoKICAgICAgICBpZiAodHlwZW9mIERhc2hsZXREYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwoKICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIENvbnRlbnRVcGRhdGUgZXZlbnQgdG8gaW5pdGlhdGUgdGlja2V0IGdlbmVyaWMgZXZlbnRzIG9uIHdpZGdldCB1cGRhdGUKICAgICAgICAgICAgQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5BSkFYLkNvbnRlbnRVcGRhdGUuQ2FsbGJhY2snLCBmdW5jdGlvbigkV2lkZ2V0RWxlbWVudCkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkV2lkZ2V0RWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgJFdpZGdldEVsZW1lbnQuc2VhcmNoKERhc2hsZXREYXRhLk5hbWUpICE9PSBwYXJzZUludCgnLTEnLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IERhc2hsZXREYXRhIC0gSGFzaCB3aXRoIGNvbnRhaW5lciBuYW1lIGFuZCBIVE1MIG5hbWUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyBkYXNoYm9hcmQgd2lkZ2V0IElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICovCiAgICBmdW5jdGlvbiBJVFNNQ29uZmlnSXRlbUdlbmVyaWMgKERhc2hsZXREYXRhKSB7CgogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5maW5kKCcuVGFiLkFjdGlvbnMgbGkgYScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBDdXN0b21lcklELAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklELAogICAgICAgICAgICAgICAgICAgIEZpbHRlcjsKCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgICAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVySURdJykudmFsKCkgfHwgJyc7CiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVyVXNlcklEXScpLnZhbCgpIHx8ICcnOwogICAgICAgICAgICAgICAgRmlsdGVyICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWZpbHRlcicpOwoKICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICBDb3JlLkFKQVguQ29udGVudFVwZGF0ZSgkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpKSwgQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCdBY3Rpb24nKSArICc7U3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT0nICsgRGFzaGxldERhdGEuTmFtZSArICc7Q3VzdG9tZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVySUQpICsgJztDdXN0b21lclVzZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVyVXNlcklEKSArICc7RmlsdGVyPScgKyBGaWx0ZXIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5yZW1vdmVDbGFzcygnTG9hZGluZycpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuZmluZCgnLkRhdGFUYWJsZSB0aCBhJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIEN1c3RvbWVySUQsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNvbHVtbicpLAogICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICA9ICcnLAogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5T2JqICAgICA9ICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmZpbmQoJ3RoLlNvcnREZXNjZW5kaW5nTGFyZ2UsIHRoLlNvcnRBc2NlbmRpbmdMYXJnZScpOwoKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJJRF0nKS52YWwoKSB8fCAnJzsKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJVc2VySURdJykudmFsKCkgfHwgJyc7CgogICAgICAgICAgICAgICAgaWYgKCRPcmRlckJ5T2JqICYmICRPcmRlckJ5T2JqLmhhc0NsYXNzKCdTb3J0RGVzY2VuZGluZ0xhcmdlJykpIHsKICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoJE9yZGVyQnlPYmogJiYgJE9yZGVyQnlPYmouaGFzQ2xhc3MoJ1NvcnRBc2NlbmRpbmdMYXJnZScpKSB7CiAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuYWRkQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkpLCBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpICsgJztTdWJhY3Rpb249RWxlbWVudDtOYW1lPScgKyBEYXNobGV0RGF0YS5OYW1lICsgJztDdXN0b21lcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJJRCkgKyAnO0N1c3RvbWVyVXNlcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJVc2VySUQpICsgJztTb3J0Qnk9JyArIFNvcnRCeSArICc7T3JkZXJCeT0nICsgT3JkZXJCeSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Edit.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdAogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gZWRpdC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0CiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBmb3JtIHN1Ym1pdHRpb24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjQ2FuY2VsQnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoQ29yZS5VSS5Qb3B1cC5DdXJyZW50SXNQb3B1cFdpbmRvdygpKSB7CiAgICAgICAgICAgICAgICBDb3JlLlVJLlBvcHVwLkNsb3NlUG9wdXAoKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQoJyNDbGFzc0l0ZW0gPiAuQ29udGVudCA+IGZpZWxkc2V0JykgKTsKICAgICAgICBDb3JlLkFwcC5TdWJzY3JpYmUoJ0V2ZW50LkFKQVguRm9ybVVwZGF0ZS5DYWxsYmFjaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQoJyNDbGFzc0l0ZW0gPiAuQ29udGVudCA+IGZpZWxkc2V0JykgKQogICAgICAgIH0pOwoKICAgICAgICBPcGVuUmVsZXZhbnRQYWdlcygpOwogICAgICAgICQoJ2Zvcm0nKS5vbignc3VibWl0JywgT3BlblJlbGV2YW50UGFnZXMpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIE9wZW5zIHRoZSBkZXRhaWxzIG9mIGFsbCBwYWdlcyB0aGF0IGNvbnRhaW4gaW52YWxpZCBmb3JtIGlucHV0IGZpZWxkcyBvciBjb250YWluIGEgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVudC4KICAgICAqLwogICAgZnVuY3Rpb24gT3BlblJlbGV2YW50UGFnZXMoKSB7CiAgICAgICAgbGV0ICRSZWxldmFudERldGFpbHNPcGVuZWQgPSBmYWxzZTsKICAgICAgICAkKCdkZXRhaWxzJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmZpbmQoJy5FcnJvcicpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignb3BlbicsIHRydWUpOwogICAgICAgICAgICAgICAgJFJlbGV2YW50RGV0YWlsc09wZW5lZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoJCh0aGlzKS5maW5kKCc6Zm9jdXMnKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ29wZW4nLCB0cnVlKTsKICAgICAgICAgICAgICAgICRSZWxldmFudERldGFpbHNPcGVuZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKCEkUmVsZXZhbnREZXRhaWxzT3BlbmVkKSB7CiAgICAgICAgICAgICQoJ2RldGFpbHM6Zmlyc3Qtb2YtdHlwZScpLmF0dHIoJ29wZW4nLCB0cnVlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBIaWRlU2hvdyBhIHNlY3Rpb24gb3IgcGFnZSBoZWFkZXIgaWYgdGhlIGNvbXBsZXRlIGNvbnRlbnQgaXMgQUNMSGlkZGVuCiAgICAgKi8KICAgIGZ1bmN0aW9uIEhpZGVTaG93Q29tcGxldGVQYWdlU2VjdGlvbiggJEVsZW1lbnQsIElzUGFnZSApIHsKICAgICAgICBpZiAoICFJc1BhZ2UgKSB7CiAgICAgICAgICAgICRFbGVtZW50LmNoaWxkcmVuKCJkZXRhaWxzLlBhZ2VDb250ZW50IikuZWFjaCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQodGhpcyksIHRydWUgKQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGxldCBIaWRlUGFnZSA9IElzUGFnZSAmJiAkRWxlbWVudC5jaGlsZHJlbigiLlJvd19TZWN0aW9uSGVhZGVyIikubGVuZ3RoID4gMDsKCiAgICAgICAgJEVsZW1lbnQuY2hpbGRyZW4oIi5Sb3dfU2VjdGlvbkhlYWRlciIpLmVhY2goIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBsZXQgJFNlY3Rpb25Sb3dzID0gJCh0aGlzKS5uZXh0VW50aWwoIi5Sb3dfU2VjdGlvbkhlYWRlciIpLAogICAgICAgICAgICAgICAgVmlzaWJsZVJvd3MgID0gJFNlY3Rpb25Sb3dzLmZpbHRlcigiOm5vdCgub29vQUNMSGlkZGVuKSIpLmxlbmd0aCA+IDA7CgogICAgICAgICAgICBpZiAoICQodGhpcykuaGFzQ2xhc3MoIm9vb0FDTEhpZGRlbiIpICkgewogICAgICAgICAgICAgICAgaWYgKCBWaXNpYmxlUm93cyApIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICBIaWRlUGFnZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggIVZpc2libGVSb3dzICkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoIm9vb0FDTEhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgSGlkZVBhZ2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBpZiAoIElzUGFnZSApIHsKICAgICAgICAgICAgaWYgKCAkRWxlbWVudC5oYXNDbGFzcygib29vQUNMSGlkZGVuIikgKSB7CiAgICAgICAgICAgICAgICBpZiAoICFIaWRlUGFnZSApIHsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5yZW1vdmVDbGFzcygib29vQUNMSGlkZGVuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIEhpZGVQYWdlICkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmFkZENsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.History.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgovKmVzbGludC1kaXNhYmxlIG5vLXdpbmRvdyovCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5LgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHBvcHVwLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnYS5MaW5rWm9vbVZpZXcnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHdpbmRvdy5vcGVuZXIuQ29yZS5VSS5Qb3B1cC5GaXJlUG9wdXBFdmVudCgnVVJMJywgeyBVUkw6ICQodGhpcykuYXR0cignaHJlZicpfSk7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuQ2xvc2VQb3B1cCgpOwogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbVNlYXJjaCAgICA9IENvcmUuQ29uZmlnLkdldCgnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnKTsKICAgICAgICB2YXIgSVRTTUNvbmZpZ0l0ZW1BY3Rpb25Sb3cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtQWN0aW9uUm93JykgfHwge307CgogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKElUU01Db25maWdJdGVtU2VhcmNoKSB7CiAgICAgICAgICAgICQoJyNJVFNNQ29uZmlnSXRlbVNlYXJjaCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygKICAgICAgICAgICAgICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guUHJvZmlsZSksCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guQ2xhc3NJRCkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgJC5lYWNoKElUU01Db25maWdJdGVtQWN0aW9uUm93LCBmdW5jdGlvbihLZXksIERhdGEpIHsKICAgICAgICAgICAgSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93LkFkZEFjdGlvbnMoJCgnI0NvbmZpZ0l0ZW1JRF8nICsgS2V5KSwgRGF0YSk7CiAgICAgICAgfSk7CgogICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5Jbml0KCk7CgogICAgICAgIENvcmUuVUkuSW5pdENoZWNrYm94U2VsZWN0aW9uKCQoJ3RhYmxlIHRkLkNoZWNrYm94JykpOwoKICAgICAgICAvLyBjaGFuZ2UgZXZlbnQgZm9yIGNvbHVtbiBmaWx0ZXIKICAgICAgICAkKCcuQ29sdW1uRmlsdGVyJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIC8vIGRlZmluZSB2YXJpYWJsZXMKICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCJCYXNlbGluayIpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCJBY3Rpb24iKSArICc7JyArIENvcmUuQ29uZmlnLkdldCgnTGlua1BhZ2UnKSArICdDYXRlZ29yeT0nICsgQ29yZS5Db25maWcuR2V0KCdDYXRlZ29yeScpICsgJzsnOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Search.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2ggPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzZWFyY2ggc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZycpOwogICAgICAgIGlmICggSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nICkgewogICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coCiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cuQWN0aW9uLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLlByb2ZpbGUpLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLkNsYXNzSUQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gcmVidWlsZCBhdHRyaWJ1dGUgc2VsZWN0aW9uLCBvbmx5IHNob3cgYXZhaWxhYmxlIGF0dHJpYnV0ZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAvLyBnZXQgb3JpZ2luYWwgc2VsZWN0aW9uIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyBhbmQgY2xvbmUgaXQKICAgICAgICB2YXIgJEF0dHJpYnV0ZUNsb25lID0gJCgnI0F0dHJpYnV0ZU9yaWcgb3B0aW9uJykuY2xvbmUoKSwKICAgICAgICAgICAgJEF0dHJpYnV0ZVNlbGVjdGlvbiA9ICQoJyNBdHRyaWJ1dGUnKS5lbXB0eSgpLAogICAgICAgICAgICBWYWx1ZTsKCiAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgJEF0dHJpYnV0ZUNsb25lLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICBWYWx1ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCQodGhpcykuYXR0cigndmFsdWUnKSk7CiAgICAgICAgICAgIGlmICghJCgnI1NlYXJjaEluc2VydCBsYWJlbCNMYWJlbCcgKyBWYWx1ZSkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLmFwcGVuZCgkKHRoaXMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IG9mIGF0dHJpYnV0ZSB0byBhZGQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBhZGRzIG9uZSBhdHRyaWJ1dGUgZm9yIHNlYXJjaAogICAgICovCiAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQgPSBmdW5jdGlvbiAoQXR0cmlidXRlKSB7CgogICAgICAgIC8vIGVzY2FwZSBwb3NzaWJsZSBjb2xvbnMgKDopIGluIGVsZW1lbnQgaWQgYmVjYXVzZSBqUXVlcnkgY2FuIG5vdCBoYW5kbGUgaXQgaW4gaWQgYXR0cmlidXRlIHNlbGVjdG9ycwogICAgICAgIEF0dHJpYnV0ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSk7CgogICAgICAgIHZhciAkTGFiZWwgPSAkKCcjU2VhcmNoQXR0cmlidXRlc0hpZGRlbiBsYWJlbCNMYWJlbCcgKyBBdHRyaWJ1dGUpOwoKICAgICAgICBpZiAoJExhYmVsLmxlbmd0aCkgewogICAgICAgICAgICAkTGFiZWwucHJldigpLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLm5leHQoKS5jbG9uZSgpLmFwcGVuZFRvKCcjU2VhcmNoSW5zZXJ0JykKCiAgICAgICAgICAgICAgICAvLyBiaW5kIGNsaWNrIGZ1bmN0aW9uIHRvIHJlbW92ZSBidXR0b24gbm93CiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLnBhcmVudCgpOwogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSgkRWxlbWVudCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2V0IGF1dG9jb21wbGV0ZSB0byBjdXN0b21lciB0eXBlIGZpZWxkcwogICAgICAgICAgICAgICAgJCgnI1NlYXJjaEluc2VydCcpLmZpbmQoJy5JVFNNQ3VzdG9tZXJTZWFyY2gnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBJbnB1dElEID0gJCh0aGlzKS5hdHRyKCdpZCcpICsgJ0F1dG9jb21wbGV0ZSc7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnSVRTTUN1c3RvbWVyU2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdpZCcsIElucHV0SUQpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldigpLmF0dHIoJ2lkJywgSW5wdXRJRCArICdTZWxlY3RlZCcpOwoKICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoJyMnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSW5wdXRJRCkgKSApOwoKICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGRpYWxvZyBjbG9zdXJlIHdoZW4gc2VsZWN0IGEgY3VzdG9tZXIgZnJvbSB0aGUgbGlzdAogICAgICAgICAgICAgICAgICAgICQoJ3VsLnVpLWF1dG9jb21wbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hJbnNlcnQnKSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgZm9ybSAgb3IgYW55IGVsZW1lbnQKICAgICAqICAgICAgd2l0aGluIHRoaXMgZm9ybSBjaGVjay4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlbW92ZSBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudC4KICAgICAqLwoKICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSA9IGZ1bmN0aW9uICgkRWxlbWVudCkgewogICAgICAgICRFbGVtZW50LnByZXYoKS5wcmV2KCkucmVtb3ZlKCk7CiAgICAgICAgJEVsZW1lbnQucHJldigpLnJlbW92ZSgpOwogICAgICAgICRFbGVtZW50LnJlbW92ZSgpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQcm9maWxlIFRoZSBwcm9maWxlIG5hbWUgdGhhdCB3aWxsIGJlIGRlbGV0ZS4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhIHByb2ZpbGUgdmlhIGFuIGFqYXggcmVxdWVzdHMuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNlYXJjaFByb2ZpbGVEZWxldGUoUHJvZmlsZSkgewogICAgICAgIHZhciBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWFByb2ZpbGVEZWxldGUnLAogICAgICAgICAgICBQcm9maWxlOiBQcm9maWxlLAogICAgICAgICAgICBDbGFzc0lEOiAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpCiAgICAgICAgfTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB7fQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqIEBkZXNjcmlwdGlvbiBTaG93cyB3YWl0aW5nIGRpYWxvZyB1bnRpbCBzZWFyY2ggc2NyZWVuIGlzIHJlYWR5LgogICAgICovCiAgICBmdW5jdGlvbiBTaG93V2FpdGluZ0RpYWxvZygpIHsKICAgICAgICB2YXIgQ29udGVudCA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKAogICAgICAgICAgICAnQWdlbnQvSVRTTUNvcmUvTG9hZGluZ0RpYWxvZycsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNwYW5UaXRsZTogQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKAogICAgICAgICAgICBDb250ZW50LAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSwKICAgICAgICAgICAgJzEwcHgnLAogICAgICAgICAgICAnQ2VudGVyJywKICAgICAgICAgICAgdHJ1ZQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSBub25lCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzZXRzIGFsbCBzZWFyY2ggZGlhbG9nIHNldHRpbmdzCiAgICAgKi8KCiAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2cgPSBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gaGlkZSBhZGQgdGVtcGxhdGUgYmxvY2sKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAvLyBoaWRlIHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnBhcmVudCgpLmhpZGUoKS5wcmV2KCkuaGlkZSgpLnByZXYoKS5oaWRlKCk7CgogICAgICAgIC8vIHNlYXJjaCBwcm9maWxlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgJiYgJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAhPT0gJ2xhc3Qtc2VhcmNoJykgewoKICAgICAgICAgICAgLy8gc2hvdyBkZWxldGUgYnV0dG9uCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlRGVsZXRlJykuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5zaG93KCk7CgogICAgICAgICAgICAvLyBzaG93IHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2F2ZVByb2ZpbGUnKS5wYXJlbnQoKS5zaG93KCkucHJldigpLnNob3coKS5wcmV2KCkuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2V0IFNhdmVQcm9maWxlIHRvIDAKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJCgnLkRpYWxvZzp2aXNpYmxlJykpOwoKICAgICAgICAvLyByZWdpc3RlciBhZGQgb2YgYXR0cmlidXRlCiAgICAgICAgJCgnI0F0dHJpYnV0ZScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBBdHRyaWJ1dGUgPSAkKCcjQXR0cmlidXRlJykudmFsKCk7CiAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZUFkZChBdHRyaWJ1dGUpOwogICAgICAgICAgICBUYXJnZXROUy5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwoKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZXZlbnQgZm9yIHRyZWUgc2VsZWN0aW9uIGRpYWxvZwogICAgICAgICAgICAkKCcuU2hvd1RyZWVTZWxlY3Rpb24nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgQ29yZS5VSS5UcmVlU2VsZWN0aW9uLlNob3dUcmVlU2VsZWN0aW9uKCQodGhpcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgcmV0dXJuIGtleQogICAgICAgICQoJyNTZWFyY2hGb3JtJykub2ZmKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcpLm9uKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBpZiAoKEV2ZW50LmNoYXJDb2RlIHx8IEV2ZW50LmtleUNvZGUpID09PSAxMykgewogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgc3VibWl0CiAgICAgICAgJCgnI1NlYXJjaEZvcm1TdWJtaXQnKS5vZmYoJ2NsaWNrLkRvU2VhcmNoJykub24oJ2NsaWNrLkRvU2VhcmNoJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgdmFyIFNob3duQXR0cmlidXRlcyA9IFtdOwoKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlQWRkQWN0aW9uLCAjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS5pcygnOnZpc2libGUnKSAmJiAkKCcjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS52YWwoKSkgewogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyByZW1lbWJlciBzaG93biBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQgbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmF0dHIoJ2lkJykpIHsKICAgICAgICAgICAgICAgICAgICBTaG93bkF0dHJpYnV0ZXMucHVzaCgkKHRoaXMpLmF0dHIoJ2lkJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI1NlYXJjaEZvcm0gI1Nob3duQXR0cmlidXRlcycpLnZhbChTaG93bkF0dHJpYnV0ZXMuam9pbignOycpKTsKCiAgICAgICAgICAgIC8vIE5vcm1hbCByZXN1bHRzIG1vZGUgd2lsbCByZXR1cm4gSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hGb3JtICNSZXN1bHRGb3JtJykudmFsKCkgPT09ICdOb3JtYWwnKSB7CgogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgLy8gUHJpbnQgYW5kIENTViBzaG91bGQgb3BlbiBpbiBhIG5ldyB3aW5kb3csIG5vIHdhaXRpbmcgZGlhbG9nCiAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLmF0dHIoJ3RhcmdldCcsICdTZWFyY2hSZXN1bHRQYWdlJyk7CiAgICAgICAgICAgICAgICBpZiAoIUNoZWNrRm9yU2VhcmNoZWRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuYXR0cigndGFyZ2V0JywgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkluaXQoKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuU2V0U3VibWl0RnVuY3Rpb24oJCgnI1NlYXJjaEZvcm0nKSwgZnVuY3Rpb24gKEZvcm0pIHsKICAgICAgICAgICAgRm9ybS5zdWJtaXQoKTsKCiAgICAgICAgICAgIC8vIFNob3cgb25seSBhIHdhaXRpbmcgZGlhbG9nIGZvciBOb3JtYWwgcmVzdWx0cyBtb2RlLCBiZWNhdXNlIHRoaXMgcmVzdWx0CiAgICAgICAgICAgIC8vICB3aWxsIHJldHVybiB0aGUgSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cuCiAgICAgICAgICAgIGlmICgkKCcjU2VhcmNoRm9ybSAjUmVzdWx0Rm9ybScpLnZhbCgpID09PSAnTm9ybWFsJykgewogICAgICAgICAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBsb2FkIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSggJCh0aGlzKS52YWwoKSApOwogICAgICAgIH0pOwoKICAgICAgICAvLyBzaG93IGFkZCBwcm9maWxlIGJsb2NrIG9yIG5vdAogICAgICAgICQoJyNTZWFyY2hQcm9maWxlTmV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkQmxvY2snKS50b2dnbGUoKTsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykuZm9jdXMoKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAvLyBhZGQgbmV3IHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEFjdGlvbicpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgUHJvZmlsZU5hbWUsICRFbGVtZW50MTsKCiAgICAgICAgICAgIC8vIGdldCBuYW1lCiAgICAgICAgICAgIFByb2ZpbGVOYW1lID0gJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykudmFsKCk7CgogICAgICAgICAgICAvLyBjaGVjayBuYW1lCiAgICAgICAgICAgIGlmICghUHJvZmlsZU5hbWUubGVuZ3RoIHx8IFByb2ZpbGVOYW1lLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIG5hbWUgdG8gcHJvZmlsZSBzZWxlY3Rpb24KICAgICAgICAgICAgJEVsZW1lbnQxID0gJCgnI1NlYXJjaFByb2ZpbGUnKS5jaGlsZHJlbigpLmZpcnN0KCkuY2xvbmUoKTsKICAgICAgICAgICAgJEVsZW1lbnQxLnRleHQoUHJvZmlsZU5hbWUpOwogICAgICAgICAgICAkRWxlbWVudDEuYXR0cigndmFsdWUnLCBQcm9maWxlTmFtZSk7CiAgICAgICAgICAgICRFbGVtZW50MS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmFwcGVuZCgkRWxlbWVudDEpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgICAgICAvLyBzZXQgaW5wdXQgYm94IHRvIGVtcHR5CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLnZhbCgnJyk7CgogICAgICAgICAgICAvLyBoaWRlIGFkZCB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAgICAgLy8gaGlkZSBzYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUgYmxvY2sKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucGFyZW50KCkuaGlkZSgpLnByZXYoKS5oaWRlKCkucHJldigpLmhpZGUoKTsKCiAgICAgICAgICAgIC8vIHNldCBTYXZlUHJvZmlsZSB0byAxCiAgICAgICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKCiAgICAgICAgICAgIC8vIHNob3cgZGVsZXRlIGJ1dHRvbgogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLnNob3coKTsKCiAgICAgICAgICAgIC8vIHNob3cgcHJvZmlsZSBsaW5rCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuc2hvdygpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBkaXJlY3QgbGluayB0byBwcm9maWxlCiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFNlYXJjaFByb2ZpbGUgPSAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpLAogICAgICAgICAgICAgICAgU2VhcmNoUHJvZmlsZUFjdGlvbiA9ICQoJyNTZWFyY2hBY3Rpb24nKS52YWwoKSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPSAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpOwoKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBTZWFyY2hQcm9maWxlQWN0aW9uICsKICAgICAgICAgICAgJztTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPScgKyBlbmNvZGVVUklDb21wb25lbnQoU2VhcmNoUHJvZmlsZSkKICAgICAgICAgICAgKyAnO0NsYXNzSUQ9JyArIENsYXNzSUQ7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gZGVsZXRlIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCd2YWx1ZScpICE9PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQnKS50ZXh0KCcnKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbW90ZQogICAgICAgICAgICAgICAgICAgIFNlYXJjaFByb2ZpbGVEZWxldGUoJCh0aGlzKS52YWwoKSk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsb2NhbAogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlKCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHNob3cgZnVsbHRleHQKICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQoJ0Z1bGx0ZXh0Jyk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykudHJpZ2dlcignY2hhbmdlJyk7CgogICAgICAgICAgICBpZiAoJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAmJiAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpID09PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgLy8gaGlkZSBkZWxldGUgbGluawogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVEZWxldGUnKS5oaWRlKCk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuaGlkZSgpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7UHJvZmlsZX0gVGhlIHByb2ZpbGUgdGhhdCBpcyBzZXQgdG8gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHNlYXJjaCBkaWFsb2cgd2l0aCB0aGUgc2VsZWN0ZWQgcHJvZmlsZQogICAgICovCgogICAgVGFyZ2V0TlMuTG9hZFByb2ZpbGUgPSBmdW5jdGlvbiAoUHJvZmlsZSkgewogICAgICAgIHZhciBCYXNlTGluayA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgQWN0aW9uID0gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoOycsCiAgICAgICAgICAgIFN1YkFjdGlvbiA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7JywKICAgICAgICAgICAgQ2xhc3NJRCA9ICdDbGFzc0lEPScgKyAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpICsgJzsnLAogICAgICAgICAgICBTZWFyY2hQcm9maWxlID0gJ1Byb2ZpbGU9JyArIFByb2ZpbGUsCiAgICAgICAgICAgIFVSTCA9ICBCYXNlTGluayArIEFjdGlvbiArIFN1YkFjdGlvbiArIENsYXNzSUQgKyBTZWFyY2hQcm9maWxlOwoKICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLmFkZENsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNBSkFYVXBkYXRlJyksIFVSTCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcycpIHx8IFtdOwogICAgICAgICAgICAkLmVhY2goSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzLCBmdW5jdGlvbihfSWR4LCBBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSkpOwogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIFRhcmdldE5TLlNldFNlYXJjaERpYWxvZyggJyRFbnZ7IkFjdGlvbiJ9JyApOwogICAgICAgICAgICAkKCcjSVRTTVNlYXJjaFByb2ZpbGUnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoRmllbGRzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcuRGlhbG9nOnZpc2libGUgI1NlYXJjaEZvcm1TdWJtaXQnKS5hcHBlbmRUbygkKCcuRGlhbG9nOnZpc2libGUgPiAuQ29udGVudCA+IC5Db250ZW50Rm9vdGVyJykpOwogICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0RpdkNsYXNzSUQnKS5yZW1vdmVDbGFzcygndWktYXV0b2NvbXBsZXRlLWxvYWRpbmcnKTsKICAgICAgICAgICAgQ29yZS5VSS5JbnB1dEZpZWxkcy5BY3RpdmF0ZSgkKCcjU2VhcmNoRm9ybScpKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Q2xhc3NJRH0gVGhlIGNsYXNzIGlkIHRoYXQgaXMgc2V0IHRvIHRoZSBzZWFyY2ggZGlhbG9nCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiByZWZyZXNoIHRoZSBzZWFyY2ggZGlhbG9nIHdpdGggdGhlIHNlbGVjdGVkIGNsYXNzCiAgICAgKi8KCiAgICBUYXJnZXROUy5Mb2FkQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIEJhc2VMaW5rID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLAogICAgICAgICAgICBBY3Rpb24gPSAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7JywKICAgICAgICAgICAgU3ViQWN0aW9uID0gJ1N1YmFjdGlvbj1BSkFYVXBkYXRlOycsCiAgICAgICAgICAgIENsYXNzSUQgPSAnQ2xhc3NJRD0nICsgJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSArICc7JywKICAgICAgICAgICAgVVJMID0gIEJhc2VMaW5rICsgQWN0aW9uICsgU3ViQWN0aW9uICsgQ2xhc3NJRCArIFNlYXJjaFByb2ZpbGU7CgogICAgICAgICQoJyNEaXZDbGFzc0lEJykuYWRkQ2xhc3MoJ3VpLWF1dG9jb21wbGV0ZS1sb2FkaW5nJyk7CiAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0FKQVhVcGRhdGUnKSwgVVJMLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIElUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcyA9IENvcmUuQ29uZmlnLkdldCgnSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzJykgfHwgW107CiAgICAgICAgICAgICQuZWFjaChJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMsIGZ1bmN0aW9uKF9JZHgsIEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5TZWFyY2hBdHRyaWJ1dGVBZGQoQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQXR0cmlidXRlKSk7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgVGFyZ2V0TlMuU2V0U2VhcmNoRGlhbG9nKCAnJEVudnsiQWN0aW9uIn0nICk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoUHJvZmlsZScpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0lUU01TZWFyY2hGaWVsZHMnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJy5EaWFsb2c6dmlzaWJsZSAjU2VhcmNoRm9ybVN1Ym1pdCcpLmFwcGVuZFRvKCQoJy5EaWFsb2c6dmlzaWJsZSA+IC5Db250ZW50ID4gLkNvbnRlbnRGb290ZXInKSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtU3VibWl0JykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLnJlbW92ZUNsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hGb3JtJykpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBDaGVja0ZvclNlYXJjaGVkVmFsdWVzCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5TZWFyY2gKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IEZhbHNlIGlmIG5vIHZhbHVlcyB3ZXJlIGZvdW5kLCB0cnVlIGlmIHZhbHVlcyB3aGVyZSB0aGVyZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBDaGVja3MgaWYgYW55IHZhbHVlcyB3ZXJlIGVudGVyZWQgaW4gdGhlIHNlYXJjaC4KICAgICAqICAgICAgSWYgbm90aGluZyBhdCBhbGwgZXhpc3RzLCBpdCBhbGVydHMgd2l0aCB0cmFuc2xhdGVkOgogICAgICogICAgICAiUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nIgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkgewogICAgICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgU2VhcmNoRm9ybSBsYWJlbHMKICAgICAgICB2YXIgU2VhcmNoVmFsdWVGbGFnID0gZmFsc2U7CiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAkTGFiZWxFbGVtZW50ID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgICRGaWVsZEVsZW1lbnQgPSAkTGFiZWxFbGVtZW50Lm5leHQoJy5GaWVsZCcpOwogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRWxlbWVudE5hbWUpICsgJ10nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGlucHV0IGVsZW1lbnQgd2l0aCB0aGUgc2VsZWN0ZWQgbmFtZQogICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgbmV4dCAic2VsZWN0IiBlbGVtZW50IGFuZCB1c2UgdGhhdCBvbmUgZm9yIGNoZWNraW5nCiAgICAgICAgICAgICAgICBpZiAoISRFbGVtZW50Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCh0aGlzKS5uZXh0KCkuZmluZCgnc2VsZWN0Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRml4IGZvciBidWcjMTA4NDU6IG1ha2Ugc3VyZSB0aW1lIHNsb3QgZmllbGRzIHdpdGggVGltZUlucHV0Rm9ybWF0CiAgICAgICAgICAgICAgICAvLyAnSW5wdXQnIHNldCBhcmUgYmVpbmcgY29uc2lkZXJlZCBjb3JyZWN0bHksIHRvby4gQXMgdGhpcyBpcyBvbmx5CiAgICAgICAgICAgICAgICAvLyByZWxldmFudCBmb3Igc2VhcmNoIHR5cGUgJ1RpbWVTbG90Jywgd2UgY2hlY2sgZm9yIHRoZSBmaXJzdAogICAgICAgICAgICAgICAgLy8gaW5wdXQgdHlwZT10ZXh0IGVsZW1lbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgZWxlbWVudC4KICAgICAgICAgICAgICAgIC8vIEFsbCB0aW1lIGZpZWxkIGVsZW1lbnRzIGhhdmUgdG8gYmUgZmlsbGVkIGluLCBidXQgaWYgb25seSBvbmUKICAgICAgICAgICAgICAgIC8vIGlzIG1pc3NpbmcsIHdlIHRyZWF0IHRoZSB3aG9sZSBmaWVsZCBhcyBpbnZhbGlkLgogICAgICAgICAgICAgICAgaWYgKCRGaWVsZEVsZW1lbnQuZmluZCgnaW5wdXRbbmFtZSQ9IlNlYXJjaFR5cGUiXScpLnZhbCgpID09PSAnVGltZVNsb3QnICYmICEkRmllbGRFbGVtZW50LmZpbmQoJ3NlbGVjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJEZpZWxkRWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykuZmlyc3QoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRFbGVtZW50LnZhbCgpICYmICRFbGVtZW50LnZhbCgpICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICBTZWFyY2hWYWx1ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGlmICghU2VhcmNoVmFsdWVGbGFnKSB7CiAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBTZWFyY2hWYWx1ZUZsYWc7CiAgICB9CgogICAgICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IENhbGxiYWNrIC0gZnVuY3Rpb24gdG8gZXhlY3V0ZSwgaWYgbm8gc3RvcCB3b3JkcyB3ZXJlIGZvdW5kLgogICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBzcGVjaWZpYyB2YWx1ZXMgb2YgdGhlIHNlYXJjaCBmb3JtIGNvbnRhaW4gc3RvcCB3b3Jkcy4KICAgICAqICAgICAgICAgICAgICBJZiBzdG9wIHdvcmRzIGFyZSBwcmVzZW50LCBhIHdhcm5pbmcgd2lsbCBiZSBkaXNwbGF5ZWQuCiAgICAgKiAgICAgICAgICAgICAgSWYgc3RvcCB3b3JkcyBhcmUgbm90IHByZXNlbnQsIHRoZSBnaXZlbiBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkLgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoQ2FsbGJhY2spIHsKICAgICAgICB2YXIgU2VhcmNoU3RyaW5ncyA9IHt9LAogICAgICAgICAgICBTZWFyY2hTdHJpbmdzRm91bmQgPSAwLAogICAgICAgICAgICBSZWxldmFudEVsZW1lbnROYW1lcyA9IHsKICAgICAgICAgICAgICAgICdGcm9tJzogMSwKICAgICAgICAgICAgICAgICdUbyc6IDEsCiAgICAgICAgICAgICAgICAnQ2MnOiAxLAogICAgICAgICAgICAgICAgJ1N1YmplY3QnOiAxLAogICAgICAgICAgICAgICAgJ0JvZHknOiAxLAogICAgICAgICAgICAgICAgJ0Z1bGx0ZXh0JzogMQogICAgICAgICAgICB9OwoKICAgICAgICBpZiAoIUNvcmUuQ29uZmlnLkdldCgnQ2hlY2tTZWFyY2hTdHJpbmdzRm9yU3RvcFdvcmRzJykpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQ7CgogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgIGlmICghUmVsZXZhbnRFbGVtZW50TmFtZXNbRWxlbWVudE5hbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgRWxlbWVudE5hbWUgKyAnXScpOwoKICAgICAgICAgICAgICAgIGlmICgkRWxlbWVudC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQudmFsKCkgJiYgJEVsZW1lbnQudmFsKCkgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NbRWxlbWVudE5hbWVdID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIENoZWNrIGlmIHN0b3Agd29yZHMgYXJlIHByZXNlbnQuCiAgICAgICAgaWYgKCFTZWFyY2hTdHJpbmdzRm91bmQpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgQUpBWFN0b3BXb3JkQ2hlY2soCiAgICAgICAgICAgIFNlYXJjaFN0cmluZ3MsCiAgICAgICAgICAgIGZ1bmN0aW9uIChGb3VuZFN0b3BXb3JkcykgewogICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5Db25maWcuR2V0KCdTZWFyY2hTdHJpbmdzQ29udGFpblN0b3BXb3Jkc01zZycpICsgIlxuIiArIEZvdW5kU3RvcFdvcmRzKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2FsbGJhY2sKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0V2ZW50fSBBY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIG9wZW4gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqLwoKICAgIFRhcmdldE5TLk9wZW5TZWFyY2hEaWFsb2cgPSBmdW5jdGlvbiAoQWN0aW9uLCBQcm9maWxlLCBDbGFzcykgewoKICAgICAgICB2YXIgUmVmZXJyZXIgPSBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpLAogICAgICAgICAgICBEYXRhOwoKICAgICAgICBpZiAoIUFjdGlvbikgewogICAgICAgICAgICBBY3Rpb24gPSdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICAgICB9CiAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgQWN0aW9uOiBBY3Rpb24sCiAgICAgICAgICAgIFJlZmVycmVyOiBSZWZlcnJlciwKICAgICAgICAgICAgUHJvZmlsZTogUHJvZmlsZSwKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWCcsCiAgICAgICAgICAgIENsYXNzSUQ6IENsYXNzCiAgICAgICAgfTsKCiAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoSFRNTCkgewoKICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB3YWl0aW5nIGRpYWxvZyB3YXMgY2FuY2VsZWQsIGRvIG5vdCBzaG93IHRoZSBzZWFyY2gKICAgICAgICAgICAgICAgIC8vICBkaWFsb2cgYXMgd2VsbAogICAgICAgICAgICAgICAgaWYgKCEkKCcuRGlhbG9nOnZpc2libGUnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coSFRNTCwgQ29yZS5Db25maWcuR2V0KCdTZWFyY2hNc2cnKSwgJzEwcHgnLCAnQ2VudGVyJywgdHJ1ZSwgW10sIHRydWUpOwoKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hDbGFzc0lEJykub2ZmKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScpLm9uKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICggJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSAhPT0gIiIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guTG9hZFByb2ZpbGUoICQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuYXR0cigiaWQiLCAiU2VhcmNoUHJvZmlsZU9sZCIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHZhciBDbGFzc1NlbGVjdGVkID0gJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKTsKICAgICAgICAgICAgICAgIGlmIChDbGFzc1NlbGVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSgkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2coKTsKICAgICAgICAgICAgfSwgJ2h0bWwnCiAgICAgICAgKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBhZGQuCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBjb25maWcgaXRlbSB6b29tIHNlY3Rpb24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICB2YXIgSVRTTVNob3dDb25maXJtRGlhbG9nID0gQ29yZS5Db25maWcuR2V0KCdJVFNNU2hvd0NvbmZpcm1EaWFsb2cnKTsKCiAgICAgICAgSVRTTS5BZ2VudC5ab29tLkluaXQoQ29yZS5Db25maWcuR2V0KCdVc2VyQ29uZmlnSXRlbVpvb21UYWJsZUhlaWdodCcpKTsKCiAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnQWN0aW9uJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBJbml0aWFsaXplIGFsbG9jYXRpb24gbGlzdCBmb3IgbGluayBvYmplY3QgdGFibGUuCiAgICAgICAgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuU2V0QWxsb2NhdGlvbkxpc3QoKTsKCiAgICAgICAgaWYgKElUU01TaG93Q29uZmlybURpYWxvZykgewogICAgICAgICAgICAkLmVhY2goSVRTTVNob3dDb25maXJtRGlhbG9nLCBmdW5jdGlvbihfS2V5LCBEYXRhKSB7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpcm1EaWFsb2cuQmluZENvbmZpcm1EaWFsb2coewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRJRDogICAgICAgICAgICAgICAgICBEYXRhLk1lbnVJRCwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50U2VsZWN0b3I6ICAgICAgICAgICAgRGF0YS5FbGVtZW50U2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgIERhdGEuRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiBEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICBEYXRhLkRpYWxvZ1RpdGxlLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFllczogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlllcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBObzogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJObyIpLAogICAgICAgICAgICAgICAgICAgICAgICBPazogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJPayIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxldCBMaW5rQ2VsbHMgPSAkKCcuQ29uZmlnSXRlbUxpbmtzX0NlbGwnKTsKICAgICAgICAgICAgaWYgKExpbmtDZWxscy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBMaW5rQ2VsbHMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBsZXQgJENvbnRlbnQgPSAkKCcuQ2VsbENvbnRlbnQnLCB0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkQ29udGVudC5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oZWlnaHQoKSA+ICRDb250ZW50LmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnQuY3NzKCdtYXgtaGVpZ2h0JywgJCh0aGlzKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgMTAwKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJZnJhbWVBdXRvSGVpZ2h0CiAgICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20KICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJZnJhbWUgLSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2V0IGlmcmFtZSBoZWlnaHQgYXV0b21hdGljYWxseSBiYXNlZCBvbiByZWFsIGNvbnRlbnQgaGVpZ2h0IGFuZCBoYXJkY29kZWQgbWF4IGhlaWdodC4KICAgICAqLwogICAgVGFyZ2V0TlMuSWZyYW1lQXV0b0hlaWdodCA9IGZ1bmN0aW9uICgkSWZyYW1lKSB7CgogICAgICAgIHZhciBOZXdIZWlnaHQsCiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQsCgogICAgICAgICAgICAvLyBtYXggaGVpZ2h0CiAgICAgICAgICAgIERlc2NyaXB0aW9uSGVpZ2h0TWF4ID0gMTAwMDsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRJZnJhbWUpKSB7CiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuZmluZCgnYm9keScpLmhlaWdodCgpOwogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGhlaWdodAogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gMTAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKElmcmFtZUJvZHlIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heAogICAgICAgICAgICAgICAgICAgIHx8IE5ld0hlaWdodCA+IERlc2NyaXB0aW9uSGVpZ2h0TWF4KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gRGVzY3JpcHRpb25IZWlnaHRNYXg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gTmV3SGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gSWZyYW1lQm9keUhlaWdodDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIGRlbHRhIGZvciBzY3JvbGxiYXIKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gcGFyc2VJbnQoTmV3SGVpZ2h0LCAxMCkgKyAyNTsKCiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgbWluaW11bSBoZWlnaHQgaXMgaW4gbGluZSB3aXRoIHRoZSBhdmF0YXIgaW1hZ2VzCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPCA0NikgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gNDY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.DynamicFieldITSMConfigItemLensSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOSBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbnRhY3QgZGF0YSBzZWFyY2guCiAqLwpJVFNNLkFnZW50LkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVuc1NlYXJjaCA9IChmdW5jdGlvbihUYXJnZXROUykgewoKICAgIGlmICgKICAgICAgICAhQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywgJ0NvcmUuQ29uZmlnJywgJ0NvcmUuQ29uZmlnJywgdHJ1ZSkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMKICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uKCkgewoKICAgICAgICBmdW5jdGlvbiBJbml0RHluYW1pY0ZpZWxkcygkQ29udGV4dCkgewogICAgICAgICAgICB2YXIgQXV0b0NvbXBsZXRlID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKSwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZUFjdGl2ZSA9IGZhbHNlOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgdHlwZW9mIEF1dG9Db21wbGV0ZSAhPT0gJ3VuZGVmaW5lZCcKICAgICAgICAgICAgICAgICYmIHR5cGVvZiBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgJiYgdHlwZW9mIEF1dG9Db21wbGV0ZS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMuQXV0b0NvbXBsZXRlQWN0aXZlICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGVBY3RpdmUgPSBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zLkF1dG9Db21wbGV0ZUFjdGl2ZSAhPT0gJzAnCiAgICAgICAgICAgICAgICAgICAgPyB0cnVlCiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJCgnLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucycsICRDb250ZXh0KS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkluaXRFbGVtZW50KCQodGhpcyksIEF1dG9Db21wbGV0ZUFjdGl2ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoKTsKCiAgICAgICAgLy8gU2luY2UgbmV3IHByb2Nlc3Mgc2NyZWVuIGxvYWRzIGFjdGl2aXR5IHZpYSBhbiBBSkFYIGNhbGwsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGFuIGV2ZW50CiAgICAgICAgLy8gICBpbiBvcmRlciB0byByZS1pbml0YWxpemUgZHluYW1pYyBmaWVsZHMuIFBsZWFzZSBzZWUgYnVnIzEzMTQ2IGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnVGlja2V0UHJvY2Vzcy5Jbml0LkZpcnN0QWN0aXZpdHlEaWFsb2cuTG9hZCcsIGZ1bmN0aW9uICgkQWN0aXZpdHlEaWFsb2cpIHsKICAgICAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoJEFjdGl2aXR5RGlhbG9nKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0RWxlbWVudAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhdXRvY29tcGxldGUKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQXV0b0NvbXBsZXRlQWN0aXZlIFNldCB0byBmYWxzZSwgaWYgYXV0b2NvbXBsZXRlIHNob3VsZCBvbmx5IGJlIHN0YXJ0ZWQgYnkgY2xpY2sgb24gYSBidXR0b24gbmV4dCB0byB0aGUgaW5wdXQgZmllbGQKICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZAogICAgICovCiAgICBUYXJnZXROUy5Jbml0RWxlbWVudCA9IGZ1bmN0aW9uKCRFbGVtZW50LCBBdXRvQ29tcGxldGVBY3RpdmUpIHsKICAgICAgICB2YXIgQXV0b0NvbXBsZXRlQ29uZmlnID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMKICAgICAgICAgICAgPyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZScpLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucwogICAgICAgICAgICA6IHsKICAgICAgICAgICAgICAgIE1pblF1ZXJ5TGVuZ3RoOiAyLAogICAgICAgICAgICAgICAgUXVlcnlEZWxheTogMTAwLAogICAgICAgICAgICAgICAgTWF4UmVzdWx0c0Rpc3BsYXllZDogMjAsCiAgICAgICAgICAgICAgICBCdXR0b25UZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnU2VhcmNoJyksCiAgICAgICAgICAgIH07CgogICAgICAgIGlmKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewoKICAgICAgICAgICAgJEVsZW1lbnQubmV4dCgnaW5wdXRbdHlwZT1idXR0b25dJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS52YWwoJycpLnByZXZBbGwoJ2lucHV0JykudmFsKCcnKTsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS5ibHVyKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gSGlkZSB0b29sdGlwIGluIGF1dG9jb21wbGV0ZSBmaWVsZCwgaWYgdXNlciBhbHJlYWR5IHR5cGVkIHNvbWV0aGluZyB0byBwcmV2ZW50IHRoZSBhdXRvY29tcGxldGUgbGlzdAogICAgICAgICAgICAvLyB0byBiZSBoaWRkZW4gdW5kZXIgdGhlIHRvb2x0aXAuIChPbmx5IG5lZWRlZCBmb3Igc2VydmVyc2lkZSBlcnJvcnMpCiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuVmFsaWRhdGUnKS5iaW5kKCdrZXl1cC5WYWxpZGF0ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIFZhbHVlID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5oYXNDbGFzcygnU2VydmVyRXJyb3InKSAmJiBWYWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjT1RPQk9fVUlfVG9vbHRpcHNfRXJyb3JUb29sdGlwJykuaGlkZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSh7CiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IEF1dG9Db21wbGV0ZUFjdGl2ZSA/IEF1dG9Db21wbGV0ZUNvbmZpZy5NaW5RdWVyeUxlbmd0aCA6IDUwMCwKICAgICAgICAgICAgICAgIGRlbGF5OiBBdXRvQ29tcGxldGVDb25maWcuUXVlcnlEZWxheSwKICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24oUmVxdWVzdCwgUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm06IFJlcXVlc3QudGVybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkOiAkRWxlbWVudC5hdHRyKCdpZCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4UmVzdWx0czogQXV0b0NvbXBsZXRlQ29uZmlnLk1heFJlc3VsdHNEaXNwbGF5ZWQKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gb2xkIGFqYXggcmVxdWVzdCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHN0b3AgdGhlIG9sZCByZXF1ZXN0IGFuZCBzdGFydCB0aGUgbmV3IG9uZS4KICAgICAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKS5hYm9ydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5yZW1vdmVEYXRhKCdBdXRvQ29tcGxldGVYSFInKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuIHRoZSByZXNwb25zZSBmdW5jdGlvbiB0byBoaWRlIHRoZSByZXF1ZXN0IGFuaW1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2Uoe30pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQXV0b0NvbXBsZXRlWEhSJywgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChVUkwsIERhdGEsIGZ1bmN0aW9uKFJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgVmFsdWVEYXRhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICRFbGVtZW50LnJlbW92ZURhdGEoJ0F1dG9Db21wbGV0ZVhIUicpOwogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUmVzdWx0LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMuS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKFZhbHVlRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24oRXZlbnQsIFVJKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBDb250YWN0S2V5ID0gVUkuaXRlbS5rZXksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3RWYWx1ZSA9IFVJLml0ZW0udmFsdWU7CgogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZFRpY2tldENvbnRhY3QoJCh0aGlzKS5hdHRyKCdpZCcpLCBDb250YWN0VmFsdWUsIENvbnRhY3RLZXkpOwogICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmJsdXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgVmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS52YWwoKSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICAkKCcuJyArICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykuYXR0cignaWQnKSkuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmZpbmQoJy5Db25maWdJdGVtJykuaGFzQ2xhc3MoJ0hpZGRlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjQ29udGFjdEluZm8nKS5maW5kKCcuQ29udGFjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0NvbnRhY3RJbmZvJykuZmluZCgncC5Ob25lJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFZpc2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0OmZpcnN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNob3coKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoIUF1dG9Db21wbGV0ZUFjdGl2ZSkgewogICAgICAgICAgICAgICAgJEVsZW1lbnQuYWZ0ZXIoJzxidXR0b24gaWQ9IicgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCIgdHlwZT0iYnV0dG9uIj4nICsgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoQXV0b0NvbXBsZXRlQ29uZmlnLkJ1dHRvblRleHQpICsgJzwvYnV0dG9uPicpOwogICAgICAgICAgICAgICAgJCgnIycgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnb3B0aW9uJywgJ21pbkxlbmd0aCcsIDApOwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnc2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCdvcHRpb24nLCAnbWluTGVuZ3RoJywgNTAwKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPbiB1bmxvYWQgcmVtb3ZlIG9sZCBzZWxlY3RlZCBkYXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRlZCAod2l0aCBGNSkgdGhpcyBkYXRhIHN0YXlzIGluIHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBhamF4IHJlcXVlc3Qgb3RoZXJ3aXNlLgogICAgICAgICQod2luZG93KS5iaW5kKCdiZWZvcmV1bmxvYWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCgnLkNvbnRhY3RBdXRvQ29tcGxldGUnKS52YWwoJycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gRmllbGQKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBDb250YWN0VmFsdWUgVGhlIHJlYWRhYmxlIGN1c3RvbWVyIGlkZW50aWZpZXIuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gQ29udGFjdEtleSBvbiBzeXN0ZW0uCiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBhZGQgYSBuZXcgdGlja2V0IGNvbnRhY3QKICAgICAqIEByZXR1cm5zIHtib29sZWFufQogICAgICovCiAgICBUYXJnZXROUy5BZGRUaWNrZXRDb250YWN0ID0gZnVuY3Rpb24oRmllbGQsIENvbnRhY3RWYWx1ZSwgQ29udGFjdEtleSkgewoKICAgICAgICB2YXIgVmFsdWVGaWVsZCA9IEZpZWxkLnJlcGxhY2UoJ0F1dG9jb21wbGV0ZV8nLCAnJyk7CgogICAgICAgIGlmKCFWYWx1ZUZpZWxkLmxlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkKCcjJyArIFZhbHVlRmllbGQpLnZhbChDb250YWN0S2V5KTsKICAgICAgICAkKCcjJyArIEZpZWxkKS52YWwoQ29udGFjdFZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2ggfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQ3VzdG9tZXIuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5VSS5Jbml0Q2hlY2tib3hTZWxlY3Rpb24oJCgndGFibGUgdGQuQ2hlY2tib3gnKSk7CgogICAgICAgIC8vIGNoYW5nZSBldmVudCBmb3IgY29sdW1uIGZpbHRlcgogICAgICAgICQoJy5Db2x1bW5GaWx0ZXInKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgLy8gZGVmaW5lIHZhcmlhYmxlcwogICAgICAgICAgICBVUkwgPSBDb3JlLkNvbmZpZy5HZXQoIkJhc2VsaW5rIikgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoIkFjdGlvbiIpICsgJzsnICsgQ29yZS5Db25maWcuR2V0KCdMaW5rUGFnZScpOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20KICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIG92ZXJ2aWV3IGJlaGF2aW91cnMuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcjQXR0YWNobWVudHMnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykuY3NzKAogICAgICAgICAgICAgICAgJ3JpZ2h0JywgJCh3aW5kb3cpLndpZHRoKCkgLSAkKCcjQXR0YWNobWVudHMnKS5vZmZzZXQoKS5sZWZ0IC0gJCgnI0F0dGFjaG1lbnRzJykud2lkdGgoKSAtIDI0CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykudG9nZ2xlKCk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIHNjcm9sbCBldmVudHMKICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gY2hhbmdlIEhlYWRlciBvbiBzY3JvbGwKICAgICAgICAgICAgaWYgKCAkKHdpbmRvdykud2lkdGgoKSA+IDc2NyApIHsKICAgICAgICAgICAgICAgIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpID4gOTAgJiYgJCgiI29vb0hlYWRlciIpLmhlaWdodCgpID4gNTYgKSB7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmhlaWdodCggJzQ4cHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzhweCcgKTsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuY3NzKCAncGFkZGluZy1ib3R0b20nLCAnOHB4JyApOwogICAgICAgICAgICAgICAgICAgICQoIiNDSUluZm9CYXIiKS5mYWRlT3V0KDIwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpIDwgOCApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuaGVpZ2h0KCAnMTAxcHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctYm90dG9tJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI0NJSW5mb0JhciIpLmZhZGVJbigyMDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgaGFyZGNvZGVkIG1heCBoZWlnaHQuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewoKICAgICAgICB2YXIgTmV3SGVpZ2h0LAogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0LAoKICAgICAgICAgICAgLy8gbWF4IGhlaWdodAogICAgICAgICAgICBEZXNjcmlwdGlvbkhlaWdodE1heCA9IDEwMDA7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmZpbmQoJ2JvZHknKS5oZWlnaHQoKTsKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmhlaWdodCgpOwogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmYXVsdCBoZWlnaHQKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDEwMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gRGVzY3JpcHRpb25IZWlnaHRNYXgKICAgICAgICAgICAgICAgICAgICB8fCBOZXdIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IERlc2NyaXB0aW9uSGVpZ2h0TWF4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoSWZyYW1lQm9keUhlaWdodCA+IE5ld0hlaWdodCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IElmcmFtZUJvZHlIZWlnaHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBkZWx0YSBmb3Igc2Nyb2xsYmFyCiAgICAgICAgICAgIE5ld0hlaWdodCA9IHBhcnNlSW50KE5ld0hlaWdodCwgMTApICsgMjU7CgogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1pbmltdW0gaGVpZ2h0IGlzIGluIGxpbmUgd2l0aCB0aGUgYXZhdGFyIGltYWdlcwogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0IDwgNDYpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDQ2OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItemList.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdAogKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lcgogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBOYXZpZ2F0aW9uIEJhcgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBOYXZCYXJTaHJpbmsKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIE5hdkJhciB0byBpdHMgZGVmYXVsdC4KICAgICAqLwogICAgLypmdW5jdGlvbiBOYXZCYXJTaHJpbmsoKSB7CiAgICAgICAgJCgnI05hdmlnYXRpb24nKS5vZmYoJ21vdXNlbGVhdmUnLCBOYXZCYXJTaHJpbmspOwogICAgICAgICQoJyNOYXZpZ2F0aW9uJykucmVtb3ZlQ2xhc3MoIm9vb0V4cGFuZGVkIik7CiAgICAgICAgJCgnI05hdkJhck1vZHVsZUljb25zID4gYSA+IC5OYXZCYXJEZXNjcmlwdGlvbiA+IHAnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gd2FpdCwgdGlsbCB0aGUgTmF2QmFyIGlzIHNtYWxsCiAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJyNOYXZCYXJFeHBhbmQnKS5zaG93KCk7CiAgICAgICAgfSwgMjUwKTsKICAgIH07Ki8KCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIENvbmZpZ0l0ZW1MaXN0IGphdmFzY3JpcHQgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gbW92ZSBhbGwgZWxlbWVudHMgdG8gdGhlIHJvd3MKICAgICAgICAkKCcub29vVGlja2V0SXRlbUNhdCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBSb3cxICAgICAgID0gJCh0aGlzKS5jaGlsZHJlbigiLm9vb1JvdzEiKS5maXJzdCgpOwogICAgICAgICAgICB2YXIgUm93MiAgICAgICA9ICQodGhpcykuY2hpbGRyZW4oIi5vb29Sb3cyIikuZmlyc3QoKTsKICAgICAgICAgICAgdmFyIFdpZHRoMSAgICAgPSAwOwogICAgICAgICAgICB2YXIgV2lkdGgyICAgICA9IDA7CiAgICAgICAgICAgIHZhciBNYXhXaWR0aCAgID0gJCh0aGlzKS53aWR0aCgpOwogICAgICAgICAgICB2YXIgQ2F0ZWdvcmllcyA9ICQodGhpcykuY2hpbGRyZW4oInAiKTsKCi8vICAgICAgICAgICAgZm9yICh2YXIgQ2F0IG9mIENhdGVnb3JpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDYXRlZ29yaWVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgdmFyIENhdGVnb3J5ID0gJCggQ2F0ZWdvcmllc1tpXSApOwogICAgICAgICAgICAgICAgdmFyIE91dGVyICAgID0gQ2F0ZWdvcnkub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGlmICggV2lkdGgxIDw9IFdpZHRoMiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIFdpZHRoMSArIE91dGVyIDwgTWF4V2lkdGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENhdGVnb3J5LmFwcGVuZFRvKFJvdzEpOwogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aDEgKz0gT3V0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBXaWR0aDIgKyBPdXRlciA8IE1heFdpZHRoICkgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5hcHBlbmRUbyhSb3cyKTsKICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGgyICs9IE91dGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.UI.ConfigItemActionRow.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5VSSA9IElUU00uVUkgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cKICogQGRlc2NyaXB0aW9uCiAqICAgICAgQWN0aW9uIHJvdyBmdW5jdGlvbmFsaXR5CiAqIEByZXF1aXJlcwogKiAgICAgIENvcmUuSlNPTgogKiAgICAgIENvcmUuRGF0YQogKi8KSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkpTT04nLCAnSlNPTiBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkRhdGEnLCAnRGF0YSBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICdTbWFsbCc6ICdkaXYuT3ZlcnZpZXcgdGFibGUgdGQgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJywKICAgICAgICAgICAgJ01lZGl1bSc6ICd1bC5PdmVydmlldyBpbnB1dDpjaGVja2JveFtuYW1lPUNvbmZpZ0l0ZW1JRF0nLAogICAgICAgICAgICAnTGFyZ2UnOiAndWwuT3ZlcnZpZXcgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJwogICAgICAgIH0sCiAgICAgICAgQ29uZmlnSXRlbVZpZXc7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gRGF0YSBUaGUgZGF0YSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge3N0cmluZ30gcXVlcnkgc3RyaW5nIG9mIHRoZSBkYXRhCiAgICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBnaXZlbiBoYXNoIGludG8gYSBxdWVyeSBzdHJpbmcKICAgICAqLwogICAgZnVuY3Rpb24gU2VyaWFsaXplRGF0YShEYXRhKSB7CiAgICAgICAgdmFyIFF1ZXJ5U3RyaW5nID0gJyc7CiAgICAgICAgJC5lYWNoKERhdGEsIGZ1bmN0aW9uIChLZXksIFZhbHVlKSB7CiAgICAgICAgICAgIFF1ZXJ5U3RyaW5nICs9ICc7JyArIGVuY29kZVVSSUNvbXBvbmVudChLZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KFZhbHVlKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gUXVlcnlTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9ucyBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZCBhY3Rpb24gb2YgYW4gZWxlbWVudCB0byB0aGUgZWxlbWVudC4KICAgICAqICAgICAgVGhlc2UgaW5mb3JtYXRpb24gYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFjdGlvbiByb3cgaW5kaXZpZHVhbGx5IGZvciB0aGlzIGVsZW1lbnQuCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQKICAgICAqICAgICAgVGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBkYXRhIGlzIHN0b3JlZAogICAgICogQHBhcmFtIHtTdHJpbmd9IEpTT05TdHJpbmcKICAgICAqICAgICAgVGhlIEpTT04gc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWQgYWN0aW9ucyBvZiB0aGUgZWxlbWVudCAoZ2VuZXJhdGVkIGJ5IFBlcmwgbW9kdWxlKQogICAgICogICAgICBDb3VsZCBhbHNvIGJlIGFuIGphdmFzY3JpcHQgb2JqZWN0IGRpcmVjdGx5CiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQWN0aW9ucyA9IGZ1bmN0aW9uICgkRWxlbWVudCwgSlNPTlN0cmluZykgewogICAgICAgIHZhciBBY3Rpb25zOwogICAgICAgIC8vIFRoZSBlbGVtZW50IG9mIHRoZSBnaXZlbiBJRCBtdXN0IGV4aXN0LCBKU09OU3RyaW5nIG11c3Qgbm90IGJlIGVtcHR5CiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICBpZiAodHlwZW9mIEpTT05TdHJpbmcgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBBY3Rpb25zID0gQ29yZS5KU09OLlBhcnNlKEpTT05TdHJpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQWN0aW9ucyA9IEpTT05TdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHNhdmUgYWN0aW9uIGRhdGEgdG8gdGhlIGdpdmVuIGVsZW1lbnQKICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkRWxlbWVudCwgJ0FjdGlvbnMnLCBBY3Rpb25zKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvcmUuRGVidWcuTG9nKCdFbGVtZW50IGRvZXMgbm90IGV4aXN0IG9yIG5vIHZhbGlkIGRhdGEgc3RydWN0dXJlIHBhc3NlZC4nKTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gY2xpY2sgb24gdGhlIGNoZWNrYm94IG9mIGFuIENvbmZpZ0l0ZW0gZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgYWN0aW9uIHJvdyBmb3IgdGhpcyBlbGVtZW50LgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRDbGlja2VkRWxlbWVudAogICAgICogICAgICBqUXVlcnlPYmplY3Qgb2YgdGhlIGNsaWNrZWQgZWxlbWVudCAobm9ybWFsbHkgJCh0aGlzKSkKICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSBDaGVja2JveGVzCiAgICAgKiAgICAgIGpRdWVyeU9iamVjdCBvZiB0aGUgY2hlY2tib3hlcyBvZiB0aGUgZGlmZmVyZW50IENvbmZpZ0l0ZW1zCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEFjdGlvblJvdwogICAgICogICAgICBUaGUgalF1ZXJ5T2JqZWN0IG9mIHRoZSBBY3Rpb25Sb3cgd3JhcHBlciAobm9ybWFsbHkgdGhlIDx1bD4tRWxlbWVudCkKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5VcGRhdGVBY3Rpb25Sb3cgPSBmdW5jdGlvbiAoXyRDbGlja2VkRWxlbWVudCwgJENoZWNrYm94ZXMsICRBY3Rpb25Sb3cpIHsKICAgICAgICB2YXIgQ29uZmlnSXRlbUFjdGlvbkRhdGEsCiAgICAgICAgICAgIEFjdGlvblJvd0VsZW1lbnQ7CgogICAgICAgIC8vIENoZWNrLCBpZiBvbmUgb3IgbW9yZSBpdGVtcyBhcmUgc2VsZWN0ZWQKICAgICAgICAkQ2hlY2tib3hlcyA9ICRDaGVja2JveGVzLmZpbHRlcignOmNoZWNrZWQnKTsKICAgICAgICAvLyBObyBjaGVja2JveCBpcyBzZWxlY3RlZAogICAgICAgIGlmICghJENoZWNrYm94ZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIFJlbW92ZSBhY3Rpb25zIGFuZCBkZWFjdGl2YXRlIGJ1bGsgYWN0aW9uCiAgICAgICAgICAgICRBY3Rpb25Sb3cKICAgICAgICAgICAgICAgIC5maW5kKCdsaScpLmZpbHRlcignOm5vdCguQnVsayknKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgLmVuZCgpLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnI0NvbmZpZ0l0ZW1CdWxrQWN0aW9uJykuYWRkQ2xhc3MoJ0luYWN0aXZlJykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpLkxhc3QnKS5yZW1vdmVDbGFzcygnTGFzdCcpCiAgICAgICAgICAgICAgICAuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCdsaTpsYXN0JykuYWRkQ2xhc3MoJ0xhc3QnKTsKICAgICAgICB9CiAgICAgICAgLy8gRXhhY3RseSBvbmUgY2hlY2tib3ggaXMgc2VsZWN0ZWQKICAgICAgICBlbHNlIGlmICgkQ2hlY2tib3hlcy5sZW5ndGggPT09IDEgJiYgISQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLmlzKCc6Y2hlY2tlZCcpICkgewogICAgICAgICAgICAvLyBVcGRhdGUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdy5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKTsKCiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQgd2hpY2ggaXMgYWN0aXZlIChpdCBtdXN0IG5vdCBiZSB0aGUgY2xpY2tlZCBlbGVtZW50ISkKICAgICAgICAgICAgLy8gYW5kIGdldCB0aGUgZGF0YQogICAgICAgICAgICBDb25maWdJdGVtQWN0aW9uRGF0YSA9IENvcmUuRGF0YS5HZXQoJENoZWNrYm94ZXMuY2xvc2VzdCgnbGksIHRyJyksICdBY3Rpb25zJyk7CiAgICAgICAgICAgIGlmICh0eXBlb2YgQ29uZmlnSXRlbUFjdGlvbkRhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAkLmVhY2goQ29uZmlnSXRlbUFjdGlvbkRhdGEsIGZ1bmN0aW9uIChfSW5kZXgsIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLkhUTUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJChWYWx1ZS5IVE1MKS5hdHRyKCdpZCcsIFZhbHVlLklEKS5hcHBlbmRUbygkQWN0aW9uUm93KTsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudCA9ICRBY3Rpb25Sb3cuZmluZCgnIycgKyBWYWx1ZS5JRCkuZmluZCgnYScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFZhbHVlLlRhcmdldCA9PT0gJ3VuZGVmaW5lZCcgfHwgVmFsdWUuVGFyZ2V0ID09PSAiIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5hdHRyKCdocmVmJywgVmFsdWUuTGluayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLlBvcHVwVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5vbignY2xpY2suUG9wdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoVmFsdWUuTGluaywgVmFsdWUuUG9wdXBUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBBcHBseSB0aGUgTGFzdCBjbGFzcyB0byB0aGUgcmlnaHQgZWxlbWVudAogICAgICAgICAgICAkQWN0aW9uUm93CiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgICAgICAvLyBUd28gb3JlIG1vcmUgY2hlY2tib3hlcyBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBSZW1vdmUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdwogICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykuZmlsdGVyKCc6bm90KC5CdWxrKScpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAuZW5kKCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKQogICAgICAgICAgICAgICAgLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBjb21wbGV0ZSBBY3Rpb25Sb3cgZnVuY3Rpb25hbGl0eSBhbmQgYmluZHMgYWxsIGNsaWNrIGV2ZW50cy4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vIEdldCB1c2VkIENvbmZpZ0l0ZW0gdmlldyBtb2RlCiAgICAgICAgaWYgKCQoJyNDb25maWdJdGVtT3ZlcnZpZXdNZWRpdW0nKS5sZW5ndGgpIHsKICAgICAgICAgICAgQ29uZmlnSXRlbVZpZXcgPSAnTWVkaXVtJzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJCgnI0NvbmZpZ0l0ZW1PdmVydmlld0xhcmdlJykubGVuZ3RoKSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ0xhcmdlJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ1NtYWxsJzsKICAgICAgICB9CgogICAgICAgICQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFN0YXR1cyA9ICQodGhpcykucHJvcCgnY2hlY2tlZCcpOwogICAgICAgICAgICAkKENvbmZpZ0l0ZW1FbGVtZW50U2VsZWN0b3JzW0NvbmZpZ0l0ZW1WaWV3XSkucHJvcCgnY2hlY2tlZCcsIFN0YXR1cykudHJpZ2dlckhhbmRsZXIoJ2NsaWNrJyk7CiAgICAgICAgfSk7CgogICAgICAgICQoQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnNbQ29uZmlnSXRlbVZpZXddKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5VcGRhdGVBY3Rpb25Sb3coJCh0aGlzKSwgJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10pLCAkKCdkaXYuT3ZlcnZpZXdBY3Rpb25zIHVsLkFjdGlvbnMnKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNDb25maWdJdGVtQnVsa0FjdGlvbiBhJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgJFNlbGVjdGVkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURQYXJhbWV0ZXIgPSAiQ29uZmlnSXRlbUlEPSIsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0gIiIsCiAgICAgICAgICAgICAgICBVUkw7CiAgICAgICAgICAgIGlmICgkRWxlbWVudC5wYXJlbnQoJ2xpJykuaGFzQ2xhc3MoJ0luYWN0aXZlJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zID0gJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10gKyAnOmNoZWNrZWQnKTsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgKz0gQ29uZmlnSXRlbUlEUGFyYW1ldGVyICsgJCh0aGlzKS52YWwoKSArICI7IjsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQnVsazsiICsgQ29uZmlnSXRlbUlEczsKICAgICAgICAgICAgICAgIFVSTCArPSBTZXJpYWxpemVEYXRhKENvcmUuQXBwLkdldFNlc3Npb25JbmZvcm1hdGlvbigpKTsKICAgICAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKFVSTCwgJ0NvbmZpZ0l0ZW1BY3Rpb24nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.Admin.ITSMConfigItem.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEFwcGxpY2F0aW9uCiAqIEBzdWJzZWN0aW9uICBJVFNNQ29uZmlnSXRlbURlZmluaXRpb25zCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCi8qKgogKiBAc3Vic3Vic2VjdGlvbiAgICAgQWRtaW5JVFNNQ29uZmlnSXRlbQogKi8KCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgLkNhbGxGb3JBY3Rpb24gewogICAgbWFyZ2luLXRvcDogNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4Owp9CgpmaWVsZHNldCA+IC5GaWVsZCAuQ29kZU1pcnJvci13cmFwIHsKICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsKICAgIG1pbi1oZWlnaHQ6IDMyMHB4Owp9CgouQ29kZU1pcnJvckNvbnRhaW5lciB7CiAgICB3aWR0aDogOTAlOwp9CgouQ29kZU1pcnJvckNvbnRhaW5lciArIHAgewogICAgd2lkdGg6IDkwJTsKfQp9LyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Edit.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgouUm93X1NlY3Rpb25IZWFkZXIgewogICAgbWFyZ2luLXRvcDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLlJvd19QYWdlSGVhZGVyIHsKICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KCi5Sb3dfU2VjdGlvbkhlYWRlciA+IGgzLAouUm93X1BhZ2VIZWFkZXIgPiBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICBtYXJnaW4tbGVmdDogMzAlOwogICAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9CgouUm93X1NlY3Rpb25IZWFkZXIgPiBoMyB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLlJvd19QYWdlSGVhZGVyID4gaHIgewogICAgYm9yZGVyLXRvcDogMC41cHggc29saWQgdmFyKC0tY29sQkdEYXJrKTsKICAgIHdpZHRoOiA4MCU7CiAgICBtYXJnaW4tbGVmdDogMjAlOwp9CgpmaWVsZHNldC5UYWJsZUxpa2UgZGV0YWlscyA+IGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDMwJTsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIHBhZGRpbmctdG9wOiA0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLyogUGFnZSBIZWFkZXIgTmF2aWdhdGlvbiAqLwpkZXRhaWxzIHN1bW1hcnkgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmRldGFpbHNbb3Blbl0gc3VtbWFyeSAuVG9nZ2xlIC5mYS1jYXJldC1yaWdodCwKZGV0YWlscyBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogbm9uZTsKfQoKZGV0YWlsc1tvcGVuXSBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogYmxvY2s7Cn0KCmRldGFpbHMgc3VtbWFyeSAuUm93X1BhZ2VIZWFkZXIgLlRvZ2dsZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OyAvKiB0byBhbGlnbiB3aXRoIGgyICovCiAgICBsZWZ0OiAzMCU7CiAgICB0b3A6IDA7IAp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Overview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogICogQHBhY2thZ2UgICAgIFNraW4gIkRlZmF1bHQiCiAgKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAgKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcKICAqLwoKLyoqCiAqIEBzdWJzZWN0aW9uICBDb25maWdJdGVtIExpc3QgVGFibGVzCiAqLwoKLkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93OiBhdXRvOwp9CgouQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5Db25maWdJdGVtTGlzdCB0ZCB7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRhYmxlIHRkLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiAwcHg7Cn0KCi5Db25maWdJdGVtTGlzdCB0YWJsZSBpbnB1dC5DaGVja2JveCB7CiAgICBtYXJnaW4tcmlnaHQ6IDdweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRkLkZyb20gZGl2LAouQ29uZmlnSXRlbUxpc3QgdGQuU3ViamVjdCBkaXYsCi5Db25maWdJdGVtTGlzdCB0ZC5DcmVhdGVkIGEgewogICAgaGVpZ2h0OiAyMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29uZmlnSXRlbUxpc3QgLk5vIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouQ29uZmlnSXRlbUxpc3QgLkF0dGFjaG1lbnRzIHsKICAgIHdpZHRoOiAyMHB4Owp9CgojT3ZlcnZpZXdCb2R5Lk92ZXJ2aWV3LkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IDA7CiAgICBncmlkLWFyZWE6IDEgLyAyIC8gMiAvIDM7Cn0KCiNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjREREOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDsKfQoKI092ZXJ2aWV3Qm9keS5PdmVydmlldy5Db25maWdJdGVtTGlzdCB0YWJsZS5UYWJsZVNtYWxsLk5vQ2VsbHNwYWNpbmcgewogICAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCiNPdmVydmlld0NvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgN2ZyOwogICAgbWFyZ2luOiAwcHggMTZweCA4cHggOHB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jb2xCR01lZGl1bSk7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCiNPdmVydmlld0NvbnRhaW5lciA+ICNPdmVydmlld0NvbnRyb2wgPiB1bCA+IGxpIHsKICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICBwYWRkaW5nLXRvcDogNHB4OwogICAgcGFkZGluZy1ib3R0b206IDRweDsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6IDRweDsKICAgIHBhZGRpbmctYm90dG9tOiA0cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaS5BY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdNZWRpdW1EYXJrKTsKfQoKI092ZXJ2aWV3Q29udGFpbmVyID4gI092ZXJ2aWV3Q29udHJvbCA+IHVsID4gbGkuQWN0aXZlID4gYSB7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgouT3ZlcnZpZXdDb250cm9sIC5BY3Rpb25Sb3cgewogICAgbWFyZ2luLWxlZnQ6IDEyLjUlOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDBweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwcHg7Cn0KCmRpdi5GbGFnLlNtYWxsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNHB4OwogICAgbWFyZ2luOiAycHggOHB4IDAgMDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCmRpdi5GbGFnLlNtYWxsID4gc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTJweDsKfQoKLkZsYWdnZWROYW1lIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyogIEFsbCBkZXZpY2VzIHdpdGggYSBzbWFsbGVyIHJlc29sdXRpb24gdGhhbiB0aGUgY3VycmVudCBPVE9CTyBtaW5pbXVtIHNvbHV0aW9uICovCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7CgogICAgICAgICNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgewogICAgICAgIG92ZXJmbG93LXk6YXV0bzsKICAgIH0KfQo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.TreeView.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIENNREIgVHJlZVZpZXcKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLkNvbnRhaW5lckNhbnZhcyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW1hcmdpbi10b3A6IDIwcHg7CgltYXJnaW4tYm90dG9tOiAyMHB4OwoJei1pbmRleDogMDsKfQoKLlNwYWNlclRyZWUgewoJaGVpZ2h0OiAyMHB4OwkKfQoKLkJveCB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb2xvcjogYmxhY2s7Cgl3aWR0aDogODAlOwoJbWluLXdpZHRoOiAyMDBweDsKCW1heC13aWR0aDogbWF4LWNvbnRlbnQ7CgloZWlnaHQ6IG1heC1jb250ZW50OwoJbWluLWhlaWdodDogNzBweDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCS13ZWJraXQtdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCS1tb3otdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCXRyYW5zaXRpb246IGFsbCBlYXNlLWluLW91dCAuMnM7CgliYWNrZ3JvdW5kOiAjZmZmZmZmOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMTBweDsKCWJvcmRlci1yYWRpdXM6IDhweDsKCWJveC1zaGFkb3c6IDJweCA0cHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7Cglib3JkZXI6IG5vbmU7Cgl6LWluZGV4OiAxMDAwOwp9CgouQ29uZmlnSXRlbUluZm8gewoJZGlzcGxheTogdGFibGU7CgloZWlnaHQ6IDEwMCU7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmCn0KCi5BZGRpdGlvbmFsSW5mbyB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CglwYWRkaW5nOiA2cHg7Cglmb250LXNpemU6IDExcHg7Cn0KCi5Db25maWdJdGVtVGl0bGUgewoJZGlzcGxheTogdGFibGUtcm93OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWNvbG9yOiAjZmZmZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKCWhlaWdodDogbWF4LWNvbnRlbnQ7Cglmb250LXdlaWdodDogNjAwOwoJZm9udC1zaXplOiAxNHB4Owp9CgouQ29uZmlnSXRlbVRpdGxlIHAgewoJbWFyZ2luLXRvcDogM3B4OwoJbWFyZ2luLWJvdHRvbTogM3B4OwogICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7CQp9CgouVGFyZ2V0U2VjdGlvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCmg0IHsKCW1hcmdpbi1ibG9jay1zdGFydDogMWVtOwp9CgouX2pzUGx1bWJfY29ubmVjdG9yIHsKCXotaW5kZXg6IDE7Cn0KCi5fanNQbHVtYl9vdmVybGF5IHsKCXotaW5kZXg6IDE7Cglmb250LXNpemU6IDEwcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5DaGlsZENvbnRhaW5lciB7CgltYXJnaW4tdG9wOiAzNXB4OwoJZGlzcGxheTogYmxvY2s7Cn0KCi5Sb3dUaXRsZSB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IDlweDsKCWxlZnQ6IDEwcHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCi5PcHRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOyAKCXotaW5kZXg6IDEwMDA7Cgl0b3A6IC03cHg7CgloZWlnaHQ6IDE1cHg7CgltYXJnaW46IDAgYXV0bzsKfQoKLk9wdERlcHRoIHsKCW1hcmdpbi1yaWdodDogM3B4OwoJZm9udC1zaXplOiAxM3B4OwoJYm9yZGVyLXJhZGl1czogNnB4OwoJYm9yZGVyOiAxcHggc29saWQ7CglvdXRsaW5lOiBub25lOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJYm9yZGVyLWNvbG9yOiAjZGNkYmRiOwoJYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSg2Niw2Niw2NiwuODYpOwp9CgouQ29udGFpbmVyQmFyIHsKCWhlaWdodDogMzNweDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDEwMDA7Cn0KCi5UcmVlVmlld01lc3NhZ2VzIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMCBhdXRvOwoJcGFkZGluZzogOHB4OwoJd2lkdGg6IDEwMCU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjRTk1RjUzOwoJY29sb3I6ICNmZmY7Cn0KCiNXaWRnZXRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMTAwMDsJCn0KCiNTZWN0aW9uQ29udGFpbmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMTAwJTsKCWRpc3BsYXk6IGJsb2NrOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXotaW5kZXg6IDA7Cn0KCiNBSkFYTG9hZGVyRGVwdGggewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbWFyZ2luOiAwIGF1dG87CglkaXNwbGF5OiBibG9jazsKCXRvcDogMTBweDsKCWJvcmRlcjogbm9uZTsKfQoKI1pvb21Jbk91dExhYmVsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWxlZnQ6IDE1cHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCiNEZXB0aExhYmVsIHsKCWZvbnQtc2l6ZTogMTRweDsKfQoKI1pvb20gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbGVmdDogMTVweDsKCWZvbnQtc2l6ZTogMTNweDsKCWJvcmRlci1yYWRpdXM6IDZweDsKCWJvcmRlcjogMXB4IHNvbGlkOwoJb3V0bGluZTogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWJvcmRlci1jb2xvcjogI2RjZGJkYjsKCWJveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoNjYsNjYsNjYsLjg2KTsKfQoKLlpvb21MaW5rIHsKCWNvbG9yOiAjZmZmZmZmOwoJY3Vyc29yOiBwb2ludGVyOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5ab29tTGluazpob3ZlciwgLlpvb21MaW5rOnZpc2l0ZWQgewoJY29sb3I6ICNmZmZmZmY7Cn0KCmlucHV0W3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCAKaW5wdXRbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24geyAKICAgIG9wYWNpdHk6IDE7Cn0KCn0gLyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgogICAgI1NlbGVjdGlvblJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICB9CgogICAgI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIGRpc3BsYXk6IGlubGluZSBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgIH0KCiAgICAjUGFnZVNlbGVjdGlvbiA+IGEgewogICAgICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgfQoKICAgICNQYWdlU2VsZWN0aW9uID4gaDIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgY29sb3I6ICMwMDAyM2M7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1heC13aWR0aDogMjQwcHg7CiAgICAgICAgaGVpZ2h0OiAyMnB4OwogICAgfQogICAgCiAgICAjUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbi5TZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBmYzsKICAgIH0KCiAgICAub29vQ29udGVudEdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICBncmlkLXJvdy1nYXA6IDEycHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiAxMnB4OwogICAgICAgIGdyaWQtYXV0by1yb3dzOiBtaW5tYXgobWluLWNvbnRlbnQsIDF2aCk7CiAgICB9CgogICAgLm9vb0NvbnRlbnRDZWxsIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgfQoKICAgIC5vb29Db250ZW50Q2VsbC5Db25maWdJdGVtTGlua3NfQ2VsbCAuQ2VsbENvbnRlbnQgewogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgIH0KCiAgICAuRmllbGREaXNwbGF5Um93Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgfQoKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBwIHsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgcCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgfQoKICAgIC5vb29Db250ZW50R3JpZCBsYWJlbCB7CiAgICAgICAgY29sb3I6ICM5MjkyOTI7CiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIH0KCiAgICAuRHluYW1pY0ZpZWxkU2V0TGFiZWwgewogICAgICAgIHBhZGRpbmctdG9wOiA4cHg7CiAgICB9CgogICAgLlNldERpc3BsYXlWYWx1ZSB7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICBtYXJnaW4tbGVmdDogMjRweDsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggNTAlIC0gMTJweCApIGNhbGMoIDUwJSArIDEycHggKTsKICAgIH0KCiAgICAuU2V0RGlzcGxheVZhbHVlID4gbGFiZWwsCiAgICAuU2V0RGlzcGxheVZhbHVlID4gcCB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgfQoKICAgIC5TZXREaXNwbGF5VmFsdWUgZGl2LkNsZWFyIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dExpbmsgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLkR5bmFtaWNGaWVsZFJpY2hUZXh0Q29udGVudC5IaWRkZW4gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dENvbnRlbnQgPiAuT3ZlcmxheUR5bmFtaWNGaWVsZFJpY2hUZXh0aUZyYW1lIHsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDY0cHgpOwogICAgfQoKfSAvKiBlbmQgQG1lZGlhICovCg==</File>
        <File Location="var/httpd/htdocs/skins/Agent/highcontrast/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiSGlnaENvbnRyYXN0IgogKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKICAgIAogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbEJHRGFyayk7CiAgICAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwogICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbEJHRGFyayk7CiAgICB9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemSearch.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDEyOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAwcHggMHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiBjYWxjKCA1MCUgKyAxNTBweCApICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoIDI1JSAtIDc2cHggKTsKICAgIH0KCiAgICAuUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgICAgICB3aWR0aDogY2FsYyggNTAlICsgMTE4cHggKSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCAyNSUgLSA3NnB4ICk7CiAgICB9CgogICAgLlJvdyA+IGxhYmVsLAogICAgLlJpY2hUZXh0SG9sZGVyID4gbGFiZWwgewogICAgICAgIGxlZnQ6IGNhbGMoIC01MCUgLSAxMjZweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGhlaWdodDogMTQ1cHg7CiAgICB9CgogICAgLlJvd19EeW5hbWljRmllbGQgewogICAgICAgIHdpZHRoOiA2NiU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE3JTsKICAgICAgICBncmlkLXJvdy1nYXA6IDE2cHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiA2NiUgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBpbnB1dFt0eXBlPSJ0ZXh0Il0gewogICAgICAgIHdpZHRoOiBjYWxjKCA2NiUgLSAzMnB4ICkgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBsYWJlbCwKICAgIC5SaWNoVGV4dEhvbGRlciA+IGxhYmVsIHsKICAgICAgICBsZWZ0OiBjYWxjKCAtNjYlICsgMjRweCApOwogICAgfQoKfQoKLlJvdyA+IHNlbGVjdCwKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgouUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdLAppbnB1dC5EeW5hbWljRmllbGRUZXh0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI1OwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBoZWlnaHQ6IDU2cHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDMycHg7Cn0KCiNvb29IZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwp9CgojQm90dG9tQWN0aW9uUm93IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IDgwcHg7Cn0KCi5vb29JVFNNQ29uZmlnSXRlbVNlYXJjaCA+IGRpdiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gODBweCApOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgcGFkZGluZy10b3A6IDI0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKICAgIHBhZGRpbmctbGVmdDogNDBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgI29vb01haW5Cb3ggewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICAgbWluLWhlaWdodDogY2FsYyggMTAwdmggLSAyNjVweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogICAgCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nLXRvcDogMjJweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjJweDsKICAgICAgICBoZWlnaHQ6IDEwMXB4OwogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDEuMnB4IHNvbGlkICNlNWU1ZWI7CiAgICAgICAgei1pbmRleDogMTIwMDsKCi13ZWJraXQtdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgIC1tb3otdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgLW8tdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICB9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoNDhweCwgMWZyKSBhdXRvOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKI0NJSW5mb0JhciB7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBtYXJnaW46IDI2cHggMCA1cHggMDsKfQoKI0NJSW5mb0JhciBwLAojQ0lJbmZvQmFyIGRpdiwKI0NJSW5mb0JhciBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCiNDSUluZm9CYXIgbGFiZWwgewogICAgcGFkZGluZzogMnB4IDA7Cn0KCiNDSUluZm9CYXIgcCB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKCi5ncmVlbmxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjZGZhOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5T0spOwp9CgoueWVsbG93bGVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xOb3RpZnlXYXJuKTsKfQoKLnJlZGxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjliY2IyOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5RXJyKTsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y5OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7Cn0KCiNBY3Rpb25Sb3cgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4Owp9CgojUGFnZVNlbGVjdGlvbiA+IHAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgojUGFnZVNlbGVjdGlvbiA+IGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgojUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogMjQwcHg7CiAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgIGhlaWdodDogMzJweDsKfQoKI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbE1haW5Ib3Zlcik7Cn0KCiNBdHRhY2htZW50Q29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIHBhZGRpbmctdG9wOiA3cHg7Cn0KCiNBdHRhY2htZW50cyA+IGkgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCiNBdHRhY2htZW50Qm94IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDIwMDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIG1hcmdpbi10b3A6IDJweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgd2lkdGg6IDIyMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uIHsKICAgIHdpZHRoOiAyMjBweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAzMnB4OwogICAgbWFyZ2luLXRvcDogLTFweDsKICAgIHdpZHRoOiAxMDAlOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciA+IGxhYmVsIHsKICAgIGxlZnQ6IGNhbGMoIC0xMDAlICsgMTZweCApOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdG9wOiAxcHg7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gLkZpZWxkOmhvdmVyIH4gbGFiZWwsCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gLkZpZWxkLm9vb1NlbGVjdGVkIH4gbGFiZWwsCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gbGFiZWwub29vRm9jdXMgewogICAgZm9udC1zaXplOiAxMHB4OwogICAgdG9wOiAtMTdweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgaW5wdXQgewogICAgYm9yZGVyOiBzb2xpZCAxcHggIzdmODA5ZDsKICAgIGJvcmRlcjogc29saWQgMXB4IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciAuSW5wdXRGaWVsZF9TZWxlY3Rpb24gewogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKZGl2LklucHV0RmllbGRfTGlzdENvbnRhaW5lciB7CiAgICByaWdodDogNHB4OwogICAgbWF4LXdpZHRoOiBtYXgtY29udGVudDsKICAgIG1hcmdpbi10b3A6IC0yMHB4Owp9CgpkaXYuSW5wdXRGaWVsZF9UcmVlQ29udGFpbmVyIHsKICAgIG1hcmdpbi10b3A6IDE2cHggIWltcG9ydGFudDsKICAgIG1hcmdpbi1ib3R0b206IDE2cHggIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogbWF4LWNvbnRlbnQgIWltcG9ydGFudDsKICAgIG1heC1oZWlnaHQ6IG1heC1jb250ZW50ICFpbXBvcnRhbnQ7Cn0KCi5qc3RyZWUtYW5jaG9yIHsKICAgIG1hcmdpbjogOHB4IDBweCA4cHggMjRweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50Owp9CgouanN0cmVlLW5vZGUgewogICAgbWluLWhlaWdodDogMzJweDsKfQoKLmpzdHJlZS1ub2RlID4gLmpzdHJlZS13aG9sZXJvdyB7CiAgICBoZWlnaHQ6IDMycHggIWltcG9ydGFudDsKfQoKLm9vb0Nsb3NlIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLm9vb0NvbnRlbnRHcmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgZ3JpZC1yb3ctZ2FwOiAxNnB4OwogICAgZ3JpZC1jb2x1bW4tZ2FwOiAxNnB4Owp9Cgoub29vQ29udGVudENlbGwgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBwYWRkaW5nOiAxNnB4IDI0cHg7Cn0KCi5vb29Db250ZW50Q2VsbCBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9CgouRmllbGREaXNwbGF5Um93IHsKICAgIGRpc3BsYXk6IGdyaWQ7Cn0KCi5GaWVsZERpc3BsYXlSb3c6bm90KDpmaXJzdC1jaGlsZCkgewogICAgbWFyZ2luLXRvcDogMTJweDsKfQoKLkZpZWxkRGlzcGxheVJvdyBsYWJlbCwKLkZpZWxkRGlzcGxheVJvdyBwIHsKICAgIG1hcmdpbi10b3A6IDRweDsKfQoKLkZpZWxkRGlzcGxheVJvdyBwLAouRmllbGREaXNwbGF5Um93IGxhYmVsIHsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKfQoKLm9vb0NvbnRlbnRHcmlkIGxhYmVsIHsKICAgIGNvbG9yOiAjOTI5MjkyOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLkR5bmFtaWNGaWVsZFNldExhYmVsIHsKICAgIHBhZGRpbmctdG9wOiAxNnB4Owp9CgouU2V0RGlzcGxheVZhbHVlIHsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIG1hcmdpbi1sZWZ0OiAyNHB4OwogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggNTAlIC0gMTJweCApIGNhbGMoIDUwJSArIDEycHggKTsKfQoKLlNldERpc3BsYXlWYWx1ZSBkaXYuQ2xlYXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLkR5bmFtaWNGaWVsZFJpY2hUZXh0TGluayB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouRHluYW1pY0ZpZWxkUmljaFRleHRDb250ZW50LkhpZGRlbiB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLk92ZXJsYXlEeW5hbWljRmllbGRSaWNoVGV4dGlGcmFtZSB7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2NHB4KTsKICAgIHBhZGRpbmc6IDAgMzJweDsKfQo=</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemList.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAub29vQ29uZmlnSXRlbUxpc3QgewogICAgICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gNDhweCApOwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgIH0KfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgIC5vb29Db25maWdJdGVtTGlzdCB7CiAgICAgICAgd2lkdGg6IGNhbGMoIDEwMCUgLSA4MHB4ICk7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDU2cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogNTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDMycHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICB9Cn0KCi5vb29Db25maWdJdGVtTGlzdCBoMywKLm9vb0NvbmZpZ0l0ZW1MaXN0IHAgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoKLm9vb0lUU01Db25maWdJdGVtTGlzdEl0ZW06Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLXRvcDogOHB4Owp9Cg==</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemOverview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggMTAwJSAtIDMycHgpOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogNjRweCA1N3B4IDBweDsKICAgICAgICBhbGlnbi1pdGVtczogZW5kOwoKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKCSNvb29IZWFkZXJCdXR0b24gc3BhbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAjb29vSGVhZGVyQnV0dG9uID4gYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYm90dG9tOiAzMnB4OwogICAgICAgIHJpZ2h0OiAxNnB4OwogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIHotaW5kZXg6IDYwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAwIHJnYmEoMCwgMjcsIDI1NSwgMC4yNCk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDE2cHggMCB2YXIoLS1jb2xTaGFkb3dNYWluKTsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIAlwYWRkaW5nLWJvdHRvbTogMnB4OwoJfQoKICAgICNvb29TZWFyY2hCb3ggaS5vb29mby1zZWFyY2ggewogICAgICAgIHRvcDogMTUycHg7CiAgICAgICAgbGVmdDogMjZweDsKICAgIH0KCiAgICAjb29vTWFpbkJveCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKCAxMDB2aCAtIDI2NXB4ICk7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAvKiBzZWFyY2g/IC8gYWxsIC8gb3BlbiAvIGNsb3NlZCAvLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIDFmcjsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gYXV0bzsKICAgICAgICBncmlkLWNvbHVtbi1nYXA6IDI0cHg7CiAgICAgICAgZ3JpZC1yb3ctZ2FwOiA4cHg7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiB7CiAgICAgICAgZ3JpZC1yb3ctc3RhcnQ6IDI7CiAgICAgICAgZ3JpZC1yb3ctZW5kOiAzOwogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAzOwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNDsKICAgIH0KCn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIAogICAgI29vb0hlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAxNDVweDsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxLjJweCBzb2xpZCAjZTVlNWViOwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAvIG5ldyB0aWNrZXQgYnV0dG9uICovCiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0byBhdXRvOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMTAwJTsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMnB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMzJweDsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgLyogc2VhcmNoPyAvIGFsbCAvIG9wZW4gLyBjbG9zZWQgLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIGF1dG8gYXV0byAxZnI7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgewogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiA1OwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNjsKICAgIH0KCgkjb29vSGVhZGVyQnV0dG9uIGkgewogICAgCXBhZGRpbmctcmlnaHQ6IDhweDsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgCXBhZGRpbmctYm90dG9tOiAzcHg7Cgl9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CgogICAgZGlzcGxheTogZ3JpZDsKfQoKI29vb0hlYWRlciBpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiAub29vbCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyID4gLm9vb3IgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgPiBwIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctcmlnaHQ6IDRweDsKfQoKI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiA+IGEgewogICAgcGFkZGluZy1sZWZ0OiA0cHg7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgLlNlbGVjdGVkIHsKICAgIGNvbG9yOiAjMDAwMjNjOwogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUZpbHRlckRlbGV0ZSA+IGEgewogICAgZmxvYXQ6IHJpZ2h0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUgPiBhID4gaS5vb29mbyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDJweDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7Cn0KCiNvb29DdXN0b21lck5vdGlmaWNhdGlvbnMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwp9CgovKiBJRSAqLwpAbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGRpc3BsYXk6IC1tcy1ncmlkOwogICAgICAgIC8qIHRleHQgLyB0aWNrZXQgc2VhcmNoICovCiAgICAgICAgLW1zLWdyaWQtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgICAgICAtbXMtZ3JpZC1yb3dzOiAxMDAlOwogICAgfQoKICAgICNvb29IZWFkZXIgPiBoMSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAxOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgfQoKICAgICNvb29TZWFyY2hCb3ggewogICAgICAgIC1tcy1ncmlkLWNvbHVtbjogMjsKICAgICAgICAtbXMtZ3JpZC1yb3ctYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAjb29vSGVhZGVyID4gYSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAzOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIEBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkgewogICAgICAgICNvb29IZWFkZXIgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIH0KICAgIH0KCn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Table.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFRhYmxlcwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyYWwgc3R1ZmYKICovCgovKgogKiBGRjMuNiBoYXMgYSBwcm9ibGVtIHdpdGggc2V0dGluZyB0aGUgcG9zaXRpb246cmVsYXRpdmUgb25seSBvbiA6aG92ZXIgc3RhdGUuCiAqIEFzIGEgd29ya2Fyb3VuZCBpdCBpcyBzZXQgYWx3YXlzIGFuZCBhIHNwZWNpYWwgei1pbmRleCBvbiBob3Zlci4KICovCi5UYWJsZVNtYWxsIHRib2R5IHRyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdHI6aG92ZXIgewogICAgei1pbmRleDogMTA7Cn0KCi5UYWJsZVNtYWxsIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyaWMgdGFibGUgZWxlbWVudHMKICovCi5UYWJsZVNtYWxsIHRkLAouVGFibGVTbWFsbCB0aCB7CiAgICBsaW5lLWhlaWdodDogMTVweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDsKfQoKLlRhYmxlU21hbGwgdHI6aG92ZXIgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCnRhYmxlIHRyLk1hc3RlckFjdGlvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZyA+IGE6YWZ0ZXIgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMnB4OwogICAgdG9wOiAzcHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nID4gYTphZnRlciB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAycHg7CiAgICB0b3A6IDNweDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uICBRdWV1ZU92ZXJ2aWV3VG90YWxzIERhdGFUYWJsZQogKi8KCi5Sb3cgdGQuUXVldWVPdmVydmlld1RvdGFscywKLlJvdyBhLlF1ZXVlT3ZlcnZpZXdUb3RhbHMgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcgU21hbGwgVmlldyBUYWJsZQogKi8KLlRhYmxlU21hbGwgewogICAgd2lkdGg6IDEwMCU7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiA3cHg7Cn0KCi5TdGF0aWNDb2x1bW4gewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKdGguQ2hlY2tib3gsCnRkLkNoZWNrYm94IHsKICAgIHdpZHRoOiAzMHB4Owp9Cgp0aC5GbGFncyB7CiAgICB3aWR0aDogMzRweDsKfQoKdGQuRmxhZ3MgewogICAgd2lkdGg6IDI5cHg7Cn0KCnRoLkRpcmVjdGlvbiwKdGQuRGlyZWN0aW9uIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgp0aC5BdHRhY2htZW50LAp0ZC5BdHRhY2htZW50IHsKICAgIHdpZHRoOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggewogICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggYSwKLlRhYmxlU21hbGwgdGhlYWQgdGggc3BhbiB7CiAgICBwYWRkaW5nLXRvcDogMnB4OwogICAgcGFkZGluZy1ib3R0b206IDJweDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCB0aCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSwKLlRhYmxlU21hbGwgdGhlYWQgc3BhbiB7CiAgICBtYXJnaW46IDAgMnB4IDFweCAxcHg7CiAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICBjb2xvcjogIzRBNEE0QTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxNXB4OwogICAgaGVpZ2h0OiAxNXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCBhLAouUlRMIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4gewogICAgbWFyZ2luOiAwIDFweCAxcHggMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCBzcGFuIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp0aGVhZCAuU29ydEFzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydFVwIGEsCnRoZWFkIC5Tb3J0RGVzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydERvd24gYSB7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSBzcGFuIHsKICAgIGhlaWdodDogMTVweDsKICAgIHdpZHRoOiAxNnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIGEgc3Bhbi5GbGFnIHsKICAgIGhlaWdodDogOXB4OwogICAgd2lkdGg6IDE2cHg7CiAgICBtYXJnaW4tdG9wOiA2cHg7Cn0KCi5UYWJsZVNtYWxsIHRkIHsKICAgIHBhZGRpbmc6IDE2cHggMTBweCAwcHggMHB4Owp9CgouVGFibGVTbWFsbCB0ZC5Ob25UZXh0Q29udGVudCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ci5BY3RpdmUgdGQgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGEgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEsCi5UYWJsZVNtYWxsIHRyLkFjdGl2ZSB0ZCBhIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9CgouVGFibGVTbWFsbCB0ZCBhLkR5bmFtaWNGaWVsZExpbmsgewogICAgY29sb3I6ICNGRjc3MjI7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEuRHluYW1pY0ZpZWxkTGluaywKLlRhYmxlU21hbGwgdHIuQWN0aXZlIHRkIGEuRHluYW1pY0ZpZWxkTGluayB7CiAgICBjb2xvcjogI0ZGRkZGRjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgLkZsYWdzIHsKICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwogICAgcGFkZGluZy10b3A6IDJweDsKICAgIHBhZGRpbmctbGVmdDogNXB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHdpZHRoOiAzMHB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiBpIHsKICAgIGNvbG9yOiAjNTU1Owp9CgovKiBUT0RPIGNoYW5nZSBpY29uIGNsYXNzZXMgKi8KLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uSW5jb21pbmcgLmZhLWxvbmctYXJyb3ctbGVmdCwKLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uT3V0Z29pbmcgLmZhLWxvbmctYXJyb3ctcmlnaHQgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5UYWJsZVNtYWxsIHRib2R5IHRkLkF0dGFjaG1lbnQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBhLkF0dGFjaG1lbnQgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdGQgYS5BdHRhY2htZW50IGkgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGgyIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgVGFibGUgQ29udGV4dCBTZXR0aW5ncwogKi8KLlRhYmxlQ29udGV4dFNldHRpbmdzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAyOHB4Owp9CgouVGFibGVDb250ZXh0U2V0dGluZ3MgYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxOHB4OwogICAgaGVpZ2h0OiAxOXB4OwogICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb250ZXh0c2V0dGluZ3MucG5nKSBuby1yZXBlYXQgNXB4IDRweDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gIEhhbmRsZSBmb3IgcmVzaXppbmcgdGFibGVzCiAqLwouSGFuZGxlIHsKICAgIHdpZHRoOiAxMDAlOwp9CgouSGFuZGxlIGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IGF1dG87CiAgICBoZWlnaHQ6IDE0cHg7CiAgICB3aWR0aDogNzlweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWcvaGFuZGxlLnBuZykgbm8tcmVwZWF0OwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICBjdXJzb3I6IG5zLXJlc2l6ZTsKfQoKLkhhbmRsZS51aS1yZXNpemFibGUtcyB7CiAgICBjdXJzb3I6YXV0bzsKICAgIGhlaWdodDphdXRvICFpbXBvcnRhbnQ7CiAgICBsZWZ0OmF1dG87Cn0KCi5IYW5kbGUudWktcmVzaXphYmxlLWhhbmRsZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIHotaW5kZXg6IDE5Owp9CgovKioKICogQHN1YnNlY3Rpb24gIFRhYmxlIGhlYWRlcnMtZmlsdGVycwogKi8KIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4uR3JheSB7CiAgICBjb2xvcjogIzQ0NDsKfQoKLkNvbHVtbkZpbHRlciArIC5BSkFYTG9hZGVyIHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggMnB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogOTk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCnNlbGVjdC5Db2x1bW5GaWx0ZXIgewogICAgd2lkdGg6IDEwMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCAuU29ydEFzY2VuZGluZ0xhcmdlIGEsCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZ0xhcmdlIGEgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgLlNvcnREZXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCQyI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCnRoZWFkIC5oZWFkZXJTb3J0VXAgPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckRlc2MgPiBkaXYudGFibGVzb3J0ZXItaGVhZGVyLWlubmVyID4gYTpiZWZvcmUgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9Cgp0aGVhZCAuaGVhZGVyU29ydERvd24gPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckFzYyA+IGRpdi50YWJsZXNvcnRlci1oZWFkZXItaW5uZXIgPiBhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCMiI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIGEsCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHNwYW4uR3JheSB7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBsaW5lLWhlaWdodDogMTZweDsKICAgIHBhZGRpbmctbGVmdDogMHB4OwogICAgbWFyZ2luLWxlZnQ6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxN3B4OwogICAgaGVpZ2h0OiAxN3B4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgb3BhY2l0eTogMC41OwogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciBpIHsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgewogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlci5GaWx0ZXJBY3RpdmUgLkNvbHVtblNldHRpbmdzVHJpZ2dlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlcjpob3ZlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgewogICAgb3BhY2l0eTogMS4wOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIuRmlsdGVyQWN0aXZlIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgaSwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgaSB7CgogICAgY29sb3I6ICMzMzMzMzM7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI0JCQkJCQjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCAwIHJnYmEoNCwgMCwgNzEsIDAuMTYpOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgdmFyKC0tY29sU2hhZG93RGFyayk7CiAgICBkaXNwbGF5OiBub25lOwogICAgcGFkZGluZzogNHB4IDhweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwcHg7CiAgICB0b3A6IDJweDsKICAgIHdpZHRoOiAxODBweDsKICAgIHotaW5kZXg6IDEwMDsKfQoKLk1haW5Cb3guRGFzaGJvYXJkIC5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICB0b3A6IC0xMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggc2VsZWN0IHsKICAgIG1hcmdpbi10b3A6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBhIHsKICAgIGJhY2tncm91bmQ6ICNBQUFBQUE7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgY29sb3I6ICNGRkZGRkY7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGhlaWdodDogMTVweDsKICAgIGxpbmUtaGVpZ2h0OiAxM3B4OwogICAgbGVmdDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0b3A6IC0xcHg7CiAgICB3aWR0aDogMTBweDsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IGEuRGVsZXRlRmlsdGVyIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggYS5EZWxldGVGaWx0ZXIuSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCBzcGFuLlNlbGVjdGVkVmFsdWUgYTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjODg4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgIHdpZHRoOiAxMDBweDsKfQoKCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHsKICAgIHBhZGRpbmc6IDBweCAyMHB4IDBweCAxcHg7Cn0KCi5UYWJsZVNtYWxsIC5Db2x1bW5GaWx0ZXIgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgZmxvYXQ6IGxlZnQ7Cn0KCi8qIERlbGV0ZSBmaWx0ZXJzICovCi5Db250ZXh0U2V0dGluZ3MuUmVtb3ZlRmlsdGVycyBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29udGV4dFNldHRpbmdzLlJlbW92ZUZpbHRlcnMgYSBpIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIFBhY2thZ2UgbWFuYWdlcgogKi8KCnAuSW50cm9JbnN0YWxsIHsKICAgIHdpZHRoOiA3MCU7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiA3cHg7Cn0KCi5PVE9CT1ZlcmlmeUxvZ29CaWcgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIHdpZHRoOiAyMDBweDsKICAgIGhlaWdodDogNDVweDsKfQoKLk9UT0JPVmVyaWZ5TG9nbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggM3B4OwogICAgd2lkdGg6IDc2cHg7CiAgICBoZWlnaHQ6IDE2cHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgSWNvbnMgaW4gdGFibGVzCiAqLwoKdGQgaSwKdGQgYSBpIHsKICAgIGNvbG9yOiAjOTk5OwogICAgbWFyZ2luLXJpZ2h0OiAzcHg7Cn0KCnRyOmhvdmVyIHRkIGksCnRyOmhvdmVyIHRkIGEgaSwKdGQgYTpob3ZlciBpIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/img/devices_black_24dp.svg" Permission="660" Encode="Base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQgN2MwLS41NS40NS0xIDEtMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg0Yy0xLjEgMC0yIC45LTIgMnYxMWgtLjVjLS44MyAwLTEuNS42Ny0xLjUgMS41Uy42NyAyMCAxLjUgMjBIMTR2LTNINFY3em0xOSAxaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3eiIvPjwvc3ZnPg==</File>
        <File Location="var/itsm/configitemclasses/IT-Servicemanagement-11_0_3.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IEFwcGxpYW5jZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4KICAgIFwgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIEFwcGxpYW5jZVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZToKICAgIElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENvbnRhaW5lciBNYW5hZ2VtZW50OiBDb250YWluZXIgTWFuYWdlbWVudAogICAgICAgICAgRE5TLVNlcnZlcjogRE5TLVNlcnZlcgogICAgICAgICAgRmlyZXdhbGw6IEZpcmV3YWxsCiAgICAgICAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSk6IElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKQogICAgICAgICAgT1RPQk86IE9UT0JPCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBob25lIC8gVm9JUDogUGhvbmUgLyBWb0lQCiAgICAgICAgICBWUE46IFZQTgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEFwcGxpYW5jZSBUeXBlCiAgICAgIE5hbWU6IElUU01BcHBsaWFuY2UtQXBwbGlhbmNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IEJ1aWxkaW5nCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgU3Vic2lkaWFyeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZQogICAgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkCiAgICBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIgogICAgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuICAgIFxyXG5TZWN0aW9uczpcclxuICBTdWJzaWRpYXJ5OlxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjogU3Vic2lkaWFyeVxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnlcclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzc1xyXG4gICAgRmllbGRMaXN0UHJlOlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnkiCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeToKICAgICAgQ0lDbGFzczogQnVpbGRpbmcKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogMAogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFN1YnNpZGlhcnkKICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IENlcnRpZmljYXRlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1TcGFuOgogICAgMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDZXJ0aWZpY2F0ZVxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01DZXJ0aWZpY2F0ZS1DcmVhdGlvbkRhdGU6CiAgICAgIENJQ2xhc3M6IENlcnRpZmljYXRlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENyZWF0aW9uIERhdGUKICAgICAgTmFtZTogSVRTTUNlcnRpZmljYXRlLUNyZWF0aW9uRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNlcnRpZmljYXRlLUV4cGlyeURhdGU6CiAgICAgIENJQ2xhc3M6IENlcnRpZmljYXRlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEV4cGlyeSBEYXRlCiAgICAgIE5hbWU6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2VydGlmaWNhdGUtVHlwZToKICAgICAgQ0lDbGFzczogQ2VydGlmaWNhdGUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBDbGllbnQgQ2VydGlmaWNhdGVzOiBDbGllbnQgQ2VydGlmaWNhdGVzCiAgICAgICAgICBDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzOiBDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzCiAgICAgICAgICBEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlczogRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMKICAgICAgICAgIEVtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyk6IEVtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcykKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU1NML1RMUyBDZXJ0aWZpY2F0ZXM6IFNTTC9UTFMgQ2VydGlmaWNhdGVzCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNQ2VydGlmaWNhdGUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogQ2xpZW50CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIFJvd1NwYW46CiAgICAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4gIC0gTmFtZTogSGFyZHdhcmVcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZQogICAgUGFydGl0aW9uOjpTdG9yYWdlIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ2xpZW50IFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDoKICAgIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOgogICAgMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yawogICAgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDbGllbnQKICAgIFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogNlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjoKICAgIDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpcgogICAgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZQogICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUKICAgIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMKICAgIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00KICAgIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuCiAgICBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDbGllbnRcclxuICBJVFNNIE1vZGVsOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkCiAgICBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00KICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICBJVFNNIENsaWVudCBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gQ2xpZW50IFNvZnR3YXJlCiAgICBcIFxyXG4gIElUU00gQ1BVOlxyXG4gICAgTmFtZTogSVRTTSBDUFVcclxuICBJVFNNIE1lbW9yeTpcclxuICAgIE5hbWU6IElUU00gTWVtb3J5XHJcbgogICAgXCBJVFNNIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuCiAgICBcIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZToKICAgIENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENQVS1DUFVDbGFzczoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIENQVXMKICAgICAgTmFtZTogQ1BVLU51bWJlck9mQ1BVCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtUGh5c2ljYWxDb3JlczoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVGhyZWFkcwogICAgICBOYW1lOiBDUFUtVGhyZWFkcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIE9wZXJhdGluZyBTeXN0ZW0KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogT3BlcmF0aW5nIFN5c3RlbQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvT1MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnk6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBGaXJtd2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50LUZpcm13YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENsaWVudCBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDbGllbnQgU29mdHdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBncmFwaGljcyBjYXJkcwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUdyYXBoaWNzQ2FyZFZlbmRvcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU1EUmFkZW9uSEQ2NzUwOiBBTUQgUmFkZW9uIEhEIDY3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjc3MDogQU1EIFJhZGVvbiBIRCA2NzcwCiAgICAgICAgICBBTURSYWRlb25IRDY3OTA6IEFNRCBSYWRlb24gSEQgNjc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODUwOiBBTUQgUmFkZW9uIEhEIDY4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg3MDogQU1EIFJhZGVvbiBIRCA2ODcwCiAgICAgICAgICBBTURSYWRlb25IRDY5NTA6IEFNRCBSYWRlb24gSEQgNjk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTcwOiBBTUQgUmFkZW9uIEhEIDY5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk5MDogQU1EIFJhZGVvbiBIRCA2OTkwCiAgICAgICAgICBBTURSYWRlb25IRDc3NTA6IEFNRCBSYWRlb24gSEQgNzc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzcwOiBBTUQgUmFkZW9uIEhEIDc3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzc5MDogQU1EIFJhZGVvbiBIRCA3NzkwCiAgICAgICAgICBBTURSYWRlb25IRDc4NTA6IEFNRCBSYWRlb24gSEQgNzg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODcwOiBBTUQgUmFkZW9uIEhEIDc4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk1MDogQU1EIFJhZGVvbiBIRCA3OTUwCiAgICAgICAgICBBTURSYWRlb25IRDc5NzA6IEFNRCBSYWRlb24gSEQgNzk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTkwOiBBTUQgUmFkZW9uIEhEIDc5OTAKICAgICAgICAgIEFNRFJhZGVvblByb0R1bzogQU1EIFJhZGVvbiBQcm8gRHVvCiAgICAgICAgICBBTURSYWRlb25Qcm9TU0c6IEFNRCBSYWRlb24gUHJvIFNTRwogICAgICAgICAgQU1EUmFkZW9uUHJvV1gyMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAyMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDMxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDMxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNDEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNDEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g1MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA1MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDcxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDcxMDAKICAgICAgICAgIEFNRFJhZGVvblI1MjEwOiBBTUQgUmFkZW9uIFI1IDIxMAogICAgICAgICAgQU1EUmFkZW9uUjUyMjA6IEFNRCBSYWRlb24gUjUgMjIwCiAgICAgICAgICBBTURSYWRlb25SNTIzMDogQU1EIFJhZGVvbiBSNSAyMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzIwOiBBTUQgUmFkZW9uIFI1IDMyMAogICAgICAgICAgQU1EUmFkZW9uUjUzMzA6IEFNRCBSYWRlb24gUjUgMzMwCiAgICAgICAgICBBTURSYWRlb25SNTM0MDogQU1EIFJhZGVvbiBSNSAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjQwOiBBTUQgUmFkZW9uIFI3IDI0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTA6IEFNRCBSYWRlb24gUjcgMjUwCiAgICAgICAgICBBTURSYWRlb25SNzI1MFg6IEFNRCBSYWRlb24gUjcgMjUwWAogICAgICAgICAgQU1EUmFkZW9uUjcyNjBYOiBBTUQgUmFkZW9uIFI3IDI2MFgKICAgICAgICAgIEFNRFJhZGVvblI3MzQwOiBBTUQgUmFkZW9uIFI3IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjczNTA6IEFNRCBSYWRlb24gUjcgMzUwCiAgICAgICAgICBBTURSYWRlb25SNzM2MDogQU1EIFJhZGVvbiBSNyAzNjAKICAgICAgICAgIEFNRFJhZGVvblI3MzcwOiBBTUQgUmFkZW9uIFI3IDM3MAogICAgICAgICAgQU1EUmFkZW9uUjkyODU6IEFNRCBSYWRlb24gUjkgMjg1CiAgICAgICAgICBBTURSYWRlb25SOTI5MDogQU1EIFJhZGVvbiBSOSAyOTAKICAgICAgICAgIEFNRFJhZGVvblI5MjkwWDogQU1EIFJhZGVvbiBSOSAyOTBYCiAgICAgICAgICBBTURSYWRlb25SOTI5NVgyOiBBTUQgUmFkZW9uIFI5IDI5NVgyCiAgICAgICAgICBBTURSYWRlb25SOTM4MDogQU1EIFJhZGVvbiBSOSAzODAKICAgICAgICAgIEFNRFJhZGVvblI5MzgwWDogQU1EIFJhZGVvbiBSOSAzODBYCiAgICAgICAgICBBTURSYWRlb25SOTM5MDogQU1EIFJhZGVvbiBSOSAzOTAKICAgICAgICAgIEFNRFJhZGVvblI5MzkwWDogQU1EIFJhZGVvbiBSOSAzOTBYCiAgICAgICAgICBBTURSYWRlb25SOUZ1cnlYOiBBTUQgUmFkZW9uIFI5IEZ1cnkgWAogICAgICAgICAgQU1EUmFkZW9uUjlOYW5vOiBBTUQgUmFkZW9uIFI5IE5hbm8KICAgICAgICAgIEFNRFJhZGVvblJYNTQwMFhUOiBBTUQgUmFkZW9uIFJYIDU0MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMDogQU1EIFJhZGVvbiBSWCA1NTAwCiAgICAgICAgICBBTURSYWRlb25SWDU1MDBYVDogQU1EIFJhZGVvbiBSWCA1NTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU2MDA6IEFNRCBSYWRlb24gUlggNTYwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwWFQ6IEFNRCBSYWRlb24gUlggNTYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NzA6IEFNRCBSYWRlb24gUlggNTcwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDA6IEFNRCBSYWRlb24gUlggNTcwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwWFQ6IEFNRCBSYWRlb24gUlggNTcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1ODA6IEFNRCBSYWRlb24gUlggNTgwCiAgICAgICAgICBBTURSYWRlb25SWDU5MDogQU1EIFJhZGVvbiBSWCA1OTAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMDogQU1EIFJhZGVvbiBSWCA2NjAwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDBYVDogQU1EIFJhZGVvbiBSWCA2NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY3MDA6IEFNRCBSYWRlb24gUlggNjcwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwWFQ6IEFNRCBSYWRlb24gUlggNjcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2ODAwWFQ6IEFNRCBSYWRlb24gUlggNjgwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2OTAwWFQ6IEFNRCBSYWRlb24gUlggNjkwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNTY6IEFNRCBSYWRlb24gUlggVmVnYSA1NgogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNjQ6IEFNRCBSYWRlb24gUlggVmVnYSA2NAogICAgICAgICAgTlZJRElBR2VGb3JjZTIxMDogTlZJRElBIEdlRm9yY2UgMjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1QxMDMwOiBOVklESUEgR2VGb3JjZSBHVCAxMDMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MTA6IE5WSURJQSBHZUZvcmNlIEdUIDUxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTIwOiBOVklESUEgR2VGb3JjZSBHVCA1MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUzMDogTlZJRElBIEdlRm9yY2UgR1QgNTMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1NDU6IE5WSURJQSBHZUZvcmNlIEdUIDU0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjEwOiBOVklESUEgR2VGb3JjZSBHVCA2MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYyMDogTlZJRElBIEdlRm9yY2UgR1QgNjIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MzA6IE5WSURJQSBHZUZvcmNlIEdUIDYzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjQwOiBOVklESUEgR2VGb3JjZSBHVCA2NDAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDcxMDogTlZJRElBIEdlRm9yY2UgR1QgNzEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MzA6IE5WSURJQSBHZUZvcmNlIEdUIDczMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA3MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjUwOiBOVklESUEgR2VGb3JjZSBHVFggMTY1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc0NTogTlZJRElBIEdlRm9yY2UgR1RYIDc0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MDogTlZJRElBIEdlRm9yY2UgR1RYIDc1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwOiBOVklESUEgR2VGb3JjZSBHVFggNzYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk1MDogTlZJRElBIEdlRm9yY2UgR1RYIDk1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk2MDogTlZJRElBIEdlRm9yY2UgR1RYIDk2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk3MDogTlZJRElBIEdlRm9yY2UgR1RYIDk3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MDogTlZJRElBIEdlRm9yY2UgR1RYIDk4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggOTgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgxNTA6IE5WSURJQSBHZUZvcmNlIE1YMTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgzNTA6IE5WSURJQSBHZUZvcmNlIE1YMzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVg0NTA6IE5WSURJQSBHZUZvcmNlIE1YNDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA2MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMjA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNjBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMzA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA5MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwOTAKICAgICAgICAgIE5WSURJQU5WUzMwMDogTlZJRElBIE5WUyAzMDAKICAgICAgICAgIE5WSURJQU5WUzMxMDogTlZJRElBIE5WUyAzMTAKICAgICAgICAgIE5WSURJQU5WUzUxMDogTlZJRElBIE5WUyA1MTAKICAgICAgICAgIE5WSURJQVF1YWRybzIwMDA6IE5WSURJQSBRdWFkcm8gMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvNjAwOiBOVklESUEgUXVhZHJvIDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzEyMDA6IE5WSURJQSBRdWFkcm8gSzEyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0syMjAwOiBOVklESUEgUXVhZHJvIEsyMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDAwMDogTlZJRElBIFF1YWRybyBLNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDogTlZJRElBIFF1YWRybyBLNDIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwMDogTlZJRElBIFF1YWRybyBLNDIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzUyMDA6IE5WSURJQSBRdWFkcm8gSzUyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MDA6IE5WSURJQSBRdWFkcm8gSzYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYxME06IE5WSURJQSBRdWFkcm8gSzYxME0KICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjA6IE5WSURJQSBRdWFkcm8gSzYyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYyME06IE5WSURJQSBRdWFkcm8gSzYyME0KICAgICAgICAgIE5WSURJQVF1YWRyb00xMDAwTTogTlZJRElBIFF1YWRybyBNMTAwME0KICAgICAgICAgIE5WSURJQVF1YWRyb00yMDAwOiBOVklESUEgUXVhZHJvIE0yMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNDAwMDogTlZJRElBIFF1YWRybyBNNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTUwMDA6IE5WSURJQSBRdWFkcm8gTTUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDAwOiBOVklESUEgUXVhZHJvIE02MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwTTogTlZJRElBIFF1YWRybyBNNjAwTQogICAgICAgICAgTlZJRElBUXVhZHJvUDEwMDA6IE5WSURJQSBRdWFkcm8gUDEwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1AyMDAwOiBOVklESUEgUXVhZHJvIFAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwOiBOVklESUEgUXVhZHJvIFA0MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDAwOiBOVklESUEgUXVhZHJvIFA0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNTAwMDogTlZJRElBIFF1YWRybyBQNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDogTlZJRElBIFF1YWRybyBQNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwMDogTlZJRElBIFF1YWRybyBQNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYyMDogTlZJRElBIFF1YWRybyBQNjIwCiAgICAgICAgICBOVklESUFUZXNsYUs4MDogTlZJRElBIFRlc2xhIEs4MAogICAgICAgICAgTlZJRElBVGVzbGFQMTAwOiBOVklESUEgVGVzbGEgUDEwMAogICAgICAgICAgTlZJRElBVGVzbGFUNDogTlZJRElBIFRlc2xhIFQ0CiAgICAgICAgICBOVklESUFUZXNsYVYxMDA6IE5WSURJQSBUZXNsYSBWMTAwCiAgICAgICAgICBOVklESUFUaXRhblJUWDogTlZJRElBIFRpdGFuIFJUWAogICAgICAgICAgTlZJRElBVGl0YW5WOiBOVklESUEgVGl0YW4gVgogICAgICAgICAgTlZJRElBVGl0YW5YUGFzY2FsOiBOVklESUEgVGl0YW4gWCAoUGFzY2FsKQogICAgICAgICAgTlZJRElBVGl0YW5YcDogTlZJRElBIFRpdGFuIFhwCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBHcmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEdERFI1OiBHRERSNQogICAgICAgICAgR0REUjVYOiBHRERSNVgKICAgICAgICAgIEdERFI2OiBHRERSNgogICAgICAgICAgR0REUjZYOiBHRERSNlgKICAgICAgICAgIEhCTTI6IEhCTTIKICAgICAgICAgIEhCTTJFOiBIQk0yRQogICAgICAgICAgSEJNSGlnaEJhbmR3aWR0aE1lbW9yeTogSEJNIChIaWdoIEJhbmR3aWR0aCBNZW1vcnkpCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNZW1vcnkgVHlwZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtT3V0cHV0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRFZJOiBEVkkKICAgICAgICAgIERpc3BsYXlQb3J0OiBEaXNwbGF5UG9ydAogICAgICAgICAgSERNSTogSERNSQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBWR0E6IFZHQQogICAgICAgICAgVmlydHVhbExpbms6IFZpcnR1YWxMaW5rCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogT3V0cHV0cwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEwMjQnOiAxMDI0IEdCCiAgICAgICAgICAnMTInOiAxMiBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgICc5Nic6IDk2IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ2xvY2tSYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAwJzogJzEwMCcKICAgICAgICAgICcxMzMnOiAnMTMzJwogICAgICAgICAgJzE2Nic6ICcxNjYnCiAgICAgICAgICAnMjAwJzogJzIwMCcKICAgICAgICAgICcyMzMnOiAnMjMzJwogICAgICAgICAgJzI2Nic6ICcyNjYnCiAgICAgICAgICAnMzAwJzogJzMwMCcKICAgICAgICAgICczMzMnOiAnMzMzJwogICAgICAgICAgJzM2Nic6ICczNjYnCiAgICAgICAgICAnNDAwJzogJzQwMCcKICAgICAgICAgICc0NTAnOiAnNDUwJwogICAgICAgICAgJzUwMCc6ICc1MDAnCiAgICAgICAgICAnNTI1JzogJzUyNScKICAgICAgICAgICc2MDAnOiAnNjAwJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tyYXRlCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2xvY2tSYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnQKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50XCIgJV1bJSBDYXBhY2l0eSA9CiAgICAgICAgICBcIkR5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5XCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudCAqIERhdGEuJENhcGFjaXR5CiAgICAgICAgICAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uRGVsZXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktVHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRERSOiBERFIKICAgICAgICAgIEREUjI6IEREUjIKICAgICAgICAgIEREUjM6IEREUjMKICAgICAgICAgIEREUjQ6IEREUjQKICAgICAgICAgIEREUjU6IEREUjUKICAgICAgICAgIFNEUkFNOiBTRFJBTQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEhEREhhcmREaXNrRHJpdmU6IEhERCAoSGFyZCBEaXNrIERyaXZlKQogICAgICAgICAgICAgICAgTlZNZVNTRE5vblZvbGF0aWxlTWVtb3J5RXhwcmVzc1NvbGlkU3RhdGVEcml2ZTogTlZNZSBTU0QgKE5vbi1Wb2xhdGlsZQogICAgICAgICAgICAgICAgICBNZW1vcnkgRXhwcmVzcyBTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU1NEU29saWRTdGF0ZURyaXZlOiBTU0QgKFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgU1NIRFNvbGlkU3RhdGVIeWJyaWREcml2ZTogU1NIRCAoU29saWQgU3RhdGUgSHlicmlkIERyaXZlKQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgVHlwZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1vZGVsCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gVXNlZCBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogQ2xpZW50ICh2aXJ0dWFsKQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOgogICAgMlxyXG5cclxuICAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLSBOYW1lOiBTb2Z0d2FyZVxyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZwogICAgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENsaWVudCBTb2Z0d2FyZTo6Q2xpZW50IFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcbiAgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gQ2xpZW50IFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6IDZcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDdcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbgogICAgXCAgICAgICBSb3dTcGFuOiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4KICAgIFwgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjCiAgICBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDbGllbnRcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQgogICAgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nIFN5c3RlbVxyXG4KICAgIFwgSVRTTSBDbGllbnQgU29mdHdhcmU6XHJcbiAgICBOYW1lOiBJVFNNIENsaWVudCBTb2Z0d2FyZSAgXHJcbiAgSVRTTSBDUFU6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00gR3JhcGhpY3MKICAgIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2VcclxuCiAgICBcIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uICAgIFxyXG4gIElUU00gTmV0d29yawogICAgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbgogICAgXCBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6CiAgICBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmlybXdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudC1GaXJtd2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQ2xpZW50IFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENsaWVudCBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBIRERIYXJkRGlza0RyaXZlOiBIREQgKEhhcmQgRGlzayBEcml2ZSkKICAgICAgICAgICAgICAgIE5WTWVTU0ROb25Wb2xhdGlsZU1lbW9yeUV4cHJlc3NTb2xpZFN0YXRlRHJpdmU6IE5WTWUgU1NEIChOb24tVm9sYXRpbGUKICAgICAgICAgICAgICAgICAgTWVtb3J5IEV4cHJlc3MgU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFNTRFNvbGlkU3RhdGVEcml2ZTogU1NEIChTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIFNTSERTb2xpZFN0YXRlSHlicmlkRHJpdmU6IFNTSEQgKFNvbGlkIFN0YXRlIEh5YnJpZCBEcml2ZSkKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFR5cGUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNb2RlbAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIFVzZWQgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBDbGllbnQgU29mdHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUKICAgIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00KICAgIExpY2Vuc2VcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBDbHVzdGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZAogICAgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTQogICAgR0YgQ2x1c3RlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlcgogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQWNjb3VudGluZzpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIEFjY291bnRpbmcgSW5mb3JtYXRpb25cclxuICAgIC0gREY6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlclxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2VcclxuICAgIC0gREY6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZVxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZVxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctQ29zdFVuaXRcclxuICAgIC0gREY6CiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlclxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlclxyXG4gICAgLQogICAgREY6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0c1xyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHNcclxuCiAgICBcICAgLSBERjogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50IgogIFJvbGVOYW1lOiBDTURCIEFjY291bnRpbmcKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEJhY2tsaW5rczpcclxuICAgIFR5cGU6IENvbmZpZ0l0ZW1MaW5rc1xyXG4gICAgSGVhZGVyOgogICAgQmFja2xpbmtzXHJcbiAgICBMaW5rZWRBczogU291cmNlIgogIFJvbGVOYW1lOiBDTURCIEJhY2tsaW5rcwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBUeXBlOiBEZXNjcmlwdGlvblxyXG4gICAgSGVhZGVyOgogICAgRGVzY3JpcHRpb24iCiAgUm9sZU5hbWU6IENNREIgRGVzY3JpcHRpb24KLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN1YnNpZGlhcnk6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjoKICAgIFN1YnNpZGlhcnlcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5XHJcbiAgQWRkcmVzczpcclxuICAgIFR5cGU6CiAgICBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4gICAgU2VjdGlvbk5hbWU6CiAgICBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeSIKICBSb2xlTmFtZTogQ01EQiBHRiBCdWlsZGluZwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTG9jYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjoKICAgIExvY2F0aW9uXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb25cclxuICBBZGRyZXNzOlxyXG4gICAgVHlwZToKICAgIFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvblxyXG4gICAgU2VjdGlvbk5hbWU6CiAgICBBZGRyZXNzIgogIFJvbGVOYW1lOiBDTURCIExvY2F0ZWQgaW4KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogQ29udHJhY3QKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLQogICAgTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczoKICAgIFxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbgogICAgXCAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIENvbnRyYWN0XHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQgogICAgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250cmFjdC1QZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IENvbnRyYWN0LVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRyYWN0LVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBDb250cmFjdC1QZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udHJhY3QtVHlwZToKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnQ29uc3VsdGluZyBBZ3JlZW1lbnQ6JzogQ29uc3VsdGluZyBBZ3JlZW1lbnQKICAgICAgICAgIEVtcGxveW1lbnQgQ29udHJhY3Q6IEVtcGxveW1lbnQgQ29udHJhY3QKICAgICAgICAgIEZyYW5jaGlzZSBBZ3JlZW1lbnQ6IEZyYW5jaGlzZSBBZ3JlZW1lbnQKICAgICAgICAgIExlYXNlIEFncmVlbWVudDogTGVhc2UgQWdyZWVtZW50CiAgICAgICAgICBMaWNlbnNlIEFncmVlbWVudDogTGljZW5zZSBBZ3JlZW1lbnQKICAgICAgICAgIExvYW4gQWdyZWVtZW50OiBMb2FuIEFncmVlbWVudAogICAgICAgICAgTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpOiBOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFydG5lcnNoaXAgQWdyZWVtZW50OiBQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQKICAgICAgICAgIFNhbGVzIENvbnRyYWN0OiBTYWxlcyBDb250cmFjdAogICAgICAgICAgU2VydmljZSBBZ3JlZW1lbnQ6IFNlcnZpY2UgQWdyZWVtZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ29udHJhY3QgVHlwZQogICAgICBOYW1lOiBDb250cmFjdC1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQ291bnRyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBEYXRhYmFzZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBTZXJ2ZXI6OlNlcnZlclxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlCiAgICB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucwogICAgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseQogICAgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2ggY2xhc3Mgd2l0aAogICAgY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbiByZWZlcnJpbmcKICAgIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzCiAgICBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00KICAgIEdGIERhdGFiYXNlXHJcbiAgSVRTTSBTZXJ2ZXI6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlclxyXG4gIElUU00gTGljZW5zZTpcclxuCiAgICBcICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIKICAgIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogRGF0YWJhc2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9TZXJ2ZXI6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlcgogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Tb2Z0d2FyZS1EYXRhYmFzZVR5cGU6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQ2hyb21hIERCOiBDaHJvbWEgREIKICAgICAgICAgIEVsYXN0aWNzZWFyY2g6IEVsYXN0aWNzZWFyY2gKICAgICAgICAgIElCTSBEYjI6IElCTSBEYjIKICAgICAgICAgIE1hcmlhREI6IE1hcmlhREIKICAgICAgICAgIE1pY3Jvc29mdCBTUUwgU2VydmVyOiBNaWNyb3NvZnQgU1FMIFNlcnZlcgogICAgICAgICAgTW9uZ29EQjogTW9uZ29EQgogICAgICAgICAgTXlTUUw6IE15U1FMCiAgICAgICAgICBPcmFjbGUgRGF0YWJhc2U6IE9yYWNsZSBEYXRhYmFzZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQb3N0Z3JlU1FMOiBQb3N0Z3JlU1FMCiAgICAgICAgICBSZWRpczogUmVkaXMKICAgICAgICAgIFNRTGl0ZTogU1FMaXRlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogRGF0YWJhc2UKICAgICAgTmFtZTogSVRTTVNvZnR3YXJlLURhdGFiYXNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQ6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxMCcKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEVuZCBvZiBzdXBwb3J0CiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRlRW5kT2ZTdXBwb3J0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2U6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiByZWxlYXNlCiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRlUmVsZWFzZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBEZXZpY2UgKHVuaWRlbnRpZmllZCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgICBWZXJzaW9uVHJpZ2dlcjoKICAgIC0gRGVmaW5pdGlvblVwZGF0ZQogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZToKICAgIElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IERpc3BsYXkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuCiAgICBcIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgRGlzcGxheVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCCiAgICBMb2NhdGVkIGluXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbgogICAgXCAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktUG93ZXJEZWxpdmVyeToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIE5vOiBObwogICAgICAgICAgWWVzOiBZZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQb3dlciBEZWxpdmVyeQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1SZXNvbHV0aW9uOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMksgKDIwNDggeCAxMDgwKTogMksgKDIwNDggeCAxMDgwKQogICAgICAgICAgJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JzogJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JwogICAgICAgICAgNUsgKDUxMjAgeCAyODgwKTogNUsgKDUxMjAgeCAyODgwKQogICAgICAgICAgOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKTogOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKQogICAgICAgICAgRnVsbCBIRCAoMTkyMCB4IDEwODApOiBGdWxsIEhEICgxOTIwIHggMTA4MCkKICAgICAgICAgIEhEICgxMjgwIHggNzIwKTogSEQgKDEyODAgeCA3MjApCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFF1YWQgSEQgKDI1NjAgeCAxNDQwKTogUXVhZCBIRCAoMjU2MCB4IDE0NDApCiAgICAgICAgICBVV1FIRCAoMzQ0MCB4IDE0NDApOiBVV1FIRCAoMzQ0MCB4IDE0NDApCiAgICAgICAgICBXVVhHQSAoMTkyMCB4IDEyMDApOiBXVVhHQSAoMTkyMCB4IDEyMDApCiAgICAgICAgICBXWEdBICgxMzY2IHggNzY4KTogV1hHQSAoMTM2NiB4IDc2OCkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFJlc29sdXRpb24KICAgICAgTmFtZTogSVRTTURpc3BsYXktUmVzb2x1dGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktU2l6ZUluY2g6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMjcnOiAyNyIKICAgICAgICAgICczMic6IDMyIgogICAgICAgICAgJzM0JzogMzQiCiAgICAgICAgICAnMzUnOiAzNSIKICAgICAgICAgICc0MCc6IDQwIgogICAgICAgICAgJzQzJzogNDMiCiAgICAgICAgICAnNDknOiA0OSIKICAgICAgICAgICc1NSc6IDU1IgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTW9uaXRvciBTaXplCiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVNpemVJbmNoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1UeXBlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpOiBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSkKICAgICAgICAgIExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSk6IExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSk6IE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodAogICAgICAgICAgICBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG91Y2hzY3JlZW4gTW9uaXRvcjogVG91Y2hzY3JlZW4gTW9uaXRvcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTURpc3BsYXktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IEZpbGVzCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBJUCBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgSVAgTmV0d29ya1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb246CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgIE5hbWU6IElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstQ0lEUjoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ0lEUgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUNJRFIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBQcm90b2NvbDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUHJvdG9jb2wKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBSYW5nZUVuZDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRW5kIElQIEFkZHJlc3MKICAgICAgTmFtZTogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RhcnQgSVAgQWRkcmVzcwogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXI6CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOiAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzogJ0xheWVyIDI6IERhdGEgTGluayBMYXllcicKICAgICAgICAgICdMYXllciAzOiBOZXR3b3JrIExheWVyJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KScKICAgICAgICAgICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOiAnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJwogICAgICAgICAgJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOiAnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcicKICAgICAgICAgICdMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInOiAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJwogICAgICAgICAgJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJzogJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTmV0d29yayBMYXllcgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLU5ldHdvcmtMYXllcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgQ2xpZW50IFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIENvbnRhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRhY3RcclxuCiAgICBcICAgLSBERjogQ29udGFjdC1EaXN0cmlidXRvclxyXG4gICAgLSBERjogQ29udGFjdC1Vc2VyXHJcbiAgICAtIERGOiBDb250YWN0LUFkbWluaXN0cmF0b3IiCiAgUm9sZU5hbWU6IElUU00gQ29udGFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ29udHJhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRyYWN0XHJcbgogICAgXCAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdFxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9Db250cmFjdFR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbVxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjoKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seTogMSIKICBSb2xlTmFtZTogSVRTTSBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ1BVOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6IENQVVxyXG4KICAgIFwgICAgIC0gREY6IENQVS1DUFVDbGFzc1xyXG4gICAgICAtIERGOiBDUFUtTnVtYmVyT2ZDUFVcclxuICAgICAgLSBERjogQ1BVLVBoeXNpY2FsQ29yZXNcclxuCiAgICBcICAgICAtIERGOiBDUFUtVGhyZWFkc1xyXG4gICAgICAtIERGOiBDUFUtQ2xvY2tzcGVlZFxyXG4gICAgICAtIERGOiBDUFUtU29ja2V0VHlwZSIKICBSb2xlTmFtZTogSVRTTSBDUFUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEZvcm0gRmFjdG9yOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgRm9ybSBGYWN0b3JcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVR5cGVcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0c1xyXG4KICAgIFwgICAtIERGOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGhcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVdlaWdodCIKICBSb2xlTmFtZTogSVRTTSBGb3JtIEZhY3RvcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGUiCiAgUm9sZU5hbWU6IElUU00gR0YgQXBwbGlhbmNlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1UeXBlXHJcbiAgICAgIC0gREY6CiAgICBJVFNNQ2VydGlmaWNhdGUtQ3JlYXRpb25EYXRlXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlIgogIFJvbGVOYW1lOiBJVFNNIEdGIENlcnRpZmljYXRlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnlcclxuICAgICAgLQogICAgREY6IElUU01DbGllbnQtRmlybXdhcmUiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2xpZW50Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBTdW1tYXJ5XHJcbiAgICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2x1c3RlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBDb250cmFjdC1UeXBlXHJcbiAgICAgIC0gREY6IENvbnRyYWN0LVBlcmlvZEZyb21cclxuCiAgICBcICAgICAtIERGOiBDb250cmFjdC1QZXJpb2RVbnRpbCIKICBSb2xlTmFtZTogSVRTTSBHRiBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNU29mdHdhcmUtRGF0YWJhc2VUeXBlXHJcbiAgICAgIC0KICAgIERGOiBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2VcclxuICAgICAgLSBERjogSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQiCiAgUm9sZU5hbWU6IElUU00gR0YgRGF0YWJhc2UKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTURpc3BsYXktU2l6ZUluY2hcclxuICAgICAgLSBERjoKICAgIElUU01EaXNwbGF5LVR5cGVcclxuICAgICAgLSBERjogSVRTTURpc3BsYXktUmVzb2x1dGlvblxyXG4gICAgICAtIERGOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5IgogIFJvbGVOYW1lOiBJVFNNIEdGIERpc3BsYXkKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXJcclxuICAgICAgLQogICAgREY6IElUU01JUE5ldHdvcmstSVBQcm90b2NvbFxyXG4gICAgICAtIERGOiBJVFNNSVBOZXR3b3JrLUFkZHJlc3NBbGxvY2F0aW9uXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlU3RhcnRcclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1DSURSIgogIFJvbGVOYW1lOiBJVFNNIEdGIElQIE5ldHdvcmsKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGVcclxuICAgICAgLQogICAgREY6IElUU01MaWNlbnNlLUxpY2Vuc2VLZXlcclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50XHJcbiAgICAgIC0KICAgIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbVxyXG4gICAgICAtIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwiCiAgUm9sZU5hbWU6IElUU00gR0YgTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNT3RoZXJBY2Nlc3Nvcmllcy1UeXBlIgogIFJvbGVOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1UeXBlXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1OdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgUGhvbmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFJhY2s6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb21cclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzcyIKICBSb2xlTmFtZTogSVRTTSBHRiBSYWNrCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01TSU0tQ2FyZG51bWJlclxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBJTlxyXG4KICAgIFwgICAgIC0gREY6IElUU01TSU0tUElOMlxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVS1xyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVSzJcclxuCiAgICBcICAgICAtIERGOiBJVFNNU0lNLU1vYmlsZU51bWJlclxyXG4gICAgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3RcclxuICAgICAgLQogICAgREY6IElUU01TSU0tVHlwZSIKICBSb2xlTmFtZTogSVRTTSBHRiBTSU0gQ2FyZAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNVVBTLU1heGltdW1Mb2FkQ2FwYWNpdHlcclxuICAgICAgLQogICAgREY6IElUU01VUFMtQmF0dGVyeVR5cGVcclxuICAgICAgLSBERjogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkiCiAgUm9sZU5hbWU6IElUU00gR0YgVVBTCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHcmFwaGljcyBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgR3JhcGhpY3MgQ2FyZHNcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yXHJcbiAgICAtIERGOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50XHJcbgogICAgXCAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2VcclxuCiAgICBcICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzIgogIFJvbGVOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIExpY2Vuc2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IExpY2Vuc2VcclxuCiAgICBcICAgLSBERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2VcclxuICAgIC0gREY6IElUU00tTGVuc1RvTGljZW5zZVR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudFxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbVxyXG4KICAgIFwgICAgIFJlYWRvbmx5OiAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seToKICAgIDEiCiAgUm9sZU5hbWU6IElUU00gTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTWVtb3J5OlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBNZW1vcnlcclxuCiAgICBcICAgLSBERjogSVRTTU1lbW9yeS1Db3VudFxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1DYXBhY2l0eVxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01NZW1vcnktQ2xvY2tSYXRlXHJcbiAgICAtIERGOiBJVFNNTWVtb3J5LVR5cGUiCiAgUm9sZU5hbWU6IElUU00gTWVtb3J5Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBNb2RlbDpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjogSGFyZHdhcmUKICAgIE1vZGVsXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTW9kZWxcclxuICAgIC0KICAgIERGOiBJVFNNTW9kZWwtU2VydmljZVRhZ1xyXG4gICAgLSBERjogSVRTTU1vZGVsLVNlcmlhbE51bWJlclxyXG4gICAgLSBERjogSVRTTU1vZGVsLU1vZGVsTm90ZSIKICBSb2xlTmFtZTogSVRTTSBNb2RlbAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTmV0d29yayBJbmZvOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgTmV0d29ya1xyXG4gICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvIgogIFJvbGVOYW1lOiBJVFNNIE5ldHdvcmsgSW5mbwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9PUyIKICBSb2xlTmFtZTogSVRTTSBPcGVyYXRpbmcgU3lzdGVtCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTZXJ2ZXI6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFNlcnZlclxyXG4KICAgIFwgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyIgogIFJvbGVOYW1lOiBJVFNNIFNlcnZlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgU2VydmVyIFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFNJTSBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBTSU0KICAgIENhcmRcclxuICAgIC0gREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkXHJcbiAgICAtIERGOiBJVFNNU0lNLUxlbnN0b1NJTUlNb2JpbGVOdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gU0lNIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN0b3JhZ2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFN0b3JhZ2VcclxuCiAgICBcICAgLSBERjogSVRTTVN0b3JhZ2UtU3RvcmFnZSIKICBSb2xlTmFtZTogSVRTTSBTdG9yYWdlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIFN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24iCiAgUm9sZU5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogTGljZW5zZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtCiAgICBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3VudCBvZiBsaWNlbnNlcwogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VLZXk6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGljZW5zZSBLZXkKICAgICAgTmFtZTogSVRTTUxpY2Vuc2UtTGljZW5zZUtleQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMTAnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQTEFmZmVyb0dlbmVyYWxQdWJsaWNMaWNlbnNlOiBBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkKICAgICAgICAgIEFwYWNoZUxpY2Vuc2U6IEFwYWNoZSBMaWNlbnNlCiAgICAgICAgICBCU0RMaWNlbnNlQmVya2VsZXlTb2Z0d2FyZURpc3RyaWJ1dGlvbkxpY2Vuc2U6IEJTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZQogICAgICAgICAgICBEaXN0cmlidXRpb24gTGljZW5zZSkKICAgICAgICAgIENDMENyZWF0aXZlQ29tbW9uc1plcm86IENDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKQogICAgICAgICAgQ3JlYXRpdmVDb21tb25zOiBDcmVhdGl2ZSBDb21tb25zCiAgICAgICAgICBFUExFY2xpcHNlUHVibGljTGljZW5zZTogRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgRnJlZXdhcmU6IEZyZWV3YXJlCiAgICAgICAgICBHUExHZW5lcmFsUHVibGljTGljZW5zZTogR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgTEdQTExlc3NlckdlbmVyYWxQdWJsaWNMaWNlbnNlOiBMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkKICAgICAgICAgIE1JVExpY2Vuc2U6IE1JVCBMaWNlbnNlCiAgICAgICAgICBNUExNb3ppbGxhUHVibGljTGljZW5zZTogTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQZXJwZXR1YWxsaWNlbnNlczogUGVycGV0dWFsIGxpY2Vuc2VzCiAgICAgICAgICBQdWJsaWNEb21haW46IFB1YmxpYyBEb21haW4KICAgICAgICAgIFNlYXRsaWNlbnNlczogU2VhdCBsaWNlbnNlcwogICAgICAgICAgU2hhcmV3YXJlOiBTaGFyZXdhcmUKICAgICAgICAgIFN1YnNjcmlwdGlvbmJhc2VkbGljZW5zZXM6IFN1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcwogICAgICAgICAgVm9sdW1lbGljZW5zZXM6IFZvbHVtZSBsaWNlbnNlcwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogTW9iaWxlIERldmljZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTSU0gQ2FyZDo6U0lNCiAgICBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlCiAgICBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQKICAgIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiCiAgICBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywKICAgIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZQogICAgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MKICAgIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBTSU0gQ2FyZDpcclxuCiAgICBcICAgTmFtZTogSVRTTSBTSU0gQ2FyZFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tTGVuc3RvU0lNSU1vYmlsZU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01TSU0tTW9iaWxlTnVtYmVyCiAgICAgICAgUmVmZXJlbmNlREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTVNJTS1SZWZlcmVuY2V0b1NJTUNhcmQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IE1vYmlsZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1MZW5zdG9TSU1JTW9iaWxlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTSU0gQ2FyZAogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTSU0gQ2FyZAogICAgICBOYW1lOiBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBPcGVyYXRpbmcgU3lzdGVtCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46CiAgICAyXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBPdGhlciBBY2Nlc3NvcmllcwogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZToKICAgIENNREIgQWNjb3VudGluZ1xyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZAogICAgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbgogICAgXCBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU90aGVyQWNjZXNzb3JpZXMtVHlwZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBDYXJkIFJlYWRlcjogQ2FyZCBSZWFkZXIKICAgICAgICAgIEV4dGVybmFsIEhhcmQgRHJpdmU6IEV4dGVybmFsIEhhcmQgRHJpdmUKICAgICAgICAgIEhlYWRzZXQ6IEhlYWRzZXQKICAgICAgICAgIEtleWJvYXJkOiBLZXlib2FyZAogICAgICAgICAgTW91c2U6IE1vdXNlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNwZWFrZXJzOiBTcGVha2VycwogICAgICAgICAgVVNCIEh1YjogVVNCIEh1YgogICAgICAgICAgVlIgSGVhZHNldDogVlIgSGVhZHNldAogICAgICAgICAgV2ViY2FtOiBXZWJjYW0KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU01PdGhlckFjY2Vzc29yaWVzLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IFBob25lCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuCiAgICBcIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgUGhvbmVcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOgogICAgSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01QaG9uZS1OdW1iZXI6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQaG9uZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVBob25lLU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVBob25lLVR5cGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQW5hbG9nIFBob25lOiBBbmFsb2cgUGhvbmUKICAgICAgICAgIENvbmZlcmVuY2UgUGhvbmU6IENvbmZlcmVuY2UgUGhvbmUKICAgICAgICAgIENvcmRsZXNzIFBob25lIChERUNUIFBob25lKTogQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpCiAgICAgICAgICBMYW5kbGluZSBQaG9uZTogTGFuZGxpbmUgUGhvbmUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2F0ZWxsaXRlIFBob25lOiBTYXRlbGxpdGUgUGhvbmUKICAgICAgICAgIFZvSVAgUGhvbmU6IFZvSVAgUGhvbmUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQaG9uZSBUeXBlCiAgICAgIE5hbWU6IElUU01QaG9uZS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBQcmludGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUHJvamVjdG9yCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgLSBMb2NhdGlvbgogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBSYWNrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgUm9vbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyICAgICAgICBcclxuCiAgICBcICAgICAtIFNlY3Rpb246IEFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuXHJcblNlY3Rpb25zOlxyXG4KICAgIFwgUm9vbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4gIEFkZHJlc3M6XHJcbgogICAgXCAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tXHJcbgogICAgXCAgIFNlY3Rpb25OYW1lOiBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbSIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFJvb20KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBSb29tCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIExvY2F0aW9uCiAgICBOYW1lOiBSb29tCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgQnVpbGRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuCiAgICBcIEJ1aWxkaW5nOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9CdWlsZGluZ1xyXG4gIEFkZHJlc3M6XHJcbgogICAgXCAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9CdWlsZGluZ1xyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzc1xyXG4gICAgRmllbGRMaXN0UHJlOlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nIgogIER5bmFtaWNGaWVsZHM6CiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nOgogICAgICBDSUNsYXNzOiBSb29tCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBCdWlsZGluZwogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogUm91dGVyIChGaXJld2FsbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsKICAgIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkCiAgICBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4KICAgIFwgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOgogICAgSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU2VydmVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4KICAgIFwgLSBOYW1lOiBIYXJkd2FyZVxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuXHJcbiAgLSBOYW1lOiBTb2Z0d2FyZVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkCiAgICBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuCiAgICBcIC0gTmFtZTogRGV0YWlsc1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZQogICAgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6CiAgICBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE9wZXJhdGluZyBTeXN0ZW06XHJcbiAgICBOYW1lOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtXHJcbiAgSVRTTSBTZXJ2ZXIgU29mdHdhcmU6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlciBTb2Z0d2FyZSAgXHJcbiAgSVRTTQogICAgQ1BVOlxyXG4gICAgTmFtZTogSVRTTSBDUFVcclxuICBJVFNNIE1lbW9yeTpcclxuICAgIE5hbWU6IElUU00gTWVtb3J5XHJcbiAgSVRTTQogICAgR3JhcGhpY3MgQ2FyZDpcclxuICAgIE5hbWU6IElUU00gR3JhcGhpY3MgQ2FyZFxyXG4gIElUU00gU3RvcmFnZTpcclxuICAgIE5hbWU6CiAgICBJVFNNIFN0b3JhZ2VcclxuICBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbgogICAgXCAgIFxyXG4gIElUU00gRm9ybSBGYWN0b3I6XHJcbiAgICBOYW1lOiBJVFNNIEZvcm0gRmFjdG9yXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbgogICAgXCAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQgogICAgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENQVS1DUFVDbGFzczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIENQVXMKICAgICAgTmFtZTogQ1BVLU51bWJlck9mQ1BVCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtUGh5c2ljYWxDb3JlczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVGhyZWFkcwogICAgICBOYW1lOiBDUFUtVGhyZWFkcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIE9wZXJhdGluZyBTeXN0ZW0KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogT3BlcmF0aW5nIFN5c3RlbQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvT1MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKScKICAgICAgICAgICcxMCc6ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknCiAgICAgICAgICAnMTInOiAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKScKICAgICAgICAgICcxNSc6ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJwogICAgICAgICAgJzE4JzogJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKScKICAgICAgICAgICcyJzogJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKScKICAgICAgICAgICcyMCc6ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknCiAgICAgICAgICAnMjInOiAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJwogICAgICAgICAgJzI0JzogJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJwogICAgICAgICAgJzI3JzogJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJwogICAgICAgICAgJzMnOiAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknCiAgICAgICAgICAnMzAnOiAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKScKICAgICAgICAgICczMyc6ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKScKICAgICAgICAgICczNic6ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKScKICAgICAgICAgICczOSc6ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKScKICAgICAgICAgICc0JzogJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJwogICAgICAgICAgJzQyJzogJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknCiAgICAgICAgICAnNDUnOiAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknCiAgICAgICAgICAnNDgnOiAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknCiAgICAgICAgICAnNSc6ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKScKICAgICAgICAgICc2JzogJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJwogICAgICAgICAgJzcnOiAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJwogICAgICAgICAgJzgnOiAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJwogICAgICAgICAgJzknOiAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBVbml0cyAoVSkKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFHUDogQUdQCiAgICAgICAgICBFSVNBOiBFSVNBCiAgICAgICAgICBGaXJlV2lyZUlFRUUxMzk0OiBGaXJlV2lyZSAoSUVFRSAxMzk0KQogICAgICAgICAgSVNBOiBJU0EKICAgICAgICAgIExQQ0xvd1BpbkNvdW50OiBMUEMgKExvdyBQaW4gQ291bnQpCiAgICAgICAgICBNQ0FNaWNyb0NoYW5uZWxBcmNoaXRlY3R1cmU6IE1DQSAoTWljcm8gQ2hhbm5lbCBBcmNoaXRlY3R1cmUpCiAgICAgICAgICBOdUJ1czogTnVCdXMKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUENJOiBQQ0kKICAgICAgICAgIFBDSUV4cHJlc3NQQ0llOiBQQ0kgRXhwcmVzcyAoUENJZSkKICAgICAgICAgIFBDSVg6IFBDSS1YCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBVU0JVbml2ZXJzYWxTZXJpYWxCdXM6IFVTQiAoVW5pdmVyc2FsIFNlcmlhbCBCdXMpCiAgICAgICAgICBWRVNBTG9jYWxCdXNWTEI6IFZFU0EgTG9jYWwgQnVzIChWTEIpCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQnVzIEludGVyZmFjZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUJ1c0ludGVyZmFjZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Db3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAxIEdCCiAgICAgICAgICAnMTEnOiAxMSBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyJzogMiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNCc6IDQgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZAogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudFwiICVdWyUgQ2FwYWNpdHkKICAgICAgICAgID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplXCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudAogICAgICAgICAgKiBEYXRhLiRDYXBhY2l0eSAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gTmFtZVVwZGF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25DcmVhdGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQikKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LUNhcGFjaXR5OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgUkFNIG1vZHVsZXMKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlciBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyIFNvZnR3YXJlCiAgICAgIE5hbWU6IElUU01TZXJ2ZXJTb2Z0d2FyZS1SZWZlcmVuY2VUb1NlcnZlclNvZnR3YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFNlcnZlciAodmlydHVhbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG5cclxuICAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZToKICAgIElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbgogICAgXCAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW1cclxuICBJVFNNIFNlcnZlciBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gU2VydmVyIFNvZnR3YXJlICBcclxuICBJVFNNCiAgICBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNCiAgICBHcmFwaGljcyBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZToKICAgIElUU00gU3RvcmFnZVxyXG4gIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uCiAgICBcICAgXHJcbiAgSVRTTSBGb3JtIEZhY3RvcjpcclxuICAgIE5hbWU6IElUU00gRm9ybSBGYWN0b3JcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuCiAgICBcICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbiAgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDIzLjYgaW5jaGVzICg2MDAgbW0pOiAyMy42IGluY2hlcyAoNjAwIG1tKQogICAgICAgICAgMzEuNSBpbmNoZXMgKDgwMCBtbSk6IDMxLjUgaW5jaGVzICg4MDAgbW0pCiAgICAgICAgICAzNS40IGluY2hlcyAoOTAwIG1tKTogMzUuNCBpbmNoZXMgKDkwMCBtbSkKICAgICAgICAgIDM5LjQgaW5jaGVzICgxMDAwIG1tKTogMzkuNCBpbmNoZXMgKDEwMDAgbW0pCiAgICAgICAgICA0My4zIGluY2hlcyAoMTEwMCBtbSk6ICc0My4zIGluY2hlcyAoMTEwMCBtbSk6JwogICAgICAgICAgNDcuMiBpbmNoZXMgKDEyMDAgbW0pOiA0Ny4yIGluY2hlcyAoMTIwMCBtbSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgRGVwdGgKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1SYWNrVW5pdHM6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJwogICAgICAgICAgJzEwJzogJzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKScKICAgICAgICAgICcxMic6ICcxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJwogICAgICAgICAgJzE1JzogJzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknCiAgICAgICAgICAnMTgnOiAnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJwogICAgICAgICAgJzInOiAnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJwogICAgICAgICAgJzIwJzogJzIwVTogMzUgaW5jaGVzICg4OC45IGNtKScKICAgICAgICAgICcyMic6ICcyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknCiAgICAgICAgICAnMjQnOiAnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknCiAgICAgICAgICAnMjcnOiAnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknCiAgICAgICAgICAnMyc6ICczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKScKICAgICAgICAgICczMCc6ICczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJwogICAgICAgICAgJzMzJzogJzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJwogICAgICAgICAgJzM2JzogJzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJwogICAgICAgICAgJzM5JzogJzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJwogICAgICAgICAgJzQnOiAnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknCiAgICAgICAgICAnNDInOiAnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKScKICAgICAgICAgICc0NSc6ICc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKScKICAgICAgICAgICc0OCc6ICc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKScKICAgICAgICAgICc1JzogJzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJwogICAgICAgICAgJzYnOiAnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknCiAgICAgICAgICAnNyc6ICc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknCiAgICAgICAgICAnOCc6ICc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknCiAgICAgICAgICAnOSc6ICc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBSYWNrIFVuaXRzIChVKQogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrVW5pdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEhhcmR3YXJlIFdlaWdodAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1XZWlnaHQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQOiBBR1AKICAgICAgICAgIEVJU0E6IEVJU0EKICAgICAgICAgIEZpcmVXaXJlSUVFRTEzOTQ6IEZpcmVXaXJlIChJRUVFIDEzOTQpCiAgICAgICAgICBJU0E6IElTQQogICAgICAgICAgTFBDTG93UGluQ291bnQ6IExQQyAoTG93IFBpbiBDb3VudCkKICAgICAgICAgIE1DQU1pY3JvQ2hhbm5lbEFyY2hpdGVjdHVyZTogTUNBIChNaWNybyBDaGFubmVsIEFyY2hpdGVjdHVyZSkKICAgICAgICAgIE51QnVzOiBOdUJ1cwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQQ0k6IFBDSQogICAgICAgICAgUENJRXhwcmVzc1BDSWU6IFBDSSBFeHByZXNzIChQQ0llKQogICAgICAgICAgUENJWDogUENJLVgKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFVTQlVuaXZlcnNhbFNlcmlhbEJ1czogVVNCIChVbml2ZXJzYWwgU2VyaWFsIEJ1cykKICAgICAgICAgIFZFU0FMb2NhbEJ1c1ZMQjogVkVTQSBMb2NhbCBCdXMgKFZMQikKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCdXMgSW50ZXJmYWNlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU1EUmFkZW9uSEQ2NzUwOiBBTUQgUmFkZW9uIEhEIDY3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjc3MDogQU1EIFJhZGVvbiBIRCA2NzcwCiAgICAgICAgICBBTURSYWRlb25IRDY3OTA6IEFNRCBSYWRlb24gSEQgNjc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODUwOiBBTUQgUmFkZW9uIEhEIDY4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg3MDogQU1EIFJhZGVvbiBIRCA2ODcwCiAgICAgICAgICBBTURSYWRlb25IRDY5NTA6IEFNRCBSYWRlb24gSEQgNjk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTcwOiBBTUQgUmFkZW9uIEhEIDY5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk5MDogQU1EIFJhZGVvbiBIRCA2OTkwCiAgICAgICAgICBBTURSYWRlb25IRDc3NTA6IEFNRCBSYWRlb24gSEQgNzc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzcwOiBBTUQgUmFkZW9uIEhEIDc3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzc5MDogQU1EIFJhZGVvbiBIRCA3NzkwCiAgICAgICAgICBBTURSYWRlb25IRDc4NTA6IEFNRCBSYWRlb24gSEQgNzg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODcwOiBBTUQgUmFkZW9uIEhEIDc4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk1MDogQU1EIFJhZGVvbiBIRCA3OTUwCiAgICAgICAgICBBTURSYWRlb25IRDc5NzA6IEFNRCBSYWRlb24gSEQgNzk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTkwOiBBTUQgUmFkZW9uIEhEIDc5OTAKICAgICAgICAgIEFNRFJhZGVvblByb0R1bzogQU1EIFJhZGVvbiBQcm8gRHVvCiAgICAgICAgICBBTURSYWRlb25Qcm9TU0c6IEFNRCBSYWRlb24gUHJvIFNTRwogICAgICAgICAgQU1EUmFkZW9uUHJvV1gyMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAyMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDMxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDMxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNDEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNDEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g1MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA1MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDcxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDcxMDAKICAgICAgICAgIEFNRFJhZGVvblI1MjEwOiBBTUQgUmFkZW9uIFI1IDIxMAogICAgICAgICAgQU1EUmFkZW9uUjUyMjA6IEFNRCBSYWRlb24gUjUgMjIwCiAgICAgICAgICBBTURSYWRlb25SNTIzMDogQU1EIFJhZGVvbiBSNSAyMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzIwOiBBTUQgUmFkZW9uIFI1IDMyMAogICAgICAgICAgQU1EUmFkZW9uUjUzMzA6IEFNRCBSYWRlb24gUjUgMzMwCiAgICAgICAgICBBTURSYWRlb25SNTM0MDogQU1EIFJhZGVvbiBSNSAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjQwOiBBTUQgUmFkZW9uIFI3IDI0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTA6IEFNRCBSYWRlb24gUjcgMjUwCiAgICAgICAgICBBTURSYWRlb25SNzI1MFg6IEFNRCBSYWRlb24gUjcgMjUwWAogICAgICAgICAgQU1EUmFkZW9uUjcyNjBYOiBBTUQgUmFkZW9uIFI3IDI2MFgKICAgICAgICAgIEFNRFJhZGVvblI3MzQwOiBBTUQgUmFkZW9uIFI3IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjczNTA6IEFNRCBSYWRlb24gUjcgMzUwCiAgICAgICAgICBBTURSYWRlb25SNzM2MDogQU1EIFJhZGVvbiBSNyAzNjAKICAgICAgICAgIEFNRFJhZGVvblI3MzcwOiBBTUQgUmFkZW9uIFI3IDM3MAogICAgICAgICAgQU1EUmFkZW9uUjkyODU6IEFNRCBSYWRlb24gUjkgMjg1CiAgICAgICAgICBBTURSYWRlb25SOTI5MDogQU1EIFJhZGVvbiBSOSAyOTAKICAgICAgICAgIEFNRFJhZGVvblI5MjkwWDogQU1EIFJhZGVvbiBSOSAyOTBYCiAgICAgICAgICBBTURSYWRlb25SOTI5NVgyOiBBTUQgUmFkZW9uIFI5IDI5NVgyCiAgICAgICAgICBBTURSYWRlb25SOTM4MDogQU1EIFJhZGVvbiBSOSAzODAKICAgICAgICAgIEFNRFJhZGVvblI5MzgwWDogQU1EIFJhZGVvbiBSOSAzODBYCiAgICAgICAgICBBTURSYWRlb25SOTM5MDogQU1EIFJhZGVvbiBSOSAzOTAKICAgICAgICAgIEFNRFJhZGVvblI5MzkwWDogQU1EIFJhZGVvbiBSOSAzOTBYCiAgICAgICAgICBBTURSYWRlb25SOUZ1cnlYOiBBTUQgUmFkZW9uIFI5IEZ1cnkgWAogICAgICAgICAgQU1EUmFkZW9uUjlOYW5vOiBBTUQgUmFkZW9uIFI5IE5hbm8KICAgICAgICAgIEFNRFJhZGVvblJYNTQwMFhUOiBBTUQgUmFkZW9uIFJYIDU0MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMDogQU1EIFJhZGVvbiBSWCA1NTAwCiAgICAgICAgICBBTURSYWRlb25SWDU1MDBYVDogQU1EIFJhZGVvbiBSWCA1NTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU2MDA6IEFNRCBSYWRlb24gUlggNTYwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwWFQ6IEFNRCBSYWRlb24gUlggNTYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NzA6IEFNRCBSYWRlb24gUlggNTcwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDA6IEFNRCBSYWRlb24gUlggNTcwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwWFQ6IEFNRCBSYWRlb24gUlggNTcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1ODA6IEFNRCBSYWRlb24gUlggNTgwCiAgICAgICAgICBBTURSYWRlb25SWDU5MDogQU1EIFJhZGVvbiBSWCA1OTAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMDogQU1EIFJhZGVvbiBSWCA2NjAwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDBYVDogQU1EIFJhZGVvbiBSWCA2NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY3MDA6IEFNRCBSYWRlb24gUlggNjcwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwWFQ6IEFNRCBSYWRlb24gUlggNjcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2ODAwWFQ6IEFNRCBSYWRlb24gUlggNjgwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2OTAwWFQ6IEFNRCBSYWRlb24gUlggNjkwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNTY6IEFNRCBSYWRlb24gUlggVmVnYSA1NgogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNjQ6IEFNRCBSYWRlb24gUlggVmVnYSA2NAogICAgICAgICAgTlZJRElBR2VGb3JjZTIxMDogTlZJRElBIEdlRm9yY2UgMjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1QxMDMwOiBOVklESUEgR2VGb3JjZSBHVCAxMDMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MTA6IE5WSURJQSBHZUZvcmNlIEdUIDUxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTIwOiBOVklESUEgR2VGb3JjZSBHVCA1MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUzMDogTlZJRElBIEdlRm9yY2UgR1QgNTMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1NDU6IE5WSURJQSBHZUZvcmNlIEdUIDU0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjEwOiBOVklESUEgR2VGb3JjZSBHVCA2MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYyMDogTlZJRElBIEdlRm9yY2UgR1QgNjIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MzA6IE5WSURJQSBHZUZvcmNlIEdUIDYzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjQwOiBOVklESUEgR2VGb3JjZSBHVCA2NDAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDcxMDogTlZJRElBIEdlRm9yY2UgR1QgNzEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MzA6IE5WSURJQSBHZUZvcmNlIEdUIDczMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA3MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjUwOiBOVklESUEgR2VGb3JjZSBHVFggMTY1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc0NTogTlZJRElBIEdlRm9yY2UgR1RYIDc0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MDogTlZJRElBIEdlRm9yY2UgR1RYIDc1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwOiBOVklESUEgR2VGb3JjZSBHVFggNzYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk1MDogTlZJRElBIEdlRm9yY2UgR1RYIDk1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk2MDogTlZJRElBIEdlRm9yY2UgR1RYIDk2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk3MDogTlZJRElBIEdlRm9yY2UgR1RYIDk3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MDogTlZJRElBIEdlRm9yY2UgR1RYIDk4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggOTgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgxNTA6IE5WSURJQSBHZUZvcmNlIE1YMTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgzNTA6IE5WSURJQSBHZUZvcmNlIE1YMzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVg0NTA6IE5WSURJQSBHZUZvcmNlIE1YNDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA2MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMjA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNjBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMzA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA5MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwOTAKICAgICAgICAgIE5WSURJQU5WUzMwMDogTlZJRElBIE5WUyAzMDAKICAgICAgICAgIE5WSURJQU5WUzMxMDogTlZJRElBIE5WUyAzMTAKICAgICAgICAgIE5WSURJQU5WUzUxMDogTlZJRElBIE5WUyA1MTAKICAgICAgICAgIE5WSURJQVF1YWRybzIwMDA6IE5WSURJQSBRdWFkcm8gMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvNjAwOiBOVklESUEgUXVhZHJvIDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzEyMDA6IE5WSURJQSBRdWFkcm8gSzEyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0syMjAwOiBOVklESUEgUXVhZHJvIEsyMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDAwMDogTlZJRElBIFF1YWRybyBLNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDogTlZJRElBIFF1YWRybyBLNDIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwMDogTlZJRElBIFF1YWRybyBLNDIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzUyMDA6IE5WSURJQSBRdWFkcm8gSzUyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MDA6IE5WSURJQSBRdWFkcm8gSzYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYxME06IE5WSURJQSBRdWFkcm8gSzYxME0KICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjA6IE5WSURJQSBRdWFkcm8gSzYyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYyME06IE5WSURJQSBRdWFkcm8gSzYyME0KICAgICAgICAgIE5WSURJQVF1YWRyb00xMDAwTTogTlZJRElBIFF1YWRybyBNMTAwME0KICAgICAgICAgIE5WSURJQVF1YWRyb00yMDAwOiBOVklESUEgUXVhZHJvIE0yMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNDAwMDogTlZJRElBIFF1YWRybyBNNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTUwMDA6IE5WSURJQSBRdWFkcm8gTTUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDAwOiBOVklESUEgUXVhZHJvIE02MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwTTogTlZJRElBIFF1YWRybyBNNjAwTQogICAgICAgICAgTlZJRElBUXVhZHJvUDEwMDA6IE5WSURJQSBRdWFkcm8gUDEwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1AyMDAwOiBOVklESUEgUXVhZHJvIFAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwOiBOVklESUEgUXVhZHJvIFA0MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDAwOiBOVklESUEgUXVhZHJvIFA0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNTAwMDogTlZJRElBIFF1YWRybyBQNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDogTlZJRElBIFF1YWRybyBQNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwMDogTlZJRElBIFF1YWRybyBQNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYyMDogTlZJRElBIFF1YWRybyBQNjIwCiAgICAgICAgICBOVklESUFUZXNsYUs4MDogTlZJRElBIFRlc2xhIEs4MAogICAgICAgICAgTlZJRElBVGVzbGFQMTAwOiBOVklESUEgVGVzbGEgUDEwMAogICAgICAgICAgTlZJRElBVGVzbGFUNDogTlZJRElBIFRlc2xhIFQ0CiAgICAgICAgICBOVklESUFUZXNsYVYxMDA6IE5WSURJQSBUZXNsYSBWMTAwCiAgICAgICAgICBOVklESUFUaXRhblJUWDogTlZJRElBIFRpdGFuIFJUWAogICAgICAgICAgTlZJRElBVGl0YW5WOiBOVklESUEgVGl0YW4gVgogICAgICAgICAgTlZJRElBVGl0YW5YUGFzY2FsOiBOVklESUEgVGl0YW4gWCAoUGFzY2FsKQogICAgICAgICAgTlZJRElBVGl0YW5YcDogTlZJRElBIFRpdGFuIFhwCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBHcmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6IDEgR0IKICAgICAgICAgICcxMSc6IDExIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzInOiAyIEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0JzogNCBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRFZJOiBEVkkKICAgICAgICAgIERpc3BsYXlQb3J0OiBEaXNwbGF5UG9ydAogICAgICAgICAgSERNSTogSERNSQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBWR0E6IFZHQQogICAgICAgICAgVmlydHVhbExpbms6IFZpcnR1YWxMaW5rCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogT3V0cHV0cwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50XCIgJV1bJSBDYXBhY2l0eQogICAgICAgICAgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemVcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50CiAgICAgICAgICAqIERhdGEuJENhcGFjaXR5ICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBOYW1lVXBkYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkNyZWF0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktQ2FwYWNpdHk6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAwJzogJzEwMCcKICAgICAgICAgICcxMzMnOiAnMTMzJwogICAgICAgICAgJzE2Nic6ICcxNjYnCiAgICAgICAgICAnMjAwJzogJzIwMCcKICAgICAgICAgICcyMzMnOiAnMjMzJwogICAgICAgICAgJzI2Nic6ICcyNjYnCiAgICAgICAgICAnMzAwJzogJzMwMCcKICAgICAgICAgICczMzMnOiAnMzMzJwogICAgICAgICAgJzM2Nic6ICczNjYnCiAgICAgICAgICAnNDAwJzogJzQwMCcKICAgICAgICAgICc0NTAnOiAnNDUwJwogICAgICAgICAgJzUwMCc6ICc1MDAnCiAgICAgICAgICAnNTI1JzogJzUyNScKICAgICAgICAgICc2MDAnOiAnNjAwJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tyYXRlCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2xvY2tSYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBSQU0gbW9kdWxlcwogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LVRvdGFsUkFNR0I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRERSOiBERFIKICAgICAgICAgIEREUjI6IEREUjIKICAgICAgICAgIEREUjM6IEREUjMKICAgICAgICAgIEREUjQ6IEREUjQKICAgICAgICAgIEREUjU6IEREUjUKICAgICAgICAgIFNEUkFNOiBTRFJBTQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNlcnZlclNvZnR3YXJlLVJlZmVyZW5jZVRvU2VydmVyU29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU2VydmVyIFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgTmFtZTogSVRTTVNlcnZlclNvZnR3YXJlLVJlZmVyZW5jZVRvU2VydmVyU29mdHdhcmUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlLVN0b3JhZ2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEhEREhhcmREaXNrRHJpdmU6IEhERCAoSGFyZCBEaXNrIERyaXZlKQogICAgICAgICAgICAgICAgTlZNZVNTRE5vblZvbGF0aWxlTWVtb3J5RXhwcmVzc1NvbGlkU3RhdGVEcml2ZTogTlZNZSBTU0QgKE5vbi1Wb2xhdGlsZQogICAgICAgICAgICAgICAgICBNZW1vcnkgRXhwcmVzcyBTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU1NEU29saWRTdGF0ZURyaXZlOiBTU0QgKFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgU1NIRFNvbGlkU3RhdGVIeWJyaWREcml2ZTogU1NIRCAoU29saWQgU3RhdGUgSHlicmlkIERyaXZlKQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgVHlwZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1vZGVsCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFNlcmlhbE51bWJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlCiAgICAgIE5hbWU6IElUU01TdG9yYWdlLVN0b3JhZ2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gVXNlZCBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTW91bnQgUG9pbnQKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UgUGFydGl0aW9uCiAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gU29mdHdhcmUKICAgIE5hbWU6IFNlcnZlciBTb2Z0d2FyZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyOjpTZXJ2ZXJcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBTZXJ2ZXI6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlcgogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IFNJTSBDYXJkCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRyYWN0OjpDb250cmFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBcclxuUm9sZXM6CiAgICBcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4KICAgIFwgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBTSU0gQ2FyZFxyXG4gIElUU00gQ29udHJhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRyYWN0XHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBDb250cmFjdC1QZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9Db250cmFjdFBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBDb250cmFjdC1QZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvQ29udHJhY3RUeXBlOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IENvbnRyYWN0LVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvQ29udHJhY3RUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3Q6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvbnRyYWN0CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENvbnRyYWN0CiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1DYXJkbnVtYmVyOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2FyZCBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1DYXJkbnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLU1vYmlsZU51bWJlcjoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vYmlsZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1Nb2JpbGVOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUElOOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUElOCiAgICAgIE5hbWU6IElUU01TSU0tUElOCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVBJTjI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQSU4gMgogICAgICBOYW1lOiBJVFNNU0lNLVBJTjIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUFVLOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUFVLCiAgICAgIE5hbWU6IElUU01TSU0tUFVLCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVBVSzI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQVUsgMgogICAgICBOYW1lOiBJVFNNU0lNLVBVSzIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tVHlwZToKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBFbWJlZGRlZCBTSU0gKGVTSU0pOiBFbWJlZGRlZCBTSU0gKGVTSU0pCiAgICAgICAgICBNaWNybyBTSU06IE1pY3JvIFNJTQogICAgICAgICAgTmFubyBTSU06IE5hbm8gU0lNCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YW5kYXJkIFNJTTogU3RhbmRhcmQgU0lNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FyZCBUeXBlCiAgICAgIE5hbWU6IElUU01TSU0tVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogU21hcnRib2FyZAogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICBcclxuCiAgICBcIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBEaXNwbGF5XHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuCiAgICBcIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIKICAgIExvY2F0ZWQgaW5cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTm86IE5vCiAgICAgICAgICBZZXM6IFllcwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBvd2VyIERlbGl2ZXJ5CiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVBvd2VyRGVsaXZlcnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01EaXNwbGF5LVJlc29sdXRpb246CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAySyAoMjA0OCB4IDEwODApOiAySyAoMjA0OCB4IDEwODApCiAgICAgICAgICAnNEsgVWx0cmEgSEQgKDM4NDAgeCAyMTYwKTonOiAnNEsgVWx0cmEgSEQgKDM4NDAgeCAyMTYwKTonCiAgICAgICAgICA1SyAoNTEyMCB4IDI4ODApOiA1SyAoNTEyMCB4IDI4ODApCiAgICAgICAgICA4SyBVbHRyYSBIRCAoNzY4MCB4IDQzMjApOiA4SyBVbHRyYSBIRCAoNzY4MCB4IDQzMjApCiAgICAgICAgICBGdWxsIEhEICgxOTIwIHggMTA4MCk6IEZ1bGwgSEQgKDE5MjAgeCAxMDgwKQogICAgICAgICAgSEQgKDEyODAgeCA3MjApOiBIRCAoMTI4MCB4IDcyMCkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUXVhZCBIRCAoMjU2MCB4IDE0NDApOiBRdWFkIEhEICgyNTYwIHggMTQ0MCkKICAgICAgICAgIFVXUUhEICgzNDQwIHggMTQ0MCk6IFVXUUhEICgzNDQwIHggMTQ0MCkKICAgICAgICAgIFdVWEdBICgxOTIwIHggMTIwMCk6IFdVWEdBICgxOTIwIHggMTIwMCkKICAgICAgICAgIFdYR0EgKDEzNjYgeCA3NjgpOiBXWEdBICgxMzY2IHggNzY4KQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1vbml0b3IgUmVzb2x1dGlvbgogICAgICBOYW1lOiBJVFNNRGlzcGxheS1SZXNvbHV0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1TaXplSW5jaDoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcyNyc6IDI3IgogICAgICAgICAgJzMyJzogMzIiCiAgICAgICAgICAnMzQnOiAzNCIKICAgICAgICAgICczNSc6IDM1IgogICAgICAgICAgJzQwJzogNDAiCiAgICAgICAgICAnNDMnOiA0MyIKICAgICAgICAgICc0OSc6IDQ5IgogICAgICAgICAgJzU1JzogNTUiCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFNpemUKICAgICAgTmFtZTogSVRTTURpc3BsYXktU2l6ZUluY2gKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01EaXNwbGF5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSk6IExDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KQogICAgICAgICAgTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKTogTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKQogICAgICAgICAgT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKTogT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0CiAgICAgICAgICAgIEVtaXR0aW5nIERpb2RlKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3VjaHNjcmVlbiBNb25pdG9yOiBUb3VjaHNjcmVlbiBNb25pdG9yCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3RvcmFnZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogSGFyZHdhcmVcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZSBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcblxyXG4gIC0gTmFtZTogU29mdHdhcmVcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IERldGFpbHNcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOgogICAgSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBPcGVyYXRpbmcgU3lzdGVtOlxyXG4gICAgTmFtZTogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbVxyXG4gIElUU00gU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUgIFxyXG4gIElUU00KICAgIENQVTpcclxuICAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00KICAgIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlciBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogU3Vic2lkaWFyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuICBBZGRyZXNzOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6CiAgICBBZGRyZXNzXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVN0cmVldFxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1DaXR5XHJcbiAgICAgIC0KICAgIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnlcclxuICAgICAgLSBERjogTG9jYXRpb24tTGF0aXR1ZGVcclxuICAgICAgLSBERjoKICAgIExvY2F0aW9uLUxvbmdpdHVkZSIKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQ2l0eToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2l0eQogICAgICBOYW1lOiBMb2NhdGlvbi1DaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1MYXRpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGF0aXR1ZGUKICAgICAgTmFtZTogTG9jYXRpb24tTGF0aXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLUxvbmdpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTG9uZ2l0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxvbmdpdHVkZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvdW50cnkKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6IDAKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDb3VudHJ5CiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tU3RyZWV0OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTdHJlZXQKICAgICAgTmFtZTogTG9jYXRpb24tU3RyZWV0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3dpdGNoCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogVVBTCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyCiAgICBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlCiAgICBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZQogICAgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcwogICAgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTQogICAgR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4KICAgIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbCBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIFVQU1xyXG4gIElUU00gTW9kZWw6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQKICAgIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsKICAgIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNVVBTLUJhdHRlcnlDYXBhY2l0eToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBCYXR0ZXJ5IENhcGFjaXR5IChBaCkKICAgICAgTmFtZTogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01VUFMtQmF0dGVyeVR5cGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEZseXdoZWVsOiBGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZQogICAgICAgICAgTGktaW9uOiBMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5CiAgICAgICAgICBMaUZlUE80OiBMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5CiAgICAgICAgICBOaUNkOiBOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeQogICAgICAgICAgTmlNSDogTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU0xBOiBTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCYXR0ZXJ5IFR5cGUKICAgICAgTmFtZTogSVRTTVVQUy1CYXR0ZXJ5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVVQUy1NYXhpbXVtTG9hZENhcGFjaXR5OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1heGltdW0gTG9hZCBDYXBhY2l0eSAoVykKICAgICAgTmFtZTogSVRTTVVQUy1NYXhpbXVtTG9hZENhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFdMQU4gYWNjZXNzIHBvaW50CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="var/packagesetup/ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KHBhaXJzKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZzo6UHJlZmVyZW5jZXNEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKKTsKCj1oZWFkMSBOQU1FCgp2YXI6OnBhY2thZ2VzZXR1cDo6SVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIERFU0NSSVBUSU9OCgpGdW5jdGlvbnMgZm9yIGluc3RhbGxpbmcgdGhlIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBwYWNrYWdlLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OklUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBGb3JjZSBhIHJlbG9hZCBvZiBaWlpBdXRvLnBtIGFuZCBaWlpBQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENyZWF0ZSBjb21tb24gb2JqZWN0cyB3aXRoIGZyZXNoIGRlZmF1bHQgY29uZmlnLgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKCk7CgogICAgIyBkZWZpbmUgVXNlcklEIHBhcmFtZXRlciBmb3IgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBzdGF0cyBvYmplY3QKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZGVmaW5lIGZpbGUgcHJlZml4IGZvciBzdGF0cwogICAgJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9ID0gJ0lUU01TdGF0cyc7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ29kZUluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIGluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgQzxjdXJfZGVwbF9zdGF0ZV9pZD4gb3IgQzxjdXJfaW5jaV9zdGF0ZV9pZD4gcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBkZXBsb3ltZW50IHN0YXRlcwogICAgJFNlbGYtPl9TZXREZXBsb3ltZW50U3RhdGVQcmVmZXJlbmNlcygpOwoKICAgICMgYWRkIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciB0byB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlCiAgICAkU2VsZi0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCBBY3Rpb24gPT4gJ0FkZCcgKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e1N0YXRzRmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGRlcGxveW1lbnQgc3RhdGVzCiAgICAkU2VsZi0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMTFfMF83KCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiAxMS4wLjcuCgpteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzcoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMTFfMF83IHsgICAgIyMgbm8gY3JpdGljIHF3KE9UT0JPOjpSZXF1aXJlQ2FtZWxDYXNlKQogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFkZCB0aGUgQ29uZmlnSXRlbSBtYW5hZ2VtZW50IGludm9rZXIgdG8gdGhlIEVsYXN0aWNzZWFyY2ggd2Vic2VydmljZQogICAgJFNlbGYtPl9VcGRhdGVFbGFzdGljc2VhcmNoV2ViU2VydmljZSggQWN0aW9uID0+ICdBZGQnICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBmaWxsIHVwIGVtcHR5IGxhc3RfdmVyc2lvbl9pZCByb3dzIGluIEM8Y29uZmlnaXRlbT4gdGFibGUKICAgICRTZWxmLT5fRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGluY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW1fdmVyc2lvbj4gdGFibGUKICAgICRTZWxmLT5fRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGN1cl9kZXBsX3N0YXRlX2lkIG9yIGN1cl9pbmNpX3N0YXRlX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUluY2lkZW50QW5kRGVwbG95bWVudFN0YXRlSUQoKTsKCiAgICAjIHNldCBwcmVmZXJlbmNlcyBmb3Igc29tZSBkZXBsb3ltZW50IHN0YXRlcwogICAgJFNlbGYtPl9TZXREZXBsb3ltZW50U3RhdGVQcmVmZXJlbmNlcygpOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57U3RhdHNGaWxlUHJlZml4fSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVuaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlVW5pbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjbGVhciBjb25maWdpdGVtX2xpbmsgdGFibGUKICAgICMgICBwbGFjaW5nIHRoaXMgYmVmb3JlIF9EeW5hbWljRmllbGRzRGVsZXRlIHRvIGF2b2lkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIHByZXZlbnRpbmcgZHluYW1pYyBmaWVsZCB2YWx1ZSBkZWxldGlvbgogICAgJFNlbGYtPl9Db25maWdJdGVtTGlua0RlbGV0ZSgpOwoKICAgICMgZGVsZXRlIGFsbCBkeW5hbWljIGZpZWxkczoKICAgICMgICBvZiBvYmplY3QgdHlwZSBjb25maWcgaXRlbQogICAgIyAgIG9mIGZpZWxkIHR5cGUgSVRTTUNvbmZpZ0l0ZW1SZWZlcmVuY2UgYW5kIElUU01Db25maWdJdGVtVmVyc2lvblJlZmVyZW5jZQogICAgJFNlbGYtPl9EeW5hbWljRmllbGRzRGVsZXRlKCk7CgogICAgIyBjbGVhbiB1cCBJbXBvcnRFeHBvcnQgdGVtcGxhdGVzCiAgICAkU2VsZi0+X0NvbmZpZ0l0ZW1JbXBvcnRFeHBvcnRUZW1wbGF0ZXNEZWxldGUoKTsKCiAgICAjIGRlbGV0ZSBhbGwgbGlua3Mgd2l0aCBjb25maWd1cmF0aW9uIGl0ZW1zCiAgICAkU2VsZi0+X0xpbmtEZWxldGUoKTsKCiAgICAjIGRlYWN0aXZhdGUgdGhlIGdyb3VwIEM8aXRzbS1jb25maWdpdGVtPgogICAgJFNlbGYtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgICk7CgogICAgIyBkZWxldGUgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJyBzZXJ2aWNlIHByZWZlcmVuY2VzCiAgICAkU2VsZi0+X0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcygpOwoKICAgICMgcmVtb3ZlIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciBmcm9tIHRoZSBFbGFzdGljc2VhcmNoIHdlYnNlcnZpY2UKICAgICRTZWxmLT5fVXBkYXRlRWxhc3RpY3NlYXJjaFdlYlNlcnZpY2UoIEFjdGlvbiA9PiAnUmVtb3ZlJyApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVuaW5zdGFsbFBvc3QoKQoKcnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwb3N0IHBhcnQKCnVzaW5nIGEgcG9zdCBmdW5jdGlvbiBiZWNhdXNlIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGhvbGQgYSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIGNvbmZpZyBpdGVtIGNsYXNzIGl0ZW1zCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVW5pbnN0YWxsUG9zdCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGxQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzZXM6CiAgICAjICAgSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MKICAgICMgICBJVFNNOjpDb25maWdJdGVtOjpSb2xlCiAgICAjICAgSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5CiAgICAkU2VsZi0+X0dlbmVyYWxDYXRhbG9nQ2xhc3Nlc0RlbGV0ZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCkKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9TZXREZXBsb3ltZW50U3RhdGVQcmVmZXJlbmNlcygpCgo9Y3V0CgpzdWIgX1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJU1hcCA9ICgKICAgICAgICBFeHBpcmVkICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgSW5hY3RpdmUgICAgPT4gJ3Bvc3Rwcm9kdWN0aXZlJywKICAgICAgICBNYWludGVuYW5jZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUGlsb3QgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgIFBsYW5uZWQgICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICBQcm9kdWN0aW9uICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUmVwYWlyICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgIFJldGlyZWQgICAgID0+ICdwb3N0cHJvZHVjdGl2ZScsCiAgICAgICAgUmV2aWV3ICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICdUZXN0L1FBJyAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICk7CgogICAgTkFNRToKICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlTWFwICkgewogICAgICAgIG15ICRJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIE5hbWUgID0+ICROYW1lLAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwoKICAgICAgICBuZXh0IE5BTUUgaWYgISRJdGVtOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtLT57SXRlbUlEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICdGdW5jdGlvbmFsaXR5JywKICAgICAgICAgICAgVmFsdWUgID0+IFsgJE1hcHskTmFtZX0gXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0dyb3VwQWRkKCkKCmFkZCBhIGdyb3VwCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3RoZS1ncm91cC1uYW1lJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnVGhlIGdyb3VwIGRlc2NyaXB0aW9uLicsCiAgICApOwoKPWN1dAoKc3ViIF9Hcm91cEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIERlc2NyaXB0aW9uKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICAjIGdldCBsaXN0IG9mIGFsbCBncm91cHMKICAgIG15ICVHcm91cExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMaXN0KCk7CgogICAgIyByZXZlcnNlIHRoZSBncm91cCBsaXN0IGZvciBlYXNpZXIgbG9va3VwCiAgICBteSAlR3JvdXBMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJUdyb3VwTGlzdDsKCiAgICAjIGNoZWNrIGlmIGdyb3VwIGFscmVhZHkgZXhpc3RzCiAgICBteSAkR3JvdXBJRCA9ICRHcm91cExpc3RSZXZlcnNleyAkUGFyYW17TmFtZX0gfTsKCiAgICAjIHJlYWN0aXZhdGUgdGhlIGdyb3VwCiAgICBpZiAoJEdyb3VwSUQpIHsKCiAgICAgICAgIyBnZXQgY3VycmVudCBncm91cCBkYXRhCiAgICAgICAgbXkgJUdyb3VwRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cEdldCgKICAgICAgICAgICAgSUQgICAgID0+ICRHcm91cElELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHJlYWN0aXZhdGUgZ3JvdXAKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBVcGRhdGUoCiAgICAgICAgICAgICVHcm91cERhdGEsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBhZGQgdGhlIGdyb3VwCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cEFkZCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIENvbW1lbnQgPT4gJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgbG9va3VwIHRoZSBuZXcgZ3JvdXAgaWQKICAgIG15ICROZXdHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgIEdyb3VwICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgYWRkIHVzZXIgcm9vdCB0byB0aGUgZ3JvdXAKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckFkZCgKICAgICAgICBHSUQgICAgICAgID0+ICROZXdHcm91cElELAogICAgICAgIFVJRCAgICAgICAgPT4gMSwKICAgICAgICBQZXJtaXNzaW9uID0+IHsKICAgICAgICAgICAgcm8gICAgICAgID0+IDEsCiAgICAgICAgICAgIG1vdmVfaW50byA9PiAxLAogICAgICAgICAgICBjcmVhdGUgICAgPT4gMSwKICAgICAgICAgICAgb3duZXIgICAgID0+IDEsCiAgICAgICAgICAgIHByaW9yaXR5ICA9PiAxLAogICAgICAgICAgICBydyAgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9Hcm91cERlYWN0aXZhdGUoKQoKZGVhY3RpdmF0ZSBhIGdyb3VwCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ3RoZS1ncm91cC1uYW1lJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwRGVhY3RpdmF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIE5hbWUhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvb2t1cCBncm91cCBpZAogICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgPT4gJFBhcmFte05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRHcm91cElEOwoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgbXkgJUdyb3VwRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cEdldCgKICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZGVhY3RpdmF0ZSBncm91cAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwVXBkYXRlKAogICAgICAgICVHcm91cERhdGEsCiAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXtpbnZhbGlkfSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgojIFRPRE8gdmVyaWZ5IGlmIGFsbCByZWxldmFudCBsaW5rcyBhcmUgZGVsZXRlZAoKPWhlYWQyIF9MaW5rRGVsZXRlKCkKCmRlbGV0ZSBhbGwgZXhpc3RpbmcgbGlua3MgdG8gY29uZmlndXJhdGlvbiBpdGVtcwoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0xpbmtEZWxldGUoKTsKCj1jdXQKCnN1YiBfTGlua0RlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGFsbCBjb25maWd1cmF0aW9uIGl0ZW1zCiAgICBteSAkQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCk7CgogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbUlEczsKICAgIHJldHVybiBpZiByZWYgJENvbmZpZ0l0ZW1JRHMgbmUgJ0FSUkFZJzsKCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtEZWxldGVBbGwoCiAgICAgICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKQoKZmlsbCB1cCBlbXB0eSBlbnRyaWVzIGluIHRoZSBsYXN0X3ZlcnNpb25faWQgY29sdW1uIG9mIHRoZSBDPGNvbmZpZ2l0ZW0+IHRhYmxlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEKCk7Cgo9Y3V0CgpzdWIgX0ZpbGx1cEVtcHR5TGFzdFZlcnNpb25JRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBlbXB0eSBsYXN0X3ZlcnNpb25faWQKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSBXSEVSRSAnCiAgICAgICAgICAgIC4gJ2xhc3RfdmVyc2lvbl9pZCA9IDAgT1IgbGFzdF92ZXJzaW9uX2lkIElTIE5VTEwnLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkUm93WzBdOwogICAgfQoKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCB0aGUgbGFzdCB2ZXJzaW9uIG9mIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbV92ZXJzaW9uICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGNvbmZpZ2l0ZW1faWQgPSA/IE9SREVSIEJZIGlkIERFU0MnLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkQ29uZmlnSXRlbUlEIF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJFZlcnNpb25JRDsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkVmVyc2lvbklEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkVmVyc2lvbklEOwoKICAgICAgICAjIHVwZGF0ZSBDPGluY2lfc3RhdGVfaWQ+CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtICcKICAgICAgICAgICAgICAgIC4gJ1NFVCBsYXN0X3ZlcnNpb25faWQgPSA/ICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZlcnNpb25JRCwgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZpbGx1cEVtcHR5VmVyc2lvbkluY2lkZW50U3RhdGVJRCgpCgpmaWxsIHVwIGVtcHR5IGVudHJpZXMgaW4gdGhlIEM8aW5jaV9zdGF0ZV9pZCBjb2x1bW4+IG9mIHRoZSBDPGNvbmZpZ2l0ZW1fdmVyc2lvbj4gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCj1jdXQKCnN1YiBfRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgb3BlcmF0aW9uYWwgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZXJyb3IgaGFuZGxpbmcKICAgIGlmICggISRJbmNpU3RhdGVMaXN0IHx8IHJlZiAkSW5jaVN0YXRlTGlzdCBuZSAnSEFTSCcgfHwgISV7JEluY2lTdGF0ZUxpc3R9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgZmluZCBhbnkgaXRlbSBpbiBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc29ydCBpZHMKICAgIG15IEBJbmNpU3RhdGVLZXlMaXN0ID0gc29ydCBrZXlzICV7JEluY2lTdGF0ZUxpc3R9OwoKICAgICMgdXBkYXRlIGluY2lfc3RhdGVfaWQKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgY29uZmlnaXRlbV92ZXJzaW9uICcKICAgICAgICAgICAgLiAnU0VUIGluY2lfc3RhdGVfaWQgPSA/ICcKICAgICAgICAgICAgLiAnV0hFUkUgaW5jaV9zdGF0ZV9pZCA9IDAgT1IgaW5jaV9zdGF0ZV9pZCBJUyBOVUxMJywKICAgICAgICBCaW5kID0+IFsgXCRJbmNpU3RhdGVLZXlMaXN0WzBdIF0sCiAgICApOwp9Cgo9aGVhZDIgX0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpCgpmaWxsIHVwIGVtcHR5IGVudHJpZXMgaW4gdGhlIGN1cl9kZXBsX3N0YXRlX2lkIG9yIGN1cl9pbmNpX3N0YXRlX2lkIGNvbHVtbiBvZiB0aGUgQzxjb25maWdpdGVtPiB0YWJsZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKPWN1dAoKc3ViIF9GaWxsdXBFbXB0eUluY2lkZW50QW5kRGVwbG95bWVudFN0YXRlSUQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSBXSEVSRSAnCiAgICAgICAgICAgIC4gJ2N1cl9kZXBsX3N0YXRlX2lkID0gMCBPUiBjdXJfZGVwbF9zdGF0ZV9pZCBJUyBOVUxMIE9SICcKICAgICAgICAgICAgLiAnY3VyX2luY2lfc3RhdGVfaWQgPSAwIE9SIGN1cl9pbmNpX3N0YXRlX2lkIElTIE5VTEwnLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkUm93WzBdOwogICAgfQoKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgICAgICBteSAkTGFzdFZlcnNpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRMYXN0VmVyc2lvbjsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiByZWYgJExhc3RWZXJzaW9uIG5lICdIQVNIJzsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJExhc3RWZXJzaW9uLT57RGVwbFN0YXRlSUR9OwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVJRH07CgogICAgICAgICMgY29tcGxldGUgY29uZmlndXJhdGlvbiBpdGVtCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtIFNFVCAnCiAgICAgICAgICAgICAgICAuICdjdXJfZGVwbF9zdGF0ZV9pZCA9ID8sICcKICAgICAgICAgICAgICAgIC4gJ2N1cl9pbmNpX3N0YXRlX2lkID0gPyAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFwkTGFzdFZlcnNpb24tPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJExhc3RWZXJzaW9uLT57SW5jaVN0YXRlSUR9LAogICAgICAgICAgICAgICAgXCRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9EZWxldGVTZXJ2aWNlUHJlZmVyZW5jZXMoKQoKRGVsZXRlcyB0aGUgc2VydmljZSBwcmVmZXJlbmNlcyBmb3IgdGhlIGtleSAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcygpOwoKPWN1dAoKc3ViIF9EZWxldGVTZXJ2aWNlUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBzZXJ2aWNlIGxpc3QKICAgIG15ICVTZXJ2aWNlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICMgZGVsZXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2UKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICcnLAogICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCkKCkFkZHMgdGhlIENvbmZpZ0l0ZW0gbWFuYWdlbWVudCBpbnZva2VyLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKAogICAgICAgIE1vZGUgPT4gJ0FkZHxSZW1vdmUnCiAgICApOwoKPWN1dAoKc3ViIF9VcGRhdGVFbGFzdGljc2VhcmNoV2ViU2VydmljZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKICAgIG15ICRXZWJzZXJ2aWNlICAgICAgID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VHZXQoCiAgICAgICAgTmFtZSA9PiAnRWxhc3RpY3NlYXJjaCcsCiAgICApOwoKICAgIGlmICggISRXZWJzZXJ2aWNlICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRGlkIG5vdCBmaW5kIHRoZSBFbGFzdGljc2VhcmNoIHdlYnNlcnZpY2UhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdBZGQnICkgewogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1Jbmdlc3RBdHRhY2htZW50fSA9IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdFbGFzdGljc2VhcmNoOjpDb25maWdJdGVtTWFuYWdlbWVudCcsCiAgICAgICAgfTsKICAgICAgICAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtJbnZva2VyfXtDb25maWdJdGVtTWFuYWdlbWVudH0gPSB7CiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICcnLAogICAgICAgICAgICBFdmVudHMgICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gJzAnLAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAnMCcsCiAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAgICAgID0+ICdBdHRhY2htZW50QWRkUG9zdCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAnMCcsCiAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAgICAgID0+ICdBdHRhY2htZW50RGVsZXRlUG9zdCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAnMCcsCiAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAgICAgID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFR5cGUgPT4gJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50JywKICAgICAgICB9OwogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e1RyYW5zcG9ydH17Q29uZmlnfXtJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9e0NvbmZpZ0l0ZW1Jbmdlc3RBdHRhY2htZW50fSA9IHsKICAgICAgICAgICAgQ29tbWFuZCAgICA9PiAnUE9TVCcsCiAgICAgICAgICAgIENvbnRyb2xsZXIgPT4gJy90bXBhdHRhY2htZW50cy86ZG9jYXBpLzppZD9waXBlbGluZT06cGF0aCcsCiAgICAgICAgfTsKICAgICAgICAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtUcmFuc3BvcnR9e0NvbmZpZ317SW52b2tlckNvbnRyb2xsZXJNYXBwaW5nfXtDb25maWdJdGVtTWFuYWdlbWVudH0gPSB7CiAgICAgICAgICAgIENvbW1hbmQgICAgPT4gJ1BPU1QnLAogICAgICAgICAgICBDb250cm9sbGVyID0+ICcvY29uZmlnaXRlbS86ZG9jYXBpLzppZCcsCiAgICAgICAgfTsKICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtBY3Rpb259IGVxICdSZW1vdmUnICkgewogICAgICAgIGRlbGV0ZSAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtJbnZva2VyfXtDb25maWdJdGVtSW5nZXN0QXR0YWNobWVudH07CiAgICAgICAgZGVsZXRlICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fTsKICAgICAgICBkZWxldGUgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17VHJhbnNwb3J0fXtJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9e0NvbmZpZ0l0ZW1Jbmdlc3RBdHRhY2htZW50fTsKICAgICAgICBkZWxldGUgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17VHJhbnNwb3J0fXtJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fTsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIEFjdGlvbiBwcm92aWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRTdWNjZXNzID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXskV2Vic2VydmljZX0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICByZXR1cm4gMTsKCn0KCj1oZWFkMiBfRHluYW1pY0ZpZWxkc0RlbGV0ZSgpCgpEZWxldGVzIHRoZSBkeW5hbWljIGZpZWxkcyB3aGljaCBhcmUgcmVsYXRlZCB0byB0aGlzIHBhY2thZ2UsIGVpdGhlciBiZWNhdXNlIHRoZXkgYXJlIG9mIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtIG9yIGJlY2F1c2UgdGhleSBhcmUgb2YgZmllbGQgdHlwZSBJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZSBvciBJVFNNQ29uZmlnSXRlbVZlcnNpb25SZWZlcmVuY2UuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGdldCBhbGwgZHluYW1pYyBmaWVsZHMgYmVjYXVzZSB3ZSBjYW4ndCBmaWx0ZXIgZm9yIGZpZWxkIHR5cGUgaW4gZHluYW1pYyBmaWVsZCBsaXN0IGZ1bmN0aW9ucwogICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZHMtPkAqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRAogICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIHx8ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJwogICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW1WZXJzaW9uJwogICAgICAgICAgICApOwoKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntJbnRlcm5hbEZpZWxkfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBpbnRlcm5hbCBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QWxsVmFsdWVzRGVsZXRlKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIkNvdWxkIG5vdCBkZWxldGUgdmFsdWVzIGZvciBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGREZWxldGUoCiAgICAgICAgICAgIElEICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9HZW5lcmFsQ2F0YWxvZ0NsYXNzZXNEZWxldGUoKQoKRGVsZXRlcyB0aGUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzIGl0ZW1zIHdoaWNoIGFyZSByZWxhdGVkIHRvIHRoaXMgcGFja2FnZSBhbmQgdGhlaXIgcHJlZmVyZW5jZXMgYXMgd2VsbC4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9HZW5lcmFsQ2F0YWxvZ0NsYXNzZXNEZWxldGUoKTsKCj1jdXQKCnN1YiBfR2VuZXJhbENhdGFsb2dDbGFzc2VzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJFByZWZlcmVuY2VzT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nOjpQcmVmZXJlbmNlc0RCJyk7CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBteSBAQ2xhc3Nlc1RvRGVsZXRlCiAgICAgICAgPSBxdyhJVFNNOjpDb25maWdJdGVtOjpDbGFzcyBJVFNNOjpDb25maWdJdGVtOjpSb2xlIElUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDYXRlZ29yeSBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUgSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8pOwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzcyAoQENsYXNzZXNUb0RlbGV0ZSkgewoKICAgICAgICBteSAkSXRlbUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDTEFTUyB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1MaXN0KTsKCiAgICAgICAgZm9yIG15ICRJdGVtICggcGFpcnMgJEl0ZW1MaXN0LT4lKiApIHsKICAgICAgICAgICAgbXkgKCAkSUQsICROYW1lICkgPSAkSXRlbS0+QCo7CgogICAgICAgICAgICAjIHVuc2V0IHByZWZlcmVuY2VzIG9mIGl0ZW0KICAgICAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJFByZWZlcmVuY2VzT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICglUHJlZmVyZW5jZXMpIHsKICAgICAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIGtleXMgJVByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlc09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkZWxldGUgaXRlbSBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGdlbmVyYWxfY2F0YWxvZyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICAgICAgXCRJRCwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIEdlbmVyYWxDYXRhbG9nIGl0ZW0gJE5hbWUhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENMQVNTOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCkKCkNsZWFycyB0aGUgY29uZmlnaXRlbV9saW5rIGRhdGFiYXNlIHRhYmxlLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1MaW5rRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgdGFibGUgcm93cyBmcm9tIGRhdGFiYXNlCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSByb3dzIG9mIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfQ29uZmlnSXRlbUltcG9ydEV4cG9ydFRlbXBsYXRlc0RlbGV0ZSgpCgpEZWxldGVzIGFsbCBJbXBvcnRFeHBvcnQgdGVtcGxhdGVzIHdpdGggb2JqZWN0IHR5cGUgQ29uZmlnSXRlbS4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Db25maWdJdGVtSW1wb3J0RXhwb3J0VGVtcGxhdGVzRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1JbXBvcnRFeHBvcnRUZW1wbGF0ZXNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgIG15ICRUZW1wbGF0ZUlETGlzdCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlRlbXBsYXRlTGlzdCgKICAgICAgICBPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICByZXR1cm4gMSB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRUZW1wbGF0ZUlETGlzdCk7CgogICAgZm9yIG15ICRUZW1wbGF0ZUlEICggJFRlbXBsYXRlSURMaXN0LT5AKiApIHsKCiAgICAgICAgIyBkZWxldGUgdGVtcGxhdGUgZnJvbSBkYXRhYmFzZQogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+VGVtcGxhdGVEZWxldGUoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggISREZWxldGVTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIkNvdWxkIG5vdCBkZWxldGUgSW1wb3J0RXhwb3J0IHRlbXBsYXRlIG9mIHR5cGUgSVRTTUNvbmZpZ0l0ZW0gd2l0aCBJRCAkVGVtcGxhdGVJRCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="doc/en/ITSMConfigurationManagement.pdf" Permission="644" Encode="Base64">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AoB3AoB3SgAA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnRIAgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeKcEAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA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6FvZEPIkBwA0IgEAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0SAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHinBADgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkAUx6wddU5CmVuZHN0cmVhbQplbmRvYmoKMTc4IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NNYXNrIDE3NyAwIFIvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTg1Mi9IZWlnaHQKNDcxL0JpdHNQZXJDb21wb25lbnQgOC9EZWNvZGVQYXJtczw8L0JpdHNQZXJDb21wb25lbnQgOC9Db2xvcnMgMy9Db2x1bW5zIDE4NTIvUHJlZGljdG9yCjE1Pj4vRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzODk2Nj4+CnN0cmVhbQp42uzdBUBU2eLH8Xtnhm5RFBULURS7u7t1bde1Y+3WZ7era3fr2orY3R0gKioCgoCIqCAlDTNz3xDmiqJroHw/f977y50z994Tnoc/zpwrxsTECQAAAAAAAACA9EFGEwAAAAAAAABA+kFoCwAAAAAAAADpCKEtAAAAAAAAAKQjhLYAAAAAAAAAkI4Q2gIAAAAAAABAOkJoCwAAAAAAAADpCKEtAAAAAAAAAKQjii94j/KFx66VB3YedbntHRyWoDDNblWycsUOvZu1LmkiT/81ll5uatW2z4kE0aSuvc+YxjqpVzPIbduy/TuO3rn3KDRC0LfIna9qo9q9+9UtlyWttVQ/d16y6PoTlSxLjVbDG1qkISBXe84fWHqCe4I8++ATG/6qoPhGbZBweVmRhnv8VMlDIO/Yi6smFEuplBR8rFXBucdipKTvtGov3nawRyaRvygfoQrYP+fA5TC1LHflUX8Wp7EAAAAAAADwH31uLKh+dmpt+272jiFqKeVIfOBDj+MPPU5s27d+zOQdY4qa/QqhlRR0fn2733dce6uafvdubr13a8e6o6O2Tp9Q1SgttZRC3HYsd7idIC+oU3NomkLbH0H15PqNcKlYStgYf9vtVpzEX4zP+TsRdOEfh+WP1doVLfr0JbQFAAAAAADAf/V5QWKk48aWHXZdD1FLosKiRJWewzqPHda8ffXshqIgKcMuzJzcd3uQ+udvlATPfV067LiaWE2ZacHy3YZ0HjeyVbtKWXRFSRV8b3b7qau81L/OEJCUt689iE35Ru3l5B6i5u8FAAAAAAAA8MN8zkpbpc+SobtcoiVBZlxtwsydIwuZpiwqTHh8aHmLLgfvx4YdmXvgdtsepZLPKkXfd9j518pz5+4FRWub5StequPADr3rZddPejHu6Oy8bU6ESlr1lq4eG7tr3Mortx7H6lha1+vR/a/BJbO9+rB+yM1jc/4+uP/So+cJepb5Czb8o+3QrsVzaCe9Fnr8N+s5R+NE4/ZTPUbFTB22affL2ofO/lFMoQw4v3/mghMnnR8/e6nWNslsU6ZspyG/96lmnqbaSi8PTN98PlwtiArrTuOOLq1mpZV8vMul8cOaLnoYG3Z7wWrXHnOKag7HeF9dMsth13lP78BYta5RzkKFG3fpNLpLwUyi5Lvl7+5Lb3oqNe9U+237u9b1cuP39K5nIEgRPvbztqzaf/eeX3iMqJs5V94qLVqMGVq9cOqLd6M8ryybt9f+jKf3i3gts6xFqlTpNrRthxJGbyXuCb5Ht09eePaMS7CeXc1JSxr59hg07Y5Sp/awB/sbW6R6YlEni5l+cEi4s6u7skJJTetIETedHisFWZasxiHPw1RvFU29pokjw3Fs91qLnqi0Ck49Pcxyx+r5Dve9w2RZCpXs9L++/2timbIFhTrcadO2uRuuXPUICo2VGWXNUaJGzQFjWjfKq532WiQ8dVkze8emo26ewWqTnLkrNGs6fFDd0pmTXlN6TCw38G8PlVbJrntGRc0asv/aC8E4Z/76vXrOGVQofM+aQTPPOD2K0c5u07B3z9kDimaWfdYYm3j9d/9JUw6fvBccZ5C1bJNW06Y3K2smKu/s7jTkyPXAxLXJynt7Ota50fKv6aPKKZhZAAAAAAAA8MU+I12Ku3xw3d0ESRD1q/yxasTrxFZDy6pxr4XjY9e6JEhyndBISUh8Lfrq9JEt57iHpyzbfHb3zJGx564cmzx917BCxm/eq36wcmqz+z4vk4pF+97fOXGCn2L5yUG55IIUdHxxvU4H3VP2V431vnVt2e0b+08PPLCpSaG39qKVwhxHtDqyzVclt1NLghR6Ykm9docfxqd8xj8++Omt4wdun7vz5NCymZV0P1lNKeTq1iOJtyOzqPnXnKopia2GaFh52B9drmy+FisoIl+ESEKWgNPd6/61/9mrLRQSQh86Xl7sdMsxdPHJobljAnxu3A1KSDplzFMfp1DLYM1JlX7L2w0ddT7i1WLWyKced+1nu565G3t1ZwOrD6x7ll5e+adJ661Or9pReOZ3efe2K4cvXt4wb2lT86R3qB/vmFW7z4UAZdKNXDvcp+l9W3WalstqlyxS+tLF0z5ujoFSyeyiEO91/VaCpLAsX1bn+KE3oa36yUdqmvfNGFIH2/852tU1LPna/rcvzensrzy+Yno5bc3wcZw+qtEcr6hXWy+E+nuf3eJz8fyT7VdGNEmMfj9dC9Wj090bzHHwSy4hRHve3zvP7ejB2+v2j2iV603bKT12dewcE5FUKuzR/Z0Txrufyvv04v1AVeKRKJ9728aNDzZas6ebhSzNYyz+5pYW+709kovF+J/fuLTlC73r2+tZRDy/fePR86SWUmv+7BRbIpxZBQAAAAAAAP9J2kNblds5l8RwStSq3K5G7vfiRVG/6tDRVd86kHBrx8B5HuGSLFfzfmunVc0T82D9yLlzLoRdmDZnTtXV08u9jkJVj9zDK/Xs27VSpvDL+2auux+ijnHafOZev67FY52nDj7kHiPo2DZYurJzLYvwy4sX9lv1wP/w8n4ri58a/CbhjDp5eIe2WdFq+fMUymEkPd8277h3vCQzsRuwsHu7Ajovru0eMuqcT5zftu2ukyuV1v5UPRNuuzrHSpoqmdSsVsvknUWqonmVhWervL7z2+u2HXqmluTm9cYOGl0/qyzA8a+BG48/j76x9dy9gd1KjFoR2nRLlYobEve0Hb7kxtSCmraOPeMw72KEWlTka9l77oBi2ZRP7CfNX3Q1KvjU8QP+9fvn+tfdxLrO6LftRrjmHea1hvQaWj/Lyyv7x8+86B3z+J+Bq+pV/l+LTKIUdHbUyIsBSklmXLD75LY1FW4rp+25lLZtKkRT2wqFrpy66XXNOa5Pdl3VQzfnELXMyLZ8Ib/jh950/Z2P1TRvideDSPXC9YlNx8k96+VR3tq4efH5YFW837at9yaWK6UVenn+iodRkqhfpOHcWY1Lmsbc3bB80AbvWP/zW073a9LG4NO1kMJ2j126x08pGNkOWjl0QDn9xyc2/Tn01IMHJwcML1FxZz3L1wVj4oxqtJ72RwHp+t6pq++HqqNdzrtb1mi96A8b1dV909ZqjkSdc3AM7NokW1Qax5gU6+kXU6f1vPa2JgFXF84+fS9SHXLi+IGAun9W7u8RXGV40RFJe9r+eftE67wyZhUAAAAAAAD8J2kPbdX+jwITFxTKzAravP4kvxRx//pep9A30ZrMpGSzisVNVE47zrgnSKJuyZHzWlS11BTPPG5uy6OVN7ok+O928JhUrsjrN1h2GO4wv0JiOtoyb+jVvjPuqVRPnvmrhPxnTzj4qwXRqPmE/r+X1ReEbG1m9L16ZMQKvzhn+4ueAzoWfHUPkp7dpJOzRxVLWkWr8jUtVa9rfkG7ROMpbQtqDkmWZWwmnPeJVoe/CI8XhE+GtjGBIUnLfmU582X9aGGVMluxP7oWFkyKDRhZpZBcEIrqVLHadPy5Wh0cFvzhyFSKlmVv8kcjpdy8wchWDa00dc4VU9ZsydUotTo8KEQt5Hp/I4OY80e3PVRJgix39zE7p5Qy0ByqVMQ6oX/VGV7xLy79czi8eWeTp/uPHdP0gKhbfcrkRb0tZEKN2jmiSrU9GqBKQ6/KLMuXyyR3Dna+7qNsaht+081DKWoVL1xK9/GX1FQ0aDh7xurfzTXV+K2y+qbd4vPx6hC/wMS11xHahds0zKSS27Tt0bV64vjJG2A9fqN3rFoZHBSpFvSffaoWUuDlrccj1Jqm6Nx7aov8OoJg1XXQ5LPXOu2OCDtz+mhQ3e7mr+7CuPKsTX3aZhKFFuaehxPjVNG44sx/+rTX3FeLTO6HRq0OUKtDQjV3bpTWMSYoCrTasqN32cQhVinH4ztNVgeqVIGPNMM0JzshAAAAAAAA4Cv7jNA2Lj45P1MotN4cDTq1beD/XONff6+Vf1KZCsWNQu/cfZG4Klftu7zDoM3JUaT6pV/iCdTP7nm/kIpkSnmDvFDZAim7JSiy5LGSCfdUgkql+c9DF++IxAWvCZdnja6+KLlwQmBY4v9TPnjoFi+8DtS0K9TvVvTVvgfyPJ1mDesYHXTrwu31s8/dv//Q8cKde9FS2ltEkpILizK5TPxYQe0yvQeXUUf7Ot6+sPyfDa6+Lo63rz5Qppzjw28RM9Vot7iGKvTBvXOndk129XW9fe+C41Nl6m3+8KZX4r4I8mwt2hczeNVldm1qlZjt5ZiQcOemT0Lnoi5OnnGa62nbNm2UJXmVp0mtWo0tjq95mpbFtoriFWz1V1545OT+VJ3/wXXNqWS25QplkR3/kpoqLMuUNktuNFnmrLkMRCFe0vSmpqgsV5WJi6vEBXpfOn923kSfe/c8Ll98EKh+fQrVJ2uR4O51L7GEGHZkZb0bKeM25kni0JMSHt31UAmVXg2BnLltk4eUTNdAX0w6kreQyesjyTeeeNE0jzFRt1ihV0NMyypPZpkQmDxMAQAAAAAAgK8u7aGt3CKbSWJWpQ71eRQrlDP8WFkpJiIxDBOk+BA3p5D3XlSHR4arhUyvz6uQv/qjKBNfx6RSZERs0ilin9y7/+S90yujwiKlV/cu6pibvrVJrhR4el2HnvZXA5P2NBUVJrmyWOg8ex6X1txWP4uZoUyIVasD/F4ohbzy964cr1JJkijKtLTlqkfnh3aYv/5OZOJWr6KoY5Y9h3mk74uPRqUxPuv7Th7l4J+0taso0zPNm8Mw0i8ilfeoX4ZFJa36Nc2WWf5WT5hbaL5LkMLDNKeJCw1NyjIVmjKvWkGeOWc2mZCm0FYwKGNXROvCtTuuzhEl3G+Gq2WGpcvnUtx5p4wyrTV9qzMFTWeKyeFoUstFOS6c3mmak39SR4hyPcvcmQ19ExfZJvl0LaSIqEgpafj4PnD0fa+dokLD3/SvKJfL343bNUcUHwjg0z7GBNlbpxRFUWTmAAAAAAAAwDeT9tBWUbyKnfHKwFAp5tyOiwG/NcyeuB5SzDdocfggzR+kZ+tGFxrsHJtcVtQ3TopR5blaHb/Tv7LWB04X94nLiUbGeomn0Cow+dqy0bYfekRX6Ouybx2NdJrUZ+eVQElhVWHcrE6tq+W3NrzZO9/4LXFprWfi5gA6x07EqEPOXbsWU7a63ttXPNPJdtaBSEmreNerF5q4jJq/ziVS0M3VdkrvwU2LFLESdrZp0/vYR6JStdeahcMd/GNF/ZLd+0ztVb58IfPnSweVGuem/ngjqMOfB6sE65TOUr8ITdrrVTQ00hcFLQP9xDxRUr0MDpOEbEltkbzZQtrIcxQuZyW76ut+5ZLbwwcqUdumQkkt4c47Db3rs2v6voSb23tPdvJXilmqtv1rXP3apawyua4pWWdX5KtW/2QtRCNDI1GIkLTqLN1+oJvZB2JT5ecO/s8ZYwAAAAAAAMD38hlPTTKu17Rj4lOWpPATa3sudA97s7RRirh3aMjft98sZpWZFrEzlwuCOsjP/cWro9E++5btXrR498qTT9PwsXJ5vmJ5E7c+VT1zexD7+jo3djosWmy/5B+X1FaRKr3uXU9MNGUFO3Ub0bJwfnNttc9D16jP2B5BzFKxfR1DTT1Vfkf/N+vem2pK0Vfm7TyZeCqZZcWi1mrvK46J2y5olW02o1/FUrmNtON97nh8uGavzhF782riJgCiTumhM5vUKZrFSB7t6vKR1pBbl8xvnHgrT/fbu0a/qqLrrtO3EhJXpRYtkUdLUBS0s0pMc+Pdj54KTb5QjOPFo/5pTlS18lUqrS+qXlxee84pVpLnL1zG/N1RkfAZNU2F9PS6q49SEmRmzUd371g1d1YD8cU977c68dO10LK1ttNJHBBebv4Jr04bcOHIksX2i5aedg6TPn/wf+EYAwAAAAAAAL6pz3mMkn6xMXMbHWt3+GFC2NmJg4vbl65TyTqfcazPnbunzngFqhTaWupX61kVZdvUyL9qp0fszWl9t+aY1aCU/rOD0+aO2Pk4VjRvv6VenzRczaBG7WbZzv7zNGLv2HllTbv9VlC4v2Nln4nX/FWy/P3n9kglbRZ1dXWT1qY+PHhgR82mhRK8tk2xd0kO+aS05XqiWasJHdacW3M1Iu7W/JHlnWp3qJ/PXBnqevb0rvPPYyRBNC426M9iuqKrXtIiXKXL2eX7C7bNEXFlzeoNvu/mfHJZ0m1KwT7+gZF5sxjIdXU1DR4nxd3bvOJavrpGT87sGrMvXJ363enXaNAh9+nlPirfNbM6mfYdWs887PLesX97xUuCzLxSl2ZmoiDaNKtWfJbnjbjoY2OnjVG3qSpzXzt1v/dnZKo6pSvk17Z3uXXqpqCWZS5duIBC8HmnQbQ/XdNP0dXTTtosIezUhsNnTQspvC7Nmn7z1VbDiTn4J2shWlRsW3P1qSORjzYuGlps+Ii6FtE39g/7c/uFYEm3VPdLfb9kx4IvG2P/IpcnbQqhevbEMyTW0jSpkwEAAAAAAIAv9Vnxkpi5/oD9a1TtBhxzjVQG3rm+7c71lBdkxtWnDq12cObUmylFtct0WNjfqfXih89PbWh5asOrE+ja9Ro+u5lxmgI2o3KT5tW52PWkt8+5EQ3PjUg5KjMr32n1uKL6b5avvkOev2LLYltuO8fFuh7uVf9w4o63OXLmMoz0jZRUfgG+SqGI/NNX1rFrs2Xji9bd9t16Ge934ejsC29ekhnb9Nsw9s/8MkEo0KJZ9lVL/RNeui74feACzZUMctjkkHv6q6SXT31eSEJ2UW6Zy8ZQdjNUHbxnpvWRSut9pzZoVSnb7pNP1aEnJ487OVlzOoP81pnknsEqdYiPb4xUUv/9W9EvNn55myvtdt16GXRs5rRjM183ZM7fF//ZKmn7V3nB5rMHnGs23ysq+M7iP+8sTtw3IbOlaUhAWBpzVTFrucJ55bfdlYn5bKkKNjrvva71yZqmYeTUqV7D+ObxcJWvw+JGDom7zGbOb5kp6EmIWuXv/TxOyKb3yVqImdrP6rPv5oIjz3zW9xmw/tVRRdYyM1a2tlN8wfYIXzjG/jXmshW01hZ9Y1U+B5rnPd91z64VdUltAQAAAAAA8OVkn1ley7rNiEs35iwYWL1SQXMzPS09E/PCNRpM3b1i39DKTbo27f5HleKmSZGsaFhjxryTy9s0LZVVU8wwi2WxGg2n71p5dl55i7SuiRQtm484fbB/77r5chhr6xqb5y9Zvs+82dcOd6n4kdRXkXfI1oljmhXMa65vltumTtd+xy5O7l4g8TFUCXf3LDmTxmBPlr1B/7M35i4aVL2yppr6WtoGRjkKF289ePARx8V/N0jePkCn8qRp6/qXLWZlZGSeo2zDVitPL13e0iJx/4hYl6UrPBKvZFRx0pIW1fMYaMkVRllMjUTRrMlAh4WNq9uamxiZ2VaqNnLTirPTSppo3qOO3L/0qPcHUlbRtFrP4+cmTOxY0i67ga6WlpFFzoqt2q86tWRFi8yvOk+/0uTZB/9uVDW/ib6ObrbiNWfa/69brs/oWYWtXVmTpPIKq/Jl/t24aajpJxvUquHanT3bVchpYWyQ3a5Eh0kzrx5sXyZxR1m13yb7PSFSWmqhyN9oy+kZU38vYZtVU8Qwe8HCzQcPP3V1ej877S8d/180xt6vW+aOswZ0LpfFUEuuY5TJ3IBZBQAAAAAAAP+JGBMTRyv81GID/T2fx0miLFPuPDmNkqLGGMe+hcf9EygZtJrwaHN1A2oBAAAAAAAA/Dz4HPfPToo4ubJ2n6sRkixny8H2C+sWEJ4cmb7OPkgtiIbV6xfRoxYAAAAAAADAT4WVtj+/OL/13f83bP+zuLd3YBV1C3Ycvm95rTwKagEAAAAAAAD8TAhtfwlS9IMTJ7cfcb3/+GWcXD9rvvxVmtT+rWpWfWoBAAAAAAAA/GwIbQEAAAAAAAAgHZHRBAAAAAAAAACQfhDaAgAAAAAAAEA6QmgLAAAAAAAAAOkIoS0AAAAAAAAApCOEtgAAAAAAAACQjhDaAgAAAAAAAEA6QmgLAAAAAAAAAOkIoS0AAAAAAAAApCOEtgAAAAAAAACQjhDaAgAAAAAAAEA6QmgLAAAAAAAAAOkIoS0AAAAAAAAApCOEtgAAAAAAAACQjhDaAgAAAAAAAEA6QmgLAAAAAAAAAOkIoS0AAAAAAAAApCOEtgAAAAAAAACQjhDaAgAAAAAAAEA6QmgLAAAAAAAAAOmI4mevgFwu09J6pxZKpUrzRdfiV8I4BwAAAAAAyDh++pW2KpU6IUH59hGFQq75omvxK2GcAwAAAAAA/JLc3R//++CvsD0CeRYyAsY5AAAAAABABvGL7GlLnoWMgHEOAAAAAACQEfw6DyIjz0JGwDgHAAAAAAD45cl+pcqQZyEjYJwDAAAAAAD82mS/WH3Is5ARMM4BAAAAAAB+YbJfr0rkWcgIGOcAAAAAAAC/KtkvWSvyLGQEjHMAAAAAAIBfkuxXrRh5FjICxjkAAAAAAMCvR/YL1408CxkB4xwAAAAAAOAXo/hRF45/es/B4X6kdYX2DXIZScEXNp64HizJc5Ts1qGQmfjVrqJSqQVBqaX1pprJYZZSqaLv8ctgnAMAAAAAAPxKfkhoK4XdPbtkxRXPSElyeuj5qPHQLiaP7nrfCVbLX+aMlL5maCt8nzxLGXJp7ZZ5m65efxCaYJA5TyHbJj1/H/ZbHiPxuzet+umSej33t1x/on/Wfy2ijnHfu2PGkrPnXANfSga5ipfuPKrnkLoW2h+rV1xEjKhvpJ36ok2V88Se9T07+26vZfgfxsOTVSMKD7uTucdf9xaX1nvr8pdHda2/7EXZWetPD8r+S60J/3TDpstxrrmK79lxUy49s6g0YWZt6w/fvdpt89IlsQ0X97JRpOm4RnyA05W9R11d/V/GSNqZc1tXbVazUTGTxGIxdxcMumw1rnfrPL/yZwIAAAAAAADe892jECnO96T91AVXPFXZavdt26mUYdDVA9PmXvGOk77dNb/t58cTnm7vMbDJDDfzJp2W7pq7f2PvbsVCN/ce3Gzug5h01NHxdxePr933XHy1Not3zD28uV/3/I8Xths56nTkR9o9/uySIuVWX0n4HvcnyoTA45euxb7dsA8OHguSfsWw7hs17LffJ0Ht5+T+TEtHK9DD6ZH6K51T+fjojmlr7icUrtB18O+jB9Srke3FkYVbtt6LlQQAAAAAAIAM6vuutFWG3dhqv/rMc2Xmgp27l4o7dfVJ6ab9Lc6sPebl9Y0Tmm+2DlF6tGnhsJNZJ52YNbSITvKhSjUr1bEaVXnG+u2dZnXP/unVtpJaEmWfsyg3IT5W1Nb9nK5TeR0YPN2/9vLlG1ubJ6WgRarUK2kZ3rP/3yeH1myZOx0Eo/K8hYpHOx50TKhZTStlsNy5cvylTTkb77T2xOc242d2tEolyOVfeP5vfG/fYZwnn/2Z442wrDVr2TmfdnZ62iZfjv+eB6uf3di4J6RIzx79yicvTLeyLZbXLHrVugN3GtuVy8wMDQAAAAAAMqTvF9pKkY8PLd/t4Bqll79S39aZb2yyv/QkQbj5/FnTpgP+uLthm1tgwrcNbr9JnqV6tH39HfMuf/d7ldgmn7hAj5EHCz41TDkWe3/nholLr1x7EKaVy+63oX0md8xrKKjvzvyz+aPms3X3DtzgG2toUapll+Xz69nqpFZe5TK1T+sX3f6xOT1k0cvOp/8eYOi6dMyaFcc8/SPlmQsU7zxl8MQGWVIJ0VT3th+7la/xohbmb+JZMVPTccNCr+qoNa2uDDrx9/Ipm27efxqnmy1fnT59Fw4pZnjkr7wdT4ephIaW9ydeXDrKJvjfZczFdzrYee3KMYsvOT9RmuQv3ml8/wnNsic1QOy9jcuHLrx0O8igXLdutdwWnKy3/kifLO8HxTp2zSufXXvQbVa1YjrJ93zoWmjNOk09vS8mF/jQTZqLqTfjh8t/5H5S7aZmHtUHRB+cfvSFmCVfi0kjR2c6OXD0kRshujb1f1+9qnlxvc/r4ryn3m3YQrKfYJwnn9nn/o0gk9LlShZLuHbW2c2ndY78yQNOFXZr78l91x49idC2KlOhnCQJ4kePv6F+fNnFJ2uprmXe2kpENCzdsnGUp5b63fkg9tGtHTuu3fAKjRR0s+a3a9GlTsVsmssrA66f23HA1SMwVmFmWbpxvY7Vs+kKQrTvrV07rzl7h8fpmNpUrN65TaFsCmZ7AAAAAADw0/hOayzjn95ZNW2rvWtc1spNBjURjyw9cOlJYkYrSdHuBx02uOfp1q9SAUNR7X/b/kRA9DcLb7/+58cjHzh56FSsVkDnveP6lhXqlSqSmBFKQfvnNxt6N0fvEccuLd40OPvVEaN67wpO+my5FLpn7QJ1m4Mu265vrCXtWTxmR4j0sfJC5NmNM91KzNoz8o+csScmTJ3mZjNlz6rbjnPmVA1e/uc/p2NTuUkp4pZzgElZu4Lv5lYGdlX+7Fk2r1x6vmtx1+Uv682d6+S8avf/crlMX7Dwpkqn8Rjf3fWzWDU/+nT5qELiB8u8fY2nO+e2nOBuPWTy+cvzFrVUbes2bvLVOM3x5/Zzmk58VG7izHNHBtRyXz3lRCqbAog6lZqVjT92yTk+6Vvlo0PHwmo0LW6YEuZJqd/Ah5sxlfKp3c/Huil4777z5Udcd1u/pa2wd/CAesu0h+xd57itge7xNbMORn5uF2u/07Cyn2OcJ1J7O3m8MLcpk0c7fwlrgyCPGz7Jo1Lls2/X0tMR+Vu0nfC/ppXVznuuJu+5kdrxt0dNrK9PiL51Tst3b03HyrZuLWuLt9tGFbB/+TFX0woDp/z517gmZdV3N+y4rzmd+sm1lWvcdeq0nDi9x8A6ui6bDp8MkASl396lxx9YVBk8ufeEXoWVFw9suRzJZgsAAAAAAOAn8h2Wn0lh984uWX7FM8bA7remTQ1c1i5xC1S+FaFIysDrR5cElever3GWzceubN88PaDJ4M52WbW+yd183XWI6rDIcEkvj+GreCn+1mC7UasDksMsrQqz1p8eILdfcdl8wJJ5nfMlXtKm3wI354b/XH7Wukli1TPXmDm7Xll9QcjTpluFPcuehKnVCamUb6wpHh1fZOjcZrX1E5e1Zq3daWWfui2L64uCkKtTmZmbvJ/HSMIHHyumjgoNF0yLGaYaEOapOmmVbbdGuTTvzp+zTtUp154FaqogT0OZV6dUP7Nf62jSbc7CHkV0BaGo7cjQG93Grb85oXze3WuvZ+m9aEqr/JrqFFr8+/kSS+NTuQu9ylXqxCw/cLN3pQoKlefVIwHFR9bQ91rw6Zv8QDMKZh8urw768P2oAz/STYriLeYMLV1ALlh3q2a79niNqV0a2SqEAk3bldyz/UmYSh31eV0sZPoOf7G//npb5RMn5/BMpWzzyAVFAZsi+necbwS0yZ9TnvDo7PmQPM17d6qSSTMacndr9PTBliua8qkdf2duiI2MFgxy6aZhDxFtm3qNS5YpWsBEU9a0Ruksx65GRkqCbnDoC7l57ZJWOUxFoU7DwRaBckPNX8Ow52E6uYvbWFvqipaVeg21DNRnnS0AAAAAAPiZfPssQ4pyO3vbS5W1Vp96hR+eWuTwwYW0UrS344q1+dt2bWVx9PCB6zduNSzcwPJb7QEqil/tzDJTYzNZRMCz+JSW1LIdfXBVjwRJkF7uGzL+rOaI6qmnd7zr9f5Z5r2qqkqpyh8cqE6MGxUF8tvpJd+Tlm5ycpV6ec3LivzWr8oblmhZS+fMpaWzfB96+7tcvumuLJ76XeobG0lhYVHvPzoqPsLvUaReTsuslWq1cnHctuiM+8OABzdvnw0SWv+rzT5RRvn4/gN5iQE2uinFzcqWzx59yNc/TnS5r1V0UO7kcSazKFDSSnY9tfvUL96sdsz/DnpOq1DQ5+gVv6ptahqLXmm4gQ80Y2rllb4fvp+PdpM8W5Zs8uTTa+nIs+TKkfKNrrYoSJ/fxd/LVxzniS330O1GsJ6ttVFEaIQgZMqfV37tprtPm5zWYUFPok1sbU1T8nvtHLb5FFcSf1fz4ePv3qKOvp4QFfWvpxAqY168iNXOZGb8ZqLKXLKy3P3WjQP+wYHPgjxcHystC2gOy22K17LcufF/Ky4XyVfINm+pMvlzG2s6xbpmlcvLli5/VCifnW3uoqVs7XJ836YHAAAAAAD4b759aCsaVujZxTLcKMeTw/1OBKT+SHhJFeK5a0+O6eN6lA7SyvXNEtt/f05cqVR9+fJDwwLlCymXnnR52aZiYsAk6mW3zZdd84eE+9uDk6uqraOrVX/ZLoeOhu++U31XU1xbS+v9iqZWXuWiKa//KvdTP9vcafCIu7nbdKhYoUmZ31vn7N/5UepdYFy8eNbwE3fdlaWKvdXhsedWVWnvO9Rxft0jY+r/FVapY+06lWo06loxW8fF/9rCQHlv8aiPl3mvY2WiKKglzf9pmvat8FD20cdx6VZrWip84iWXCcaXDwdU6V3KRAxLyw18qBlTKZ/q/Xysmz7lc7v4u/zF/rrjXFB5OXkEqyIvLlty8U3jeTj51LI2FWXvbFUramknh9qpHH9nZOrlym0S7eIXoMqb660XE+6fmrQwqNHMbo1NXo2ulw82TN9726hQlbJWxQoWqZb3zBznlBO0njCwktuDW66P3M4ePmhv0mR451Y2BiW79p5X0/vWHR/3+9eW7z2bt33n4fWysNoWAAAAAAD8LL7HnrainnmebNqCWv3WSk9RoW9gZmZkZqan/fZ6QEmStExy59T/RjHX106yBEFu1a5bibi9/8y7Hv3WUdWjnTu2eSdVV2FVorDizlW3qJSXYi9MH9NmgUdCqreYpvJqv0sbThn13zZr6biWvzcvVSKTEPOxPTvlJdrXsfU6NGt30JuqSmGHt14Lz1+mVk6fnRvdi0ycvXNupz7tK1UrrK/897mUDz9RRpGzsI3KxdEr7tXJbzgG6BbInVMnZyHr+Lu3/JI3WJWCPW8/Vn/kRg2rV6kZenXfkcsHHxRpWueth1N98gbSeMOKVO7nc7vp87vse/r641zp73gzIlPdzus3Tdic9LVpRatyemHOTgEq0yzZDcI8PMJT+kMZ6OWduOGEmMrx9+afPBWL5nh2c9/1l2+GhRR186JntKV1kSxv+j/m3u0r8UX7jG7WtkHJcsVymMhUSaeVwl2v7zr9zNCuWON2TUdM69kxd+BFx2cJgR4H7O+8yGZTo2m9vqP7jG1q+OCSx3M1sz0AAAAAAPhpyH7UdXM26rxw0ZDF85qV1ftOl/z6SVYi0arzoL/rhS1sOaTrzMP7z9+/fvb88uEjGiwUK5ZMejiZaNiodx3tHUv6LL52y9Pv0rr5A5c8y1s2d6ob9qatvGhkZqEV4nTa/fGLEM9LR4cNP+KtfPk8MCG1IFNh99viYRanBw5rO+HA3vNuzpcvLek3ZsAB3Q6TWhTTNrLILHpfdrr7NCzA/cayP1fvDU0IDnyZEmtGhDwJio6RPlYmqT8tW3cvE7p+0fBN99w8vY7Mmzv5bKbOPUobyq069Cn1bPWy6Qe9Hty/uXSEg2PiCszUl9salWxePWzb/xzula1cN9NbpWSfuoH3x1cq5VO7n8/tps/vsvekNKzq5xjnCQ/uO4eZlq9o9bpSokH+yiV0Xzi7+Qi5alTL5LNv3/Yr/v6PH1/cevh8SNLVFakcf5fcqnzXJsZ3129auMvZ8f4Tbw/3Y+u2r3fWqvxb2bfX3iqMDfSjn7k+CI14Gfbw6pn1x56qoiNfJog68c8v7Dq++4p/wIuwx3ddbgbIs2U3kWvHeJ4+tXWfm/ezsEBfj8t3w3UtzU3ZHwEAAAAAAPw85OPHT/g+V1IHuB1yfL3SU2ZauHTNggaiOvjGEdfHCa+P5qlVM7fJN4hXvk1im3zTRsWa1aikH3By+6GVKw9sO/4wMn+jZRt7tswc+sSsRJ1C+rp5S9TJG3hw6dbp8w4e9TZr+deoKfXNFYIUePHQP8/sBrW1TtoHVunqYH81a8MeVTPppVL++fmDmwKLJJcX9XOXtg45uHDtpLlHTzw0aD69faFbh+euDSnf2y5w2wGPQs07lzN8txW1clStXs8y5IL94ZXL9q7ddfOhrl3fBWOmNDBXiEbFSmd6sHPLhKm7tp0Pserau5fZreXzzynrN6qeR+m2b/fsOTcMWrXpU8/8Q2Ua2rgd2hJSfEjrfJmLlqlq5L19/sbp8w+femrZcd6YyXXNFIJoXLR8TYP7K6at+2uju1m3TtW8roZWadeumM7btxfhfGLFraxdepTIJtPOpnqwaPPDskMH9CipL0rhVzYe8rRr1qVC9uIfvsmGtp5HPtCM1XKlUr5xk7oVP3g/aekmKdT1n3VPivSpV9ZYc/uxt3bsvZ2nSdeKJnqf18Vmcr34lIZt2aCiuZjux7nS/fCxs/HF/miV1+TNb3kU5jqh5894yYqWrVbRxir28eVTlw+ccA+yrNS5dNStSKsGpTObF7T+0HHzd39TJM9kW7i4WaTbtVsnjzudverzXCtn3S7N25QwSnpuWuC1o49NqpUuapPDSulzwv7M3lMP/MQ8LVvleXHlytHH5g2alsgvPLl46MK+w87XH8RY1mjUtZ6lvr6FjWWs65nL+w5cO+v8VJWvYo9OxS11SG0BAAAAAEB69OLFy8yZTd47KMbExH2fyyc4OfRdej8+ZS2oPE/rXlOaZZEpH6wcsOvyq2eTyXNXnzalmtXXXv77DRNbfEKcx/Ez9zJXalU6KYqPvNKjyBKTTZvnV1NwP18d4xwAAAAAAOCn4+7+2NbW6r2D3297BJmJifnHH8kkyvQyGRt87fVwJFk/lCLGaU+/AVtP+MUmRAed/nv7UYOKzcoouJ+vXzHGOQAAAAAAwK/i+620/SFIsn68WL9dE5bO3H3fN0LbqmzlQTP69ixlIHI/jHMAAAAAAACkstL2Vw5tSbKQETDOAQAAAAAAfl4/eHuE74wkCxkB4xwAAAAAAODX82uGtiRZyAgY5wAAAAAAAL+kXzC0JclCRsA4BwAAAAAA+FX9aqEtSRYyAsY5AAAAAADAL+yXCm1JspARMM4BAAAAAAB+bb9OaEuShYyAcQ4AAAAAAPDL+0VCW5IsZASMcwAAAAAAgIzgVwhtSbKQETDOAQAAAAAAMoifPrQlyUJGwDgHAAAAAADIOH7u0JYkCxkB4xwAAAAAACBD+YlDW5IsZASMcwAAAAAAgIxG8d737u6PaRQAAAAAAAAA+FHeD21tba1oFAAAAAAAAAD4UWQ0AQAAAAAAAACkH4S2AAAAAAAAAJCOENoCAAAAAAAAQDpCaAsAAAAAAAAA6QihLQAAAAAAAACkI4S2AAAAAAAAAJCOENoCAAAAAAAAQDpCaAsAAAAAAAAA6QihLQAAAAAAAACkI4S2AAAAAAAAAJCOENoCAAAAAAAAQDpCaAsAAAAAAAAA6QihLQAAAAAAAACkI4S2AAAAAAAAAJCOENoCAAAAAAAAQDpCaAsAAAAAAAAA6YgitRekRMn/LanVkkwmamkpFAq55g8aNByA7yx5LlIqVQkJyuRJ6RXhv0xKzHUAAAAAAODb+bJAQ5HauZJTDLVaLQiivr6OQiGniQH8QJqJTC7XfMl0dLQ0M11MTLxmipLJZJpXNJPWlwWszHUAAAAAAOCb+rJA4wOh7esVZyqVWnMuXV1tGhdAuqJQyI2M9GJj4+PiEjSznkwmJk+Cn3US5joAAAAAAPA9pT3QeD+0TV53lpxi6Opq6+ho0ZoA0ifNHKWZ1zQznSAkT3Ofsd6WuQ4AAAAAAPwQaQk03gltkz4mLKjVapVKra2tIMUAkM5ppinNlBUfrxSS5jkh8ddTn34Xcx0AAAAAAPiBPhloyN4tn/JhYVEU9fR0aD4A6Z9mstJMWZqJK3HprCCl7U3MdQAAAAAA4Ef6eKDxTmj7+sPCenrs7QjgJ5rmtDUTV9I0l6byzHUAAAAAAOCH+0igIR8/fsLrb5JTDFEU9fV1P31Wpce44q3rDNpxx6ZZ26I6n/xEctxT7xtecabZDLVF9f2ZvXIPCWnes4SFjN4B8F/J5bL4+ATNDCeTicl7eH/ct5jr4vZMNqlyqdiQagXf3ypceW5Qm8LLjPp2sNH/95sTXpxfsWpA/wWDRqyYMMth0xGPYDPr8oVMPr5fgxT1/PbNQCGLmZHiY7V8OL9fzl4B9XuXzv6VZlp1sPuGyYv6DVg4dPSa6QsP77saqGNrVzybdmK14q91t+y6IUfr9kXZawIAAAAAgDT5SKDx3krbxM8Lp3F7R+Wtc3s8tQz1Y844XA/99Oo29TP7+bU6H3BXJX5jUrRCh0bWpiJdA+DrSNoLRkrjUttvOdd9DtWzLZ371hvrKNRos3DT5H/md2iW6cG8dgPabwhQffx9Hgd+rzNv51P192xhKfDqgOoD++16WarXnxu3T1g2vrb1o0M9ao362yWB4QcAAAAAwJdJLdB470FkklqtVigUaTih8uaeC95Z6/7d5cHIpeePh9bpkCntEawsR9Oe65qmubjmnpL34wWAVGgmLrU6VpLSNFV8r7nuE1Ob34a5Aw8Y9DuyZH4N4+STtu9Rv8LvPTpO3HKizaiGhumpfaWX+0fOXhtdbfvlcb/lSG7kml27lrWoMHzmlDNdHepbMAQBAAAAAPh8qQUa72QWybGuXJ6GSCLhgcO+p9maD+/RNuvGv3fsPhHRvn1K6CBI4VeWLB+15OLNACmzXZluk/uPb5TZeVTnKvP8VYJLWYPzoy9u7H6uf4mdlRwduxaRC0Kk9+YJy2fvcvEK18pevHyvqf1H1c4sF9T+y4cW2l58TQuvidMue8XpZS9SdtD8ESOrmmiuovS7On3Exi2XfJ/G6ucuWWn4/AE9iuvRx0BGppm4ktfPpqXw15nr4p7snbpijoPL3ady69pNp9RQvZ5RVQE3Zo/euPWM5yNllsqd/2gd+6G7UnqvW3pT67fJk18ltonETM0HtWnywsv3kVqwkykDbswdvX7dCU+/cMEkT8EmA/vN71dY78hMy+ZHQyVhqHUd+783XxyWPfTa3v9N2HPQMSBYpZejaNleMwaNqZXp/cn+wzNtUj28zk4YsW3XxUdR2Ur0m13Np+cG4x07l9Z4938dHp9avCe61oK+LXO8ObFoUuLPYbXdDgV5xQsWb7elFHN369ox885e9giN1TUrVK3B5AXdm+fVnFAddHHXiAmHTt15HqGbuUitFn8valvZXEz9OAAAAAAAGTTQeHd7hKQsQxQ//U/lBOfze32ztGpT1KBQ1RaFY087OL761LDSbeG4RmPv5ug1Yv+hcaOK+M1vM27mLaHs1LW3ZxXRK9DubMDayaXlbyUBwTt6DO2+JarGxEmH9gzvYek2tfnoKU7xKee6Yz9wrVafrcudT49sp31jXOe1Z2IFQeW/pPPE+T7WI9bMOb6zd92YM/06b3FW0sVAhpbyvMW0Ff4Kc50UdXrkiPYLvSx/H7hzx8AOOme7jr0cm/yeuAczWv5v8jntptMn7F7Zwur8gkFbP7CtgvrJ7XMeiqpNSpu8e1y7fMe9xyf+aScT1EEbe0+YciNL35VzzpycNruJdGD4tJnXlTr1h3udaW+rZzfz1v4TA7KLoZeH/rbkqE7t+XsWntk3tIv5ncm/rzoa9d7FUp9pI26ObjZ9Y0SpyVtnrO1nfqDL/J1hH2jFl5ednVQFG9czfzcLlhXqNf7k/t8r6bxzNO7KulY9j7+s3WvH8cVH1rYp4L6j8+CTzyVBen6qd6u117M3XbJ37t4FdQzOrGg3zilaSPU4AAAAAAAZNtB499PBUhp3hFQ6OVx4lLt62wpagjx382a5py86fyKsdnszUYi+uWD+/VzDVm0ZZaMlCHUrmfpeGbT34KPxJfMa6coFubahiZ6u/M0+jCr3w3MPKJuvn7WkQ+IOt3Vq5Iwp++eKxddHbq6cmDPEmP6+euzwqjqCYFd4kvPWln7uL9S1zT2v3lRVWdynT2MTUShexlyts0Otin+/KgAymsTpK42x7X+e66RnZ+dufF5s3NqdY/Np5rrGdfKpq/QY75X4nojju5a4ZO53cuZfVROfclavrLZ/kbnn/nVqlf9TfyFTGSudVC+uDok2Kz1i4Yhh9Y0002PlcupzGyd6+sQLFfSNDbVlglzP2MBAW1Q9ijCo2HLu/C7tciUGquUNPLbWdfMKUgsGQhpm2irRDjvWPy+39FzfPxLXypYuEPGwxMQX/76VZ35B8bq58mRNy+4TUliwvFin3lP+algkcVq2y/nw3MFNj/1VgpnbPaeofAMntWlVUHOeojllwtoARZQkKFI5rs9aWwAAAABARg003nsQWdrOFO/usP953pY1yyQ+xUdu16xqwegbu09Eat6tdHe5EmzZqGm+lOf76BT5y+XIlTF55ancUvgNV1d5sZaNXj2TTDt/88bZI5xd3ZNWzorGRWuXS0k05KbGpmJSzKKdu5itcGb61FErL133jpSXajxnTtNy+vQvgLRntv91rktwuXdDWahThzwpc51W7lat8if9WeV21S0if83fK+qmTLI5qrep/KHfKakltfDRxb6KgoM2T59W3zA+LMjdyXnXoiOXIj4QNcttGq7YPaidlTriqf+tCxdXrXF8onqv1EdmWqXzxfsJpcvXyZL8isymbpn8H5qvJfUnbvYtYtZmfzqsa1ZEjA30fnj5yJGl+/2UUuLqZoW1tZ32gwW9Fy50cHEPUhVo0+PvwaU0V07tOAAAAAAAGTbQUHxBlhHveHafb4L3nN7ac978K93fwTGsbW2DkPBg0czyrX9tK3R0k67xwaecSy/DoiTj3BZvNqQVLSxNxbCXoWrBUhBkpkZm/17XJc83yn6GMGHT2tHj5g0QjPKV7DJh0Mzf8xnyL3yACe6rFv7IXKfzMipSNMtm8XqGkmXPaZ6UdqpfhkeJFuZvXhH1c2Q3kD3910xmmcVSCPF9HCdUfHcejn+4deaZ4Gq/Dahl5O2wesD4Q2cexhvlzGlXLJOezoemOVXQ8RkLRi6/5hquk906T9E8CgNZ2mfauOAXMbJMpmavTiwzNzP/wGpa0SKHuTz6uW+gWrB652WV18XZGx8V6d6xWc63rhd8b+GQxXP3eQTJTfMWtC6opZcSCVs1/edA3ISpe6d02jdMpZOjfK1Rc/sNqGCS2nEmdQAAAABAhg00vmBPgYTrDhcfZ6+3dttvRVIWZKm9N8zsYn/ueFit1kYGRtLLoBBJyJNy0ZAH9z2knOULGn3oVKKxqYH4MjQoVhC0U8q/eB4uGRmmPJcnlX+ya+epOH5zxfHx4Z5Otw+u2zS11wT9Apv+Ki+njwF8PR+b61qZGhlLfs8TdyFIDjHVoSERSVsSyMwyGUpBwZpXcqXEmwmhIbH//rWVLE+JqnniNxx0DmtTzfStuU7pcmr6rD2FbTv0d9vVqcshRf+xt0ZVsDPXEuIde+e5G/iviT1g09/t/g5su3LFyd8KZNUVlTfXFK92O80zrXa0kUIVFBYmCcnBqjrpd2b/nqtNK5UoIW44eCy4X68sb6W26keHtk+ZJ/u7V8e3CkcdHDFuzLUSC45N71LRwkCmfrR4UKHVKZXOVq3tmlNtV4Q/u3Xp2uY564e1Fq3dxzQyTO04gxAAAAAAkEHJPvsdcfd3HwjK2rhRp0qFy5dP/irSukvl3JE39pyMlBcqXNbQ/9ixRykPBkvwXNBmYKfVfqoPn0s0KV24kOrOvqPhKYFygvfBI08MytgV0kr1+irXXU1KDJl5QyVom9hUrj5sSae6Ws9cPXhoDYCv6qNznaJ4kTJabtt2+KXMderAQwc8EhL/JC9YobCJ57lt1+OSX5FeXN13Kf4D51cU7NnHLnr36nEn33rylzpk36LjXsZlf6ttEH/f455UtNfoKomJbeJ5nvq+/Pev3pQezl6xReuPbF8wq66oKRX56GmgOu0zraJEhQKyG05nXiS/ovY+fcPzQ/O13Lp+v4ZaZ2Ys2/nWdC6F31602k1RoXrjt5ffKp/dconI1bJtr8oWSYF2wiOfoKQ7Uj/ZPK14heWnYgSFSbayjVvMnVTdIuTR/WfKVI6rGYMAAAAAgAzrs1faxl07u/+JScPmRXTfOqhVqlKD7PZbHBzD2lQd2i9v9b8mddPv3aOMjue2VYsf5h26wVZLEGQyUQoJuOf+LI+1xZsgoFDjEU33dBk0bnjU7y3yxl5dtWqOZ94RKyuYCEJEKjcgz5MnR+jyeUOXZvlfjaLGkc4bNx8XC04qb0BfAviKPj7XhbeuPqzL5kbTx3YUe/RMjG83znY3MEparGpYt3W/YmdndByvP/236pkCD87ZcFHL8EO/H5PZ9Bs55+TAQa16P+zdunNNK+OYp5e22C85Fl9jfq82WUTROnd+9Z6NCy4X7Zg9zuP68ilbLymloh7egbFFMokymTrkgctjfxPLfIWtFJtOLbIv1q+o7NGFI1NmXoxQWXjeD47OZZ6GmVZm3KFDhwXjR/y+RhxVzuzh6WlrnxvJNP51s2KmjguHHak+vWvlF+cGNm5Q1FT9xM1+qb39E5sJG5pav11ensXWRs/v4J6NTfUqG4Q67tg8dcMLpUGAm19skcLZVC72IwZknfxHQYvYR/Yzzgbna1o1lyJr+AePyxiEAAAAAIAMSz5+/ITX3yiVKpVKbWiol3r5hIvzFyz3KTtlbg2btxfDKjIp3A5tOBRbonftevUql5d57Vq+Y8Haiy6qQgNXjx1T2UguiPp60dd271u08Lp20ybFvI+sdLXq1auEhVy/SMNyuQNv/bNkx6INVz30SgxbM3ZcFWOZIL10Or7kWqY/+pfPlbxP5JMby/8JKjegQbnMOapUMvY9dXz5Yoc1u256yAsNWD5yeDlD/n0PZHCRkbEKhVxL69M7pXyFua5PvaaNKxSOctu9eveyfxx9cjRdPyPPpT1RdYZVK6hjXrWRrezepbVLHdYd8NFrOWRFHf9tPjZDOtrov7fli9y07G/Vy2g/v7Tv2JrVR7YdcntqWqzPvAlLu+TSFQRZVtsKloFHV239a8nJC36GTeeM6a3nvHrpwSdl2rQqpR147uSyBQ5O2RsO7FnBJvT2+rmb5v/j5C4WnbjhjzzXjy5Z7ZW3e+3cd4+suGXZrW/p7KnOtJqp2apB0zwvju2fO2/voQCbCXPKeO7yLdCzZZ0c78+pokm+5m1KmAXeP7Tt0Jp1J/ZdCtAqUX/mhtGDyiRVS+W/f/6ZmAYd2hczLFQxv8rp5PxZ29ce9oyya71uVhHPnQ4rzhq0/V+7VrnDLuzat3jx/q0nvWMLNliwrnvdLHJZdrtquT5wnCENAAAAAMiwgYYYExP3+puYmPi4uIRs2cxoLAA/nWfPQnV0tPT0tD9Zkrnutah7l7bc0G/0R6nkHQ6ijv5l0y5kxsPZ3bLwGDAAAAAAAL6HDwYaCtoFADIs7XiP5QMOH3s5cfZvVtpPnedMOKduOLJRZhJbAAAAAAB+JEJbAMi4tEr94bBVPWr69IpjQ+KMs1do1vfgX7WyktkCAAAAAPBDEdoCQEamlb95rz3Ne9EQAAAAAACkHzy+CwAAAAAAAADSEUJbAAAAAAAAAEhHCG0BAAAAAAAAIB0htAUAAAAAAACAdITQFgAAAAAAAADSEUJbAAAAAAAAAEhHCG0BAAAAAAAAIB0htAUAAAAAAACAdITQFgAAAAAAAADSEUJbAAAAAAAAAEhHCG0BAAAAAAAAIB0htAUAAAAAAACAdITQFgAAAAAAAADSEUJbAAAAAAAAAEhHCG0BAAAAAAAAIB0htAUAAAAAAACAdITQFgAAAAAAAADSEcVXPNfs2S729t4PHoRFRSnVaonGBZBGMploYKAoUMC0TZt8o0cXp0EAAAAAAEBG9nVC2w4dTu/Z4xsfrxYEsloAn02tliIiEpydg5ydX0yceKNVqzzbt9emWQAAAAAAQMb0X0PbzZs9+/e/FBERLwgirQngP5Pi41U7dngdPuy3bFmVzp1taBEAAAAAAJDR/KfQdsiQK4sW3Uv6I4ktgK9IjIhI+OOPs87OQQsXVqI5AAAAAABAhvLloe1biS0AfBPJkwy5LQD8WGq1+vnzkICnwZGRMZLEXlgAvoQoioaGetktzbNmzSST8UBsAAA+4QtD282bPUlsAXwHmqmmdOks7JMAAD+KWq1+6B0QExOXO1dWIyMDGgTAF4uIiEr89U9UrHW+7OS2AAB83BeGtv37X6LtftYuz2LRZVypPxtnKWApf+kfcnH73anzfdwifrZqaGWbf7+6uov9iCtq+vSXp5lwCG0B4Ed5/jwkJiaugI2VKCZuh5XyX+yMBSBt3l6db2RkUNDIwOOBn2ZisbTMTOMAAPARXxLaduhwmieP/aTELFaLL9RtFnB/ypCbl9zjjYrkGjS9xsXK+pUauT5QfvrtmdrXvFTPt0J3n5c/vCaq8J1jnSQvPqGZIWgmHM20s317bZoCAL6/gKfBuXNlFRMJ4juRLT8KAkjDP0DElJ/YJUnSzB5qtZTdMvMjv2eEtgAAfNyXhLZ79vjyY/pP2t1VxlbqFHqrWuNbLrFJBx6GdbmtPHan1PBaHn1OfDq1lRno5sis+J4fZBJ15Fpxqvh/v6COuW7vTY9mnJ/2k6YdAMAPEBkZk7wrQlJWK8pkr5fZ8tMggDT9ICckJbZJf5A0E4iRkb5mYqFdAAD4OPn48RNef6NUqlQqtaGh3kfeMHu2y/Hj/mn+H+i4qmOPnesv7HQwj6SxfzgdyzErbPwnnV12V/X6mBQecnL/k1s+0cFRkqBn2ml+rS2rKs+bYte6jJb3xWfeb3WbTuOq91blyVwgZ5c60oktgUKNEuu2VV++sPzo7jnyRLw4dzsm4d2+t6j5bgEXqcOB37cV8V99Jlqtedk0347H9SpcdjsRoFd3XPWt66osnF60bXktv8vPvV5K+u3qBk7Rvmld5vCWnP7XLfa42IWtfXg38Uc7sdik39xHqf+xl090bVL/ltuJx5Jh0QILNtdctbT8+B5W1rEh52/FFp/V5k6vmJW7Q+MUmWfc7Xi4efS6rS8iZcbDLnX62+ThxmtxLND96ahUgp6eokqVbB+NFWIVCrmWlvyTZ0vLXAcASObr+9Qqp0XyMltZYmQriCkEvvjii680fiX/3uf1VgmPHwfmyWPJBAsAwEcCjc9eaWufuLwxbZGXGFd13PH9IwL1HXPri2l9E74dWTazIpnCHJxTwlVRR8vMUK7pmYTAiMDEhbeKKtPrLa3ypHeTc+fDjdsuqLXzn9jSDe77vNozNu7wxdLDDR8297Jr5vkyl+1Bezv1zLPlW4TpVy62YV29mb67B597s1ZXlqvghn8VmLozYMGYPMUmvbipFEwb5Kv9xKuOo1RwUJ1t7cKGtnM4/lyv/pSa23arqlS57SMI2tWKdnO8VLfgs8dx5qUCGreqp7Nte5ykyNS6lcHJGb7PJZOUWphYLThQLteaszU7h4jFbZdtqrc0cE/v408i/sleRtv7XLZsFbMq47Jmr2jgvk8nWw27sGO9I9gE9+ckaSaf0aOL0xAA/oMYN4etUxacPnP3ebhkkLtkua5je4+on1X7Y29RRr9MkBvq6aT6MROV09guNT26PnOoY/ifJ7pQ56PTp+/dc8k3IEpmbl24Se9u0/sVs9D85KYOWFCjy97Wm88NyvbjHtwjvr1DAtvaAviieSR5yS0AAPi0z/7J/8GDsLT9D3JKYmvKQ0HTzw9J+lr6gio2NuXnpKxd6wa8+D979wHYRN3/cfx3l9U0SfdmtJRRRpEtQ5kyBAXFAeJEHvWvojiR51ERlaXiBPXxcSCKirhBVEA2svfeGzooUOhKmubu/pe0lBZoaVEwyPtFTJvL5e7yzfnr5ZNffnf3Ed9l0+uxZnNUv1vN3z+37Nv1eYf3pb3/+PoNrWv2rHbWN2RS7PW12m3b8PjbKXsO5236ceVz38i39Isxn2uGnN92zYlJuDFZFlJA9z5x27/YuVGE3d4/eMbQJV+szs04dOSLp9bMTUq8Mcn3Faqcg++/lXogVxOeY9/+kNv+pqohkjBekdg7bN9nv57qKht0bdJNRzY9/uqhnYedO35f9+9PCq7rG2NcfmCeKaZjA9neKqbWvE0TDkW1byIHtIxtnnJwxjYOEy9VFW18AODs3OvfHNJ2wOy8Nr3HfD7qh08euCthz+u9H3/i95zy/jBkzelXbeCYLeV93qd4VE1R/vRfFy1r4Yedrxk3y3rlU++8OGXyM0NvDFzw/FM9hm/xfYVY9Sj6iv7OP2GlI1oSWwDn3ZLQfAAAUCGV7mmbm1uB81WR2PolNS3noBJUr7Ys0rxvPtP+92vA//SfctMRN/0ULoTJGhOSu3KPcnLmrF151rhoSew78y2iFBUb4N6TdbDoPayye0euo73Vqr8hLneGgMx938y+6rkbQ4cfDOvT5ugXj2UphmoJ1Sw3fNQ39b8nl52XtyXIeySnHNS3tmhbNny7+8DsGl2C9+y5NcH606LZOcV7rhQdb7cnV517sEHxVuYuMNuce3/7I/DRDkFzEyO2zV3+y+HaI9uGNAmOzvt94ToPO8KlqkKNDwCUQdnx40MvHujwzjvjb4sNMMqyUK/p0TTm+AOPj/xt8DW3JpR1xKJ5PJrmuQjf0cjfOvqhb7P7Dpv1Rstoi8EgaWqXVm3sg9u8+uWPjw6/PdRPqigVpi0ktgDOvx3xdralEQEA4NwqHdqq6rl7eRgSt736GImt39GOH/phXptXHqnxyh+70opfRktor+7BxuVCFDjTjgfWTDCIrd5oTI5y1Ah0bcg468utZaS6zB0dVWSx2/s+Vo5PtOUedrnOOYPmnvHNwXHPJ7Q7ENF86fb7D2rCmJ9xJO/LgZMf/N0X0BoC6jQJOL5OFdX1XU0rfo+sbN7z3f7km3rE7b9BfHtPWskVZR7Jdy1feWXHjft9c9urh9WSczI097zph9+7OalnpHvxxznLMw7H31/7Jptx7ssZbvaDS1ZFGh8Alzv38gcSBn9/7Sup41uXHvRA2TDxl9U1rp3Xt1qQtTAsMBhNcbc8+9jxpTZfB1b3ju8+eXLkzPnbjnvs0c179XvnrV6NXb9cnzhmulOb3rzb0vcm/9ZfmTF67NBPV25MyQ+IrdXt4YHvPt0oolTyoKbPn/TEv3/6df0xEZXY7f7/e2tI8ziD76/Vkm8eeer73zblxXS69d/Jyx7ddmv6Nx0DSjwyf9G0z/fWfeqH1tXsxqJFGo3Jd9//jmFfjKt06+fJmH62zVAPr3vnmQ/fn7Ez1W2v0/H60W/f062qLArSf3vlvWETVm/OEFENWz762qDHrwqWhPvbPt3v2HXX6uX9kw3sNAAAAIA/uiDBqrKrwb+eiT9Irzh/o+VNGrx8Tbu2Myc2uqVdeM3qQY06JY2Z2v56k8ubmLoPf/2d5+bhLXrXCwiNi/q/t65otGzXlDO62XrHWJC0lF92/lGv4RsDo6uGBiT1bD6qn/r9pLT8Emsqa4as33fPjK09bnDE/M/3eQPhgiPffue+eeSVtzS0BoUEdR/RbcF/E2POjOaU499/l9V5WJtbc3Z9sbpUf6ej03fOSWr4zqOxCWHmmGZ1P5rT4+mm3ne7R2Yf3NS6/oCYwwu3qtmLUzY0r39/zbTfFrFTAsA/9E9c5pGUXNU7jIAqNI/+Z03LTTmSWfwHRctesTwluPkVVwSWDFmlkOadBj3YMtEglO0/9B/wu9bnyel/fPD7R9c5Zox75KMULaLb5M1PdgtM/Pe877+7KyR90hu3j83sOGr0H4vHffV03KoXX3tjpVLqj9W27/rc+OWu5nd/M+udb55vsP+tZ29+Y4/+h0fZ+cPNPScd6frQTzNefrb2iqdf21Rw+nAK6t5l2zLj67dJMJbcPkPMFXc/el272JJHa1ra2Tcjd8pTQ4fvrPfy5LHzf3yg9Z5Jdz23OFuoBye81u+DnOteH71gzotDErf8556Ji70j2xvq9Lpt8N3J4Xy+DgAAAPirSve0lWWpAv3dDFs+7dRNmzv9zb3VjBTZjxRs33Lz1XmDX2o06vtm1e1q2oaDHz8/o92xxLevzleFZ+HzMx97rfVLM29LCHBtmbfttrs37y79hdATa1LXjmy1eZG5bdt19/axvjOi4+qRAe59GVOfmjlkdkGpd5/7tp19huxD30w39euy74kZhX1elWUv/z7Q0vq5aX0mhCi75m//vz5r13tE4Blvxnd8v2fHS80LhuzcopR+m5uy4/5brG+Nbrd0uM2YceTnN2c+8aN3xFvt4MGZu1s125+2Ml+oqWkL9hqu3Hdgfg67wCVMb3woAoAyKCvHPH7Vu65mXRKyc4Vr9Q/92r4zc2XAoD8mjGzm60qqZh85rgU3dJhKP0wyGC2++xVjfJ/hT3S5v01SgCQaRt/c5PORBzMVqYo9yCQJyWS32y0iq1qb58Yl3XdzLYdBUmt1uXrE8oOpaonPv5XVE6asqHnzgtHXNrYaRLOaEQc3Xv3RL8ufeChgwo/LG/Rd/kzbJIvUKvmR7bMeGnP69qtHj+SI4JBw4+nbZy7cvlN/jjX1rJuhZu7clRfZok2Pq2o7ROILHzraZVaV9T+GO1LdVbv27tYg2aI1GPls5FKlircpNST3uSdJM1hoVgEAAAB/VelI1WYzZmcXVGBGw5YJHbtpc2e8tTeaMvsT1659w+/cN7zUtA0PrPT9zMv8/JFfP3+kzMcWrF7bLmZt0Y3Za/rOXlP2erS0s89QMO3eiaXeM7tOfPPU9G+eKjVT3uTfgyeXfju+Y11ry7pTtz2Hn6lXNMeRP9bf1Xb9Ge/fj49q/vGoot+Pvdzk45d57S9xeuNDEQCUQQ1v13PgnvlTp6/ck6dqW1f9Hl+/2/1tW4ee/JhZDgxyiBMn8k4fnNadtW9vjrVaXFRCi/49N8+c+PWkbYd2bNk0Z26Bo9ZpH1HLMVd36btm5Xdj/9iyM2XrqlWzj2g3l5rFtXljeliLK5LtJm9rZbDWv6pexGt7Nh/PNaxNi2xUr2ag0aBPtte4srFdOnHadsiOIKuWlZ2lnvYlqPzDuw87Q2LiQ861GXJMz3uvHPf4kAZLm3bt0Lhj16t6tKsaKOSGt3Rv+fmnVzdc1rlLk/bXtO7VLbm6ryk1mM2MiwAAAAD4s0p/L65OHf19QwVHljRs/axjt0F1/tjkyGIsSgB/iuZrfADgrEwJnW8a9f6gfzUMkLwCGt436KNXb+mWcPLDHim48RVRJ5Zt2FJ6mBzXnPevbPzShANqzqLxHZs998qcY5aaDW998qn/dDWfsQrPpnHPNL72w5/2SNVaXDVwzP194k47iPJ+E0mSDcVhqMFkkITqUZQCjz5dOjm3PseZHVzlGk1qOvZuXJxSKlXWjs27v/G9D0/N0869GcY69wxdseKVV26rad69cNjN9za9e9YBVdia9Z2y8n9fP9+2lmf3l0892bDNO9OPcEwGAAAAXAIqHdreemti4YmDK8aw9Yt2nZ9I4A0CgD9H8jU+AFDGAY1R3fLum6OWSFe9OHREO3npqDfHbtZMpw5zjM36XZO0c+rLkw+fGmVHy5wyYfHxmk3aJygLP/t5V/sHp4x/4On7OvfqEB+knHHg4tnx5Udb6v1n+Jev3fngne26NA9RTzs/mLDWSYo8umLT7qIVqHuXb8mIqp4UZq9dOzR9/Y7UwjxWSVu7LvvMwyJb+643RW96Z9SKo6fuU/d+/dscNanT1XbpnJvh2f318K9mqw37Ptz/zQmvL/68qzbtt+kZucs+nfDealvnO255aeywWQuf6JI2Y+IfBewtAAAAgP+r9NeNhwxp9MILK91uhdoBuGjMZoPe+FAHAGWTg+o2aN/vujFPdEy4xbn16d31gkt9Mh3Q5NY3By298cFBN2687Z6udeKNRxZ99tlLUyx9JtzUzCyvCg9yL964dH/rdrajS774ZOS8grywYzmKCBWSpGanHjiRU9MWHibtXbZh1+0hUce3fz/qg58yC64+nOURxV8CMDa/q/sVH3894Nm4twbUljb8+tSYPQ0efqKV2ST1vz6581cD36w+umfonsn/+3inLFU//fNvKajpc2O6zb17WIesvo/3bdIwVt0z+6cXR2+sfv+oexJLjGQg28++GZK89/dJY1eZQ0Z1qm/LnP/zxiNRjRMd5oItc1565VBw0D3XJhj2T1uyxhV3d7x+7Kds+fHrn441vG/AFZEMawsAAAD4JcPzzw8tvuHxKIqi2u3W8h+zeXPmxo3HqR2Ai0W69dYat9xyjp62OTkuo9FgMp17nMYKtnUALq1DmpA6TW7sUSfWZjKHJXa7oXmDKHOpcQhkS7U2rdtGHl343bT3x37/v0mrdpjq3vfq4Jd7Vwk0yDENE4wrfnv5+fFjv9ucVb/3C73c0979Zm5YlztbBx9ZMvPtV75aldBv+F2RW7754rlhkybOPVLlzgF3B6398K25nu7X1dr40+dHGz99W63AyKT2yQVLP/vqxZe//vyPvOR/DfrvkCYxZskYXa9zo/zf3/546GuzttTqM7DmxgVy26duql7qk3NJDqrVtHsLy+5Zsz56/9t3P5m74KCjw6DH/vtM8yoWWdKyFn86ZWv93gPaxCYnO86yGT3uGNgteO+vU14Z8flbE5ZstjT9z9j7bkm0VW1Uw7xh3tjRE0a/O3P2vpBewx9/tktEgOyZ88LTg6ZH3nF/k+gKfOdq7760alWjpFOE9z8AOC+a5r0cOHg4ISGWagAAUE6gITmd+cU3nE53fn5BTEzoOZcVFPRpxU5HBgB/lsNhysq695yzpaVlWiwmq9V8zjkr3tYB+IdlBYrb7XQVeFRNE5LBYDQHmAMKx1DQFFee3jComiSbLGaLVJDrVAzWQLtF5Oc4nQWa0WazGTzOPLdb0Wcx6A80eFx5bmFx2Ezu3BzFHGw3SUKoHrc+T4GiCdmgL8caYJSFlrlmwff7Ynp2rGLRhMHk+uqW299r8d6al2uf+RGT/nCXq0DfPu92GHxLsBQmz6orO6/AHOiwyJpScNbNCBCF01VvAGw0WqwW70M1JT8v31WgT5Vk7/yWALOsL9Cdm52rWIKCKnQ6snnz17RulSzLkqQvQya0BXBe7a/mu9I0vYHTL4uXbOjQvgllAQCgnEDjPM/G/t57V99zzzxNY6haABeWJEl6g0MdAPwlLYrBbLGbLWe9J8AWGFDiACn45FwWu+3kr6ZAhymweBazzVx4w2orHiJBNpptQad9dCSZMlaMuG9f6k8vPn1lwMFfJoxbHNvrpYSzpqX6wwPtZ/3kSQ5w2AOKtrSMzTht804+L4st8MwnbLY5zOwOAAAAgB87z9D2rrtqr1qV8c47G6kggAtq0KAGeoNDHQBcumwdBnz2/PvP3nvPK4fyHYnJN73x78HNTJfcs/B2Tpa0ypyNFgDO0pIAAIAKMp73I99+u41+PXbsJvrbArgQJEkaNKhBYVMDAJdwa2YOvfqhp6ff6/EOUmAwmAIsVsOl+lx80S0vKYDzaj941wgAQGUY/8yD3367TbNmkf/+97KUlDxKCeAvFBcX+MorLeljC+AfQTJYAhyWS3brS8W0mqaR2gKoLK34ujC6ZWhsAADOyfgnH3/XXbX1S79+sxcuTDt0KJeCAviTqlSxtW0bM2nSNZQCAPyB3W7Nzs4LCrL5uslJvkESAKASTp6FrLC3rZaVlas3LJQFAIDyGf+SpRTGK6++uu7HH/fk5hakpuZlZrpVlWN6AOcmy1JoqDk2NtBmM/XuXWPIkEbUBAD8R1xseErqEYcj0NczTlNV7wgJdJIDUEHFoyJoRYTepOgNC5UBAKB8Z4S2f+IQfMiQRqQtAP42JAgAcAFER4fl5Lq279gfFxvhcNgkSZzsckttAFRUYWfbrKy8lNQMq9WiNyzUBACA8pUKbb39JgrHKuMwHMAl9k7AO8giTRcA/OVkWa6ZGJeefmzvvrScHCfnEgJwfvT3mHa7NS42PDo6TG9YKAgAAOU7y/AIiqIajQZKA+ASojdcFAEALhBZlmNjI/QLpQAAAAAu0kF4yRuSTpbcbg91AXBp0RsuvfniWwIAAAAAAOAf4PTQVpakvDwXdQFwadEbLl9mS2gLAAAAAAAueaeFtt6vvxUUKHS2BXAJ0ZssveHSmy8yWwAAAAAA8A9wRk9bWTIY5OPHcygNgEuF3mTpDZfM8AgAAAAAAOAf4czQVjYYZEVRsrLzqA4A/6c3VnqT5QttZUJbAAAAAADwD3D2nrZGoyErKy83l8FtAfg1vZnSGyu9yaKnLQAAAAAA+McwlrwhSd7c1mCQVc1gUrXMzGyPogYHBVImAH7oRFZedlauyWQ0+EJbzkMGAAAAAAD+GYylb0qyt+utbDQIYfLezs7Ky8t1hYc7zGYTxQLgJ9zugqNHsxVFNZmM+sVYODiCLOmNGMUBAAAAAACXutN72mpa0SAJRqOs36v/7vEoaWmZRqMhKCgwIMBc2J2NwgG4yDRNUxTV5XJnZeXp7ZLeKJnNRv1ab6yKB0agcQKAC0FV1fT0YympR3NynHprTEEAnAf9aM1ut8bFhkdHh8myTEEAACif8cw/pUJoJ8/nIxUGuLJBVjxqZmaO6uU7VC+8on4ALvTxfYm2ydsc+ZgtJqNBNnjJxQMj8HkSAFwI+sHfrt0pTmd+fPVoh8NGQQCct+zsXO/HP7mumolx5LYAAJTPeOakwtxW/1kYhfhCW1U1eONab2JbRJDZArhYijLZohbJ90lS4YAIhX1sSWwB4MJJTz/mdObXqV2txHcaaHQBVFTJ3vkOhy3JYdu2fb/esMTGRlAcAADKYTzr1OKDcv0iywZZ9f4rjmtPRbbEtgAuNKmos21xOOuLbou+D3DyOwGUCQAulJTUo/HVo0t+Qnay2aXxBVCBQzmp6E2j/i5Sbz1UVYuLjdi3P43QFgCA8hnL/uNadCxeHN2W7GDLaGYALu7h/smfkjhbcAAAuFBycpyFoyIUfk4mnzq7AS0wgAodx/neP2q+XzS9AXE4AvWGhboAAFA+4zn+wJ5KSvQ/tMWH5pyCAsDFPdiXRInhbUu1TgCAC6rwsK+w0S3xLQcAqOTRnKSpalFjwvtJAADOyVjBP7CiKLctnkLpAFzsY30aHwD/OFrah08lDNx5/eefftMv/ORJedTtrz3Y5KeOaxf2q23wo0a49BjiJLcAzqMdIa4FAKCijJWam2/DAQAA/IVUjyLUzJ/+8+Gv3f59fVjRIZbiUTX9P3/aztIRLYktgPNuSSROjQIAQEXIlAAAAODCci9/IK59+IAl7rPdKVVNbmWe/dSIdTmVX7CqqBcx/JD40gOAP9uOlBjzCgAAlMNICQAAAC4QLfNIqjkszqR6VKF5FH1CbspRd2xEaInIQgps8MxLVR/919gxd3zwUjNz6QW4d3z3yZMjZ87fdtxjj27eq987b/Vq4pAK5r1V+5GCR244MOaNdcfMES3uefTj+11vPvDh5I3O0EadRk946g7vwApa5oop/35hyowVh47bqnW8q//rQ9vWtHiX+W2f7nfsumv18v7JBl4iAAAAwB8Znn9+KFUAcFnxeBRFUe12K6UAcIEpK4c/eEXfSb+uSdmzNSXDeWLdpE8e+vdspfsN18QVfdspe8X0sSsiHx5ze/KGb1780dT7ruQIWTuy8OcPtyU8+K9GoTu/veG6nwMefPJ/o/re1d62fNyHP5g739s6SNu16M2xv66JvOnjzwY+cMXhL4Z/9sYv+b1ffea1B+umf/PZuwcbDOpZRd499aZO49O63PP6yNvvudq2etzbr22re3ePKgGS8OQXhNRp1KFVnKMC3d327kurVjVKOoXBEQCcP03zXg4cPJyQEEs1AAAolJPjMhoNJlOpLhUMjwAAAHCBqOHteg68LurwnJWb81Tn1lW/p0R0u79769DThzSQLTH9RtzdctPnT36WVmooW2N8n+FPvPZYm5aNa7fq0fPmJlLawUyl8C5zoyde6925UULrft27xsoNBjwwqFvt+i063n99XM6B9BxNWffp93/U7/fBS107Nq/T+rqbxw5vm/31tN+9QzAYkvvcM/TBJjFErwAAAIC/YngEAACAC8SU0PmmUS0bRd7w+NDFeUIKaHjfoI8er2m3nHkAJgXUuX7047M6vPDf764f2vDkVENCi/49N8+c+PWkbYd2bNk0Z26Bo1ZR4CvZIuJjzUZZCIs1wCxXrVHF5r1hcgSaJVVowrNja0re4o+aRn1ctCxNcWv1Dx5ThUM2mM2MiwAAAAD4M0JbAACAC0U2qlvefXPUEumqF4deO/fNoaPeHNv13WHNzjprQONHHnzou6efeWHFpOpF03IWje/Y62epa9fe7Rre2v3alqan3y3xCOnkN6a8XWZlqcQN722zxRTaZ/CWd1sUjZKr6f8MgcF8ywoAAAC4FN5KUAIAAIALd6wVVLdB+34PfvBEx8ffe+iO9g3qlR2bGoIbPj3qWtOX40YucfkmFCz87Odd7R+cMv6Bp+/r3KtDfJCiVXi9hgaNEpzrdhywOUJC9Iu9YMH4WwbN3q/xigAAAACXwhsJSgAAAHDBmBJvfHDyBz3q2oyBdbp/8PVDvRNNZc4rGSK73DP8Rtf03/Z5fMdpYeFB7u0bl+7PzUrf++uY0SPnFeRmHMtRKnSMl9i3Z7ejP/zrkamz1x/cNOvrfw369UTtOvHeYRGULT9+OfqT9RkEuAAAAIC/IrQFAAC4kAdbJos90CT7fgu0W0zlHnxJpojeL/bvHl44k6HZE08Orb/tsTa31b9mzMT8a//7Shvjj6Nu/V/pk5WVwVC1y38n/avx5i9ubd3/6vtmyXf+Z+KTtX1DJSjrvxo/7N1VFVoKAAAAgL+D5HTmUwUAlxWn052fXxATE0opAPzt1HxnVr7sCLKcOjOYWpCT5SowWIIdZllTXHl6i6VqkmyymC1SQa5TMVgD7YaCEzlaYEiAr9eu4sxyqgE2m9k7nK3+gGyPKdhukrznHitw5rndiiokg/5wa4CxMAx252bnKpagoAqdjmze/DWtWyXLsiRJsu9aeP8DgMrQNN+Vpqmq97J4yYYO7ZtQFgAACqWlZVosJqvVXHIiJyIDAAD428gWa4jltEkme8jJIRQkQ4AtMKDEkVtw0cyW4JDiiQZrkP3UjYDA4nskgynQYQo8Y6Vmm8NM6QEAAAB/fqdACQAAAFC+wl5y1AHAn25JAABAhRDaAgAAoEIIXACcf/tBAwIAQGUwPAIAAADKVHoEW03TGNAWQGVpxdeF0S1DYwMAcE6EtgAAACiT3W7Nzs4LCrL5uslJkkRnOQCVc/IsZIW9bbWsrFy9YaEsAACUj9AWAAAAZYqLDU9JPeJwBPp6xmmqKvSfdJIDUEHFoyJoRYTepOgNC5UBAKB8hLYAAAAoU3R0WE6ua/uO/XGxEQ6HTZLEyS631AZARRV2ts3KyktJzbBaLXrDQk0AACgfoS0AAADKJMtyzcS49PRje/el5eQ4OZcQgPMjSZLdbo2LDY+ODtMbFgoCAED5CG0BAABQHlmWY2Mj9AulAAAAAC7SQTglAAAAAAAAAAD/QWgLAAAAAAAAAH6E0BYAAAAAAAAA/AihLQAAAAAAAAD4EUJbAAAAAAAAAPAjhLYAAAAAAAAA4EcIbQEAAAAAAADAjxgpAQAAAMqhqmp6+rGU1KM5OU5N0ygI/J8kSXa7NS42PDo6TJbppwIAAC49hLYAAAAok6qqu3anOJ358dWjHQ4bBcGlIjs71/tJQ66rZmIcuS0AALjkENoCAACgTOnpx5zO/Dq1q0mSJLwdGH1XEoWBPyrZEdzhsCU5bNu279f34djYCIoDAAAuLYS2AAAAKFNK6tH46tGSl5BKRbYEt/A7klSU2mqapu+oqqrFxUbs259GaAsAAC45hLYAAAAoU06Os3BUBF9WK8lycTdbQlv4Ie9u6Rt5Wf9F0/dVhyNQ34epCwAAuOQQ2gIAAKBMhWceKwxqCxPbtLRjF23tsbHhvASoPH1H1VS1aL/l7HkAAOBSxJD8AAAAF5x6eO3/Rnz98y5PyYla7o6vRk+ctN519kgpf9ek0T/MSVWFdnzhR59PXOU8YzZ172+TX5tyQBHq/hnfjv5+r3fpqpLvVtS//hlIJUdIuGgk4E+g5QEAAJcuQlsAAIALf8gVViUx3LVtY1pBiYnOXXv3isjE6pazZ0uax6OpBaoQkjmmXt06EYYzZ1M8muZR9DlsVWs2q+HQD+yU3UvGvr9i/1+d2v4F8Zdn5yvXPPDcYkV4tr7UduDLK5XTnsrylx7u+MpOD/sK/sqdltwWAABcqhgeAQAA4CIcc4U1qBOydO3efZ6qtYqOv9y7t6aLqk2Tgs+ZK1lrtGgcbzSVPYMUWie5nWb0hraKommSckGeg/TXRGByTK8hd0gJdB3ABSdJQv/fgToAAIBL8g0EJQAAALjwDFH1q0cu3bZpr1KrlsE7wZ2yda9WtX21YEnkp22f9fuGLQezncIcVjWxXY8WDcMNpx6qZS+bOGV3k1vubGaV1Jxt85Yt2JiWkWeMqtewXlHHVDVl3tSJWc2fTN7/9je7nar48pWjHe9rK6b8vLX+Df+6Ktibj6rH5n44bXej3gNaB27+9osfjjX6vwcaR/0tcZYc0uT6NuwQAAAAQDkIbQEAAC7KUVdUfN2oDSs3pxXUqmISwr133x4lsm2SXVIzFny3ZFd00x59I6ye7K1/LJ82M7Jmv5qBpx6qelTvWAlCKCnzZ327QrqiXZv24Wr6urXztzrl+t45FO8cqiHxyvt6Kp/MMfTo37xWsCUjwbFg6/4TbRqGSkI9vGfzsdDkxEBJSKE1610ZGxHwVyS2BWsndr4z5bGFz9ykr0OoW956+qa1182f0CF/5pfPjZm7ZE+eKaLq1XcPePXhBqHFj/FsH9HlHXXM2Beaqwdmfv3cmPkr0+T4Nh27mlVRhd0EAAAA8OKLaQAAABeFIaRunVDXjj37vd1jlf1bUwqqVPOOjaAZYho169ohqU58dHzNGk1qBqvZ2c6znpvMk7Zy9YmoFq2vaVa9Zs2EK7s2rW8vPYMpIMQqC8lgDQkMMBhikqoEp+/flqV5T4S2ed+JmOr1Iwz64V90cuP2LWIdf8VzMiW36RG98bcFud7t9eyb9tvRdre0jMhaMnzw0vBHX166bvysd1sd+2DCFzvPMsiue+03/QctC71/yKy5I168cu+X046o7CQAAACAD6EtAADAxWGIrFc9xnVg0z5FKIe37vJUqVM9RPKFuY3jTKm7lsxb/vMPs75dekQR4qyZrZZ97LDLVi0x3GY26CxBVRJiDOWszxRbrWbQ0a3bnZqauWlLbmxSjTDf7AazOcBi+GuGRjAmXN89fMlva7M04dmyePrxFn062eXAxi9MHTmiV7XwQJPF4XCYcjNPnPmElLVTF6Z3vO3lW2vHRUS1vPdf/9fUwC4CAAAAFB1oUwIAAICLwxCekBS7fvnmdJdp/05XRKskuySElntw+oT52wOrJ9eOrF4vrk6o54fdZS3AG33KxpNxq2Qwm8v9AN4UmZQYuGbrgeyq2VuzI5rWc1yAWNRQ9/o2cbctXZDdutovy13d7r/aJoTHtWPK5+9M3XXcZI+pHnRcETXO8kD1aHp2VI04W+GzkcOSajs4YxQAAABQiNAWAADgYjEE1UsKX7Bs13JDel5cPe/YCELk79q23l29150ta1kNBoN04tharYxHS/bgMEvegQO5WlVfvqlkHkrziJjyjvSqJsXZvt27aGVOdpV6dUMuSChqqN36+rhffp2zvspMcf1b9SxCO/Hbp4/+5Bj7zdhOkQbh2fpSp3Fne5wcGRN8eG9qnpYY5I2u81L1X0PYRQAAAADf4TIlAAAAuGiHXmF14+NcuxesyYtLqhbsOxAzWMzm/OOpRwtUxZWxbe0vK46p+c4cz9kebYprnGxPWzB/5obDhw+nr52+aF3W2Y7l3M7s3IICX/Rrrlo9MSB1+dq8qnWrhxTNq2ZsWb9wdXruX/WcDFV6XBe98K3x0wKvvinZ15fXoyiSyWKUVOeRJeN/nHYwP8955nC1hkY9r4qe8/WLP+w+fOL4+m8+eX+Jwv4BAAAAFL1zoAQAAAAX79grtHrdKpJHikiq4yg8DjPWuKJbU8v2n3565/0Z07ebruyWXMW1/euf9uSf5dGm+LZX92ho3jvn948+nrM0v2aXFqGnjXggR8YmWFN/Hjd92VFfamuJSqoRIJli6iXZTvaz1dLWr5m7/FCO9pc9pxo92tQ4cDjuxna1vVsjBffoN/SKrYOuvqtp19e/Ftc8eZPp+0fG/pJzxpNpfOv/XmmU+t+RbZs/OnBG9UH3JfIVMAAAAKCQ5HTmUwUAlxWn052fXxATE0opAPwdtPyc3DyPITDIain69FwrcLqc+YoqJIPJZLUIZ06+YrIGB2q5J9wGh81qUF3ZeR6zzW6RhFALnPkut6JoQjZbrHJBnmIOthk9ztwc1RJiMwrVk5vjcquy1REY4I1QPdt+/Pan/GYP961TPGSsOzc7V7EEBZkrMsTtvPlrWrdKlmVJkmTftUhNPXrRihUXF8Eeg0r/P6b5rjRNVb2XxUs2dGjfhLIAAAC/lZaWabGYrFZzyYl0aAAAALiYJIvdbik9RT9AM1lP3XaEFB2u2UNMvp9ygMN+8k659Mym4MJDOqutaDxY2WgLstt8v2qq4j62ffkOrca11ewlxrM12xxmXgcAAADAjxHaAgAA/CNpRxb98sHcYwHxTW5LCviT5yDTNCFJmhASZcUl8z+ARg0AAMAljNAWAADgH0kKa9r2nuoeW3hIiOWvCVt90S2Fhf/TSGwBAMCljtAWAADgn8lgC6lqFZL8p4JWqdSjNU27qKkt0RvOY68pvi7cfyQ+agAAAJcgQlsAAIB/KkmW/+wi7HZrdnZeUJDN13dR8g2ScDGR2qKSe0zRWcgKe9tqWVm5+j5MWQAAwCWH0BYAAABliosNT0k94nAE+roraqoqoqPDLlrPRb7ljkruMKf2HB+h7736PkxlAADAJYfQFgAAAGWKjg7LyXVt37E/LjbC4bBJkjjZ5ZbawE8VdrbNyspLSc2wWi36PkxNAADAJYfQFgAAAGWSZblmYlx6+rG9+9Jycpx0fcUlQZIku90aFxseHR0m//lRQgAAAC46QlsAAACUR5bl2NgI/UIpAAAAgIt0EE4JAAAAAAAAAMB/ENoCAAAAAAAAgB8htAUAAAAAAAAAP0JoCwAAAAAAAAB+hNAWAAAAAAAAAPwIoS0AAAAAAAAA+BFCWwAAAAAAAADwI4S2AAAAAAAAAOBHjJQAAAAA5VBVNT39WErq0Zwcp6ZpFATAeZAkyW63xsWGR0eHyTKdhwAAOAdCWwAAAJRJVdVdu1Oczvz46tEOh42CADhv2dm53o9/cl01E+PIbQEAKB+hLQAAAMqUnn7M6cyvU7uaJEnC21fOdyVRGAAVUrJ3vsNhS3LYtm3frzcssbERFAcAgHIQ2gIAAKBMKalH46tHS15CKhXZEtwCODdJKkptNU3TWw9V1eJiI/btTyO0BQCgfIS2AAAAKFNOjrNwVARfVivJcnE3W0JbABXhbSt8w2Hrv2h6A+JwBOoNC3UBAKB8hLYAAAAoU+GZxwqD2sLElsERAFSe3nJoqlrUmHBKQwAAzonQFgAA4LwoOTuXrP5j3aHU4/mqKTAqoeZV1zSqH+6fB1dqQb4imU3G849bpZIjJDCsLYDzakeIawEAqChO2QkAAFB5Wvba76Z9vSInPLlRjxvbX9+xTnT29u8/W7gx2y/ziPw937356+Ij579tpSNaElsA592S0HwAAFAh9LQFAACotJwNy2bsdbS9rX2LGLPJIAtVqV3D7p74x/wVx+p3Cj/np+LevmbnSj4rMk95jy4ZtGoej6Z6lD/5pKXCtIXEFsD5tyPezrY0IgAAnBuhLQAAQCVpOZtWHTImtW9ezRZYFNAaTOHxrTvl7JKE4v0qk5azd8OMWVt3pDuFLbRms+bXXh3n0O/au2TcL+qVdU8sWpLmNNiqNLqyVzPPkqmrNmYUWKNrXNO7zRVhckXm0dfnTNk6a87WXYeyXeaghEaNu7aPDzP4lv+roVPLvPkz92Rq5tBqtbv0apFk2vHV24t3F2i7P5qYct2tdzQ1b/72ix+ONfq/BxpHkZwAAAAAfonhEQAAACpJPXogXYquFhNY8khKMsXWb9CyXqjRe//mb79efzQm+YbbrrmhdcTxJbMmL85U9XkUxXN0x/IjVa6787p+nSKzV83/36TdQW063NW3Rbxz14xFqZ6KzaNlbv3ui9UZ4UnX3tr55msSpM3zJ04/5Cp8bObWmessbW7p3r9P06pZW6bOOVBgrXHDfS1qmEJa9et9Y4MASUihNetd2SAigMQWAAAA8Ff0tAUAAKgcrcCVpxhsNtNpsadsMlm8P9WU1VsPhSTd2al2VYtBVIsIzM6YuHL7odYt4/Q7DVEtOtWvE26QYmrVWHQgtWGTlkkRFincU2vTloxstxCWc8+jnlizeX94/Xvb146yyJIaEakd/fC3bbu6VKnr3Th7cocmDePNRhEu1922eX+2S6oeFKRvqmSy2+0W7xAH0cmNwzSDhRcSAAAA8FeEtgAAAJUjGYxmWcnPV4UwlJyu5udm5kqOMOPhwznW2JgqgSbvkZYhIC4+PHBZZrpLxHn74waGhpiMshBmi8mgzxxi9d6QrGZZnDxP2Lnm0Y5mZBccWjv+rXVFD9BURUQez/M93hgcVyXA7N0uKdDi/XHm2ccMZrOBVxEAAADwY4S2AAAAlWQIiwnXVu/PKGgUZzo1VU1dOH38lmr9BzbSNCFkQ/HYCbI3ctVU9eTNk3d4e73KJ3vrlj69V/nzyAZDQN0r7+8aW5S9avo/Q2CQJI7qMxuKE1nOGAYAAABcohjTFgAAoLIHUEH1G0S4Nq1beUQ5NdGdvnZzdmDV6EjZGBYe6EzNyCzq46odP3QkLzAo3PqXrT4yKtiTcSI/yBES4r2Y0jdNnXsgpziiJasFAAAALvX3HJQAAACgkgwRTZpfFX1s1uczf1u6e+fBIwd2bP3tq3mr8mNat6piEYYqDWtGHd04ZdaeQ0dPHNq8asri4xENa1X7y4YkkMKTa9dwbp3yy7bd6VmHd2+Y8tsOZ0hocHlZrSRp7uysfLdHE0LN2LJ+4er0XF5GAAAAwF8xPAIAAEClyYGRrW7saF26ae2yJatnFWjmwMhqCdfemtw42igJYYpt0Ot6Ze7iZZ8tc4nAkITGV3W/KtIshPJXrT2kVo8b8ucsWPfNx0tFYHD1+q16toowlrN8c3iN6tq8yd/mXn9rvyamtPVr5mY2rNMk2kafXAAAAMAvSU5nPlUAcFlxOt35+QUxMaGUAsCfoqluV36+W1FUzTuUrMloCTCbDUU5qOpxO/PcBYom9HssZmuAd1xb4ck/kaMFhgT4RsJVnFlONcBmM3sforjysj2mYLtJqsg8+sqVAn35bkUVUlnLF2p+XpbbFOQwyfqvOU5ngWa02exmyZ2bnatYgoIqdDqyefPXtG6VLMuSJMm+ayExVi6AyraXvpMo6lTVe1m8ZEOH9k0oCwAAhdLSMi0Wk9VqLjmRnrYAAADnRZLN+oFVGSPVykazLch8+lSjJTik+IbBGmQ/dSMgMKTi8whvVBvoMAWWt3whWwJDLCd/tdssJ6ebbQ4zLx8AAADgxxjTFgAAAOdQ2EuOOgD40y0JAACoEEJbAAAAVAiBC4Dzbz9oQAAAqAyGRwAAAECZSo9gq2kaA9oCqCyt+LowumVobAAAzonQFgAAAGWy263Z2XlBQTZfNzlJkugsB6ByTp6FrLC3rZaVlas3LJQFAIDyEdoCAACgTHGx4SmpRxyOQF/POE1Vhf6TTnIAKqh4VAStiNCbFL1hoTIAAJSP0BYAAABlio4Oy8l1bd+xPy42wuGwSZI42eWW2gCoqMLOtllZeSmpGVarRW9YqAkAAOUjtAUAAECZZFmumRiXnn5s7760nBwn5xICcH4kSbLbrXGx4dHRYXrDQkEAACgfoS0AAADKI8tybGyEfqEUAAAAwEU6CKcEAAAAAAAAAOA/CG0BAAAAAAAAwI8Q2gIAAAAAAACAHyG0BQAAAAAAAAA/QmgLAAAAAAAAAH6E0BYAAAAAAAAA/AihLQAAAAAAAAD4EUJbAAAAAAAAAPAjhLYAAAAAAAAA4EcIbQEAAAAAAADAjxDaAgAAAAAAAIAfIbQFAAAAAAAAAD9CaAsAAAAAAAAAfoTQFgAAAAAAAAD8CKEtAAAAAAAAAPgRQlsAAAAAAAAA8COEtgAAAAAAAADgRwhtAQAAAAAAAMCPENoCAAAAAAAAgB8htAUAAAAAAAAAP0JoCwAAAAAAAAB+hNAWAAAAAAAAAPyIkRIAAADg/MyceXD8+G1LlqSnpzvdbkXTznM5kiTMZkN0tLV16+gBA5K6dq1KbQEAAHA5I7QFAABApb300qr33tuUkeH6S5amaSI/X9m/P0e/TJ68KzIyYODABsOGNaPOAAAAuDwR2gIAAKASZs061L//vEOHci/cKjIyXC++uOqjj7ZOmNChc+cq1BwAAACXG8Pzzw+lCgAuKx6Poiiq3W6lFABQWc88s+zBBxdmZxdchHXpa5k4cUdenqdLF0ZLAAAAwD9WTo7LaDSYTIaSEzkRGQAAACpkwIAFY8asu8gr1deor5fiAwAA4LJCaAsAAIBze+aZZZ9+uvVvWbW+Xn3tvAQAAAC4fBDaAgAA4BxmzTp08fvYlqSvXd8GXggAAABcJghtAQAAcA79+89jGwAAAICLxkgJAAAAUI6XXlp16FDuWe8KbpL00ojkm9qExASqmfuOzvly3XOv7Nudf0E2Q98GfUuGDWv2lywtc70Y8Y74YZlIyRPhCeL6O8WIe0SU4QKXMlvc0Ew0/F6MaMhuBQAAgPLQ0xYAAADlee+9TWc/joytPX5Gu0FdbEcX7f7y25T9tsi+w7pMfzXOftG3pLKylonOfcQcm3j+dTHnCzGql/jjVdHjbeHkxQYAAIB/oKctAAAAyjRz5sGMDNdZ77J3rHFthNgz7vfWj6Xqc8hVkqZuat+9T2KrZ1JmuU1NHrxq3OD4ZtVMBUeP//HFqkeeO9Tii9sn3VzwQdevH56tiOCa3x245sZjG6+ps3hp9Rovv9H4lqtCwl1Z8z9f9eSLe3e5z74x+pbo29O1a9XKPAPN5fQEWE2nJrjF6P+I3FvEkuEiVPJOuKqNaOsQjd4QPw0Q/ULPuTyh6k9WYtcAAADABURoCwAAgDKNH7+trLs8Lo9HSJGtavRqemLa2ry8Q9v7JOy1ymq2WxhbNPlybJ34Pfs/fvN4eJekvk+1H7N60v9NTcm5pXr7jqHG2Ufk5rGtbFr6pP3LDDEjpl7zZFzmpLFr9tWp9eiQzr8G/trs8ZScsrfntNC2YO+iF5/4eMKcfZnmyKY9+7z++k2twiSRO/vmqlPa/XLT3uf/O7XOU1s+uNJ8cv785WLiAfHsw0WJbaHEm8SHsqjiC4uzN4khI8QPq8QxIWo1E0NHin6J3qi3TyPRcIxY8qKYfkRE1RQDXxbPXyX0ZeTvEy8OF98tF+km0bmfePtxUV0/xC4QU98Wr04TG9JFbLIY9Kx4uKkg6QUAAEAFEdoCAACgTEuWpJd1l3P2lvdWVR9yZfLkVcme7Nzt648um793/Hvb/xAiJCBvxgcbtkxc8eEKNTE96uamUfE1rMc/3rcgL6FLx7jq8jF725ho4fry5zSp09X9k8T2MQvvfeFwgTnF1KTX0/3rXTs05bvsim2Pa/OLNw77NOb2d39/oWbexnefePf6ewJWT7muun6XcuC/Q2b0fWzotLa1zSUesXedOFZdtIoqtRgpVNx+r+83jxj5sJjdWHz7i4hxic9fFg+OFF0/FuHCm8O+Nlo8O0Z8UEvMeEU88oy4Zr5o4xbP3iOm1BXvTxJRaWLw0+KOYDHvfrFwhLhzgRj1shgfK9b9IAbdKZRpYlAkOxQAAAAqhNAWAAAAZUpPL3OgV+1E6rNtJn/TLb5b26gWzaNat6zW/6rqd94W2bPZwhkLt4wLrDfw8a7LWkRcUSvALFQhSVrGgamLPD2ujmsXuct6dbB8fM/PC5SYAUFBshwx5Eb3kJPLLQiqFSeJbVpFtsc17+dP9jUZ8Uv/m6rIQtR49739C7pMmbSj+5CqQignYvo+NuyWmNPO4ZB5XIggEVLWmR1U0WaA6NlDXOULWP91rXjrJ3FM9YW2QrS4Xwzp6D0pRP97xau3ixRVnJgjPj0hPnlNdA0SooEYO1g8c1DkZYl3vxV3fSQeucr7qKTBYv9i8ekUMfA+digAAABUCKEtAAAAyuR2K2XdZY0KqhYqHZ6/7dVpW/WbckjUC79e/0LLGre2WrTC3HbBD3Wij2fOnb7zjWUxg+8I8z5Ac07/+XB+5+jOXasYm8k5c/bPyRZ2RRNCXTHm9yen5BfFtFrB/gNaxbZHPbRlb3Ziy1Yng1lLk4bNzNM2bldEVX2DQhs2jDgzmw1yCC1LnFBPPyPv4f3CGSTiQ0TPW8T838WorWLXHvHHQuGueXIOWTSqX/QgySIsvsEOdm0W+XXElSdPvlbvdvGzEMoWsdMppt4lxp8cEEH1iLB6QmF/AgAAQMUQ2gIAAKBMWpnxqVStf6eNr0bue/eXpo+mZAuhnsjaekjRhKoocpPuVWOlvE9u/+GBmWqtp3sNvrNoYQd/3bfyjdhOTzYUDmXBzwePa1re1uNH1ZhQY/6KRWn5sq3rY/U7OI59ufJoRbdHv1lypFhJkiWtaB4pwGY9yyiyNRqKoLFicbpoUqXEYo6L+zsLZYSY2kk82Fv8GiHu7i6ubSXuvUJcO7144cJiPn1pikcIgzCcth6LCDCK0bPEU/Glp2ezQwEAAKBCCG0BAABQJkkqK7fVdn6zdeYzkT0e7ram4YH52wscSXE92loKtqz/YrGadbVLlUKv+0+bV7pZut0bZRaa0ejNNdV9+39e0/LVluGa8+DPM136gvMXbp+4LWnwQ+0nu3dsrpbwf7eFZX0847WC8ranBDmuXrx99+bl6VpynPeO/HUbV+VXvau2oZxnZG0lbosWb48Tt40W4SeXtneKmKuJUW1E9gLxlUv8NEl0DvBO37lVaOXWJzFJGL8Xq3LFdb7Otjs/FT0Wid/HiSscYtFq8WS8L1L2iLcfEhl3i5GN2aEAAABQITIlAAAAQFnM5jIDUHXv1ts7zXtj6nFDw+p33VurWy3P0k+XXtd1+cJcdf27i0fNzApoVuPmpq73X9yZosp1e8bX05ekZE37+ViBEO7l+2ek+ZbiSh/We97YuZ7GDzR+uL206PU51z524LhW0e2xdux5b9XVQ++f+POaA1sW/fb4w1MyOt14R1K5h7hWMXSkMH4nOjwiPpkulq8Vk8eJHiNFwr3inqrCHC6Cs8TsZSLjiFj+k3jgQ+HOFun5ZS4srIvoaxZP/kfM3S42LxSPvyfiWouqVvF/d4iZI8XwX8XW3eKrF8WwtaJ5ffYmAAAAVBQ9bQEAAFCm6Gjr/v05Zd2btX7H4N47Bp8xXctIGXbt5GEnb340dm7xPZtH/mAeWWpm17adj/fY+XiFt6fU7YAGL/80THr84wfaTzhuimja675pb1wXf65uCREdxLyvxLC3xQtPiIx8EVFD9PyPGH63cOj3tRUTHhBPPCbe1UTjjuLlcWLEQNHzKbHvnbMvSgoSb38mnh0h7u0tsuyi0x3ig3uEQYhmj4nJqnj2eTE6V8Q3Fm9+Km4MZ3gEAAAAVJTkdOZTBQCXFafTnZ9fEBMTSikA4Jxuu2325Mm7/Gd7+vat+fXX1/C6AAAA4B8jLS3TYjFZraXOn8DwCAAAACjTgAFJbA8AAABwkRHaAgAAoExdu1aNjAzwk43Rt0TfHl4UAAAA/OMR2gIAAKA8Awc2EELygw2RfFsCAAAA/PMR2gIAAKA8w4Y1q1Il8G/fDH0b9C3h5QAAAMDlgNAWAAAA5zBhQge2AQAAALhoCG0BAABwDp07Vxk8uNHfuAH62vVt4IUAAADAZYLQFgAAAOf22mst77237t+yan29+tp5CQAAAHD5ILQFAABAhYwf3+7i97fV16ivl+IDAADgsmKkBAAAAKig115r2bVr1f795x06lHuh11Wlim3ChA6MigAAAIDLkOH554dSBQCXFY9HURTVbrdSCgA4D4mJQU8+eYUkic2bM3NzPRdiFVFRAYMHN5o6tZu+LgoOAACAf7acHJfRaDCZDCUn0tMWAAAAlTZsWDP9MnPmwfHjt61de/ToUdeJEwUFBcr5LU0/Qg0ONoWHBzRuHD5gQFLXrlWpMAAAAC5nhLYAAAA4T127ViVgBQAAAP5ynIgMAAAAAAAAAPwIoS0AAAAAAAAA+BFCWwCXJYkSAAAAAAAAP3C2jILQFsDl1xhK3vZQ0zRKAQAAAAAA/kaapkm+pOI0hLYALlOKolIEAAAAAADwNyornSC0BXDZkXSy5HZ7KAUAAAAAAPgbud0eSfYGFadNJ7QFcNnxZbZSXp6LUgAAAAAAgL9RXp7Ll9kS2gK47OktoSzLBQUKnW0BAAAAAMDfxe32FBQosiwzpi0A+HraypLBIB8/nkM1AAAAAADA3+L48RyDwZfZ0tMWAHyhraw3i4qiZGXnURAAAAAAAHCRZWXnKYriC21lQlsAONXT1mg0ZGXl5eYyuC0AAAAAALh4cnNdWVl5RqOhrJ62RmoE4HKjt4R6a6g3i6pmMKlaZma2R1GDgwKpDAAAAAAAuNBOZOVlZ+WaTEaDL7Q923nICG0BXI4k2fs1A9loEMLkvZ2dlZeX6woPd5jNJqoDAAAAAAAuBLe74OjRbEVRTSajfjEWDo4gS0LQ0xbAZU+ShKYVDZJgNMp6S6j/7vEoaWmZensZFBQYEGAu/KSLWgEAAAAAgD9D0zRFUV0ud1ZWnsejGI0Gs9moXxuNpwZGoKctAAhfa6g3h9rJob6lwgBXNsiKR83MzFG9NM3XsnqvqBcAAAAAAKiMohjWlzt4Mwcfs8VkNMgGL7l4YISzdhojtAVwubaevtxW/1nYSvpCW1U1eONab2JbRJDZAgAAAACA81KUyRbFDr7uYoUDIhT2sS0rsRWEtgAu97az6LxkQtabTdX7rziuPRXZEtsCAAAAAIBKkYo62xaHs77otuhLvye/+FvmowltAVzeTagvthUlotuSHWw14loAAAAAAHC+pBKjJJTsWnvO8+gQ2gLAqbbSd46y4nZTI7QFAAAAAADnrbiv2MnfRQVPe05oCwDFLWlRl9virLZiDSkAAAAAAEBZitKGSiG0BYAzWlPpVKsKAAAAAABwkcmUAAAAAAAAAAD8B6EtAAAAAAAAAPgRQlsAAAAAAAAA8COEtgAAAAAAAADgRwhtAQAAAAAAAMCPENoCAAAAAAAAgB8htAUAAAAAAAAAP0JoCwAAAAAAAAB+hNAWAAAAAAAAAPwIoS0AAAAAAAAA+BFCWwAAAAAAAADwI4S2AAAAAAAAAOBHCG0BAAAAAAAAwI8Q2gIAAAAAAACAHyG0BQAAAAAAAAA/QmgLAAAAAAAAAH6E0BYAAAAAAAAA/AihLQAAAAAAAAD4EUJbAAAAAAAAAPAjhLYAAAAAAAAA4EcIbQEAAAAAAADAjxDaAgAAAAAAAIAfIbQFAAAAAAAAAD9CaAsAAAAAAAAAfoTQFgAAAAAAAAD8CKEtAAAAAAAAAPgRQlsAAAAAAAAA8COEtgAAAAAAAADgRwhtAQAAAAAAAMCPENoCAAAAAAAAgB8htAUAAAAAAAAAP0JoCwAAAAAAAAB+hNAWAAAAAAAAAPwIoS0AAAAAAPj/9u78uY0yz+N4tyTrtCRblg/5lOXER+TEOMY5nYQ4CTAJEGCBYnZgd9gBZvhlpvZf2WOWnWJqa4sZGBhgiUkGQkjiJCR2DjtxfMT3fcuyLNu6bKt75Tgk4DiQ3Z1a2qr3q1SddvfT6n6e0g9PfeqbpwEACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKomEIAAAAEJfm5oKTkz6fby4QCIXCC7Ejep3WaNSlpiZnZNgMBh1DBAAAAGUitAUAAEC8WVqKdnQM9g+MrzoeCIZjH8+Uv+1W/9byjQ6HnbECAACAAhHaAgAAIK5MT8/duNF5t7TWbrdaLCajUSfLQigUmZ0NeL3+2FlJWn3h9Vax3C0zgAAAAPjREdoCAAAgfoyMeJqaumVBMOi1JSVOhyNlzWaBQMhkMnz7SEuHODpBaAsAAABFILQFAABAnPD7Azebe2RBSLImbt++SaNRP6jlqsS2rUscGBEZQAAAACiEiiEAAABAHJAkqbGxQ5Jkq8X0/YntKm1dYt/QcmJrSaTMFgAAAIpAaAsAAIB40NMzGgxFNBp1RUXRwye2HT33EtudWwltAQAAoAiEtgAAAFj3olGpp3cktlO4Mdtg0D3kVV19YvfAvcRWw8phAAAAUAZCWwAAAKx7Hs9MNCppEzROp+MhL+kbEjv7SGwBAACgRIS2AAAAWPcmJ32xbWpakijeeZ/Y8Lh44oyqu3/t14v1DYltXSS2AAAAUChCWwAAAKx74XAktk1OMt89Egoubzt6xbbO1bntwAiJLQAAABSN0BYAAADrXiSyGNtqtQl3jxQ4ZZt1+cVifcPi1PS93HZoVGzpILEFAACAohHaAgAAYN1bWRVBkqR701yVUFkmWxNllSjodPLKwZFxsbl9jcTW6/X/5S91g4MTjCQAAACUgNICAAAArHta3XKNbSgU+c5MVyNUbZMF4V5i29QmymvV2Hq9/tjxqamZ3Nx0BhMAAAA/OiptAQAAsO6ZTPrYdn4+9KAGE547iW2SeY1VEWZmArGt2WxiJAEAAKAEhLYAAABY91LtSbHtxIQvGo2u2WDSu1xwa02Ut5evTmwXF5e8Xn9sJykpkZEEAACAErA8AgAAANa9lBSrWqVaikbHxrzZ2Wn3N3AXyrYkwZEmq+4rWujrH5NkWa/T2u1WRhIAAABKQKUtAAAA1j21WrWyHG1n59Di4tIas16VkJWxRmIbCIR6e0ZjO3l5GStvMwMAAAB+dIS2AAAAiAcuV2ZCgiYUXmho6JBl+WEuiUajjY2dUUnS67T5+Q7GEAAAAApBaAsAAIB4oNdrH60oEgXBOz179eqthYXF728vSVJjY+fsXDC273bnq9VMjAEAAKAUzE0BAAAQJ2w2y6ZNztiOZ8p//nzTyIjnQSW3o6NTtbXXJz0zsf3Npa6MDBujBwAAAOXgRWQAAACIH06nQ6VStbb1RRYWbzR1t3cMZmenGvQ6vV6rVqtDofDMzLzPN7dSYJugUZeVbUhPJ7EFAACAshDaAgAAIK7k5qanpSV3dw8PDU2Gwwvd3SP3txEFITPLXlyUp9drGTEAAAAoDaEtAAAA4o1ery0tdW3cmD0wMDExMb1SV3vnlE6blWXPyUk3mfQMFAAAAJSJ0BYAAADxSafTFhbmxD4MBQAAANYXXkQGAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACkJoCwAAAAAAAAAKQmgLAAAAAAAAAApCaAsAAAAAAAAACqJhCAAAALCKHOz+8Lf1fdHbf4gqrTEx3VV84EBhhu7HeiB/3btfzVQ99xPX3ZoDafTs8ePCrtf32/8nZQjy2Lnj79b7pZW/RFGtNaQVlBw8VJKl/8FrpcFTNaf0e1/bY/s/Fj5Ic+MNl1pv9kz5QrLWkuwsKdm9LTdFu3Iu2He58WLr5JQ/IhgsmRuL9u7dsDLscsjTUNvU1O+bCUpaq62grOyxR9OMIr9WAACAOERoCwAAgLWorNtePLjdLgpyNOjpr/382qcXrK8fTI+D6aM6v/L1I3m3g1Ap4h04e/x6zde2Nw+mq9dqLM90fPxpoPLVrXnqv87dZX9vzXtXJx2bdh9+JMOiCnjGW+vr3x2Yffml0owE2XP53KfNiXufPFSSpl2a9TSdufzhcfHnzxdYhEDTZ2frxU2HX9ydmSjMj/WfP1n7sfTEz7Zb+a9zAAAAcTgZZwgAAACw5kRRa9CbTHpToik1f1N1edL84Pi09Fe/ixyNyv/fPVMnGE23u2Yy2nKLd7kTA6NT/gc9RXQpMB+J/u9vFo1+5+Jw25mGYce2nx7d7HampNiSc4tKnnx5X2mo5WSDX5bne3v8qeXlW3PNRr3OkpZddag4eWSwPyTIkYnuYUNpldtlN+j1Bnt+yRO7Uqe7hn0yP1QAAIA4RKUtAAAAHoIoCrIsCYLkH75w+uatodmA2pRTWnZoT655oP7tk+pn3qzMVUf7vvj0w470596qKtQuL0TwJ6/7V8/nhTubTl8aHPYt6OyZFfsrK7N1ouS78J910u7iUH2TZ2P1Kzu0/XXXLrSMTwVVybkb9x3a7DLHbhcaqL929sbYjGzKKs4zr5mbLnivflpX3xtUJ6W6q7btLTQMn6o5Ie9483FHbJorz3d/+Pue/L9/fFuS+L09E0VtgjbWZMnfWttwuWvKF9bYnBsfO1TqFPuO/allIijV/G6x+tXdSbHWkemGY5fqeualxNTyQ7v35utFIeq7r4PCbMef3pspO6BtOjOSduTwgew7pRJycKS1X+d+Oc/8rScSdWmV5SlNzYNT2wtNRnGqq6e/0O20amJNxBT3q792Lzda0pu0gb6Woc22nBTd8sWmLft/s4XfJQAAQHyi0hYAAABrkhYjkVAoEgoGvQPttdd9huy0FMF/peZih7bo6GvPvvmCO7G77thlnyorM2dxctArLwe6o1GdMDU4KQny/NBQMNPlSBht/uSLyZTd+9/45ZGn3VLDJ5duzq5Uh863XPM6Dx/5250W37ULNe0JFUeP/OoX+7cZBms+bZuS5OmGC5/ckNxPHX7j1Z3Fod5mz/01pfJMc/u4c+drv3zq+Qpt5/Hai2NiVmGW2DM8spzwyvNdA2NpziLrfYltdCkcutO16aHOurbFgi3ZJiE6fP7cqWHzrheefusXVVuE7mMnuvxG19GXS9ONzmfe3LslMfY90nRLT2DL/rd+89wLJYuNtV1TshB9UAfDw1e6zftf+Ul1tupbT+z3CUmO1cvwiub0ZGPsVFRXvO/RwoWuj/79o3/9j9PHz7a1Ds4vrDTROHY9viGh8+I7//LxO+9f+Kqup8+7QJUtAABAvKLSFgAAAGuR/Jff++hybEcUVFpjesHW5/Zlqr0326bTd71Q4DAIgsVVvWv47bqByR3FrqxA81BQMnhGFnPLC8f6h+akFO+gN9nl1A5f6V1yV+3daFULgqm8ovLW8fbe8JYtgiBLdvfmIrtWlHytLbOuPdXu5fVyje7q0o632zq92WLrdMb2Zx7NWX7VVmn15q7uhjXmsnnug4/YTbFnKaus6jl2scNXVZXrEuq7RivyskNd7V5HyS7L/Zlt35W3/+nKN3+JpoJtPysyitHxto7FoifKi1Njj2HYeqCk/ff93XMbK75zqajb4N6db0oQhMwN6ebWcEiWhlrW6OBmV6x/xqJtBRmmh3xTmBhrJ8d6lFJw+Of51dNTAwPj/X0DtX++cTZ360vPF6epRWvho69sKPNPTPTHTvU0/9fXDak7H3upKk3HbxUAACDuENoCAABgLarkqr87XJX2ncwxOh4K6c1J38SE2iSzMRQKyrq8fNvp/sm5RM90Rs5h50JTs2c2zTOelPmYdWl0NjI7fP63t+5+T0Lq4uLyv2KCxbK8JoEgB/2zC12fH/vnk3enqIaUcGgxlJBs069cJuqsdrMYWP2IoiHJbPjmWWw2fTgYljUZhS75yy7vYxZvuyd181HD/aGpesOuX/+NS7+8Ky/4hk5/VPfFDcdPt4QDYWOG9c7rxkSTOVkTmY/dUvudO5osxjstVOJyzioszj6ogyqj1bz65qLVkiyMjE9JxY5vF9vKAY8vaE23SXODXWGrK9VqSyuKfcq3HJju+OQPTXXdG552zPTMaPNyLVZHdlnss2Pr7K1Lf/j8ZlvZgXKzyK8VAAAgzhDaAgAA4GGJRoMh7PNHhOzbWenC7HxIbzaKotnpsNWNXjd6bTlbE7PDqafHbvTM6J2FNlEzo0+wVVS/tsd2O6SMzk/5FxMtouC7vZbsypdqjQb9psePPum8HYfKkemJiD5VuGlc7POFZedypa2wFJwLyvct7CWHZubDQrpxeX/R5wub7LHG6pzCzOhXgx1G71Ru4QbjD3RIm5ztdmprpuYkld6kD834o0LK8gxZDs7PLOlSY5cvrbpi9XTauGYHF8budfDbV5uySnIbz10ZfPQZZ+I3Z+WI50qj1+6utAvTx040WV48Up11JxnWJKVmmOTJxajk6/3y+NLjr+/aeCcxV5mz7Fahf2GJXyUAAEAcYk1bAAAAPPTc0Z5bkjx+6WzvRGAhMNl/9uKopSQ3TSWISQ6nYeR6hzory6AypeWYxq63RZ2uZJWgztmUvdDUeKl3NhSJTLU3fPD+jYFVa7GqbMVF2o7z19s94Uhkrvd87R9PDsyL5sIS23j91caRYDjobz/X3Ble43mW+ltON08HwqHx5qtfD1jcJUmx2a0mJ9e12Hfm6qyzJMvwEJ1Sa1QL4QVJnVpSpOm4cKPTGwnPT904fWvSkbdxZW2F6NJC9IFX/3AHv8Pgrq7IHLn8/met7YM+n98/3NVx8oNzzXr3oQqrqM3cUiI1fXG5oc/nnw/NTntunbt6PZzpztdpsgo2G4dOn2jtGp+fDwR948OXTrZ6MvMLkyizBQAAiENU2gIAAOChqZK2H90V+ar5k3euRLSWrOKdz+64XWGqSsrP09a3p2bbRUFlzc3WXApkuG6vAKBzVTy/p/HM2VNX/VFdiqP8mZ1lFlGQvv2l6szde5+INtR9VHMiok7OKXjyWXeaShQqdj8dvHqh5vjZiDar/JGdzkbffU+TttmpbT7/u1MRXXLGlqP7ttlvJ5iatCKXeLPbsSk/4SG6JFqsJunWUE8gr3jPvoO11y58cMy/pEvJLTj61O1E1JySa2k98W9nw/+w17bW9Wt3cPbBQ5hccPQV47WLrV9/1jITFo3JSZkbtr2yI8++/LAJroMHn66/UfflV7Wzi5JWb8/KrX6xrNgUO5Wy58XH9Beaaz9qnglJGqPFsaH0xb2FyWS2AAAA8UgMhSKMAgAAAOKINHzms5qFyjeezExgMAAAALAOsTwCAAAA4sjSwuxkz5VbQqE7ncQWAAAA6xTLIwAAACB+REea/vjJgLF0x6FsNaMBAACAdYrQFgAAAPFDnVf51j9WMg4AAABY11geAQAAAAAAAAAUhNAWAAAAAAAAABSE0BYAAAAAAAAAFITQFgAAAAAAAAAUhNAWAAAAAAAAABSE0BYAAAAAAAAAFITQFgAAAAAAAAAUhNAWAAAAAAAAABSE0BYAAAAAAAAAFITQFgAAAAAAAAAU5L8BrDyZEwplbmRzdHJlYW0KZW5kb2JqCjE4MCAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAxODUyL0hlaWdodCA3ODEvQ29sb3JTcGFjZS9EZXZpY2VHcmF5L0JpdHNQZXJDb21wb25lbnQKOC9EZWNvZGVQYXJtczw8L0JpdHNQZXJDb21wb25lbnQgOC9Db2xvcnMgMS9Db2x1bW5zIDE4NTIvUHJlZGljdG9yIDI+Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoCjI0MTE+PgpzdHJlYW0KeNrt1SEBAAAMw7D7N70LGBpPJJQ0BwAsIgEAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0SAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHinBADgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeKQEAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDg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/piW93ponKn2xtrte/oSHg2XvvHlaNWav/7biifrl/zl6ZeihLW7v3j8zieolH+/Nped/9enNrzLufvFTa8HGvI/eO+577q5G8wHTFwngTYaWRcss0BXT15P+YSMku236vbHu4Ltrt0HrpjO/J15tsmPhi8uDnj+raz8TcGx5ust2ZTwnvCdN54OY5uqVvHWE7c3bMxYkr30+eIhfcX89T1fb1ljn/P9pldTM8u6aQe/lQ/ft+k29/GxN9O+f+OK04kP6j56JbeVVAQt3bD5lUUBfJahIee1577dntemd/RK+sU9z97pJW7Zc/ut9Xc8J/r6+ePB/9j8rN+Zj57/4su06mbGPnLt+hf+GOfFp7I2PfSiIcE5c8feRsIhYvnrz/llPP/vr08OSYMTX3z33sVKgkX1HHn7o9e2nirv4njELnryhdsS1ezJ6pA4+M8n/2/PwOCBpxZ3Pr736SAu/tQCAAAAwLWG5REAAADAmtAtH67foHS7b80L+R00Xf7lqwsCVrlGv5+muXBHrsOcZ/8yt+ftf75xyjjVwnmhj7x6S1KoR8wdyxaryRn3PvDwEt+gyAX3r3AabGgbHM0/BeFP/euuWxOC59/2sw9fimft3bmt0XDyk21Hg+547y+LF8z2i1m+7s0X4gf+s+vAyJO/mD7ewk3337MoyFsxyW2VJCE+UZP1fb65hlT50Z3NIauTJGP70a1b3s2R/ux3b/wqOjoqdP2fHvtTQucnH+QPawvf/3fDzEefePXeyLlxsQ/987cbnad4edQl6jkOO3j93Zt+Fa66Zp8aZ9pTMvPV0cuDOPaJcyK683blWVwhgbfwV/ueDRYn/DLt21v8Wg/+36/2Di//za6j7277k2fRX155OUt3YdE9mR/nh/8795uylJ95Zn26OWWYZax5+8G3j7is++zQuzv/Glz72uubj5ubl+nN+fCA+pntr22a3ff9Yy9/rJn72o73jn5zp3/e+7949fTI8KGKD9bPff+jM4XPrRvafvfdB5ye3VyUu2md9uAbW5soFl318esP7RDd887mrENPP6jIeujB7eXGSeugm/3HlzcnS0P/8LcUJLYAAAAAcH1gpi0AAABYFX7knetv++7o7pT6bprpzsjRh8+6584I9cWfRCc4Lrf+ctOWXz/16M71exKnUjQhtndX8zik6SRCAY908XQWm19wpSIe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</File>
    </Filelist>
    <DatabaseInstall Type="post">
        <TableCreate Type="post" Name="configitem">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_number" Required="true" Size="100" Type="VARCHAR"></Column>
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="last_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="cur_depl_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="cur_inci_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Required="true" Type="DATE"></Column>
            <Column Name="change_by" Required="true" Type="INTEGER"></Column>
            <Unique>
                                <UniqueColumn Name="configitem_number"></UniqueColumn>
</Unique>
            <Index Name="configitem_class_id">
                <IndexColumn Name="class_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_last_version_id">
                <IndexColumn Name="last_version_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_cur_depl_state_id">
                <IndexColumn Name="cur_depl_state_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_cur_inci_state_id">
                <IndexColumn Name="cur_inci_state_id">
                </IndexColumn>
            </Index>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
                <Reference Foreign="id" Local="cur_depl_state_id">
                </Reference>
                <Reference Foreign="id" Local="cur_inci_state_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="configitem_definition" Required="true" Type="LONGBLOB"></Column>
            <Column Name="dynamicfield_definition" Required="false" Type="LONGBLOB"></Column>
            <Column Name="version" Required="true" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_version">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_id" Required="true" Type="BIGINT"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="version_string" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="definition_id" Required="true" Type="INTEGER"></Column>
            <Column Name="depl_state_id" Required="true" Type="INTEGER"></Column>
            <Column Name="inci_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="description" Required="false" Size="1800000" Type="VARCHAR"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Required="true" Type="DATE"></Column>
            <Column Name="change_by" Required="true" Type="INTEGER"></Column>
            <Index Name="configitem_version_configitem_id">
                <IndexColumn Name="configitem_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_version_depl_state_id">
                <IndexColumn Name="depl_state_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_version_inci_state_id">
                <IndexColumn Name="inci_state_id">
                </IndexColumn>
            </Index>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_definition">
                <Reference Foreign="id" Local="definition_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="depl_state_id">
                </Reference>
                <Reference Foreign="id" Local="inci_state_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_counter">
            <Column Name="class_id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="counter_type" Required="true" Size="50" Type="VARCHAR"></Column>
            <Column Name="counter" Required="true" Size="50" Type="VARCHAR"></Column>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_history_type">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="comments" Size="191" Type="VARCHAR"></Column>
            <Column Name="valid_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Type="DATE"></Column>
            <Column Name="change_by" Type="INTEGER"></Column>
            <Unique Name="configitem_history_type_name">
                                <UniqueColumn Name="name"></UniqueColumn>
</Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Foreign="id" Local="valid_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_history">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_id" Required="true" Type="BIGINT"></Column>
            <Column Name="type_id" Required="true" Type="INTEGER"></Column>
            <Column Name="content" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_history_type">
                <Reference Foreign="id" Local="type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition_sync">
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="field_id" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_link">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="source_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="source_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="link_type_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="dynamic_field_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="source_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="source_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="target_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="target_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="link_type">
                <Reference Foreign="id" Local="link_type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="dynamic_field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableAlter Type="post" Name="acl">
            <ColumnAdd Default="Ticket" Name="object_type" Required="true" Size="100" Type="VARCHAR"></ColumnAdd>
        </TableAlter>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Expired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Inactive</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Maintenance</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Pilot</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Planned</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Production</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Repair</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Retired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Review</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Test/QA</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Translatable="1" Type="Quote">Yes</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Translatable="1" Type="Quote">No</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class::Category</Data>
            <Data Key="name" Translatable="1" Type="Quote">All</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">NameUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ValueUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">DefinitionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">IncidentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">DeploymentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseInstall>
    <DatabaseUpgrade Type="post">
        <TableCreate Type="post" Name="configitem_history_type" Version="1.3.71">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="comments" Size="191" Type="VARCHAR"></Column>
            <Column Name="valid_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Type="DATE"></Column>
            <Column Name="change_by" Type="INTEGER"></Column>
            <Unique Name="configitem_history_type_name">
                                <UniqueColumn Name="name"></UniqueColumn>
</Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Foreign="id" Local="valid_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition_sync" Version="11.0.1">
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="field_id" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_link" Version="11.0.1">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="source_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="source_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="link_type_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="dynamic_field_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="source_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="source_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="target_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="target_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="link_type">
                <Reference Foreign="id" Local="link_type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="dynamic_field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableAlter Type="post" Name="configitem_definition" Version="11.0.1">
            <ColumnAdd Name="dynamicfield_definition" Required="false" Type="LONGBLOB"></ColumnAdd>
        </TableAlter>
        <TableAlter Type="post" Name="configitem_version" Version="11.0.1">
            <ColumnAdd Name="version_string" Required="true" Size="191" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="description" Required="false" Size="1800000" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="change_time" Required="true" Type="DATE"></ColumnAdd>
            <ColumnAdd Name="change_by" Required="true" Type="INTEGER"></ColumnAdd>
        </TableAlter>
        <TableAlter Type="post" Name="acl" Version="11.0.1">
            <ColumnAdd Default="Ticket" Name="object_type" Required="true" Size="100" Type="VARCHAR"></ColumnAdd>
        </TableAlter>
        <Insert Type="post" Table="configitem_history_type" Version="11.0.1">
            <Data Key="name" Type="Quote">VersionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog" Version="11.0.1">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class::Category</Data>
            <Data Key="name" Translatable="1" Type="Quote">All</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseUpgrade>
    <DatabaseUninstall Type="pre">
        <TableDrop Type="pre" Name="configitem_definition_sync">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_link">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_counter">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_version">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_definition">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_history">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_history_type">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem">
        </TableDrop>
        <TableAlter Type="pre" Name="acl">
            <ColumnDrop Name="object_type"></ColumnDrop>
        </TableAlter>
    </DatabaseUninstall>
</otrs_package>